From 788e0f6f8b54f342c13a431ddb5cb6f119e85b58 Mon Sep 17 00:00:00 2001 From: blinker Date: Fri, 29 May 2026 18:45:30 +0000 Subject: [PATCH 01/12] [FEATURE] hw08 stl: change pointer and static arrays to std::vector and std::array. fix loops. change char arrays to std::string --- drone_simulation/data/simulation.json | 5150 ---------------- .../include/config_loaders/factory.hpp | 5 +- .../config_loaders/file_config_loader.hpp | 7 +- .../include/interfaces/target_provider.hpp | 4 +- .../providers/json_target_provider.hpp | 11 +- drone_simulation/include/simulation.hpp | 24 +- .../src/config_loaders/factory.cpp | 4 +- .../src/config_loaders/file_config_loader.cpp | 10 +- drone_simulation/src/main.cpp | 34 +- drone_simulation/src/mission_processor.cpp | 7 +- .../src/providers/json_target_provider.cpp | 21 +- drone_simulation/src/simulation.cpp | 95 +- simulation.json | 5171 ----------------- 13 files changed, 98 insertions(+), 10445 deletions(-) delete mode 100644 drone_simulation/data/simulation.json delete mode 100644 simulation.json diff --git a/drone_simulation/data/simulation.json b/drone_simulation/data/simulation.json deleted file mode 100644 index 610c432..0000000 --- a/drone_simulation/data/simulation.json +++ /dev/null @@ -1,5150 +0,0 @@ -{ - "steps": [ - { - "aimPoint": { - "x": 0.0, - "y": 0.0 - }, - "direction": 0.0, - "dropPoint": { - "x": 0.0, - "y": 0.0 - }, - "position": { - "x": 0.0, - "y": 0.0 - }, - "predictedTarget": { - "x": 0.0, - "y": 0.0 - }, - "state": 0, - "targetIndex": -1 - }, - { - "aimPoint": { - "x": 55.59577178955078, - "y": 2.782107353210449 - }, - "direction": 0.05000000074505806, - "dropPoint": { - "x": 269.4673156738281, - "y": 189.50930786132813 - }, - "position": { - "x": 0.0, - "y": 0.0 - }, - "predictedTarget": { - "x": 313.42510986328125, - "y": 204.42483520507813 - }, - "state": 3, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 55.38724136352539, - "y": 5.557260990142822 - }, - "direction": 0.10000000149011612, - "dropPoint": { - "x": 268.9606628417969, - "y": 189.54702758789063 - }, - "position": { - "x": 0.0, - "y": 0.0 - }, - "predictedTarget": { - "x": 313.3751220703125, - "y": 204.49484252929688 - }, - "state": 3, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 55.04027557373047, - "y": 8.318524360656738 - }, - "direction": 0.15000000596046448, - "dropPoint": { - "x": 268.4532165527344, - "y": 189.5845947265625 - }, - "position": { - "x": 0.0, - "y": 0.0 - }, - "predictedTarget": { - "x": 313.3251037597656, - "y": 204.56483459472656 - }, - "state": 3, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 54.55573654174805, - "y": 11.058995246887207 - }, - "direction": 0.20000000298023224, - "dropPoint": { - "x": 267.9465637207031, - "y": 189.62217712402344 - }, - "position": { - "x": 0.0, - "y": 0.0 - }, - "predictedTarget": { - "x": 313.2701416015625, - "y": 204.6348419189453 - }, - "state": 3, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 53.934837341308594, - "y": 13.771824836730957 - }, - "direction": 0.25, - "dropPoint": { - "x": 267.43914794921875, - "y": 189.6596221923828 - }, - "position": { - "x": 0.0, - "y": 0.0 - }, - "predictedTarget": { - "x": 313.21014404296875, - "y": 204.704833984375 - }, - "state": 3, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 53.17912673950195, - "y": 16.450231552124023 - }, - "direction": 0.30000001192092896, - "dropPoint": { - "x": 266.9325256347656, - "y": 189.69741821289063 - }, - "position": { - "x": 0.0, - "y": 0.0 - }, - "predictedTarget": { - "x": 313.150146484375, - "y": 204.77484130859375 - }, - "state": 3, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 52.290496826171875, - "y": 19.087522506713867 - }, - "direction": 0.3500000238418579, - "dropPoint": { - "x": 266.42584228515625, - "y": 189.73440551757813 - }, - "position": { - "x": 0.0, - "y": 0.0 - }, - "predictedTarget": { - "x": 313.09014892578125, - "y": 204.84483337402344 - }, - "state": 3, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 51.27116775512695, - "y": 21.677104949951172 - }, - "direction": 0.40000003576278687, - "dropPoint": { - "x": 265.91839599609375, - "y": 189.7716522216797 - }, - "position": { - "x": 0.0, - "y": 0.0 - }, - "predictedTarget": { - "x": 313.0301513671875, - "y": 204.9148406982422 - }, - "state": 3, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 50.123687744140625, - "y": 24.212505340576172 - }, - "direction": 0.4500000476837158, - "dropPoint": { - "x": 265.4117431640625, - "y": 189.8088836669922 - }, - "position": { - "x": 0.0, - "y": 0.0 - }, - "predictedTarget": { - "x": 312.97015380859375, - "y": 204.98483276367188 - }, - "state": 3, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 48.850929260253906, - "y": 26.68738555908203 - }, - "direction": 0.5000000596046448, - "dropPoint": { - "x": 264.904296875, - "y": 189.84600830078125 - }, - "position": { - "x": 0.0, - "y": 0.0 - }, - "predictedTarget": { - "x": 312.91015625, - "y": 205.05484008789063 - }, - "state": 3, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 47.45606231689453, - "y": 29.095565795898438 - }, - "direction": 0.5500000715255737, - "dropPoint": { - "x": 264.39764404296875, - "y": 189.88308715820313 - }, - "position": { - "x": 0.0, - "y": 0.0 - }, - "predictedTarget": { - "x": 312.85015869140625, - "y": 205.1248321533203 - }, - "state": 3, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 45.94258117675781, - "y": 31.43101692199707 - }, - "direction": 0.6000000834465027, - "dropPoint": { - "x": 264.38397216796875, - "y": 189.9552459716797 - }, - "position": { - "x": 0.0, - "y": 0.0 - }, - "predictedTarget": { - "x": 312.7901611328125, - "y": 205.19483947753906 - }, - "state": 3, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 45.21846389770508, - "y": 32.50270080566406 - }, - "direction": 0.6232274174690247, - "dropPoint": { - "x": 264.3702392578125, - "y": 190.0273895263672 - }, - "position": { - "x": 0.0182699766010046, - "y": 0.013132325373589993 - }, - "predictedTarget": { - "x": 312.73016357421875, - "y": 205.26483154296875 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 45.24848175048828, - "y": 32.53804016113281 - }, - "direction": 0.6234281063079834, - "dropPoint": { - "x": 264.35675048828125, - "y": 190.09812927246094 - }, - "position": { - "x": 0.05480466037988663, - "y": 0.039404306560754776 - }, - "predictedTarget": { - "x": 312.6651916503906, - "y": 205.3348388671875 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 45.29686737060547, - "y": 32.58637237548828 - }, - "direction": 0.6236252784729004, - "dropPoint": { - "x": 264.3442077636719, - "y": 190.16819763183594 - }, - "position": { - "x": 0.10959891229867935, - "y": 0.07882308214902878 - }, - "predictedTarget": { - "x": 312.5951843261719, - "y": 205.4048309326172 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 45.36351776123047, - "y": 32.6478385925293 - }, - "direction": 0.6238220930099487, - "dropPoint": { - "x": 264.330322265625, - "y": 190.2371368408203 - }, - "position": { - "x": 0.18264757096767426, - "y": 0.1313958317041397 - }, - "predictedTarget": { - "x": 312.5251770019531, - "y": 205.47483825683594 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 45.448524475097656, - "y": 32.7223014831543 - }, - "direction": 0.6240153908729553, - "dropPoint": { - "x": 264.3174743652344, - "y": 190.30538940429688 - }, - "position": { - "x": 0.273945689201355, - "y": 0.19712941348552704 - }, - "predictedTarget": { - "x": 312.4551696777344, - "y": 205.54483032226563 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 45.55194854736328, - "y": 32.80970764160156 - }, - "direction": 0.624203622341156, - "dropPoint": { - "x": 264.3055419921875, - "y": 190.37228393554688 - }, - "position": { - "x": 0.38348859548568726, - "y": 0.2760303318500519 - }, - "predictedTarget": { - "x": 312.3851623535156, - "y": 205.61483764648438 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 45.67368698120117, - "y": 32.91017150878906 - }, - "direction": 0.6243893504142761, - "dropPoint": { - "x": 264.29302978515625, - "y": 190.43771362304688 - }, - "position": { - "x": 0.5112715363502502, - "y": 0.3681051433086395 - }, - "predictedTarget": { - "x": 312.315185546875, - "y": 205.68482971191406 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 45.8137321472168, - "y": 33.023712158203125 - }, - "direction": 0.6245728731155396, - "dropPoint": { - "x": 264.28076171875, - "y": 190.50244140625 - }, - "position": { - "x": 0.6572898626327515, - "y": 0.4733603000640869 - }, - "predictedTarget": { - "x": 312.24517822265625, - "y": 205.7548370361328 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 45.972103118896484, - "y": 33.150306701660156 - }, - "direction": 0.624753475189209, - "dropPoint": { - "x": 264.2686767578125, - "y": 190.5660858154297 - }, - "position": { - "x": 0.8215391039848328, - "y": 0.5918020009994507 - }, - "predictedTarget": { - "x": 312.1751708984375, - "y": 205.8248291015625 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 46.14044189453125, - "y": 33.30154037475586 - }, - "direction": 0.625186562538147, - "dropPoint": { - "x": 263.7267150878906, - "y": 190.34837341308594 - }, - "position": { - "x": 1.0039812326431274, - "y": 0.7234829068183899 - }, - "predictedTarget": { - "x": 312.10516357421875, - "y": 205.89483642578125 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 46.32712173461914, - "y": 33.46578598022461 - }, - "direction": 0.6256144046783447, - "dropPoint": { - "x": 263.1870422363281, - "y": 190.12953186035156 - }, - "position": { - "x": 1.2046055793762207, - "y": 0.8684177994728088 - }, - "predictedTarget": { - "x": 312.03515625, - "y": 205.96482849121094 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 46.53187942504883, - "y": 33.643409729003906 - }, - "direction": 0.6260448694229126, - "dropPoint": { - "x": 262.6467590332031, - "y": 189.9105224609375 - }, - "position": { - "x": 1.4234004020690918, - "y": 1.0266227722167969 - }, - "predictedTarget": { - "x": 311.9651794433594, - "y": 206.0298614501953 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 46.75490951538086, - "y": 33.834144592285156 - }, - "direction": 0.6264716386795044, - "dropPoint": { - "x": 262.1073913574219, - "y": 189.6900177001953 - }, - "position": { - "x": 1.6603549718856812, - "y": 1.1981126070022583 - }, - "predictedTarget": { - "x": 311.8951721191406, - "y": 206.08985900878906 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 46.996150970458984, - "y": 34.0380859375 - }, - "direction": 0.626896321773529, - "dropPoint": { - "x": 261.5698547363281, - "y": 189.46922302246094 - }, - "position": { - "x": 1.91545832157135, - "y": 1.3829022645950317 - }, - "predictedTarget": { - "x": 311.8251647949219, - "y": 206.1498565673828 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 47.255577087402344, - "y": 34.2552490234375 - }, - "direction": 0.6273192167282104, - "dropPoint": { - "x": 261.033447265625, - "y": 189.24778747558594 - }, - "position": { - "x": 2.188699722290039, - "y": 1.5810067653656006 - }, - "predictedTarget": { - "x": 311.7551574707031, - "y": 206.20985412597656 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 47.53317642211914, - "y": 34.48567199707031 - }, - "direction": 0.6277405023574829, - "dropPoint": { - "x": 260.4974670410156, - "y": 189.02529907226563 - }, - "position": { - "x": 2.4800679683685303, - "y": 1.7924410104751587 - }, - "predictedTarget": { - "x": 311.6851501464844, - "y": 206.2698516845703 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 47.82888412475586, - "y": 34.72942352294922 - }, - "direction": 0.6281617283821106, - "dropPoint": { - "x": 259.962890625, - "y": 188.80294799804688 - }, - "position": { - "x": 2.7895522117614746, - "y": 2.0172202587127686 - }, - "predictedTarget": { - "x": 311.61517333984375, - "y": 206.32986450195313 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 48.14289855957031, - "y": 34.986244201660156 - }, - "direction": 0.6285766363143921, - "dropPoint": { - "x": 259.43115234375, - "y": 188.5794677734375 - }, - "position": { - "x": 3.117142677307129, - "y": 2.2553577423095703 - }, - "predictedTarget": { - "x": 311.545166015625, - "y": 206.38986206054688 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 48.474952697753906, - "y": 35.25650405883789 - }, - "direction": 0.628993034362793, - "dropPoint": { - "x": 258.8993835449219, - "y": 188.35577392578125 - }, - "position": { - "x": 3.4628279209136963, - "y": 2.506869077682495 - }, - "predictedTarget": { - "x": 311.47515869140625, - "y": 206.44985961914063 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 48.814544677734375, - "y": 35.554603576660156 - }, - "direction": 0.6297282576560974, - "dropPoint": { - "x": 258.894775390625, - "y": 188.6397705078125 - }, - "position": { - "x": 3.826512336730957, - "y": 2.771885395050049 - }, - "predictedTarget": { - "x": 311.4051513671875, - "y": 206.50985717773438 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 49.17216491699219, - "y": 35.866119384765625 - }, - "direction": 0.6304612755775452, - "dropPoint": { - "x": 258.889892578125, - "y": 188.92262268066406 - }, - "position": { - "x": 4.208176612854004, - "y": 3.0504322052001953 - }, - "predictedTarget": { - "x": 311.33514404296875, - "y": 206.56985473632813 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 49.54800796508789, - "y": 36.19078826904297 - }, - "direction": 0.63118577003479, - "dropPoint": { - "x": 258.8869323730469, - "y": 189.20338439941406 - }, - "position": { - "x": 4.607804298400879, - "y": 3.3425328731536865 - }, - "predictedTarget": { - "x": 311.26019287109375, - "y": 206.62985229492188 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 49.94181442260742, - "y": 36.528953552246094 - }, - "direction": 0.6319088935852051, - "dropPoint": { - "x": 258.8837585449219, - "y": 189.4833221435547 - }, - "position": { - "x": 5.025375843048096, - "y": 3.6482129096984863 - }, - "predictedTarget": { - "x": 311.18017578125, - "y": 206.6898651123047 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 50.353660583496094, - "y": 36.880523681640625 - }, - "direction": 0.6326279044151306, - "dropPoint": { - "x": 258.8802795410156, - "y": 189.76126098632813 - }, - "position": { - "x": 5.460873126983643, - "y": 3.967496633529663 - }, - "predictedTarget": { - "x": 311.1001892089844, - "y": 206.74986267089844 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 50.78357696533203, - "y": 37.245452880859375 - }, - "direction": 0.6333412528038025, - "dropPoint": { - "x": 258.8780212402344, - "y": 190.03768920898438 - }, - "position": { - "x": 5.914278507232666, - "y": 4.300407409667969 - }, - "predictedTarget": { - "x": 311.0201721191406, - "y": 206.8098602294922 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 51.231483459472656, - "y": 37.62384033203125 - }, - "direction": 0.6340507864952087, - "dropPoint": { - "x": 258.8762512207031, - "y": 190.31280517578125 - }, - "position": { - "x": 6.3855743408203125, - "y": 4.646968841552734 - }, - "predictedTarget": { - "x": 310.940185546875, - "y": 206.86985778808594 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 51.69749450683594, - "y": 38.01554489135742 - }, - "direction": 0.6347527503967285, - "dropPoint": { - "x": 258.87567138671875, - "y": 190.58558654785156 - }, - "position": { - "x": 6.874744415283203, - "y": 5.007203102111816 - }, - "predictedTarget": { - "x": 310.8601989746094, - "y": 206.9298553466797 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 52.18135452270508, - "y": 38.42091369628906 - }, - "direction": 0.6354542374610901, - "dropPoint": { - "x": 258.8741149902344, - "y": 190.8572235107422 - }, - "position": { - "x": 7.38176965713501, - "y": 5.381134986877441 - }, - "predictedTarget": { - "x": 310.7801818847656, - "y": 206.98985290527344 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 52.68325424194336, - "y": 38.839683532714844 - }, - "direction": 0.636148989200592, - "dropPoint": { - "x": 258.87371826171875, - "y": 191.12681579589844 - }, - "position": { - "x": 7.9066338539123535, - "y": 5.768786430358887 - }, - "predictedTarget": { - "x": 310.7001953125, - "y": 207.0498504638672 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 53.2266845703125, - "y": 39.24006652832031 - }, - "direction": 0.6361350417137146, - "dropPoint": { - "x": 258.58758544921875, - "y": 190.9100799560547 - }, - "position": { - "x": 8.449602127075195, - "y": 6.169797897338867 - }, - "predictedTarget": { - "x": 310.62017822265625, - "y": 207.10984802246094 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 53.78831100463867, - "y": 39.653690338134766 - }, - "direction": 0.6361183524131775, - "dropPoint": { - "x": 258.30206298828125, - "y": 190.69276428222656 - }, - "position": { - "x": 9.010676383972168, - "y": 6.584167003631592 - }, - "predictedTarget": { - "x": 310.5401916503906, - "y": 207.1698455810547 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 54.36809158325195, - "y": 40.080596923828125 - }, - "direction": 0.6361001133918762, - "dropPoint": { - "x": 258.01806640625, - "y": 190.47601318359375 - }, - "position": { - "x": 9.589858055114746, - "y": 7.011892318725586 - }, - "predictedTarget": { - "x": 310.4552307128906, - "y": 207.22486877441406 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 54.96614074707031, - "y": 40.52064895629883 - }, - "direction": 0.6360771656036377, - "dropPoint": { - "x": 257.7354431152344, - "y": 190.25848388671875 - }, - "position": { - "x": 10.187149047851563, - "y": 7.452970027923584 - }, - "predictedTarget": { - "x": 310.365234375, - "y": 207.27487182617188 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 55.582427978515625, - "y": 40.97388458251953 - }, - "direction": 0.6360505223274231, - "dropPoint": { - "x": 257.45513916015625, - "y": 190.04132080078125 - }, - "position": { - "x": 10.80255126953125, - "y": 7.907397270202637 - }, - "predictedTarget": { - "x": 310.27520751953125, - "y": 207.3248748779297 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 56.2169189453125, - "y": 41.440330505371094 - }, - "direction": 0.6360208988189697, - "dropPoint": { - "x": 257.1763610839844, - "y": 189.82418823242188 - }, - "position": { - "x": 11.436067581176758, - "y": 8.375171661376953 - }, - "predictedTarget": { - "x": 310.1852111816406, - "y": 207.3748779296875 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 56.86959457397461, - "y": 41.92003631591797 - }, - "direction": 0.6359893679618835, - "dropPoint": { - "x": 256.8984375, - "y": 189.6070098876953 - }, - "position": { - "x": 12.087699890136719, - "y": 8.856289863586426 - }, - "predictedTarget": { - "x": 310.09521484375, - "y": 207.4248809814453 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 57.54049301147461, - "y": 42.41294479370117 - }, - "direction": 0.6359546780586243, - "dropPoint": { - "x": 256.6221923828125, - "y": 189.38995361328125 - }, - "position": { - "x": 12.757450103759766, - "y": 9.350749969482422 - }, - "predictedTarget": { - "x": 310.0052185058594, - "y": 207.47486877441406 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 58.229637145996094, - "y": 42.91901397705078 - }, - "direction": 0.6359161138534546, - "dropPoint": { - "x": 256.3475646972656, - "y": 189.1726837158203 - }, - "position": { - "x": 13.445321083068848, - "y": 9.85854721069336 - }, - "predictedTarget": { - "x": 309.91522216796875, - "y": 207.52487182617188 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 58.937034606933594, - "y": 43.43825149536133 - }, - "direction": 0.6358739137649536, - "dropPoint": { - "x": 256.0754699707031, - "y": 188.9560089111328 - }, - "position": { - "x": 14.15131664276123, - "y": 10.379677772521973 - }, - "predictedTarget": { - "x": 309.8252258300781, - "y": 207.5748748779297 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 59.64329147338867, - "y": 43.99689483642578 - }, - "direction": 0.6364045739173889, - "dropPoint": { - "x": 255.81396484375, - "y": 188.961181640625 - }, - "position": { - "x": 14.875130653381348, - "y": 10.914554595947266 - }, - "predictedTarget": { - "x": 309.7352294921875, - "y": 207.6248779296875 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 60.36751174926758, - "y": 44.56907653808594 - }, - "direction": 0.636930525302887, - "dropPoint": { - "x": 255.5549774169922, - "y": 188.96554565429688 - }, - "position": { - "x": 15.616751670837402, - "y": 11.463193893432617 - }, - "predictedTarget": { - "x": 309.6452331542969, - "y": 207.6748809814453 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 61.109619140625, - "y": 45.15487289428711 - }, - "direction": 0.6374530792236328, - "dropPoint": { - "x": 255.2970733642578, - "y": 188.96864318847656 - }, - "position": { - "x": 16.37616729736328, - "y": 12.02561092376709 - }, - "predictedTarget": { - "x": 309.5502624511719, - "y": 207.72486877441406 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 61.86961364746094, - "y": 45.75429916381836 - }, - "direction": 0.6379721760749817, - "dropPoint": { - "x": 255.04196166992188, - "y": 188.9716033935547 - }, - "position": { - "x": 17.153364181518555, - "y": 12.601822853088379 - }, - "predictedTarget": { - "x": 309.45025634765625, - "y": 207.77487182617188 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 62.64750671386719, - "y": 46.36733627319336 - }, - "direction": 0.638486921787262, - "dropPoint": { - "x": 254.78802490234375, - "y": 188.97296142578125 - }, - "position": { - "x": 17.948331832885742, - "y": 13.19184398651123 - }, - "predictedTarget": { - "x": 309.3502502441406, - "y": 207.8248748779297 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 63.44322967529297, - "y": 46.99408721923828 - }, - "direction": 0.6389994621276855, - "dropPoint": { - "x": 254.5360870361328, - "y": 188.97413635253906 - }, - "position": { - "x": 18.761058807373047, - "y": 13.79569149017334 - }, - "predictedTarget": { - "x": 309.250244140625, - "y": 207.8748779296875 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 64.25691223144531, - "y": 47.63435363769531 - }, - "direction": 0.6395049691200256, - "dropPoint": { - "x": 254.28692626953125, - "y": 188.97384643554688 - }, - "position": { - "x": 19.591533660888672, - "y": 14.41337776184082 - }, - "predictedTarget": { - "x": 309.1502380371094, - "y": 207.9248809814453 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 65.08839416503906, - "y": 48.28838348388672 - }, - "direction": 0.6400085091590881, - "dropPoint": { - "x": 254.0391387939453, - "y": 188.9729766845703 - }, - "position": { - "x": 20.43974494934082, - "y": 15.04491901397705 - }, - "predictedTarget": { - "x": 309.0502624511719, - "y": 207.97486877441406 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 65.9377670288086, - "y": 48.956024169921875 - }, - "direction": 0.6405065059661865, - "dropPoint": { - "x": 253.794189453125, - "y": 188.9713134765625 - }, - "position": { - "x": 21.305681228637695, - "y": 15.690328598022461 - }, - "predictedTarget": { - "x": 308.95025634765625, - "y": 208.02487182617188 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 66.80494689941406, - "y": 49.637413024902344 - }, - "direction": 0.6410015821456909, - "dropPoint": { - "x": 253.55072021484375, - "y": 188.96876525878906 - }, - "position": { - "x": 22.189332962036133, - "y": 16.34962272644043 - }, - "predictedTarget": { - "x": 308.8502502441406, - "y": 208.0748748779297 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 67.68942260742188, - "y": 50.33320617675781 - }, - "direction": 0.6415080428123474, - "dropPoint": { - "x": 253.30035400390625, - "y": 188.96424865722656 - }, - "position": { - "x": 23.09067726135254, - "y": 17.0228271484375 - }, - "predictedTarget": { - "x": 308.750244140625, - "y": 208.1248779296875 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 68.59172058105469, - "y": 51.042728424072266 - }, - "direction": 0.6420102119445801, - "dropPoint": { - "x": 253.05227661132813, - "y": 188.9589080810547 - }, - "position": { - "x": 24.009702682495117, - "y": 17.709957122802734 - }, - "predictedTarget": { - "x": 308.6502380371094, - "y": 208.1748809814453 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 69.5118637084961, - "y": 51.76592254638672 - }, - "direction": 0.6425065398216248, - "dropPoint": { - "x": 252.8071746826172, - "y": 188.9527587890625 - }, - "position": { - "x": 24.946401596069336, - "y": 18.411026000976563 - }, - "predictedTarget": { - "x": 308.5502624511719, - "y": 208.2198944091797 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 70.44977569580078, - "y": 52.50291442871094 - }, - "direction": 0.6429995894432068, - "dropPoint": { - "x": 252.56375122070313, - "y": 188.9457550048828 - }, - "position": { - "x": 25.900760650634766, - "y": 19.126047134399414 - }, - "predictedTarget": { - "x": 308.45025634765625, - "y": 208.25990295410156 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 71.40547180175781, - "y": 53.25365447998047 - }, - "direction": 0.6434880495071411, - "dropPoint": { - "x": 252.32272338867188, - "y": 188.93789672851563 - }, - "position": { - "x": 26.872770309448242, - "y": 19.85503387451172 - }, - "predictedTarget": { - "x": 308.3502502441406, - "y": 208.29989624023438 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 72.37896728515625, - "y": 54.018150329589844 - }, - "direction": 0.6439716815948486, - "dropPoint": { - "x": 252.08416748046875, - "y": 188.92922973632813 - }, - "position": { - "x": 27.8624210357666, - "y": 20.597999572753906 - }, - "predictedTarget": { - "x": 308.250244140625, - "y": 208.33990478515625 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 73.3702392578125, - "y": 54.79642868041992 - }, - "direction": 0.6444506049156189, - "dropPoint": { - "x": 251.84805297851563, - "y": 188.91973876953125 - }, - "position": { - "x": 28.86970329284668, - "y": 21.354957580566406 - }, - "predictedTarget": { - "x": 308.1502380371094, - "y": 208.37989807128906 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 74.37934112548828, - "y": 55.58840560913086 - }, - "direction": 0.6449230313301086, - "dropPoint": { - "x": 251.61520385742188, - "y": 188.90948486328125 - }, - "position": { - "x": 29.894609451293945, - "y": 22.12591552734375 - }, - "predictedTarget": { - "x": 308.0502624511719, - "y": 208.41990661621094 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 75.40616607666016, - "y": 56.394229888916016 - }, - "direction": 0.6453918814659119, - "dropPoint": { - "x": 251.3841552734375, - "y": 188.89834594726563 - }, - "position": { - "x": 30.9371280670166, - "y": 22.910888671875 - }, - "predictedTarget": { - "x": 307.95025634765625, - "y": 208.45989990234375 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 76.45075988769531, - "y": 57.213844299316406 - }, - "direction": 0.6458555459976196, - "dropPoint": { - "x": 251.15573120117188, - "y": 188.88641357421875 - }, - "position": { - "x": 31.997249603271484, - "y": 23.70988655090332 - }, - "predictedTarget": { - "x": 307.8502502441406, - "y": 208.49990844726563 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 77.54798889160156, - "y": 58.00098419189453 - }, - "direction": 0.6452978253364563, - "dropPoint": { - "x": 251.12982177734375, - "y": 188.67532348632813 - }, - "position": { - "x": 33.0757942199707, - "y": 24.521825790405273 - }, - "predictedTarget": { - "x": 307.750244140625, - "y": 208.53990173339844 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 78.66375732421875, - "y": 58.800865173339844 - }, - "direction": 0.6447363495826721, - "dropPoint": { - "x": 251.1048583984375, - "y": 188.46482849121094 - }, - "position": { - "x": 34.17277526855469, - "y": 25.346681594848633 - }, - "predictedTarget": { - "x": 307.6502380371094, - "y": 208.5799102783203 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 79.79802703857422, - "y": 59.613548278808594 - }, - "direction": 0.6441730856895447, - "dropPoint": { - "x": 251.0808563232422, - "y": 188.25559997558594 - }, - "position": { - "x": 35.288211822509766, - "y": 26.184431076049805 - }, - "predictedTarget": { - "x": 307.5452880859375, - "y": 208.61990356445313 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 80.95085144042969, - "y": 60.43897247314453 - }, - "direction": 0.6436070203781128, - "dropPoint": { - "x": 251.057861328125, - "y": 188.04737854003906 - }, - "position": { - "x": 36.422122955322266, - "y": 27.035051345825195 - }, - "predictedTarget": { - "x": 307.4352722167969, - "y": 208.659912109375 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 82.12224578857422, - "y": 61.27710723876953 - }, - "direction": 0.643038272857666, - "dropPoint": { - "x": 251.03582763671875, - "y": 187.84019470214844 - }, - "position": { - "x": 37.57452392578125, - "y": 27.89851951599121 - }, - "predictedTarget": { - "x": 307.3252868652344, - "y": 208.6999053955078 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 83.31224822998047, - "y": 62.127899169921875 - }, - "direction": 0.6424660682678223, - "dropPoint": { - "x": 251.01473999023438, - "y": 187.63375854492188 - }, - "position": { - "x": 38.74543380737305, - "y": 28.774808883666992 - }, - "predictedTarget": { - "x": 307.21527099609375, - "y": 208.73989868164063 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 84.52082061767578, - "y": 62.99140167236328 - }, - "direction": 0.6418920159339905, - "dropPoint": { - "x": 250.99472045898438, - "y": 187.42877197265625 - }, - "position": { - "x": 39.93486785888672, - "y": 29.663896560668945 - }, - "predictedTarget": { - "x": 307.10528564453125, - "y": 208.7799072265625 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 85.74201965332031, - "y": 63.86302947998047 - }, - "direction": 0.6413148045539856, - "dropPoint": { - "x": 250.97555541992188, - "y": 187.22463989257813 - }, - "position": { - "x": 41.13683319091797, - "y": 30.56127166748047 - }, - "predictedTarget": { - "x": 306.9952697753906, - "y": 208.8199005126953 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 86.96369934082031, - "y": 64.73397827148438 - }, - "direction": 0.6407380700111389, - "dropPoint": { - "x": 250.95718383789063, - "y": 187.02255249023438 - }, - "position": { - "x": 42.33931350708008, - "y": 31.45795249938965 - }, - "predictedTarget": { - "x": 306.8852844238281, - "y": 208.8599090576172 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 88.18586730957031, - "y": 65.604248046875 - }, - "direction": 0.6401617527008057, - "dropPoint": { - "x": 250.9387969970703, - "y": 186.8218536376953 - }, - "position": { - "x": 43.54231262207031, - "y": 32.353939056396484 - }, - "predictedTarget": { - "x": 306.7752685546875, - "y": 208.89990234375 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 89.3738784790039, - "y": 66.52033996582031 - }, - "direction": 0.6406004428863525, - "dropPoint": { - "x": 250.721435546875, - "y": 186.80133056640625 - }, - "position": { - "x": 44.74491882324219, - "y": 33.25045394897461 - }, - "predictedTarget": { - "x": 306.665283203125, - "y": 208.9398956298828 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 90.56143188476563, - "y": 67.4370346069336 - }, - "direction": 0.6410408020019531, - "dropPoint": { - "x": 250.50473022460938, - "y": 186.78077697753906 - }, - "position": { - "x": 45.94712829589844, - "y": 34.147499084472656 - }, - "predictedTarget": { - "x": 306.5552673339844, - "y": 208.9799041748047 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 91.74873352050781, - "y": 68.35406494140625 - }, - "direction": 0.641477108001709, - "dropPoint": { - "x": 250.29135131835938, - "y": 186.76040649414063 - }, - "position": { - "x": 47.148948669433594, - "y": 35.045066833496094 - }, - "predictedTarget": { - "x": 306.4452819824219, - "y": 209.01492309570313 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 92.9356918334961, - "y": 69.27151489257813 - }, - "direction": 0.6419112086296082, - "dropPoint": { - "x": 250.07992553710938, - "y": 186.73977661132813 - }, - "position": { - "x": 48.350379943847656, - "y": 35.94315719604492 - }, - "predictedTarget": { - "x": 306.33526611328125, - "y": 209.044921875 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 94.12223052978516, - "y": 70.18952178955078 - }, - "direction": 0.6423462629318237, - "dropPoint": { - "x": 249.869873046875, - "y": 186.71946716308594 - }, - "position": { - "x": 49.55141830444336, - "y": 36.84177017211914 - }, - "predictedTarget": { - "x": 306.22528076171875, - "y": 209.07492065429688 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 95.30845642089844, - "y": 71.10792541503906 - }, - "direction": 0.6427786946296692, - "dropPoint": { - "x": 249.66246032714844, - "y": 186.6992950439453 - }, - "position": { - "x": 50.75206756591797, - "y": 37.740901947021484 - }, - "predictedTarget": { - "x": 306.1152648925781, - "y": 209.1049346923828 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 96.49424743652344, - "y": 72.02688598632813 - }, - "direction": 0.6432120203971863, - "dropPoint": { - "x": 249.4564208984375, - "y": 186.67942810058594 - }, - "position": { - "x": 51.952327728271484, - "y": 38.64055633544922 - }, - "predictedTarget": { - "x": 306.0052795410156, - "y": 209.1349334716797 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 97.67972564697266, - "y": 72.94625091552734 - }, - "direction": 0.6436430811882019, - "dropPoint": { - "x": 249.25233459472656, - "y": 186.65933227539063 - }, - "position": { - "x": 53.152198791503906, - "y": 39.54072570800781 - }, - "predictedTarget": { - "x": 305.895263671875, - "y": 209.16493225097656 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 98.86488342285156, - "y": 73.86602020263672 - }, - "direction": 0.6440717577934265, - "dropPoint": { - "x": 249.05023193359375, - "y": 186.63900756835938 - }, - "position": { - "x": 54.3516845703125, - "y": 40.441410064697266 - }, - "predictedTarget": { - "x": 305.7852783203125, - "y": 209.19493103027344 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 100.04971313476563, - "y": 74.78621673583984 - }, - "direction": 0.6444987058639526, - "dropPoint": { - "x": 248.8507537841797, - "y": 186.61911010742188 - }, - "position": { - "x": 55.550785064697266, - "y": 41.34260559082031 - }, - "predictedTarget": { - "x": 305.6752624511719, - "y": 209.2249298095703 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 101.254150390625, - "y": 75.6803207397461 - }, - "direction": 0.6443434357643127, - "dropPoint": { - "x": 248.6236572265625, - "y": 186.4015350341797 - }, - "position": { - "x": 56.75002670288086, - "y": 42.24361801147461 - }, - "predictedTarget": { - "x": 305.5652770996094, - "y": 209.2549285888672 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 102.45875549316406, - "y": 76.57418823242188 - }, - "direction": 0.6441872119903564, - "dropPoint": { - "x": 248.39920043945313, - "y": 186.18606567382813 - }, - "position": { - "x": 57.94940948486328, - "y": 43.144439697265625 - }, - "predictedTarget": { - "x": 305.45526123046875, - "y": 209.28492736816406 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 103.66348266601563, - "y": 77.4678955078125 - }, - "direction": 0.6440315842628479, - "dropPoint": { - "x": 248.17617797851563, - "y": 185.97225952148438 - }, - "position": { - "x": 59.14893341064453, - "y": 44.045074462890625 - }, - "predictedTarget": { - "x": 305.34527587890625, - "y": 209.31492614746094 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 104.86834716796875, - "y": 78.36141204833984 - }, - "direction": 0.6438758969306946, - "dropPoint": { - "x": 247.955810546875, - "y": 185.76083374023438 - }, - "position": { - "x": 60.348594665527344, - "y": 44.94552230834961 - }, - "predictedTarget": { - "x": 305.2352600097656, - "y": 209.3449249267578 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 106.0732421875, - "y": 79.2548828125 - }, - "direction": 0.64372318983078, - "dropPoint": { - "x": 247.73626708984375, - "y": 185.55130004882813 - }, - "position": { - "x": 61.54839324951172, - "y": 45.845787048339844 - }, - "predictedTarget": { - "x": 305.125244140625, - "y": 209.3749237060547 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 107.27835083007813, - "y": 80.1480712890625 - }, - "direction": 0.6435683965682983, - "dropPoint": { - "x": 247.5194091796875, - "y": 185.34359741210938 - }, - "position": { - "x": 62.74833297729492, - "y": 46.74586868286133 - }, - "predictedTarget": { - "x": 305.0152587890625, - "y": 209.40493774414063 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 108.48360443115234, - "y": 81.04106140136719 - }, - "direction": 0.6434135437011719, - "dropPoint": { - "x": 247.3052215576172, - "y": 185.13827514648438 - }, - "position": { - "x": 63.94841003417969, - "y": 47.6457633972168 - }, - "predictedTarget": { - "x": 304.9052429199219, - "y": 209.4349365234375 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 109.68896484375, - "y": 81.93391418457031 - }, - "direction": 0.6432594060897827, - "dropPoint": { - "x": 247.09243774414063, - "y": 184.9346160888672 - }, - "position": { - "x": 65.14862823486328, - "y": 48.545475006103516 - }, - "predictedTarget": { - "x": 304.7952575683594, - "y": 209.46493530273438 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 110.89447021484375, - "y": 82.82656860351563 - }, - "direction": 0.6431050896644592, - "dropPoint": { - "x": 246.88235473632813, - "y": 184.73333740234375 - }, - "position": { - "x": 66.34898376464844, - "y": 49.44499969482422 - }, - "predictedTarget": { - "x": 304.68524169921875, - "y": 209.49493408203125 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 112.10006713867188, - "y": 83.71910095214844 - }, - "direction": 0.6429523825645447, - "dropPoint": { - "x": 246.6737060546875, - "y": 184.53399658203125 - }, - "position": { - "x": 67.54947662353516, - "y": 50.34434127807617 - }, - "predictedTarget": { - "x": 304.57525634765625, - "y": 209.52493286132813 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 113.28520202636719, - "y": 84.63893127441406 - }, - "direction": 0.643400251865387, - "dropPoint": { - "x": 246.47802734375, - "y": 184.5125732421875 - }, - "position": { - "x": 68.74956512451172, - "y": 51.24422073364258 - }, - "predictedTarget": { - "x": 304.4652404785156, - "y": 209.554931640625 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 114.46997833251953, - "y": 85.55923461914063 - }, - "direction": 0.6438468098640442, - "dropPoint": { - "x": 246.28433227539063, - "y": 184.4912109375 - }, - "position": { - "x": 69.94925689697266, - "y": 52.14463424682617 - }, - "predictedTarget": { - "x": 304.3552551269531, - "y": 209.58493041992188 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 115.65438842773438, - "y": 86.47998046875 - }, - "direction": 0.6442917585372925, - "dropPoint": { - "x": 246.0926513671875, - "y": 184.46990966796875 - }, - "position": { - "x": 71.14854431152344, - "y": 53.04558181762695 - }, - "predictedTarget": { - "x": 304.2402648925781, - "y": 209.60995483398438 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 116.83854675292969, - "y": 87.40106201171875 - }, - "direction": 0.6447322964668274, - "dropPoint": { - "x": 245.9041748046875, - "y": 184.44879150390625 - }, - "position": { - "x": 72.3474349975586, - "y": 53.947059631347656 - }, - "predictedTarget": { - "x": 304.1202697753906, - "y": 209.6299591064453 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 118.02224731445313, - "y": 88.3227310180664 - }, - "direction": 0.6451742649078369, - "dropPoint": { - "x": 245.71649169921875, - "y": 184.42764282226563 - }, - "position": { - "x": 73.54592895507813, - "y": 54.84906768798828 - }, - "predictedTarget": { - "x": 304.0002746582031, - "y": 209.64996337890625 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 119.20561218261719, - "y": 89.24484252929688 - }, - "direction": 0.645614504814148, - "dropPoint": { - "x": 245.53089904785156, - "y": 184.4066162109375 - }, - "position": { - "x": 74.74402618408203, - "y": 55.75160217285156 - }, - "predictedTarget": { - "x": 303.8802795410156, - "y": 209.66995239257813 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 120.38861846923828, - "y": 90.16740417480469 - }, - "direction": 0.64605313539505, - "dropPoint": { - "x": 245.34725952148438, - "y": 184.3856201171875 - }, - "position": { - "x": 75.94172668457031, - "y": 56.6546630859375 - }, - "predictedTarget": { - "x": 303.7602844238281, - "y": 209.68995666503906 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 121.57127380371094, - "y": 91.09040832519531 - }, - "direction": 0.6464901566505432, - "dropPoint": { - "x": 245.1656494140625, - "y": 184.36471557617188 - }, - "position": { - "x": 77.13903045654297, - "y": 57.55824661254883 - }, - "predictedTarget": { - "x": 303.6402893066406, - "y": 209.7099609375 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 122.75363159179688, - "y": 92.01378631591797 - }, - "direction": 0.6469240188598633, - "dropPoint": { - "x": 244.98663330078125, - "y": 184.3439483642578 - }, - "position": { - "x": 78.33594512939453, - "y": 58.46234893798828 - }, - "predictedTarget": { - "x": 303.5202941894531, - "y": 209.72994995117188 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 123.93560028076172, - "y": 92.93766021728516 - }, - "direction": 0.6473575830459595, - "dropPoint": { - "x": 244.80905151367188, - "y": 184.32321166992188 - }, - "position": { - "x": 79.53246307373047, - "y": 59.36697006225586 - }, - "predictedTarget": { - "x": 303.4002990722656, - "y": 209.7499542236328 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 125.15379333496094, - "y": 93.8135986328125 - }, - "direction": 0.6467286944389343, - "dropPoint": { - "x": 244.79144287109375, - "y": 184.1466522216797 - }, - "position": { - "x": 80.72955322265625, - "y": 60.27083969116211 - }, - "predictedTarget": { - "x": 303.2802734375, - "y": 209.76995849609375 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 126.37249755859375, - "y": 94.68882751464844 - }, - "direction": 0.6461009383201599, - "dropPoint": { - "x": 244.77394104003906, - "y": 183.97181701660156 - }, - "position": { - "x": 81.92720794677734, - "y": 61.17395782470703 - }, - "predictedTarget": { - "x": 303.1602783203125, - "y": 209.7899627685547 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 127.59163665771484, - "y": 95.56343078613281 - }, - "direction": 0.6454763412475586, - "dropPoint": { - "x": 244.75653076171875, - "y": 183.79922485351563 - }, - "position": { - "x": 83.12542724609375, - "y": 62.07632827758789 - }, - "predictedTarget": { - "x": 303.0452575683594, - "y": 209.8049774169922 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 128.81124877929688, - "y": 96.43736267089844 - }, - "direction": 0.6448538899421692, - "dropPoint": { - "x": 244.73922729492188, - "y": 183.6286163330078 - }, - "position": { - "x": 84.32421112060547, - "y": 62.97795104980469 - }, - "predictedTarget": { - "x": 302.9352722167969, - "y": 209.81497192382813 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 130.03134155273438, - "y": 97.3106460571289 - }, - "direction": 0.6442336440086365, - "dropPoint": { - "x": 244.72201538085938, - "y": 183.45999145507813 - }, - "position": { - "x": 85.52355194091797, - "y": 63.87882995605469 - }, - "predictedTarget": { - "x": 302.82525634765625, - "y": 209.82498168945313 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 131.25192260742188, - "y": 98.18323516845703 - }, - "direction": 0.6436148285865784, - "dropPoint": { - "x": 244.70489501953125, - "y": 183.29312133789063 - }, - "position": { - "x": 86.72344970703125, - "y": 64.77896881103516 - }, - "predictedTarget": { - "x": 302.71527099609375, - "y": 209.83497619628906 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 132.47293090820313, - "y": 99.05520629882813 - }, - "direction": 0.6429991722106934, - "dropPoint": { - "x": 244.68788146972656, - "y": 183.12844848632813 - }, - "position": { - "x": 87.92390441894531, - "y": 65.6783676147461 - }, - "predictedTarget": { - "x": 302.6052551269531, - "y": 209.844970703125 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 133.69442749023438, - "y": 99.92649841308594 - }, - "direction": 0.6423848867416382, - "dropPoint": { - "x": 244.67092895507813, - "y": 182.96548461914063 - }, - "position": { - "x": 89.12490844726563, - "y": 66.5770263671875 - }, - "predictedTarget": { - "x": 302.4952697753906, - "y": 209.85498046875 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 134.91632080078125, - "y": 100.7972412109375 - }, - "direction": 0.6417749524116516, - "dropPoint": { - "x": 244.65415954589844, - "y": 182.80502319335938 - }, - "position": { - "x": 90.32646179199219, - "y": 67.4749526977539 - }, - "predictedTarget": { - "x": 302.38525390625, - "y": 209.86497497558594 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 136.13870239257813, - "y": 101.66725158691406 - }, - "direction": 0.6411656141281128, - "dropPoint": { - "x": 244.63742065429688, - "y": 182.64602661132813 - }, - "position": { - "x": 91.52855682373047, - "y": 68.37214660644531 - }, - "predictedTarget": { - "x": 302.2752685546875, - "y": 209.87496948242188 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 137.3253173828125, - "y": 102.58517456054688 - }, - "direction": 0.6416183114051819, - "dropPoint": { - "x": 244.46377563476563, - "y": 182.62428283691406 - }, - "position": { - "x": 92.7302474975586, - "y": 69.26988220214844 - }, - "predictedTarget": { - "x": 302.1652526855469, - "y": 209.88497924804688 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 138.51162719726563, - "y": 103.50350952148438 - }, - "direction": 0.642068088054657, - "dropPoint": { - "x": 244.29263305664063, - "y": 182.6026611328125 - }, - "position": { - "x": 93.93153381347656, - "y": 70.16815948486328 - }, - "predictedTarget": { - "x": 302.0552673339844, - "y": 209.8949737548828 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 139.69754028320313, - "y": 104.42231750488281 - }, - "direction": 0.6425164937973022, - "dropPoint": { - "x": 244.1229705810547, - "y": 182.58084106445313 - }, - "position": { - "x": 95.13241577148438, - "y": 71.06697845458984 - }, - "predictedTarget": { - "x": 301.9402770996094, - "y": 209.90496826171875 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 140.88311767578125, - "y": 105.34158325195313 - }, - "direction": 0.6429633498191833, - "dropPoint": { - "x": 243.95594787597656, - "y": 182.55963134765625 - }, - "position": { - "x": 96.33290100097656, - "y": 71.9663314819336 - }, - "predictedTarget": { - "x": 301.8202819824219, - "y": 209.91497802734375 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 142.0683135986328, - "y": 106.26133728027344 - }, - "direction": 0.6434094309806824, - "dropPoint": { - "x": 243.7898406982422, - "y": 182.5379180908203 - }, - "position": { - "x": 97.5329818725586, - "y": 72.86621856689453 - }, - "predictedTarget": { - "x": 301.7002868652344, - "y": 209.9249725341797 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 143.25318908691406, - "y": 107.1814956665039 - }, - "direction": 0.643852710723877, - "dropPoint": { - "x": 243.6268310546875, - "y": 182.51687622070313 - }, - "position": { - "x": 98.732666015625, - "y": 73.76663970947266 - }, - "predictedTarget": { - "x": 301.58026123046875, - "y": 209.93496704101563 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 144.437744140625, - "y": 108.1020736694336 - }, - "direction": 0.6442936658859253, - "dropPoint": { - "x": 243.46527099609375, - "y": 182.49542236328125 - }, - "position": { - "x": 99.93195343017578, - "y": 74.66758728027344 - }, - "predictedTarget": { - "x": 301.46026611328125, - "y": 209.94497680664063 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 145.62193298339844, - "y": 109.0230941772461 - }, - "direction": 0.6447329521179199, - "dropPoint": { - "x": 243.30633544921875, - "y": 182.47459411621094 - }, - "position": { - "x": 101.13084411621094, - "y": 75.56906127929688 - }, - "predictedTarget": { - "x": 301.34027099609375, - "y": 209.95497131347656 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 146.80581665039063, - "y": 109.94453430175781 - }, - "direction": 0.6451699733734131, - "dropPoint": { - "x": 243.1488037109375, - "y": 182.45330810546875 - }, - "position": { - "x": 102.32933807373047, - "y": 76.47106170654297 - }, - "predictedTarget": { - "x": 301.22027587890625, - "y": 209.96498107910156 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 147.98931884765625, - "y": 110.86643981933594 - }, - "direction": 0.6456058025360107, - "dropPoint": { - "x": 242.99334716796875, - "y": 182.432373046875 - }, - "position": { - "x": 103.5274429321289, - "y": 77.37358856201172 - }, - "predictedTarget": { - "x": 301.10028076171875, - "y": 209.9749755859375 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 149.20982360839844, - "y": 111.73921203613281 - }, - "direction": 0.644954264163971, - "dropPoint": { - "x": 242.9764404296875, - "y": 182.27731323242188 - }, - "position": { - "x": 104.72613525390625, - "y": 78.27532958984375 - }, - "predictedTarget": { - "x": 300.9802551269531, - "y": 209.98497009277344 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 150.43077087402344, - "y": 112.61134338378906 - }, - "direction": 0.6443063020706177, - "dropPoint": { - "x": 242.95962524414063, - "y": 182.1244659423828 - }, - "position": { - "x": 105.92540740966797, - "y": 79.1762924194336 - }, - "predictedTarget": { - "x": 300.8602600097656, - "y": 209.99497985839844 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 151.65220642089844, - "y": 113.4827880859375 - }, - "direction": 0.6436606049537659, - "dropPoint": { - "x": 242.94296264648438, - "y": 181.97360229492188 - }, - "position": { - "x": 107.1252670288086, - "y": 80.07648468017578 - }, - "predictedTarget": { - "x": 300.7402648925781, - "y": 210.0 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 152.87411499023438, - "y": 114.35356140136719 - }, - "direction": 0.6430174708366394, - "dropPoint": { - "x": 242.9263916015625, - "y": 181.82473754882813 - }, - "position": { - "x": 108.32569885253906, - "y": 80.97590637207031 - }, - "predictedTarget": { - "x": 300.6202697753906, - "y": 210.0 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 154.09649658203125, - "y": 115.22367858886719 - }, - "direction": 0.6423768401145935, - "dropPoint": { - "x": 242.9099578857422, - "y": 181.67787170410156 - }, - "position": { - "x": 109.5267105102539, - "y": 81.87455749511719 - }, - "predictedTarget": { - "x": 300.5002746582031, - "y": 210.0 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 155.31939697265625, - "y": 116.09306335449219 - }, - "direction": 0.6417378187179565, - "dropPoint": { - "x": 242.8935546875, - "y": 181.53274536132813 - }, - "position": { - "x": 110.7282943725586, - "y": 82.7724380493164 - }, - "predictedTarget": { - "x": 300.3802795410156, - "y": 210.0 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 156.54269409179688, - "y": 116.96185302734375 - }, - "direction": 0.6411025524139404, - "dropPoint": { - "x": 242.8773193359375, - "y": 181.38983154296875 - }, - "position": { - "x": 111.93045043945313, - "y": 83.6695556640625 - }, - "predictedTarget": { - "x": 300.26025390625, - "y": 210.0 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 157.76651000976563, - "y": 117.8299331665039 - }, - "direction": 0.640468955039978, - "dropPoint": { - "x": 242.86117553710938, - "y": 181.24868774414063 - }, - "position": { - "x": 113.13317108154297, - "y": 84.56591033935547 - }, - "predictedTarget": { - "x": 300.1402587890625, - "y": 210.0 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 158.99073791503906, - "y": 118.6974105834961 - }, - "direction": 0.6398391127586365, - "dropPoint": { - "x": 242.84515380859375, - "y": 181.10972595214844 - }, - "position": { - "x": 114.33645629882813, - "y": 85.46150970458984 - }, - "predictedTarget": { - "x": 300.020263671875, - "y": 210.0 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 160.21542358398438, - "y": 119.56423950195313 - }, - "direction": 0.6392119526863098, - "dropPoint": { - "x": 242.82928466796875, - "y": 180.97274780273438 - }, - "position": { - "x": 115.5403060913086, - "y": 86.35635375976563 - }, - "predictedTarget": { - "x": 299.9002685546875, - "y": 210.0 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 161.41995239257813, - "y": 120.45816040039063 - }, - "direction": 0.6391916275024414, - "dropPoint": { - "x": 242.83395385742188, - "y": 180.97219848632813 - }, - "position": { - "x": 116.74417114257813, - "y": 87.25117492675781 - }, - "predictedTarget": { - "x": 299.7802734375, - "y": 210.0 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 162.62452697753906, - "y": 121.35203552246094 - }, - "direction": 0.6391711831092834, - "dropPoint": { - "x": 242.83860778808594, - "y": 180.97166442871094 - }, - "position": { - "x": 117.94805908203125, - "y": 88.1459732055664 - }, - "predictedTarget": { - "x": 299.6602783203125, - "y": 210.0 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 163.82911682128906, - "y": 122.24588775634766 - }, - "direction": 0.6391505002975464, - "dropPoint": { - "x": 242.84329223632813, - "y": 180.97113037109375 - }, - "position": { - "x": 119.15196228027344, - "y": 89.04074096679688 - }, - "predictedTarget": { - "x": 299.540283203125, - "y": 209.99502563476563 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 165.03372192382813, - "y": 123.13970947265625 - }, - "direction": 0.6391298174858093, - "dropPoint": { - "x": 242.84791564941406, - "y": 180.97059631347656 - }, - "position": { - "x": 120.35588836669922, - "y": 89.93548583984375 - }, - "predictedTarget": { - "x": 299.4202575683594, - "y": 209.98501586914063 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 166.23837280273438, - "y": 124.03349304199219 - }, - "direction": 0.6391088366508484, - "dropPoint": { - "x": 242.85256958007813, - "y": 180.97006225585938 - }, - "position": { - "x": 121.55982971191406, - "y": 90.83020782470703 - }, - "predictedTarget": { - "x": 299.3002624511719, - "y": 209.9750213623047 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 167.44302368164063, - "y": 124.92725372314453 - }, - "direction": 0.6390879154205322, - "dropPoint": { - "x": 242.85720825195313, - "y": 180.96957397460938 - }, - "position": { - "x": 122.76378631591797, - "y": 91.72490692138672 - }, - "predictedTarget": { - "x": 299.1802673339844, - "y": 209.96502685546875 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 168.647705078125, - "y": 125.82096862792969 - }, - "direction": 0.6390665173530579, - "dropPoint": { - "x": 242.86184692382813, - "y": 180.9690399169922 - }, - "position": { - "x": 123.96776580810547, - "y": 92.61957550048828 - }, - "predictedTarget": { - "x": 299.0602722167969, - "y": 209.95501708984375 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 169.8524169921875, - "y": 126.71466064453125 - }, - "direction": 0.6390452980995178, - "dropPoint": { - "x": 242.866455078125, - "y": 180.96853637695313 - }, - "position": { - "x": 125.17176055908203, - "y": 93.51422119140625 - }, - "predictedTarget": { - "x": 298.9402770996094, - "y": 209.9450225830078 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 171.05714416503906, - "y": 127.60830688476563 - }, - "direction": 0.6390235424041748, - "dropPoint": { - "x": 242.87112426757813, - "y": 180.96804809570313 - }, - "position": { - "x": 126.37577819824219, - "y": 94.4088363647461 - }, - "predictedTarget": { - "x": 298.82025146484375, - "y": 209.9350128173828 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 172.26190185546875, - "y": 128.50193786621094 - }, - "direction": 0.6390019059181213, - "dropPoint": { - "x": 242.875732421875, - "y": 180.96755981445313 - }, - "position": { - "x": 127.57981872558594, - "y": 95.30342864990234 - }, - "predictedTarget": { - "x": 298.70025634765625, - "y": 209.92501831054688 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 173.47239685058594, - "y": 129.38784790039063 - }, - "direction": 0.6388128399848938, - "dropPoint": { - "x": 242.71348571777344, - "y": 180.813232421875 - }, - "position": { - "x": 128.78402709960938, - "y": 96.19779205322266 - }, - "predictedTarget": { - "x": 298.58026123046875, - "y": 209.91502380371094 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 174.68304443359375, - "y": 130.27352905273438 - }, - "direction": 0.638623833656311, - "dropPoint": { - "x": 242.5538330078125, - "y": 180.66128540039063 - }, - "position": { - "x": 129.9884033203125, - "y": 97.09192657470703 - }, - "predictedTarget": { - "x": 298.46026611328125, - "y": 209.90501403808594 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 175.89382934570313, - "y": 131.15902709960938 - }, - "direction": 0.638435423374176, - "dropPoint": { - "x": 242.39581298828125, - "y": 180.51112365722656 - }, - "position": { - "x": 131.1929473876953, - "y": 97.98583984375 - }, - "predictedTarget": { - "x": 298.34027099609375, - "y": 209.89501953125 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 177.10479736328125, - "y": 132.04428100585938 - }, - "direction": 0.638247013092041, - "dropPoint": { - "x": 242.2403564453125, - "y": 180.36331176757813 - }, - "position": { - "x": 132.3976593017578, - "y": 98.87952423095703 - }, - "predictedTarget": { - "x": 298.2202453613281, - "y": 209.885009765625 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 178.3158721923828, - "y": 132.9293975830078 - }, - "direction": 0.6380602717399597, - "dropPoint": { - "x": 242.0866241455078, - "y": 180.217529296875 - }, - "position": { - "x": 133.6025390625, - "y": 99.77297973632813 - }, - "predictedTarget": { - "x": 298.1002502441406, - "y": 209.87501525878906 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 179.52708435058594, - "y": 133.81430053710938 - }, - "direction": 0.6378740072250366, - "dropPoint": { - "x": 241.93499755859375, - "y": 180.07382202148438 - }, - "position": { - "x": 134.80758666992188, - "y": 100.66621398925781 - }, - "predictedTarget": { - "x": 297.9802551269531, - "y": 209.86502075195313 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 180.73849487304688, - "y": 134.69895935058594 - }, - "direction": 0.6376872658729553, - "dropPoint": { - "x": 241.78541564941406, - "y": 179.93199157714844 - }, - "position": { - "x": 136.01280212402344, - "y": 101.55921936035156 - }, - "predictedTarget": { - "x": 297.8602600097656, - "y": 209.8550262451172 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 181.9500732421875, - "y": 135.5833740234375 - }, - "direction": 0.6375004053115845, - "dropPoint": { - "x": 241.63839721679688, - "y": 179.79248046875 - }, - "position": { - "x": 137.2181854248047, - "y": 102.4520034790039 - }, - "predictedTarget": { - "x": 297.7402648925781, - "y": 209.8450164794922 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 183.1617431640625, - "y": 136.46766662597656 - }, - "direction": 0.6373154520988464, - "dropPoint": { - "x": 241.49313354492188, - "y": 179.655029296875 - }, - "position": { - "x": 138.42373657226563, - "y": 103.34456634521484 - }, - "predictedTarget": { - "x": 297.6202697753906, - "y": 209.83502197265625 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 184.37364196777344, - "y": 137.3516387939453 - }, - "direction": 0.637128472328186, - "dropPoint": { - "x": 241.350341796875, - "y": 179.51951599121094 - }, - "position": { - "x": 139.6294403076172, - "y": 104.23690032958984 - }, - "predictedTarget": { - "x": 297.5002746582031, - "y": 209.8250274658203 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 185.61962890625, - "y": 138.18948364257813 - }, - "direction": 0.6359432935714722, - "dropPoint": { - "x": 241.4688720703125, - "y": 179.42059326171875 - }, - "position": { - "x": 140.83621215820313, - "y": 105.1278076171875 - }, - "predictedTarget": { - "x": 297.3802795410156, - "y": 209.8150177001953 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 186.86627197265625, - "y": 139.02630615234375 - }, - "direction": 0.6347677707672119, - "dropPoint": { - "x": 241.585205078125, - "y": 179.3236541748047 - }, - "position": { - "x": 142.0440216064453, - "y": 106.01729583740234 - }, - "predictedTarget": { - "x": 297.2602844238281, - "y": 209.80502319335938 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 188.1137237548828, - "y": 139.86190795898438 - }, - "direction": 0.6335976123809814, - "dropPoint": { - "x": 241.70016479492188, - "y": 179.22862243652344 - }, - "position": { - "x": 143.25286865234375, - "y": 106.90536499023438 - }, - "predictedTarget": { - "x": 297.1402587890625, - "y": 209.7900390625 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 189.36187744140625, - "y": 140.6964111328125 - }, - "direction": 0.6324352622032166, - "dropPoint": { - "x": 241.8128662109375, - "y": 179.1351776123047 - }, - "position": { - "x": 144.46275329589844, - "y": 107.79203033447266 - }, - "predictedTarget": { - "x": 297.020263671875, - "y": 209.77005004882813 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 190.61082458496094, - "y": 141.5297088623047 - }, - "direction": 0.6312783360481262, - "dropPoint": { - "x": 241.92459106445313, - "y": 179.04388427734375 - }, - "position": { - "x": 145.6736602783203, - "y": 108.67729949951172 - }, - "predictedTarget": { - "x": 296.9002685546875, - "y": 209.7500457763672 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 191.8604278564453, - "y": 142.3619842529297 - }, - "direction": 0.6301305890083313, - "dropPoint": { - "x": 242.03367614746094, - "y": 178.95408630371094 - }, - "position": { - "x": 146.88558959960938, - "y": 109.56117248535156 - }, - "predictedTarget": { - "x": 296.7802734375, - "y": 209.73004150390625 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 193.11074829101563, - "y": 143.1931610107422 - }, - "direction": 0.628990113735199, - "dropPoint": { - "x": 242.14138793945313, - "y": 178.86634826660156 - }, - "position": { - "x": 148.09852600097656, - "y": 110.44366455078125 - }, - "predictedTarget": { - "x": 296.6602783203125, - "y": 209.71005249023438 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 194.3616943359375, - "y": 144.02334594726563 - }, - "direction": 0.6278588175773621, - "dropPoint": { - "x": 242.24691772460938, - "y": 178.78036499023438 - }, - "position": { - "x": 149.3124542236328, - "y": 111.32478332519531 - }, - "predictedTarget": { - "x": 296.5402526855469, - "y": 209.69004821777344 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 195.6133575439453, - "y": 144.8524169921875 - }, - "direction": 0.6267341375350952, - "dropPoint": { - "x": 242.35064697265625, - "y": 178.69602966308594 - }, - "position": { - "x": 150.52737426757813, - "y": 112.20453643798828 - }, - "predictedTarget": { - "x": 296.4202575683594, - "y": 209.6700439453125 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 196.86569213867188, - "y": 145.680419921875 - }, - "direction": 0.6256170868873596, - "dropPoint": { - "x": 242.4529571533203, - "y": 178.61370849609375 - }, - "position": { - "x": 151.74327087402344, - "y": 113.08293151855469 - }, - "predictedTarget": { - "x": 296.3002624511719, - "y": 209.65005493164063 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 198.06602478027344, - "y": 146.5803680419922 - }, - "direction": 0.6260824203491211, - "dropPoint": { - "x": 242.3345489501953, - "y": 178.59234619140625 - }, - "position": { - "x": 152.95877075195313, - "y": 113.9618911743164 - }, - "predictedTarget": { - "x": 296.1802673339844, - "y": 209.6300506591797 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 199.26597595214844, - "y": 147.48080444335938 - }, - "direction": 0.6265462040901184, - "dropPoint": { - "x": 242.21737670898438, - "y": 178.5706787109375 - }, - "position": { - "x": 154.17385864257813, - "y": 114.84141540527344 - }, - "predictedTarget": { - "x": 296.06024169921875, - "y": 209.61004638671875 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 200.46566772460938, - "y": 148.381591796875 - }, - "direction": 0.6270051598548889, - "dropPoint": { - "x": 242.10302734375, - "y": 178.54942321777344 - }, - "position": { - "x": 155.38853454589844, - "y": 115.72149658203125 - }, - "predictedTarget": { - "x": 295.9452209472656, - "y": 209.5900421142578 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 201.6649627685547, - "y": 149.28289794921875 - }, - "direction": 0.6274638175964355, - "dropPoint": { - "x": 241.9903564453125, - "y": 178.52838134765625 - }, - "position": { - "x": 156.60281372070313, - "y": 116.60213470458984 - }, - "predictedTarget": { - "x": 295.8352355957031, - "y": 209.57005310058594 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 202.8640594482422, - "y": 150.18446350097656 - }, - "direction": 0.627916157245636, - "dropPoint": { - "x": 241.8800048828125, - "y": 178.50723266601563 - }, - "position": { - "x": 157.8166961669922, - "y": 117.48332214355469 - }, - "predictedTarget": { - "x": 295.7252197265625, - "y": 209.550048828125 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 204.06272888183594, - "y": 151.0865936279297 - }, - "direction": 0.6283690333366394, - "dropPoint": { - "x": 241.7714080810547, - "y": 178.48646545410156 - }, - "position": { - "x": 159.03018188476563, - "y": 118.36505889892578 - }, - "predictedTarget": { - "x": 295.615234375, - "y": 209.53004455566406 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 205.26112365722656, - "y": 151.98910522460938 - }, - "direction": 0.6288180351257324, - "dropPoint": { - "x": 241.66476440429688, - "y": 178.46568298339844 - }, - "position": { - "x": 160.24327087402344, - "y": 119.24734497070313 - }, - "predictedTarget": { - "x": 295.5052185058594, - "y": 209.51004028320313 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 206.45924377441406, - "y": 152.89193725585938 - }, - "direction": 0.6292629241943359, - "dropPoint": { - "x": 241.5601348876953, - "y": 178.44491577148438 - }, - "position": { - "x": 161.45596313476563, - "y": 120.13016510009766 - }, - "predictedTarget": { - "x": 295.3952331542969, - "y": 209.4900360107422 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 207.65704345703125, - "y": 153.7952117919922 - }, - "direction": 0.6297051906585693, - "dropPoint": { - "x": 241.45791625976563, - "y": 178.42465209960938 - }, - "position": { - "x": 162.6682586669922, - "y": 121.0135269165039 - }, - "predictedTarget": { - "x": 295.28521728515625, - "y": 209.4700469970703 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 208.85455322265625, - "y": 154.69886779785156 - }, - "direction": 0.6301445364952087, - "dropPoint": { - "x": 241.35733032226563, - "y": 178.40431213378906 - }, - "position": { - "x": 163.8801727294922, - "y": 121.89742279052734 - }, - "predictedTarget": { - "x": 295.17523193359375, - "y": 209.45004272460938 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 210.09083557128906, - "y": 155.54931640625 - }, - "direction": 0.6294207572937012, - "dropPoint": { - "x": 241.341064453125, - "y": 178.30661010742188 - }, - "position": { - "x": 165.0927276611328, - "y": 122.78044128417969 - }, - "predictedTarget": { - "x": 295.0652160644531, - "y": 209.43003845214844 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 211.3275604248047, - "y": 156.39910888671875 - }, - "direction": 0.6287019848823547, - "dropPoint": { - "x": 241.32492065429688, - "y": 178.21104431152344 - }, - "position": { - "x": 166.305908203125, - "y": 123.66258239746094 - }, - "predictedTarget": { - "x": 294.9552307128906, - "y": 209.4100341796875 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 212.56478881835938, - "y": 157.2481689453125 - }, - "direction": 0.6279866099357605, - "dropPoint": { - "x": 241.3089599609375, - "y": 178.11746215820313 - }, - "position": { - "x": 167.5197296142578, - "y": 124.54385375976563 - }, - "predictedTarget": { - "x": 294.84521484375, - "y": 209.3850555419922 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 213.8025360107422, - "y": 158.09646606445313 - }, - "direction": 0.6272737979888916, - "dropPoint": { - "x": 241.29312133789063, - "y": 178.02569580078125 - }, - "position": { - "x": 168.7341766357422, - "y": 125.42426300048828 - }, - "predictedTarget": { - "x": 294.7352294921875, - "y": 209.3550567626953 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 215.0407257080078, - "y": 158.944091796875 - }, - "direction": 0.6265659928321838, - "dropPoint": { - "x": 241.27745056152344, - "y": 177.93603515625 - }, - "position": { - "x": 169.94924926757813, - "y": 126.3038101196289 - }, - "predictedTarget": { - "x": 294.6252136230469, - "y": 209.32505798339844 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 216.27944946289063, - "y": 159.7909393310547 - }, - "direction": 0.6258596777915955, - "dropPoint": { - "x": 241.26222229003906, - "y": 177.84828186035156 - }, - "position": { - "x": 171.16493225097656, - "y": 127.18250274658203 - }, - "predictedTarget": { - "x": 294.5152282714844, - "y": 209.29505920410156 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 217.51858520507813, - "y": 160.63717651367188 - }, - "direction": 0.625159502029419, - "dropPoint": { - "x": 241.24688720703125, - "y": 177.76254272460938 - }, - "position": { - "x": 172.38124084472656, - "y": 128.0603485107422 - }, - "predictedTarget": { - "x": 294.40521240234375, - "y": 209.2650604248047 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 218.75814819335938, - "y": 161.48277282714844 - }, - "direction": 0.6244637966156006, - "dropPoint": { - "x": 241.231689453125, - "y": 177.6787567138672 - }, - "position": { - "x": 173.59815979003906, - "y": 128.93734741210938 - }, - "predictedTarget": { - "x": 294.29522705078125, - "y": 209.2350616455078 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 219.9982147216797, - "y": 162.32763671875 - }, - "direction": 0.6237711906433105, - "dropPoint": { - "x": 241.21664428710938, - "y": 177.5968017578125 - }, - "position": { - "x": 174.81568908691406, - "y": 129.81349182128906 - }, - "predictedTarget": { - "x": 294.1852111816406, - "y": 209.20506286621094 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 221.23866271972656, - "y": 163.17190551757813 - }, - "direction": 0.6230841279029846, - "dropPoint": { - "x": 241.20179748535156, - "y": 177.51690673828125 - }, - "position": { - "x": 176.0338134765625, - "y": 130.68881225585938 - }, - "predictedTarget": { - "x": 294.0752258300781, - "y": 209.17506408691406 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 222.4816436767578, - "y": 164.01260375976563 - }, - "direction": 0.6223388910293579, - "dropPoint": { - "x": 241.18548583984375, - "y": 177.43161010742188 - }, - "position": { - "x": 177.25259399414063, - "y": 131.56321716308594 - }, - "predictedTarget": { - "x": 293.9652099609375, - "y": 209.1450653076172 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 223.72506713867188, - "y": 164.85263061523438 - }, - "direction": 0.6215987205505371, - "dropPoint": { - "x": 241.16937255859375, - "y": 177.34841918945313 - }, - "position": { - "x": 178.47201538085938, - "y": 132.4367218017578 - }, - "predictedTarget": { - "x": 293.855224609375, - "y": 209.1150665283203 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 224.968994140625, - "y": 165.69189453125 - }, - "direction": 0.6208621859550476, - "dropPoint": { - "x": 241.1534423828125, - "y": 177.26719665527344 - }, - "position": { - "x": 179.69207763671875, - "y": 133.309326171875 - }, - "predictedTarget": { - "x": 293.7452087402344, - "y": 209.08009338378906 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 226.21343994140625, - "y": 166.53038024902344 - }, - "direction": 0.6201287508010864, - "dropPoint": { - "x": 241.1376495361328, - "y": 177.1878204345703 - }, - "position": { - "x": 180.91278076171875, - "y": 134.1810302734375 - }, - "predictedTarget": { - "x": 293.6352233886719, - "y": 209.0400848388672 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 227.458251953125, - "y": 167.3682861328125 - }, - "direction": 0.6194024682044983, - "dropPoint": { - "x": 241.12171936035156, - "y": 177.11044311523438 - }, - "position": { - "x": 182.13412475585938, - "y": 135.05184936523438 - }, - "predictedTarget": { - "x": 293.52520751953125, - "y": 209.00009155273438 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 228.70364379882813, - "y": 168.2053680419922 - }, - "direction": 0.6186777949333191, - "dropPoint": { - "x": 241.1062469482422, - "y": 177.03497314453125 - }, - "position": { - "x": 183.35609436035156, - "y": 135.92178344726563 - }, - "predictedTarget": { - "x": 293.41522216796875, - "y": 208.9600830078125 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 229.94943237304688, - "y": 169.04180908203125 - }, - "direction": 0.6179586052894592, - "dropPoint": { - "x": 241.09097290039063, - "y": 176.96156311035156 - }, - "position": { - "x": 184.5786895751953, - "y": 136.7908477783203 - }, - "predictedTarget": { - "x": 293.30523681640625, - "y": 208.9200897216797 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 231.19569396972656, - "y": 169.8775634765625 - }, - "direction": 0.6172438263893127, - "dropPoint": { - "x": 241.07591247558594, - "y": 176.89010620117188 - }, - "position": { - "x": 185.80191040039063, - "y": 137.65902709960938 - }, - "predictedTarget": { - "x": 293.1952209472656, - "y": 208.8800811767578 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 232.44241333007813, - "y": 170.71258544921875 - }, - "direction": 0.6165330410003662, - "dropPoint": { - "x": 241.0609588623047, - "y": 176.82044982910156 - }, - "position": { - "x": 187.02574157714844, - "y": 138.52633666992188 - }, - "predictedTarget": { - "x": 293.0852355957031, - "y": 208.840087890625 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 233.6895294189453, - "y": 171.54702758789063 - }, - "direction": 0.6158283352851868, - "dropPoint": { - "x": 241.0462188720703, - "y": 176.75283813476563 - }, - "position": { - "x": 188.25018310546875, - "y": 139.39279174804688 - }, - "predictedTarget": { - "x": 292.9752197265625, - "y": 208.80007934570313 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 234.91514587402344, - "y": 172.41183471679688 - }, - "direction": 0.6157928109169006, - "dropPoint": { - "x": 241.053466796875, - "y": 176.75515747070313 - }, - "position": { - "x": 189.4746551513672, - "y": 140.2592010498047 - }, - "predictedTarget": { - "x": 292.865234375, - "y": 208.7600860595703 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 236.14080810546875, - "y": 173.27655029296875 - }, - "direction": 0.6157568693161011, - "dropPoint": { - "x": 241.06069946289063, - "y": 176.7574920654297 - }, - "position": { - "x": 190.69915771484375, - "y": 141.1255645751953 - }, - "predictedTarget": { - "x": 292.7552185058594, - "y": 208.72007751464844 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 237.36651611328125, - "y": 174.14122009277344 - }, - "direction": 0.6157203316688538, - "dropPoint": { - "x": 241.0679168701172, - "y": 176.7598419189453 - }, - "position": { - "x": 191.92369079589844, - "y": 141.99188232421875 - }, - "predictedTarget": { - "x": 292.65020751953125, - "y": 208.68008422851563 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 238.59222412109375, - "y": 175.00587463378906 - }, - "direction": 0.6156848669052124, - "dropPoint": { - "x": 241.07513427734375, - "y": 176.7623291015625 - }, - "position": { - "x": 193.14825439453125, - "y": 142.858154296875 - }, - "predictedTarget": { - "x": 292.5502014160156, - "y": 208.64007568359375 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 239.818115234375, - "y": 175.87026977539063 - }, - "direction": 0.615644633769989, - "dropPoint": { - "x": 241.08255004882813, - "y": 176.76467895507813 - }, - "position": { - "x": 194.37286376953125, - "y": 143.72438049316406 - }, - "predictedTarget": { - "x": 292.4502258300781, - "y": 208.60008239746094 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 241.04393005371094, - "y": 176.73480224609375 - }, - "direction": 0.6156080961227417, - "dropPoint": { - "x": 241.08973693847656, - "y": 176.76719665527344 - }, - "position": { - "x": 195.59750366210938, - "y": 144.59056091308594 - }, - "predictedTarget": { - "x": 292.3502197265625, - "y": 208.56007385253906 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 242.26983642578125, - "y": 177.59918212890625 - }, - "direction": 0.6155698299407959, - "dropPoint": { - "x": 241.09689331054688, - "y": 176.76963806152344 - }, - "position": { - "x": 196.82217407226563, - "y": 145.45669555664063 - }, - "predictedTarget": { - "x": 292.2502136230469, - "y": 208.52008056640625 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 243.49581909179688, - "y": 178.4634552001953 - }, - "direction": 0.6155297756195068, - "dropPoint": { - "x": 241.10400390625, - "y": 176.77200317382813 - }, - "position": { - "x": 198.046875, - "y": 146.32278442382813 - }, - "predictedTarget": { - "x": 292.15020751953125, - "y": 208.48008728027344 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 244.72177124023438, - "y": 179.3277587890625 - }, - "direction": 0.6154916286468506, - "dropPoint": { - "x": 241.1111297607422, - "y": 176.7745819091797 - }, - "position": { - "x": 199.2716064453125, - "y": 147.18882751464844 - }, - "predictedTarget": { - "x": 292.0502014160156, - "y": 208.44007873535156 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 245.9478759765625, - "y": 180.19186401367188 - }, - "direction": 0.615450382232666, - "dropPoint": { - "x": 241.11819458007813, - "y": 176.77699279785156 - }, - "position": { - "x": 200.4963836669922, - "y": 148.0548095703125 - }, - "predictedTarget": { - "x": 291.9501953125, - "y": 208.40008544921875 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 247.19886779785156, - "y": 181.02078247070313 - }, - "direction": 0.6146559119224548, - "dropPoint": { - "x": 241.10104370117188, - "y": 176.71649169921875 - }, - "position": { - "x": 201.7218475341797, - "y": 148.91983032226563 - }, - "predictedTarget": { - "x": 291.8502197265625, - "y": 208.36007690429688 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 248.45040893554688, - "y": 181.84878540039063 - }, - "direction": 0.6138636469841003, - "dropPoint": { - "x": 241.08401489257813, - "y": 176.65777587890625 - }, - "position": { - "x": 202.94798278808594, - "y": 149.78387451171875 - }, - "predictedTarget": { - "x": 291.7502136230469, - "y": 208.32008361816406 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 249.70248413085938, - "y": 182.67601013183594 - }, - "direction": 0.6130759119987488, - "dropPoint": { - "x": 241.06716918945313, - "y": 176.6009979248047 - }, - "position": { - "x": 204.1748046875, - "y": 150.64695739746094 - }, - "predictedTarget": { - "x": 291.65020751953125, - "y": 208.2751007080078 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 250.9549560546875, - "y": 183.5026092529297 - }, - "direction": 0.6122958660125732, - "dropPoint": { - "x": 241.05032348632813, - "y": 176.54617309570313 - }, - "position": { - "x": 205.4022979736328, - "y": 151.5090789794922 - }, - "predictedTarget": { - "x": 291.5502014160156, - "y": 208.22509765625 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 252.20794677734375, - "y": 184.32839965820313 - }, - "direction": 0.6115193367004395, - "dropPoint": { - "x": 241.03390502929688, - "y": 176.49334716796875 - }, - "position": { - "x": 206.63046264648438, - "y": 152.37025451660156 - }, - "predictedTarget": { - "x": 291.4501953125, - "y": 208.1750946044922 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 253.46144104003906, - "y": 185.15341186523438 - }, - "direction": 0.6107471585273743, - "dropPoint": { - "x": 241.0176239013672, - "y": 176.44235229492188 - }, - "position": { - "x": 207.8592987060547, - "y": 153.23046875 - }, - "predictedTarget": { - "x": 291.3502197265625, - "y": 208.12510681152344 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 254.7154541015625, - "y": 185.97763061523438 - }, - "direction": 0.6099787354469299, - "dropPoint": { - "x": 241.00180053710938, - "y": 176.39334106445313 - }, - "position": { - "x": 209.0887908935547, - "y": 154.08973693847656 - }, - "predictedTarget": { - "x": 291.2502136230469, - "y": 208.07510375976563 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 255.9697723388672, - "y": 186.8013458251953 - }, - "direction": 0.6092202663421631, - "dropPoint": { - "x": 240.98602294921875, - "y": 176.3463134765625 - }, - "position": { - "x": 210.31893920898438, - "y": 154.9480743408203 - }, - "predictedTarget": { - "x": 291.15020751953125, - "y": 208.0251007080078 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 257.22454833984375, - "y": 187.62435913085938 - }, - "direction": 0.6084665656089783, - "dropPoint": { - "x": 240.97019958496094, - "y": 176.30093383789063 - }, - "position": { - "x": 211.5497283935547, - "y": 155.8054962158203 - }, - "predictedTarget": { - "x": 291.0502014160156, - "y": 207.97509765625 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 258.4797668457031, - "y": 188.44667053222656 - }, - "direction": 0.6077185869216919, - "dropPoint": { - "x": 240.954833984375, - "y": 176.25758361816406 - }, - "position": { - "x": 212.78115844726563, - "y": 156.6619873046875 - }, - "predictedTarget": { - "x": 290.9501953125, - "y": 207.9250946044922 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 259.7305603027344, - "y": 189.27529907226563 - }, - "direction": 0.607124924659729, - "dropPoint": { - "x": 241.03173828125, - "y": 176.28619384765625 - }, - "position": { - "x": 214.01309204101563, - "y": 157.5177459716797 - }, - "predictedTarget": { - "x": 290.8502197265625, - "y": 207.87510681152344 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 260.98162841796875, - "y": 190.10350036621094 - }, - "direction": 0.6065380573272705, - "dropPoint": { - "x": 241.10643005371094, - "y": 176.31451416015625 - }, - "position": { - "x": 215.2455291748047, - "y": 158.37278747558594 - }, - "predictedTarget": { - "x": 290.7502136230469, - "y": 207.82510375976563 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 262.233154296875, - "y": 190.93104553222656 - }, - "direction": 0.6059526205062866, - "dropPoint": { - "x": 241.1795654296875, - "y": 176.3427734375 - }, - "position": { - "x": 216.4784698486328, - "y": 159.22711181640625 - }, - "predictedTarget": { - "x": 290.6551818847656, - "y": 207.7751007080078 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 263.4848937988281, - "y": 191.7581787109375 - }, - "direction": 0.605374276638031, - "dropPoint": { - "x": 241.2502899169922, - "y": 176.37059020996094 - }, - "position": { - "x": 217.71189880371094, - "y": 160.08071899414063 - }, - "predictedTarget": { - "x": 290.565185546875, - "y": 207.72509765625 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 264.7369689941406, - "y": 192.58482360839844 - }, - "direction": 0.604800820350647, - "dropPoint": { - "x": 241.31930541992188, - "y": 176.39834594726563 - }, - "position": { - "x": 218.94581604003906, - "y": 160.93360900878906 - }, - "predictedTarget": { - "x": 290.4751892089844, - "y": 207.6750946044922 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 265.9892578125, - "y": 193.4111328125 - }, - "direction": 0.6042355895042419, - "dropPoint": { - "x": 241.38619995117188, - "y": 176.42584228515625 - }, - "position": { - "x": 220.1802215576172, - "y": 161.7858123779297 - }, - "predictedTarget": { - "x": 290.3851623535156, - "y": 207.62509155273438 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 267.241943359375, - "y": 194.23683166503906 - }, - "direction": 0.6036723256111145, - "dropPoint": { - "x": 241.45126342773438, - "y": 176.4530792236328 - }, - "position": { - "x": 221.41510009765625, - "y": 162.63731384277344 - }, - "predictedTarget": { - "x": 290.295166015625, - "y": 207.57510375976563 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 268.49493408203125, - "y": 195.06207275390625 - }, - "direction": 0.6031145453453064, - "dropPoint": { - "x": 241.51434326171875, - "y": 176.48004150390625 - }, - "position": { - "x": 222.6504669189453, - "y": 163.48812866210938 - }, - "predictedTarget": { - "x": 290.2051696777344, - "y": 207.5251007080078 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 269.7481689453125, - "y": 195.88693237304688 - }, - "direction": 0.6025634407997131, - "dropPoint": { - "x": 241.57553100585938, - "y": 176.50680541992188 - }, - "position": { - "x": 223.88629150390625, - "y": 164.3382568359375 - }, - "predictedTarget": { - "x": 290.11517333984375, - "y": 207.47509765625 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 271.0016174316406, - "y": 196.71142578125 - }, - "direction": 0.6020193099975586, - "dropPoint": { - "x": 241.63458251953125, - "y": 176.533203125 - }, - "position": { - "x": 225.12258911132813, - "y": 165.18771362304688 - }, - "predictedTarget": { - "x": 290.0251770019531, - "y": 207.4250946044922 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 272.2660827636719, - "y": 197.5198516845703 - }, - "direction": 0.6011483073234558, - "dropPoint": { - "x": 241.6147003173828, - "y": 176.49839782714844 - }, - "position": { - "x": 226.359619140625, - "y": 166.03610229492188 - }, - "predictedTarget": { - "x": 289.9351501464844, - "y": 207.37509155273438 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 273.5310363769531, - "y": 198.32749938964844 - }, - "direction": 0.600284218788147, - "dropPoint": { - "x": 241.59500122070313, - "y": 176.46554565429688 - }, - "position": { - "x": 227.59738159179688, - "y": 166.8834228515625 - }, - "predictedTarget": { - "x": 289.84515380859375, - "y": 207.32510375976563 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 274.7965087890625, - "y": 199.13429260253906 - }, - "direction": 0.5994255542755127, - "dropPoint": { - "x": 241.57554626464844, - "y": 176.4346160888672 - }, - "position": { - "x": 228.83587646484375, - "y": 167.72967529296875 - }, - "predictedTarget": { - "x": 289.7551574707031, - "y": 207.2751007080078 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 276.0625, - "y": 199.94029235839844 - }, - "direction": 0.5985727906227112, - "dropPoint": { - "x": 241.55630493164063, - "y": 176.4055633544922 - }, - "position": { - "x": 230.07508850097656, - "y": 168.5748748779297 - }, - "predictedTarget": { - "x": 289.6651611328125, - "y": 207.22509765625 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 277.3289489746094, - "y": 200.7454833984375 - }, - "direction": 0.5977261066436768, - "dropPoint": { - "x": 241.53729248046875, - "y": 176.37838745117188 - }, - "position": { - "x": 231.3150177001953, - "y": 169.4190216064453 - }, - "predictedTarget": { - "x": 289.5751647949219, - "y": 207.1750946044922 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 278.59588623046875, - "y": 201.5499267578125 - }, - "direction": 0.5968859195709229, - "dropPoint": { - "x": 241.5185089111328, - "y": 176.35305786132813 - }, - "position": { - "x": 232.55564880371094, - "y": 170.2621307373047 - }, - "predictedTarget": { - "x": 289.48516845703125, - "y": 207.12509155273438 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 279.8633117675781, - "y": 202.35354614257813 - }, - "direction": 0.5960512161254883, - "dropPoint": { - "x": 241.49996948242188, - "y": 176.32955932617188 - }, - "position": { - "x": 233.79698181152344, - "y": 171.1042022705078 - }, - "predictedTarget": { - "x": 289.3951721191406, - "y": 207.07510375976563 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 281.13116455078125, - "y": 203.15652465820313 - }, - "direction": 0.5952247381210327, - "dropPoint": { - "x": 241.48170471191406, - "y": 176.3079071044922 - }, - "position": { - "x": 235.0390167236328, - "y": 171.94525146484375 - }, - "predictedTarget": { - "x": 289.3051452636719, - "y": 207.0251007080078 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 282.3994140625, - "y": 203.95883178710938 - }, - "direction": 0.59440678358078, - "dropPoint": { - "x": 241.46371459960938, - "y": 176.28807067871094 - }, - "position": { - "x": 236.28173828125, - "y": 172.7852783203125 - }, - "predictedTarget": { - "x": 289.21514892578125, - "y": 206.97509765625 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 283.6680603027344, - "y": 204.76048278808594 - }, - "direction": 0.5935966372489929, - "dropPoint": { - "x": 241.4459991455078, - "y": 176.27000427246094 - }, - "position": { - "x": 237.525146484375, - "y": 173.62429809570313 - }, - "predictedTarget": { - "x": 289.1251525878906, - "y": 206.9250946044922 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 284.94171142578125, - "y": 205.5546417236328 - }, - "direction": 0.5926502346992493, - "dropPoint": { - "x": 241.42474365234375, - "y": 176.2502899169922 - }, - "position": { - "x": 238.76934814453125, - "y": 174.46214294433594 - }, - "predictedTarget": { - "x": 289.03515625, - "y": 206.87509155273438 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 286.2156982421875, - "y": 206.3481903076172 - }, - "direction": 0.5917163491249084, - "dropPoint": { - "x": 241.40347290039063, - "y": 176.23239135742188 - }, - "position": { - "x": 240.0143280029297, - "y": 175.298828125 - }, - "predictedTarget": { - "x": 288.9451599121094, - "y": 206.82510375976563 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 287.49029541015625, - "y": 207.14077758789063 - }, - "direction": 0.5907869935035706, - "dropPoint": { - "x": 241.3826446533203, - "y": 176.216552734375 - }, - "position": { - "x": 241.2600860595703, - "y": 176.1343536376953 - }, - "predictedTarget": { - "x": 288.8651123046875, - "y": 206.76513671875 - }, - "state": 4, - "targetIndex": 0 - } - ], - "totalSteps": 245 -} \ No newline at end of file diff --git a/drone_simulation/include/config_loaders/factory.hpp b/drone_simulation/include/config_loaders/factory.hpp index a84ba69..183a2f2 100644 --- a/drone_simulation/include/config_loaders/factory.hpp +++ b/drone_simulation/include/config_loaders/factory.hpp @@ -1,4 +1,5 @@ #pragma once +#include #include "simulation.hpp" #include "interfaces/ballistic_solver.hpp" #include "interfaces/target_provider.hpp" @@ -9,5 +10,5 @@ enum class ProviderType { JSON }; enum class LoaderType { FILE }; IBallisticSolver* createSolver(SolverType type, const DroneConfig& config); -ITargetProvider* createProvider(ProviderType type, const char* path); -IConfigLoader* createLoader(LoaderType type, const char* c, const char* a); \ No newline at end of file +ITargetProvider* createProvider(ProviderType type, const std::string path); +IConfigLoader* createLoader(LoaderType type, const std::string c, const std::string a); \ No newline at end of file diff --git a/drone_simulation/include/config_loaders/file_config_loader.hpp b/drone_simulation/include/config_loaders/file_config_loader.hpp index 9eda7b4..658b445 100644 --- a/drone_simulation/include/config_loaders/file_config_loader.hpp +++ b/drone_simulation/include/config_loaders/file_config_loader.hpp @@ -1,15 +1,16 @@ #pragma once +#include #include "interfaces/config_loader.hpp" class FileConfigLoader : public IConfigLoader { AmmoParams ammoParams; DroneConfig droneConfig; - const char* droneConfigPath; - const char* ammoConfigPath; + const std::string droneConfigPath; + const std::string ammoConfigPath; bool loaded = false; public: - FileConfigLoader(const char* droneConfigPath, const char* ammoConfigPath); + FileConfigLoader(const std::string droneConfigPath, const std::string ammoConfigPath); auto load() -> void override; auto getConfig() -> DroneConfig override; diff --git a/drone_simulation/include/interfaces/target_provider.hpp b/drone_simulation/include/interfaces/target_provider.hpp index 1a95e59..5b14470 100644 --- a/drone_simulation/include/interfaces/target_provider.hpp +++ b/drone_simulation/include/interfaces/target_provider.hpp @@ -4,8 +4,6 @@ class ITargetProvider { public: virtual int getTargetCount() = 0; - virtual int getTimeSteps() = 0; - virtual Coord* getTarget(int index) = 0; + virtual std::vector& getTarget(int index) = 0; virtual ~ITargetProvider() {} - }; \ No newline at end of file diff --git a/drone_simulation/include/providers/json_target_provider.hpp b/drone_simulation/include/providers/json_target_provider.hpp index e8cca6d..eebef6a 100644 --- a/drone_simulation/include/providers/json_target_provider.hpp +++ b/drone_simulation/include/providers/json_target_provider.hpp @@ -1,17 +1,16 @@ #pragma once - +#include +#include #include "interfaces/target_provider.hpp" class JsonTargetProvider : public ITargetProvider { - Coord** targets; + std::vector> targets; int count; - int timeSteps; public: - JsonTargetProvider(const char* path); + JsonTargetProvider(const std::string path); ~JsonTargetProvider() override; auto getTargetCount() -> int override; - auto getTarget(int i) -> Coord* override; - auto getTimeSteps() -> int override; + auto getTarget(int i) -> std::vector& override; }; \ No newline at end of file diff --git a/drone_simulation/include/simulation.hpp b/drone_simulation/include/simulation.hpp index 05a52e4..e8ed799 100644 --- a/drone_simulation/include/simulation.hpp +++ b/drone_simulation/include/simulation.hpp @@ -1,6 +1,7 @@ #pragma once #include #include +#include #include "json.hpp" using json = nlohmann::json; @@ -54,7 +55,7 @@ struct Coord { }; struct AmmoParams { - char name[32]; + std::string name; float mass; float drag; float lift; @@ -66,7 +67,7 @@ struct DroneConfig { float initialDir; float attackSpeed; float accelPath; - char ammoName[32]; + std::string ammoName; float arrayTimeStep; float simTimeStep; float hitRadius; @@ -101,17 +102,15 @@ Coord getFireCoords( Coord getInterpolatedCoords( const float& currentTime, const float& arrayTimeStep, - const Coord* coordInTime, - const int& timeSteps + const std::vector& coordInTime ); Coord getPredictedTargetCoords ( float& currentTime, float& timePeriod, - const Coord* coordInTime, + const std::vector& coordInTime, const Coord& target, - float& totalTime, - const int& timeSteps + float& totalTime ); float normalizeAngle(float angle); @@ -175,10 +174,7 @@ Coord getBombLandCoord( const float& ammoHorizontalFlightDistance ); -void writeSimulationJSONFile( - SimulationStep simSteps[10001], - int currentStep -); +void writeSimulationJSONFile(const std::vector& simSteps); float getAmmoHorizontalFlightDistance( const float& attackSpeed, @@ -191,11 +187,11 @@ json parseJSONfile(const std::string& path); DroneConfig readDroneConfig(const std::string& path); -AmmoParams* readAmmo(json& ammoJSON); +std::vector readAmmo(json& ammoJSON); -AmmoParams findAmmo(const AmmoParams* ammoArr, const char ammoName[32], const int& ammoCount); +AmmoParams findAmmo(const std::vector& ammoArr, const std::string ammoName); -Coord** fillTargets(json& targetsJSON); +std::vector> fillTargets(json& targetsJSON); float getAmmoFlightTime( const DroneConfig& droneConfig, diff --git a/drone_simulation/src/config_loaders/factory.cpp b/drone_simulation/src/config_loaders/factory.cpp index 39f6de6..675266e 100644 --- a/drone_simulation/src/config_loaders/factory.cpp +++ b/drone_simulation/src/config_loaders/factory.cpp @@ -13,7 +13,7 @@ auto createSolver(SolverType type, const DroneConfig& config) -> IBallisticSolve return nullptr; } -auto createProvider(ProviderType type, const char* param) -> ITargetProvider* { +auto createProvider(ProviderType type, const std::string param) -> ITargetProvider* { switch (type) { case ProviderType::JSON: return new JsonTargetProvider(param); @@ -22,7 +22,7 @@ auto createProvider(ProviderType type, const char* param) -> ITargetProvider* { return nullptr; } -auto createLoader(LoaderType type, const char* droneConfigPath, const char* ammoConfigPath) -> IConfigLoader* { +auto createLoader(LoaderType type, const std::string droneConfigPath, const std::string ammoConfigPath) -> IConfigLoader* { switch (type) { case LoaderType::FILE: return new FileConfigLoader(droneConfigPath, ammoConfigPath); diff --git a/drone_simulation/src/config_loaders/file_config_loader.cpp b/drone_simulation/src/config_loaders/file_config_loader.cpp index 1a34a99..1ff0fae 100644 --- a/drone_simulation/src/config_loaders/file_config_loader.cpp +++ b/drone_simulation/src/config_loaders/file_config_loader.cpp @@ -1,9 +1,10 @@ + #include #include "config_loaders/file_config_loader.hpp" FileConfigLoader::FileConfigLoader( - const char* droneConfigPath, - const char* ammoConfigPath + const std::string droneConfigPath, + const std::string ammoConfigPath ): droneConfigPath(droneConfigPath), ammoConfigPath(ammoConfigPath) { } @@ -13,9 +14,8 @@ auto FileConfigLoader::load() -> void { } droneConfig = readDroneConfig(droneConfigPath); json ammoJSON = parseJSONfile(ammoConfigPath); - AmmoParams* ammoArr = readAmmo(ammoJSON); - ammoParams = findAmmo(ammoArr, droneConfig.ammoName, ammoJSON.size()); - delete[] ammoArr; + std::vector ammoArr = readAmmo(ammoJSON); + ammoParams = findAmmo(ammoArr, droneConfig.ammoName); loaded = true; }; diff --git a/drone_simulation/src/main.cpp b/drone_simulation/src/main.cpp index e795e8b..577779e 100644 --- a/drone_simulation/src/main.cpp +++ b/drone_simulation/src/main.cpp @@ -29,15 +29,13 @@ using json = nlohmann::json; IConfigLoader* loader = nullptr; ITargetProvider* targets = nullptr; IBallisticSolver* ballisticSolver = nullptr; - SimulationStep* simSteps = nullptr; + std::vector simSteps; - const char* configPath = (argc > 1) ? argv[1] : "config.json"; - const char* ammoPath = (argc > 2) ? argv[2] : "ammo.json"; - const char* targetsPath = (argc > 3) ? argv[3] : "targets.json"; + const std::string configPath = (argc > 1) ? argv[1] : "config.json"; + const std::string ammoPath = (argc > 2) ? argv[2] : "ammo.json"; + const std::string targetsPath = (argc > 3) ? argv[3] : "targets.json"; try { - const int MAX_STEPS = 10000; - loader = createLoader(LoaderType::FILE, configPath, ammoPath); targets = createProvider(ProviderType::JSON, targetsPath); @@ -49,33 +47,28 @@ using json = nlohmann::json; MissionProcessor missionProcessor(targets, ballisticSolver); missionProcessor.init(loader); - simSteps = new SimulationStep[MAX_STEPS + 1]; //write initial sim data - simSteps[0] = { - .target = -1, - .dropPoint = {0, 0}, - .aimPoint = {0, 0}, + simSteps.push_back({ + .target = -1, + .dropPoint = {0, 0}, + .aimPoint = {0, 0}, .predictedTarget = {0, 0}, .droneMotion = { - .dir = droneConfig.initialDir, - .pos = droneConfig.startPos, + .dir = droneConfig.initialDir, + .pos = droneConfig.startPos, .state = STOPPED } - }; + }); // simulation loop while (missionProcessor.hasNext()) { SimulationStep simulationStep = missionProcessor.step(); if (simulationStep.target >= 0) { - simSteps[missionProcessor.getCurrentStep() - 1] = simulationStep; + simSteps.push_back(simulationStep); } } - writeSimulationJSONFile( - simSteps, - missionProcessor.getCurrentStep() - ); - + writeSimulationJSONFile(simSteps); } catch (const std::exception& error) { LOG("Error: " << error.what()); failed = true; @@ -84,7 +77,6 @@ using json = nlohmann::json; delete loader; delete targets; delete ballisticSolver; - delete[] simSteps; return failed ? 1 : 0; } diff --git a/drone_simulation/src/mission_processor.cpp b/drone_simulation/src/mission_processor.cpp index 10eae02..baf2978 100644 --- a/drone_simulation/src/mission_processor.cpp +++ b/drone_simulation/src/mission_processor.cpp @@ -51,7 +51,7 @@ auto MissionProcessor::step() -> SimulationStep { //iteration by targets for (int i = 0; i < targets->getTargetCount(); ++i) { - Coord target = getInterpolatedCoords(currentTime, droneConfig.arrayTimeStep, targets->getTarget(i), targets->getTimeSteps()); + Coord target = getInterpolatedCoords(currentTime, droneConfig.arrayTimeStep, targets->getTarget(i)); // balistic float distanceToTarget = getDistanceToTarget(target, droneMotion.pos); @@ -67,7 +67,7 @@ auto MissionProcessor::step() -> SimulationStep { float totalTimeRough = droneToFireTime + ammoFlightTime; Coord predictedTarget = getPredictedTargetCoords( - currentTime, droneConfig.arrayTimeStep, targets->getTarget(i), target, totalTimeRough, targets->getTimeSteps() + currentTime, droneConfig.arrayTimeStep, targets->getTarget(i), target, totalTimeRough ); //predicted balistic @@ -145,8 +145,7 @@ auto MissionProcessor::step() -> SimulationStep { Coord targetAtImpact = getInterpolatedCoords( currentTime + ammoFlightTime, droneConfig.arrayTimeStep, - targets->getTarget(bestTargetIndex), - targets->getTimeSteps() + targets->getTarget(bestTargetIndex) ); float bombMissDistance = getDistanceToTarget(bombLandCoord, targetAtImpact); diff --git a/drone_simulation/src/providers/json_target_provider.cpp b/drone_simulation/src/providers/json_target_provider.cpp index bf10ed1..fc7a6bc 100644 --- a/drone_simulation/src/providers/json_target_provider.cpp +++ b/drone_simulation/src/providers/json_target_provider.cpp @@ -1,33 +1,18 @@ #include "providers/json_target_provider.hpp" -JsonTargetProvider::JsonTargetProvider(const char* path) { +JsonTargetProvider::JsonTargetProvider(const std::string path) { json jsonFile = parseJSONfile(path); - count = jsonFile.size();//targetCount + count = jsonFile["targetCount"]; targets = fillTargets(jsonFile); - timeSteps = jsonFile["timeSteps"]; } JsonTargetProvider::~JsonTargetProvider() { - if (!targets) { - return; - } - - for (int i = 0; i < count; i++) { - delete[] targets[i]; - targets[i] = nullptr; - } - delete[] targets; - targets = nullptr; } auto JsonTargetProvider::getTargetCount() -> int { return count; } -auto JsonTargetProvider::getTarget(int i) -> Coord* { +auto JsonTargetProvider::getTarget(int i) -> std::vector& { return targets[i]; } - -auto JsonTargetProvider::getTimeSteps() -> int { - return timeSteps; -} diff --git a/drone_simulation/src/simulation.cpp b/drone_simulation/src/simulation.cpp index e11f002..dd4915e 100644 --- a/drone_simulation/src/simulation.cpp +++ b/drone_simulation/src/simulation.cpp @@ -39,9 +39,9 @@ Coord getFireCoords( Coord getInterpolatedCoords( const float& currentTime, const float& arrayTimeStep, - const Coord* coordInTime, - const int& timeSteps + const std::vector& coordInTime ) { + int timeSteps = coordInTime.size(); int idx = (int)floor(currentTime / arrayTimeStep) % timeSteps; int next = (idx + 1) % timeSteps; float frac = (currentTime - idx * arrayTimeStep) / arrayTimeStep; @@ -54,12 +54,11 @@ Coord getInterpolatedCoords( Coord getPredictedTargetCoords ( float& currentTime, float& timePeriod, - const Coord* coordInTime, + const std::vector& coordInTime, const Coord& target, - float& totalTime, - const int& timeSteps + float& totalTime ) { - Coord nextTargetCoord = getInterpolatedCoords(currentTime + timePeriod, timePeriod, coordInTime, timeSteps); + Coord nextTargetCoord = getInterpolatedCoords(currentTime + timePeriod, timePeriod, coordInTime); Coord targetVelocity = (nextTargetCoord - target) / timePeriod; Coord predictedTarget = target + targetVelocity * totalTime; @@ -279,36 +278,34 @@ Coord getBombLandCoord( } void writeSimulationJSONFile( - SimulationStep simSteps[10001], - int currentStep + const std::vector& simSteps ) { json out; - int totalRecords = currentStep + 1; - out["totalSteps"] = totalRecords; + out["totalSteps"] = simSteps.size(); out["steps"] = json::array(); - for (int i = 0; i < totalRecords; i++) { - json step; - step["position"] = { - {"x", simSteps[i].droneMotion.pos.x}, - {"y", simSteps[i].droneMotion.pos.y} + for (const SimulationStep& step : simSteps) { + json stepJson; + stepJson["position"] = { + {"x", step.droneMotion.pos.x}, + {"y", step.droneMotion.pos.y} }; - step["direction"] = simSteps[i].droneMotion.dir; - step["state"] = simSteps[i].droneMotion.state; - step["targetIndex"] = simSteps[i].target; - step["dropPoint"] = { - {"x", simSteps[i].dropPoint.x}, - {"y", simSteps[i].dropPoint.y} + stepJson["direction"] = step.droneMotion.dir; + stepJson["state"] = step.droneMotion.state; + stepJson["targetIndex"] = step.target; + stepJson["dropPoint"] = { + {"x", step.dropPoint.x}, + {"y", step.dropPoint.y} }; - step["aimPoint"] = { - {"x", simSteps[i].aimPoint.x}, - {"y", simSteps[i].aimPoint.y} + stepJson["aimPoint"] = { + {"x", step.aimPoint.x}, + {"y", step.aimPoint.y} }; - step["predictedTarget"] = { - {"x", simSteps[i].predictedTarget.x}, - {"y", simSteps[i].predictedTarget.y} + stepJson["predictedTarget"] = { + {"x", step.predictedTarget.x}, + {"y", step.predictedTarget.y} }; - out["steps"].push_back(step); + out["steps"].push_back(stepJson); } std::ofstream fout("simulation.json"); fout << out.dump(2); @@ -366,34 +363,37 @@ DroneConfig readDroneConfig(const std::string& path) { .turnThreshold = configJSON["drone"]["turnThreshold"], }; - std::string tmp = configJSON["ammo"].get(); - const char* cstr = tmp.c_str(); - std::strncpy(droneConfig.ammoName, cstr, 31); + droneConfig.ammoName = configJSON["ammo"].get(); DEBUG("ammo config: " << droneConfig.ammoName); return droneConfig; } -AmmoParams* readAmmo(json& ammoJSON) { +std::vector readAmmo(json& ammoJSON) { int ammoCount = ammoJSON.size(); - AmmoParams* ammoArr = new AmmoParams[ammoCount]; + std::vector ammoArr; + for (int i = 0; i < ammoCount; i++) { - std::strncpy(ammoArr[i].name, ammoJSON[i]["name"].get().c_str(), 31); - ammoArr[i].mass = ammoJSON[i]["mass"]; - ammoArr[i].drag = ammoJSON[i]["drag"]; - ammoArr[i].lift = ammoJSON[i]["lift"]; + AmmoParams ammo = { + .name = ammoJSON[i]["name"].get(), + .mass = ammoJSON[i]["mass"], + .drag = ammoJSON[i]["drag"], + .lift = ammoJSON[i]["lift"] + }; + ammoArr.push_back(ammo); } return ammoArr; } -AmmoParams findAmmo(const AmmoParams* ammoArr, const char ammoName[32], const int& ammoCount) { +AmmoParams findAmmo(const std::vector& ammoArr, const std::string ammoName) { bool ammoFound = false; AmmoParams ammo; - for (int i = 0; i < ammoCount; ++i) { - if (strcmp(ammoName, ammoArr[i].name) == 0) { - ammo = ammoArr[i]; + + for (const AmmoParams& item : ammoArr) { + if (ammoName == item.name) { + ammo = item; ammoFound = true; break; } @@ -406,17 +406,20 @@ AmmoParams findAmmo(const AmmoParams* ammoArr, const char ammoName[32], const in return ammo; } -Coord** fillTargets(json& targetsJSON) { +std::vector> fillTargets(json& targetsJSON) { int targetsCount = targetsJSON["targetCount"]; int timeSteps = targetsJSON["timeSteps"]; - Coord** targets = new Coord*[targetsCount]; + std::vector> targets; for (int i = 0; i < targetsCount; i++) { - targets[i] = new Coord[timeSteps]; + std::vector track; for (int j = 0; j < timeSteps; j++) { - targets[i][j].x = targetsJSON["targets"][i]["positions"][j]["x"]; - targets[i][j].y = targetsJSON["targets"][i]["positions"][j]["y"]; + track.push_back({ + targetsJSON["targets"][i]["positions"][j]["x"], + targetsJSON["targets"][i]["positions"][j]["y"] + }); } + targets.push_back(track); } return targets; diff --git a/simulation.json b/simulation.json deleted file mode 100644 index b25c94e..0000000 --- a/simulation.json +++ /dev/null @@ -1,5171 +0,0 @@ -{ - "steps": [ - { - "aimPoint": { - "x": 0.0, - "y": 0.0 - }, - "direction": 0.0, - "dropPoint": { - "x": 0.0, - "y": 0.0 - }, - "position": { - "x": 0.0, - "y": 0.0 - }, - "predictedTarget": { - "x": 0.0, - "y": 0.0 - }, - "state": 0, - "targetIndex": -1 - }, - { - "aimPoint": { - "x": 55.59577178955078, - "y": 2.782107353210449 - }, - "direction": 0.05000000074505806, - "dropPoint": { - "x": 269.4673156738281, - "y": 189.50930786132813 - }, - "position": { - "x": 0.0, - "y": 0.0 - }, - "predictedTarget": { - "x": 313.42510986328125, - "y": 204.42483520507813 - }, - "state": 3, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 55.38724136352539, - "y": 5.557260990142822 - }, - "direction": 0.10000000149011612, - "dropPoint": { - "x": 268.9606628417969, - "y": 189.54702758789063 - }, - "position": { - "x": 0.0, - "y": 0.0 - }, - "predictedTarget": { - "x": 313.3751220703125, - "y": 204.49484252929688 - }, - "state": 3, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 55.04027557373047, - "y": 8.318524360656738 - }, - "direction": 0.15000000596046448, - "dropPoint": { - "x": 268.4532165527344, - "y": 189.5845947265625 - }, - "position": { - "x": 0.0, - "y": 0.0 - }, - "predictedTarget": { - "x": 313.3251037597656, - "y": 204.56483459472656 - }, - "state": 3, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 54.55573654174805, - "y": 11.058995246887207 - }, - "direction": 0.20000000298023224, - "dropPoint": { - "x": 267.9465637207031, - "y": 189.62217712402344 - }, - "position": { - "x": 0.0, - "y": 0.0 - }, - "predictedTarget": { - "x": 313.2701416015625, - "y": 204.6348419189453 - }, - "state": 3, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 53.934837341308594, - "y": 13.771824836730957 - }, - "direction": 0.25, - "dropPoint": { - "x": 267.43914794921875, - "y": 189.6596221923828 - }, - "position": { - "x": 0.0, - "y": 0.0 - }, - "predictedTarget": { - "x": 313.21014404296875, - "y": 204.704833984375 - }, - "state": 3, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 53.17912673950195, - "y": 16.450231552124023 - }, - "direction": 0.30000001192092896, - "dropPoint": { - "x": 266.9325256347656, - "y": 189.69741821289063 - }, - "position": { - "x": 0.0, - "y": 0.0 - }, - "predictedTarget": { - "x": 313.150146484375, - "y": 204.77484130859375 - }, - "state": 3, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 52.290496826171875, - "y": 19.087522506713867 - }, - "direction": 0.3500000238418579, - "dropPoint": { - "x": 266.42584228515625, - "y": 189.73440551757813 - }, - "position": { - "x": 0.0, - "y": 0.0 - }, - "predictedTarget": { - "x": 313.09014892578125, - "y": 204.84483337402344 - }, - "state": 3, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 51.27116775512695, - "y": 21.677104949951172 - }, - "direction": 0.40000003576278687, - "dropPoint": { - "x": 265.91839599609375, - "y": 189.7716522216797 - }, - "position": { - "x": 0.0, - "y": 0.0 - }, - "predictedTarget": { - "x": 313.0301513671875, - "y": 204.9148406982422 - }, - "state": 3, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 50.123687744140625, - "y": 24.212505340576172 - }, - "direction": 0.4500000476837158, - "dropPoint": { - "x": 265.4117431640625, - "y": 189.8088836669922 - }, - "position": { - "x": 0.0, - "y": 0.0 - }, - "predictedTarget": { - "x": 312.97015380859375, - "y": 204.98483276367188 - }, - "state": 3, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 48.850929260253906, - "y": 26.68738555908203 - }, - "direction": 0.5000000596046448, - "dropPoint": { - "x": 264.904296875, - "y": 189.84600830078125 - }, - "position": { - "x": 0.0, - "y": 0.0 - }, - "predictedTarget": { - "x": 312.91015625, - "y": 205.05484008789063 - }, - "state": 3, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 47.45606231689453, - "y": 29.095565795898438 - }, - "direction": 0.5500000715255737, - "dropPoint": { - "x": 264.39764404296875, - "y": 189.88308715820313 - }, - "position": { - "x": 0.0, - "y": 0.0 - }, - "predictedTarget": { - "x": 312.85015869140625, - "y": 205.1248321533203 - }, - "state": 3, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 45.94258117675781, - "y": 31.43101692199707 - }, - "direction": 0.6000000834465027, - "dropPoint": { - "x": 264.38397216796875, - "y": 189.9552459716797 - }, - "position": { - "x": 0.0, - "y": 0.0 - }, - "predictedTarget": { - "x": 312.7901611328125, - "y": 205.19483947753906 - }, - "state": 3, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 45.21846389770508, - "y": 32.50270080566406 - }, - "direction": 0.6232274174690247, - "dropPoint": { - "x": 264.3702392578125, - "y": 190.0273895263672 - }, - "position": { - "x": 0.01826997846364975, - "y": 0.013132325373589993 - }, - "predictedTarget": { - "x": 312.73016357421875, - "y": 205.26483154296875 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 45.24848175048828, - "y": 32.53804016113281 - }, - "direction": 0.6234280467033386, - "dropPoint": { - "x": 264.35675048828125, - "y": 190.09812927246094 - }, - "position": { - "x": 0.054804664105176926, - "y": 0.039404306560754776 - }, - "predictedTarget": { - "x": 312.6651916503906, - "y": 205.3348388671875 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 45.29686737060547, - "y": 32.58637237548828 - }, - "direction": 0.6236252784729004, - "dropPoint": { - "x": 264.3442077636719, - "y": 190.16819763183594 - }, - "position": { - "x": 0.10959891974925995, - "y": 0.07882308214902878 - }, - "predictedTarget": { - "x": 312.5951843261719, - "y": 205.4048309326172 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 45.36351776123047, - "y": 32.6478385925293 - }, - "direction": 0.6238220930099487, - "dropPoint": { - "x": 264.330322265625, - "y": 190.2371368408203 - }, - "position": { - "x": 0.18264758586883545, - "y": 0.1313958317041397 - }, - "predictedTarget": { - "x": 312.5251770019531, - "y": 205.47483825683594 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 45.448524475097656, - "y": 32.7223014831543 - }, - "direction": 0.6240153908729553, - "dropPoint": { - "x": 264.3174743652344, - "y": 190.30538940429688 - }, - "position": { - "x": 0.27394571900367737, - "y": 0.19712941348552704 - }, - "predictedTarget": { - "x": 312.4551696777344, - "y": 205.54483032226563 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 45.55194854736328, - "y": 32.80970764160156 - }, - "direction": 0.624203622341156, - "dropPoint": { - "x": 264.3055419921875, - "y": 190.37228393554688 - }, - "position": { - "x": 0.38348862528800964, - "y": 0.2760303318500519 - }, - "predictedTarget": { - "x": 312.3851623535156, - "y": 205.61483764648438 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 45.67368698120117, - "y": 32.91017150878906 - }, - "direction": 0.6243893504142761, - "dropPoint": { - "x": 264.29302978515625, - "y": 190.43771362304688 - }, - "position": { - "x": 0.511271595954895, - "y": 0.3681051433086395 - }, - "predictedTarget": { - "x": 312.315185546875, - "y": 205.68482971191406 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 45.8137321472168, - "y": 33.023712158203125 - }, - "direction": 0.6245728731155396, - "dropPoint": { - "x": 264.28076171875, - "y": 190.50244140625 - }, - "position": { - "x": 0.6572899222373962, - "y": 0.4733603000640869 - }, - "predictedTarget": { - "x": 312.24517822265625, - "y": 205.7548370361328 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 45.972103118896484, - "y": 33.150306701660156 - }, - "direction": 0.624753475189209, - "dropPoint": { - "x": 264.2686767578125, - "y": 190.5660858154297 - }, - "position": { - "x": 0.8215391635894775, - "y": 0.5918020009994507 - }, - "predictedTarget": { - "x": 312.1751708984375, - "y": 205.8248291015625 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 46.14044189453125, - "y": 33.30154037475586 - }, - "direction": 0.625186562538147, - "dropPoint": { - "x": 263.7267150878906, - "y": 190.34837341308594 - }, - "position": { - "x": 1.003981351852417, - "y": 0.7234829068183899 - }, - "predictedTarget": { - "x": 312.10516357421875, - "y": 205.89483642578125 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 46.32712173461914, - "y": 33.46578598022461 - }, - "direction": 0.6256144046783447, - "dropPoint": { - "x": 263.1870422363281, - "y": 190.12953186035156 - }, - "position": { - "x": 1.2046056985855103, - "y": 0.8684177994728088 - }, - "predictedTarget": { - "x": 312.03515625, - "y": 205.96482849121094 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 46.531883239746094, - "y": 33.64340591430664 - }, - "direction": 0.6260448098182678, - "dropPoint": { - "x": 262.6467590332031, - "y": 189.9105224609375 - }, - "position": { - "x": 1.4234005212783813, - "y": 1.0266227722167969 - }, - "predictedTarget": { - "x": 311.9651794433594, - "y": 206.0298614501953 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 46.75490951538086, - "y": 33.834144592285156 - }, - "direction": 0.6264716386795044, - "dropPoint": { - "x": 262.1073913574219, - "y": 189.6900177001953 - }, - "position": { - "x": 1.6603550910949707, - "y": 1.1981126070022583 - }, - "predictedTarget": { - "x": 311.8951721191406, - "y": 206.08985900878906 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 46.996150970458984, - "y": 34.0380859375 - }, - "direction": 0.626896321773529, - "dropPoint": { - "x": 261.5698547363281, - "y": 189.46922302246094 - }, - "position": { - "x": 1.9154584407806396, - "y": 1.3829022645950317 - }, - "predictedTarget": { - "x": 311.8251647949219, - "y": 206.1498565673828 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 47.255577087402344, - "y": 34.2552490234375 - }, - "direction": 0.6273191571235657, - "dropPoint": { - "x": 261.033447265625, - "y": 189.24778747558594 - }, - "position": { - "x": 2.188699722290039, - "y": 1.5810067653656006 - }, - "predictedTarget": { - "x": 311.7551574707031, - "y": 206.20985412597656 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 47.53317642211914, - "y": 34.48567199707031 - }, - "direction": 0.6277405023574829, - "dropPoint": { - "x": 260.4974670410156, - "y": 189.02529907226563 - }, - "position": { - "x": 2.4800679683685303, - "y": 1.7924410104751587 - }, - "predictedTarget": { - "x": 311.6851501464844, - "y": 206.2698516845703 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 47.828887939453125, - "y": 34.72941970825195 - }, - "direction": 0.6281616687774658, - "dropPoint": { - "x": 259.962890625, - "y": 188.80294799804688 - }, - "position": { - "x": 2.7895522117614746, - "y": 2.0172202587127686 - }, - "predictedTarget": { - "x": 311.61517333984375, - "y": 206.32986450195313 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 48.14290237426758, - "y": 34.986244201660156 - }, - "direction": 0.6285765767097473, - "dropPoint": { - "x": 259.43115234375, - "y": 188.5794677734375 - }, - "position": { - "x": 3.117142677307129, - "y": 2.2553577423095703 - }, - "predictedTarget": { - "x": 311.545166015625, - "y": 206.38986206054688 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 48.474952697753906, - "y": 35.25650405883789 - }, - "direction": 0.628993034362793, - "dropPoint": { - "x": 258.8993835449219, - "y": 188.35577392578125 - }, - "position": { - "x": 3.4628279209136963, - "y": 2.506869077682495 - }, - "predictedTarget": { - "x": 311.47515869140625, - "y": 206.44985961914063 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 48.814544677734375, - "y": 35.554603576660156 - }, - "direction": 0.6297282576560974, - "dropPoint": { - "x": 258.894775390625, - "y": 188.6397705078125 - }, - "position": { - "x": 3.826512336730957, - "y": 2.771885395050049 - }, - "predictedTarget": { - "x": 311.4051513671875, - "y": 206.50985717773438 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 49.17216491699219, - "y": 35.866119384765625 - }, - "direction": 0.6304612755775452, - "dropPoint": { - "x": 258.889892578125, - "y": 188.92262268066406 - }, - "position": { - "x": 4.208176612854004, - "y": 3.0504322052001953 - }, - "predictedTarget": { - "x": 311.33514404296875, - "y": 206.56985473632813 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 49.548011779785156, - "y": 36.1907844543457 - }, - "direction": 0.6311857104301453, - "dropPoint": { - "x": 258.8869323730469, - "y": 189.20338439941406 - }, - "position": { - "x": 4.607804298400879, - "y": 3.3425328731536865 - }, - "predictedTarget": { - "x": 311.26019287109375, - "y": 206.62985229492188 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 49.94181442260742, - "y": 36.528953552246094 - }, - "direction": 0.6319088935852051, - "dropPoint": { - "x": 258.8837585449219, - "y": 189.4833221435547 - }, - "position": { - "x": 5.025375843048096, - "y": 3.6482129096984863 - }, - "predictedTarget": { - "x": 311.18017578125, - "y": 206.6898651123047 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 50.353660583496094, - "y": 36.880523681640625 - }, - "direction": 0.6326279044151306, - "dropPoint": { - "x": 258.8802795410156, - "y": 189.76126098632813 - }, - "position": { - "x": 5.460873126983643, - "y": 3.967496633529663 - }, - "predictedTarget": { - "x": 311.1001892089844, - "y": 206.74986267089844 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 50.78357696533203, - "y": 37.245452880859375 - }, - "direction": 0.6333412528038025, - "dropPoint": { - "x": 258.8780212402344, - "y": 190.03768920898438 - }, - "position": { - "x": 5.914278507232666, - "y": 4.300407409667969 - }, - "predictedTarget": { - "x": 311.0201721191406, - "y": 206.8098602294922 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 51.231483459472656, - "y": 37.62384033203125 - }, - "direction": 0.6340507864952087, - "dropPoint": { - "x": 258.8762512207031, - "y": 190.31280517578125 - }, - "position": { - "x": 6.3855743408203125, - "y": 4.646968841552734 - }, - "predictedTarget": { - "x": 310.940185546875, - "y": 206.86985778808594 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 51.69749450683594, - "y": 38.01554489135742 - }, - "direction": 0.6347527503967285, - "dropPoint": { - "x": 258.87567138671875, - "y": 190.58558654785156 - }, - "position": { - "x": 6.874744415283203, - "y": 5.007203102111816 - }, - "predictedTarget": { - "x": 310.8601989746094, - "y": 206.9298553466797 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 52.18135452270508, - "y": 38.42091369628906 - }, - "direction": 0.6354542374610901, - "dropPoint": { - "x": 258.8741149902344, - "y": 190.8572235107422 - }, - "position": { - "x": 7.38176965713501, - "y": 5.381134986877441 - }, - "predictedTarget": { - "x": 310.7801818847656, - "y": 206.98985290527344 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 52.68325424194336, - "y": 38.839683532714844 - }, - "direction": 0.636148989200592, - "dropPoint": { - "x": 258.87371826171875, - "y": 191.12681579589844 - }, - "position": { - "x": 7.9066338539123535, - "y": 5.768786430358887 - }, - "predictedTarget": { - "x": 310.7001953125, - "y": 207.0498504638672 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 53.2266845703125, - "y": 39.24006652832031 - }, - "direction": 0.6361350417137146, - "dropPoint": { - "x": 258.58758544921875, - "y": 190.9100799560547 - }, - "position": { - "x": 8.449602127075195, - "y": 6.169797897338867 - }, - "predictedTarget": { - "x": 310.62017822265625, - "y": 207.10984802246094 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 53.78831100463867, - "y": 39.653690338134766 - }, - "direction": 0.6361182928085327, - "dropPoint": { - "x": 258.30206298828125, - "y": 190.69276428222656 - }, - "position": { - "x": 9.010676383972168, - "y": 6.584167003631592 - }, - "predictedTarget": { - "x": 310.5401916503906, - "y": 207.1698455810547 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 54.36809158325195, - "y": 40.080596923828125 - }, - "direction": 0.6361001133918762, - "dropPoint": { - "x": 258.01806640625, - "y": 190.47601318359375 - }, - "position": { - "x": 9.589858055114746, - "y": 7.011892318725586 - }, - "predictedTarget": { - "x": 310.4552307128906, - "y": 207.22486877441406 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 54.96614074707031, - "y": 40.52064895629883 - }, - "direction": 0.6360771656036377, - "dropPoint": { - "x": 257.7354431152344, - "y": 190.25848388671875 - }, - "position": { - "x": 10.187149047851563, - "y": 7.452970027923584 - }, - "predictedTarget": { - "x": 310.365234375, - "y": 207.27487182617188 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 55.582427978515625, - "y": 40.97388458251953 - }, - "direction": 0.6360505223274231, - "dropPoint": { - "x": 257.45513916015625, - "y": 190.04132080078125 - }, - "position": { - "x": 10.80255126953125, - "y": 7.907397270202637 - }, - "predictedTarget": { - "x": 310.27520751953125, - "y": 207.3248748779297 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 56.2169189453125, - "y": 41.440330505371094 - }, - "direction": 0.6360208988189697, - "dropPoint": { - "x": 257.1763610839844, - "y": 189.82418823242188 - }, - "position": { - "x": 11.436067581176758, - "y": 8.375171661376953 - }, - "predictedTarget": { - "x": 310.1852111816406, - "y": 207.3748779296875 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 56.86959457397461, - "y": 41.92003631591797 - }, - "direction": 0.6359893679618835, - "dropPoint": { - "x": 256.8984375, - "y": 189.6070098876953 - }, - "position": { - "x": 12.087699890136719, - "y": 8.856289863586426 - }, - "predictedTarget": { - "x": 310.09521484375, - "y": 207.4248809814453 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 57.54049301147461, - "y": 42.41294479370117 - }, - "direction": 0.6359546780586243, - "dropPoint": { - "x": 256.6221923828125, - "y": 189.38995361328125 - }, - "position": { - "x": 12.757450103759766, - "y": 9.350749969482422 - }, - "predictedTarget": { - "x": 310.0052185058594, - "y": 207.47486877441406 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 58.22964096069336, - "y": 42.919010162353516 - }, - "direction": 0.6359160542488098, - "dropPoint": { - "x": 256.3475646972656, - "y": 189.1726837158203 - }, - "position": { - "x": 13.445321083068848, - "y": 9.85854721069336 - }, - "predictedTarget": { - "x": 309.91522216796875, - "y": 207.52487182617188 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 58.937034606933594, - "y": 43.43825149536133 - }, - "direction": 0.6358739137649536, - "dropPoint": { - "x": 256.0754699707031, - "y": 188.9560089111328 - }, - "position": { - "x": 14.15131664276123, - "y": 10.379677772521973 - }, - "predictedTarget": { - "x": 309.8252258300781, - "y": 207.5748748779297 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 59.64329147338867, - "y": 43.99689483642578 - }, - "direction": 0.6364045739173889, - "dropPoint": { - "x": 255.81396484375, - "y": 188.961181640625 - }, - "position": { - "x": 14.875130653381348, - "y": 10.914554595947266 - }, - "predictedTarget": { - "x": 309.7352294921875, - "y": 207.6248779296875 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 60.36751174926758, - "y": 44.56907653808594 - }, - "direction": 0.636930525302887, - "dropPoint": { - "x": 255.5549774169922, - "y": 188.96554565429688 - }, - "position": { - "x": 15.616751670837402, - "y": 11.463193893432617 - }, - "predictedTarget": { - "x": 309.6452331542969, - "y": 207.6748809814453 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 61.109619140625, - "y": 45.15487289428711 - }, - "direction": 0.6374530792236328, - "dropPoint": { - "x": 255.2970733642578, - "y": 188.96864318847656 - }, - "position": { - "x": 16.37616729736328, - "y": 12.02561092376709 - }, - "predictedTarget": { - "x": 309.5502624511719, - "y": 207.72486877441406 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 61.86961364746094, - "y": 45.754295349121094 - }, - "direction": 0.6379721164703369, - "dropPoint": { - "x": 255.04196166992188, - "y": 188.9716033935547 - }, - "position": { - "x": 17.153364181518555, - "y": 12.601822853088379 - }, - "predictedTarget": { - "x": 309.45025634765625, - "y": 207.77487182617188 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 62.64751434326172, - "y": 46.367332458496094 - }, - "direction": 0.6384868621826172, - "dropPoint": { - "x": 254.78802490234375, - "y": 188.97296142578125 - }, - "position": { - "x": 17.948331832885742, - "y": 13.19184398651123 - }, - "predictedTarget": { - "x": 309.3502502441406, - "y": 207.8248748779297 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 63.44322967529297, - "y": 46.99408721923828 - }, - "direction": 0.6389994621276855, - "dropPoint": { - "x": 254.5360870361328, - "y": 188.97413635253906 - }, - "position": { - "x": 18.761058807373047, - "y": 13.79569149017334 - }, - "predictedTarget": { - "x": 309.250244140625, - "y": 207.8748779296875 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 64.25691223144531, - "y": 47.63435363769531 - }, - "direction": 0.6395049691200256, - "dropPoint": { - "x": 254.28692626953125, - "y": 188.97384643554688 - }, - "position": { - "x": 19.591533660888672, - "y": 14.41337776184082 - }, - "predictedTarget": { - "x": 309.1502380371094, - "y": 207.9248809814453 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 65.08839416503906, - "y": 48.28838348388672 - }, - "direction": 0.6400084495544434, - "dropPoint": { - "x": 254.0391387939453, - "y": 188.9729766845703 - }, - "position": { - "x": 20.43974494934082, - "y": 15.04491901397705 - }, - "predictedTarget": { - "x": 309.0502624511719, - "y": 207.97486877441406 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 65.9377670288086, - "y": 48.956024169921875 - }, - "direction": 0.6405065059661865, - "dropPoint": { - "x": 253.794189453125, - "y": 188.9713134765625 - }, - "position": { - "x": 21.305681228637695, - "y": 15.690328598022461 - }, - "predictedTarget": { - "x": 308.95025634765625, - "y": 208.02487182617188 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 66.80494689941406, - "y": 49.637413024902344 - }, - "direction": 0.6410015821456909, - "dropPoint": { - "x": 253.55072021484375, - "y": 188.96876525878906 - }, - "position": { - "x": 22.189332962036133, - "y": 16.34962272644043 - }, - "predictedTarget": { - "x": 308.8502502441406, - "y": 208.0748748779297 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 67.68942260742188, - "y": 50.33320617675781 - }, - "direction": 0.6415080428123474, - "dropPoint": { - "x": 253.30035400390625, - "y": 188.96424865722656 - }, - "position": { - "x": 23.09067726135254, - "y": 17.0228271484375 - }, - "predictedTarget": { - "x": 308.750244140625, - "y": 208.1248779296875 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 68.59172058105469, - "y": 51.042728424072266 - }, - "direction": 0.6420102119445801, - "dropPoint": { - "x": 253.05227661132813, - "y": 188.9589080810547 - }, - "position": { - "x": 24.009702682495117, - "y": 17.709957122802734 - }, - "predictedTarget": { - "x": 308.6502380371094, - "y": 208.1748809814453 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 69.5118637084961, - "y": 51.76591873168945 - }, - "direction": 0.64250648021698, - "dropPoint": { - "x": 252.8071746826172, - "y": 188.9527587890625 - }, - "position": { - "x": 24.946401596069336, - "y": 18.411026000976563 - }, - "predictedTarget": { - "x": 308.5502624511719, - "y": 208.2198944091797 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 70.44977569580078, - "y": 52.50291442871094 - }, - "direction": 0.6429995894432068, - "dropPoint": { - "x": 252.56375122070313, - "y": 188.9457550048828 - }, - "position": { - "x": 25.900760650634766, - "y": 19.126047134399414 - }, - "predictedTarget": { - "x": 308.45025634765625, - "y": 208.25990295410156 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 71.40547180175781, - "y": 53.25365447998047 - }, - "direction": 0.6434880495071411, - "dropPoint": { - "x": 252.32272338867188, - "y": 188.93789672851563 - }, - "position": { - "x": 26.872770309448242, - "y": 19.85503387451172 - }, - "predictedTarget": { - "x": 308.3502502441406, - "y": 208.29989624023438 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 72.37896728515625, - "y": 54.018150329589844 - }, - "direction": 0.6439716815948486, - "dropPoint": { - "x": 252.08416748046875, - "y": 188.92922973632813 - }, - "position": { - "x": 27.8624210357666, - "y": 20.597999572753906 - }, - "predictedTarget": { - "x": 308.250244140625, - "y": 208.33990478515625 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 73.3702392578125, - "y": 54.79642868041992 - }, - "direction": 0.6444506049156189, - "dropPoint": { - "x": 251.84805297851563, - "y": 188.91973876953125 - }, - "position": { - "x": 28.86970329284668, - "y": 21.354957580566406 - }, - "predictedTarget": { - "x": 308.1502380371094, - "y": 208.37989807128906 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 74.37934112548828, - "y": 55.58840560913086 - }, - "direction": 0.6449230313301086, - "dropPoint": { - "x": 251.61520385742188, - "y": 188.90948486328125 - }, - "position": { - "x": 29.894609451293945, - "y": 22.12591552734375 - }, - "predictedTarget": { - "x": 308.0502624511719, - "y": 208.41990661621094 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 75.40616607666016, - "y": 56.394229888916016 - }, - "direction": 0.6453918814659119, - "dropPoint": { - "x": 251.3841552734375, - "y": 188.89834594726563 - }, - "position": { - "x": 30.9371280670166, - "y": 22.910888671875 - }, - "predictedTarget": { - "x": 307.95025634765625, - "y": 208.45989990234375 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 76.45075988769531, - "y": 57.213844299316406 - }, - "direction": 0.6458555459976196, - "dropPoint": { - "x": 251.15573120117188, - "y": 188.88641357421875 - }, - "position": { - "x": 31.997249603271484, - "y": 23.70988655090332 - }, - "predictedTarget": { - "x": 307.8502502441406, - "y": 208.49990844726563 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 77.54798889160156, - "y": 58.00098419189453 - }, - "direction": 0.6452978253364563, - "dropPoint": { - "x": 251.12982177734375, - "y": 188.67532348632813 - }, - "position": { - "x": 33.0757942199707, - "y": 24.521825790405273 - }, - "predictedTarget": { - "x": 307.750244140625, - "y": 208.53990173339844 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 78.66375732421875, - "y": 58.800865173339844 - }, - "direction": 0.6447363495826721, - "dropPoint": { - "x": 251.1048583984375, - "y": 188.46482849121094 - }, - "position": { - "x": 34.17277526855469, - "y": 25.346681594848633 - }, - "predictedTarget": { - "x": 307.6502380371094, - "y": 208.5799102783203 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 79.79802703857422, - "y": 59.613548278808594 - }, - "direction": 0.6441730856895447, - "dropPoint": { - "x": 251.0808563232422, - "y": 188.25559997558594 - }, - "position": { - "x": 35.288211822509766, - "y": 26.184431076049805 - }, - "predictedTarget": { - "x": 307.5452880859375, - "y": 208.61990356445313 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 80.95085144042969, - "y": 60.43897247314453 - }, - "direction": 0.6436070203781128, - "dropPoint": { - "x": 251.057861328125, - "y": 188.04737854003906 - }, - "position": { - "x": 36.422122955322266, - "y": 27.035051345825195 - }, - "predictedTarget": { - "x": 307.4352722167969, - "y": 208.659912109375 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 82.12224578857422, - "y": 61.27710723876953 - }, - "direction": 0.643038272857666, - "dropPoint": { - "x": 251.03582763671875, - "y": 187.84019470214844 - }, - "position": { - "x": 37.57452392578125, - "y": 27.89851951599121 - }, - "predictedTarget": { - "x": 307.3252868652344, - "y": 208.6999053955078 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 83.31224822998047, - "y": 62.127899169921875 - }, - "direction": 0.6424660682678223, - "dropPoint": { - "x": 251.01473999023438, - "y": 187.63375854492188 - }, - "position": { - "x": 38.74543380737305, - "y": 28.774808883666992 - }, - "predictedTarget": { - "x": 307.21527099609375, - "y": 208.73989868164063 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 84.52082824707031, - "y": 62.99139404296875 - }, - "direction": 0.6418919563293457, - "dropPoint": { - "x": 250.99472045898438, - "y": 187.42877197265625 - }, - "position": { - "x": 39.93486785888672, - "y": 29.663896560668945 - }, - "predictedTarget": { - "x": 307.10528564453125, - "y": 208.7799072265625 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 85.74201965332031, - "y": 63.86302947998047 - }, - "direction": 0.6413147449493408, - "dropPoint": { - "x": 250.97555541992188, - "y": 187.22463989257813 - }, - "position": { - "x": 41.13683319091797, - "y": 30.56127166748047 - }, - "predictedTarget": { - "x": 306.9952697753906, - "y": 208.8199005126953 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 86.96369934082031, - "y": 64.73397827148438 - }, - "direction": 0.6407380700111389, - "dropPoint": { - "x": 250.95718383789063, - "y": 187.02255249023438 - }, - "position": { - "x": 42.33931350708008, - "y": 31.45795249938965 - }, - "predictedTarget": { - "x": 306.8852844238281, - "y": 208.8599090576172 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 88.18586730957031, - "y": 65.604248046875 - }, - "direction": 0.6401617527008057, - "dropPoint": { - "x": 250.9387969970703, - "y": 186.8218536376953 - }, - "position": { - "x": 43.54231262207031, - "y": 32.353939056396484 - }, - "predictedTarget": { - "x": 306.7752685546875, - "y": 208.89990234375 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 89.3738784790039, - "y": 66.52033996582031 - }, - "direction": 0.6406004428863525, - "dropPoint": { - "x": 250.721435546875, - "y": 186.80133056640625 - }, - "position": { - "x": 44.74491882324219, - "y": 33.25045394897461 - }, - "predictedTarget": { - "x": 306.665283203125, - "y": 208.9398956298828 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 90.56143188476563, - "y": 67.4370346069336 - }, - "direction": 0.6410408020019531, - "dropPoint": { - "x": 250.50473022460938, - "y": 186.78077697753906 - }, - "position": { - "x": 45.94712829589844, - "y": 34.147499084472656 - }, - "predictedTarget": { - "x": 306.5552673339844, - "y": 208.9799041748047 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 91.74873352050781, - "y": 68.35406494140625 - }, - "direction": 0.641477108001709, - "dropPoint": { - "x": 250.29135131835938, - "y": 186.76040649414063 - }, - "position": { - "x": 47.148948669433594, - "y": 35.045066833496094 - }, - "predictedTarget": { - "x": 306.4452819824219, - "y": 209.01492309570313 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 92.9356918334961, - "y": 69.27151489257813 - }, - "direction": 0.6419112086296082, - "dropPoint": { - "x": 250.07992553710938, - "y": 186.73977661132813 - }, - "position": { - "x": 48.350379943847656, - "y": 35.94315719604492 - }, - "predictedTarget": { - "x": 306.33526611328125, - "y": 209.044921875 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 94.12223052978516, - "y": 70.18952178955078 - }, - "direction": 0.6423462629318237, - "dropPoint": { - "x": 249.869873046875, - "y": 186.71946716308594 - }, - "position": { - "x": 49.55141830444336, - "y": 36.84177017211914 - }, - "predictedTarget": { - "x": 306.22528076171875, - "y": 209.07492065429688 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 95.30845642089844, - "y": 71.10792541503906 - }, - "direction": 0.6427786946296692, - "dropPoint": { - "x": 249.66246032714844, - "y": 186.6992950439453 - }, - "position": { - "x": 50.75206756591797, - "y": 37.740901947021484 - }, - "predictedTarget": { - "x": 306.1152648925781, - "y": 209.1049346923828 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 96.49424743652344, - "y": 72.02688598632813 - }, - "direction": 0.6432120203971863, - "dropPoint": { - "x": 249.4564208984375, - "y": 186.67942810058594 - }, - "position": { - "x": 51.952327728271484, - "y": 38.64055633544922 - }, - "predictedTarget": { - "x": 306.0052795410156, - "y": 209.1349334716797 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 97.67972564697266, - "y": 72.94625091552734 - }, - "direction": 0.6436430811882019, - "dropPoint": { - "x": 249.25233459472656, - "y": 186.65933227539063 - }, - "position": { - "x": 53.152198791503906, - "y": 39.54072570800781 - }, - "predictedTarget": { - "x": 305.895263671875, - "y": 209.16493225097656 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 98.86488342285156, - "y": 73.86602020263672 - }, - "direction": 0.6440717577934265, - "dropPoint": { - "x": 249.05023193359375, - "y": 186.63900756835938 - }, - "position": { - "x": 54.3516845703125, - "y": 40.441410064697266 - }, - "predictedTarget": { - "x": 305.7852783203125, - "y": 209.19493103027344 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 100.04971313476563, - "y": 74.78621673583984 - }, - "direction": 0.6444987058639526, - "dropPoint": { - "x": 248.8507537841797, - "y": 186.61911010742188 - }, - "position": { - "x": 55.550785064697266, - "y": 41.34260559082031 - }, - "predictedTarget": { - "x": 305.6752624511719, - "y": 209.2249298095703 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 101.254150390625, - "y": 75.68031311035156 - }, - "direction": 0.6443434357643127, - "dropPoint": { - "x": 248.6236572265625, - "y": 186.4015350341797 - }, - "position": { - "x": 56.75002670288086, - "y": 42.243614196777344 - }, - "predictedTarget": { - "x": 305.5652770996094, - "y": 209.2549285888672 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 102.45875549316406, - "y": 76.57418823242188 - }, - "direction": 0.6441872119903564, - "dropPoint": { - "x": 248.39920043945313, - "y": 186.18606567382813 - }, - "position": { - "x": 57.94940948486328, - "y": 43.14443588256836 - }, - "predictedTarget": { - "x": 305.45526123046875, - "y": 209.28492736816406 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 103.66348266601563, - "y": 77.4678955078125 - }, - "direction": 0.6440315842628479, - "dropPoint": { - "x": 248.17617797851563, - "y": 185.97225952148438 - }, - "position": { - "x": 59.14893341064453, - "y": 44.04507064819336 - }, - "predictedTarget": { - "x": 305.34527587890625, - "y": 209.31492614746094 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 104.86834716796875, - "y": 78.36140441894531 - }, - "direction": 0.6438758969306946, - "dropPoint": { - "x": 247.955810546875, - "y": 185.76083374023438 - }, - "position": { - "x": 60.348594665527344, - "y": 44.945518493652344 - }, - "predictedTarget": { - "x": 305.2352600097656, - "y": 209.3449249267578 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 106.0732421875, - "y": 79.25487518310547 - }, - "direction": 0.64372318983078, - "dropPoint": { - "x": 247.73626708984375, - "y": 185.55130004882813 - }, - "position": { - "x": 61.54839324951172, - "y": 45.84578323364258 - }, - "predictedTarget": { - "x": 305.125244140625, - "y": 209.3749237060547 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 107.27835083007813, - "y": 80.1480712890625 - }, - "direction": 0.6435685157775879, - "dropPoint": { - "x": 247.5194091796875, - "y": 185.34361267089844 - }, - "position": { - "x": 62.74833297729492, - "y": 46.74586486816406 - }, - "predictedTarget": { - "x": 305.0152587890625, - "y": 209.40493774414063 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 108.48360443115234, - "y": 81.04106140136719 - }, - "direction": 0.6434135437011719, - "dropPoint": { - "x": 247.3052215576172, - "y": 185.13827514648438 - }, - "position": { - "x": 63.94841003417969, - "y": 47.64575958251953 - }, - "predictedTarget": { - "x": 304.9052429199219, - "y": 209.4349365234375 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 109.68896484375, - "y": 81.93391418457031 - }, - "direction": 0.6432594656944275, - "dropPoint": { - "x": 247.09243774414063, - "y": 184.93463134765625 - }, - "position": { - "x": 65.14862823486328, - "y": 48.54547119140625 - }, - "predictedTarget": { - "x": 304.7952575683594, - "y": 209.46493530273438 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 110.89447021484375, - "y": 82.8265609741211 - }, - "direction": 0.6431050896644592, - "dropPoint": { - "x": 246.88235473632813, - "y": 184.73333740234375 - }, - "position": { - "x": 66.34898376464844, - "y": 49.44499588012695 - }, - "predictedTarget": { - "x": 304.68524169921875, - "y": 209.49493408203125 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 112.10006713867188, - "y": 83.71910095214844 - }, - "direction": 0.6429525017738342, - "dropPoint": { - "x": 246.6737060546875, - "y": 184.5340118408203 - }, - "position": { - "x": 67.54947662353516, - "y": 50.344337463378906 - }, - "predictedTarget": { - "x": 304.57525634765625, - "y": 209.52493286132813 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 113.28520202636719, - "y": 84.63893127441406 - }, - "direction": 0.6434003114700317, - "dropPoint": { - "x": 246.47802734375, - "y": 184.5125732421875 - }, - "position": { - "x": 68.74956512451172, - "y": 51.24421691894531 - }, - "predictedTarget": { - "x": 304.4652404785156, - "y": 209.554931640625 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 114.46997833251953, - "y": 85.5592269897461 - }, - "direction": 0.6438468098640442, - "dropPoint": { - "x": 246.28433227539063, - "y": 184.4912109375 - }, - "position": { - "x": 69.94925689697266, - "y": 52.144630432128906 - }, - "predictedTarget": { - "x": 304.3552551269531, - "y": 209.58493041992188 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 115.65438842773438, - "y": 86.47998046875 - }, - "direction": 0.6442917585372925, - "dropPoint": { - "x": 246.0926513671875, - "y": 184.46990966796875 - }, - "position": { - "x": 71.14854431152344, - "y": 53.04557800292969 - }, - "predictedTarget": { - "x": 304.2402648925781, - "y": 209.60995483398438 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 116.83854675292969, - "y": 87.40106201171875 - }, - "direction": 0.6447322964668274, - "dropPoint": { - "x": 245.9041748046875, - "y": 184.44879150390625 - }, - "position": { - "x": 72.3474349975586, - "y": 53.94705581665039 - }, - "predictedTarget": { - "x": 304.1202697753906, - "y": 209.6299591064453 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 118.02224731445313, - "y": 88.32272338867188 - }, - "direction": 0.6451742649078369, - "dropPoint": { - "x": 245.71649169921875, - "y": 184.42764282226563 - }, - "position": { - "x": 73.54592895507813, - "y": 54.849063873291016 - }, - "predictedTarget": { - "x": 304.0002746582031, - "y": 209.64996337890625 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 119.20561218261719, - "y": 89.24484252929688 - }, - "direction": 0.6456144452095032, - "dropPoint": { - "x": 245.53089904785156, - "y": 184.40660095214844 - }, - "position": { - "x": 74.74402618408203, - "y": 55.7515983581543 - }, - "predictedTarget": { - "x": 303.8802795410156, - "y": 209.66995239257813 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 120.38861846923828, - "y": 90.16739654541016 - }, - "direction": 0.6460530757904053, - "dropPoint": { - "x": 245.34725952148438, - "y": 184.3856201171875 - }, - "position": { - "x": 75.94172668457031, - "y": 56.654659271240234 - }, - "predictedTarget": { - "x": 303.7602844238281, - "y": 209.68995666503906 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 121.57127380371094, - "y": 91.09040069580078 - }, - "direction": 0.6464900970458984, - "dropPoint": { - "x": 245.1656494140625, - "y": 184.36471557617188 - }, - "position": { - "x": 77.13903045654297, - "y": 57.55824279785156 - }, - "predictedTarget": { - "x": 303.6402893066406, - "y": 209.7099609375 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 122.75363159179688, - "y": 92.01377868652344 - }, - "direction": 0.6469239592552185, - "dropPoint": { - "x": 244.98663330078125, - "y": 184.34393310546875 - }, - "position": { - "x": 78.33594512939453, - "y": 58.462345123291016 - }, - "predictedTarget": { - "x": 303.5202941894531, - "y": 209.72994995117188 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 123.93560028076172, - "y": 92.93765258789063 - }, - "direction": 0.6473575234413147, - "dropPoint": { - "x": 244.80905151367188, - "y": 184.32321166992188 - }, - "position": { - "x": 79.53246307373047, - "y": 59.366966247558594 - }, - "predictedTarget": { - "x": 303.4002990722656, - "y": 209.7499542236328 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 125.15379333496094, - "y": 93.8135986328125 - }, - "direction": 0.6467287540435791, - "dropPoint": { - "x": 244.79144287109375, - "y": 184.1466522216797 - }, - "position": { - "x": 80.72955322265625, - "y": 60.270835876464844 - }, - "predictedTarget": { - "x": 303.2802734375, - "y": 209.76995849609375 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 126.37249755859375, - "y": 94.6888198852539 - }, - "direction": 0.6461009383201599, - "dropPoint": { - "x": 244.77394104003906, - "y": 183.97181701660156 - }, - "position": { - "x": 81.92720794677734, - "y": 61.173954010009766 - }, - "predictedTarget": { - "x": 303.1602783203125, - "y": 209.7899627685547 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 127.59163665771484, - "y": 95.56341552734375 - }, - "direction": 0.6454763412475586, - "dropPoint": { - "x": 244.75653076171875, - "y": 183.79922485351563 - }, - "position": { - "x": 83.12542724609375, - "y": 62.07632064819336 - }, - "predictedTarget": { - "x": 303.0452575683594, - "y": 209.8049774169922 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 128.81126403808594, - "y": 96.4373550415039 - }, - "direction": 0.6448538303375244, - "dropPoint": { - "x": 244.73922729492188, - "y": 183.6286163330078 - }, - "position": { - "x": 84.32421112060547, - "y": 62.977943420410156 - }, - "predictedTarget": { - "x": 302.9352722167969, - "y": 209.81497192382813 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 130.03134155273438, - "y": 97.31063842773438 - }, - "direction": 0.644233763217926, - "dropPoint": { - "x": 244.72201538085938, - "y": 183.4600067138672 - }, - "position": { - "x": 85.52355194091797, - "y": 63.878822326660156 - }, - "predictedTarget": { - "x": 302.82525634765625, - "y": 209.82498168945313 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 131.25192260742188, - "y": 98.1832275390625 - }, - "direction": 0.6436148285865784, - "dropPoint": { - "x": 244.70489501953125, - "y": 183.29310607910156 - }, - "position": { - "x": 86.72344970703125, - "y": 64.77896118164063 - }, - "predictedTarget": { - "x": 302.71527099609375, - "y": 209.83497619628906 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 132.47293090820313, - "y": 99.05520629882813 - }, - "direction": 0.6429991722106934, - "dropPoint": { - "x": 244.68788146972656, - "y": 183.12844848632813 - }, - "position": { - "x": 87.92390441894531, - "y": 65.67835998535156 - }, - "predictedTarget": { - "x": 302.6052551269531, - "y": 209.844970703125 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 133.69442749023438, - "y": 99.92649841308594 - }, - "direction": 0.642384946346283, - "dropPoint": { - "x": 244.67092895507813, - "y": 182.96548461914063 - }, - "position": { - "x": 89.12490844726563, - "y": 66.57701873779297 - }, - "predictedTarget": { - "x": 302.4952697753906, - "y": 209.85498046875 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 134.91632080078125, - "y": 100.79722595214844 - }, - "direction": 0.6417749524116516, - "dropPoint": { - "x": 244.65415954589844, - "y": 182.80502319335938 - }, - "position": { - "x": 90.32646179199219, - "y": 67.47494506835938 - }, - "predictedTarget": { - "x": 302.38525390625, - "y": 209.86497497558594 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 136.13870239257813, - "y": 101.66725158691406 - }, - "direction": 0.6411656141281128, - "dropPoint": { - "x": 244.637451171875, - "y": 182.64605712890625 - }, - "position": { - "x": 91.52855682373047, - "y": 68.37213897705078 - }, - "predictedTarget": { - "x": 302.2752685546875, - "y": 209.87496948242188 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 137.3253173828125, - "y": 102.58517456054688 - }, - "direction": 0.6416184306144714, - "dropPoint": { - "x": 244.4637451171875, - "y": 182.624267578125 - }, - "position": { - "x": 92.7302474975586, - "y": 69.2698745727539 - }, - "predictedTarget": { - "x": 302.1652526855469, - "y": 209.88497924804688 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 138.51162719726563, - "y": 103.50350952148438 - }, - "direction": 0.642068088054657, - "dropPoint": { - "x": 244.29263305664063, - "y": 182.6026611328125 - }, - "position": { - "x": 93.93153381347656, - "y": 70.16815185546875 - }, - "predictedTarget": { - "x": 302.0552673339844, - "y": 209.8949737548828 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 139.69754028320313, - "y": 104.42230987548828 - }, - "direction": 0.6425164341926575, - "dropPoint": { - "x": 244.1229705810547, - "y": 182.58082580566406 - }, - "position": { - "x": 95.13241577148438, - "y": 71.06697082519531 - }, - "predictedTarget": { - "x": 301.9402770996094, - "y": 209.90496826171875 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 140.88311767578125, - "y": 105.34158325195313 - }, - "direction": 0.6429634690284729, - "dropPoint": { - "x": 243.9559326171875, - "y": 182.55963134765625 - }, - "position": { - "x": 96.33290100097656, - "y": 71.96632385253906 - }, - "predictedTarget": { - "x": 301.8202819824219, - "y": 209.91497802734375 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 142.0683135986328, - "y": 106.2613296508789 - }, - "direction": 0.6434094309806824, - "dropPoint": { - "x": 243.7898406982422, - "y": 182.53790283203125 - }, - "position": { - "x": 97.5329818725586, - "y": 72.8662109375 - }, - "predictedTarget": { - "x": 301.7002868652344, - "y": 209.9249725341797 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 143.25318908691406, - "y": 107.18148803710938 - }, - "direction": 0.6438527703285217, - "dropPoint": { - "x": 243.6268310546875, - "y": 182.5168914794922 - }, - "position": { - "x": 98.732666015625, - "y": 73.76663208007813 - }, - "predictedTarget": { - "x": 301.58026123046875, - "y": 209.93496704101563 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 144.437744140625, - "y": 108.10206604003906 - }, - "direction": 0.6442936658859253, - "dropPoint": { - "x": 243.4652862548828, - "y": 182.4954376220703 - }, - "position": { - "x": 99.93195343017578, - "y": 74.6675796508789 - }, - "predictedTarget": { - "x": 301.46026611328125, - "y": 209.94497680664063 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 145.62193298339844, - "y": 109.02308654785156 - }, - "direction": 0.6447329521179199, - "dropPoint": { - "x": 243.30633544921875, - "y": 182.47459411621094 - }, - "position": { - "x": 101.13084411621094, - "y": 75.56905364990234 - }, - "predictedTarget": { - "x": 301.34027099609375, - "y": 209.95497131347656 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 146.80581665039063, - "y": 109.94453430175781 - }, - "direction": 0.6451699733734131, - "dropPoint": { - "x": 243.1488037109375, - "y": 182.45330810546875 - }, - "position": { - "x": 102.32933807373047, - "y": 76.47105407714844 - }, - "predictedTarget": { - "x": 301.22027587890625, - "y": 209.96498107910156 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 147.98931884765625, - "y": 110.86643981933594 - }, - "direction": 0.6456058025360107, - "dropPoint": { - "x": 242.99334716796875, - "y": 182.432373046875 - }, - "position": { - "x": 103.5274429321289, - "y": 77.37358093261719 - }, - "predictedTarget": { - "x": 301.10028076171875, - "y": 209.9749755859375 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 149.20982360839844, - "y": 111.73920440673828 - }, - "direction": 0.6449543237686157, - "dropPoint": { - "x": 242.9764404296875, - "y": 182.27731323242188 - }, - "position": { - "x": 104.72613525390625, - "y": 78.27532196044922 - }, - "predictedTarget": { - "x": 300.9802551269531, - "y": 209.98497009277344 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 150.43077087402344, - "y": 112.611328125 - }, - "direction": 0.6443063020706177, - "dropPoint": { - "x": 242.95962524414063, - "y": 182.12445068359375 - }, - "position": { - "x": 105.92540740966797, - "y": 79.17628479003906 - }, - "predictedTarget": { - "x": 300.8602600097656, - "y": 209.99497985839844 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 151.65220642089844, - "y": 113.48278045654297 - }, - "direction": 0.6436606049537659, - "dropPoint": { - "x": 242.94296264648438, - "y": 181.97360229492188 - }, - "position": { - "x": 107.1252670288086, - "y": 80.07647705078125 - }, - "predictedTarget": { - "x": 300.7402648925781, - "y": 210.0 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 152.87411499023438, - "y": 114.35356140136719 - }, - "direction": 0.6430174708366394, - "dropPoint": { - "x": 242.9263916015625, - "y": 181.82473754882813 - }, - "position": { - "x": 108.32569885253906, - "y": 80.97589874267578 - }, - "predictedTarget": { - "x": 300.6202697753906, - "y": 210.0 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 154.09649658203125, - "y": 115.22366333007813 - }, - "direction": 0.6423768401145935, - "dropPoint": { - "x": 242.90994262695313, - "y": 181.6778564453125 - }, - "position": { - "x": 109.5267105102539, - "y": 81.87454986572266 - }, - "predictedTarget": { - "x": 300.5002746582031, - "y": 210.0 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 155.31939697265625, - "y": 116.09305572509766 - }, - "direction": 0.6417378187179565, - "dropPoint": { - "x": 242.8935546875, - "y": 181.53273010253906 - }, - "position": { - "x": 110.7282943725586, - "y": 82.77243041992188 - }, - "predictedTarget": { - "x": 300.3802795410156, - "y": 210.0 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 156.54269409179688, - "y": 116.96184539794922 - }, - "direction": 0.6411026120185852, - "dropPoint": { - "x": 242.8773193359375, - "y": 181.38983154296875 - }, - "position": { - "x": 111.93045043945313, - "y": 83.66954803466797 - }, - "predictedTarget": { - "x": 300.26025390625, - "y": 210.0 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 157.76651000976563, - "y": 117.82992553710938 - }, - "direction": 0.6404690742492676, - "dropPoint": { - "x": 242.8611602783203, - "y": 181.24868774414063 - }, - "position": { - "x": 113.13317108154297, - "y": 84.56590270996094 - }, - "predictedTarget": { - "x": 300.1402587890625, - "y": 210.0 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 158.99073791503906, - "y": 118.69740295410156 - }, - "direction": 0.6398390531539917, - "dropPoint": { - "x": 242.84515380859375, - "y": 181.10971069335938 - }, - "position": { - "x": 114.33645629882813, - "y": 85.46150207519531 - }, - "predictedTarget": { - "x": 300.020263671875, - "y": 210.0 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 160.21542358398438, - "y": 119.56423950195313 - }, - "direction": 0.6392119526863098, - "dropPoint": { - "x": 242.82928466796875, - "y": 180.97274780273438 - }, - "position": { - "x": 115.5403060913086, - "y": 86.3563461303711 - }, - "predictedTarget": { - "x": 299.9002685546875, - "y": 210.0 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 161.41995239257813, - "y": 120.45814514160156 - }, - "direction": 0.6391916275024414, - "dropPoint": { - "x": 242.83395385742188, - "y": 180.97219848632813 - }, - "position": { - "x": 116.74417114257813, - "y": 87.25116729736328 - }, - "predictedTarget": { - "x": 299.7802734375, - "y": 210.0 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 162.62452697753906, - "y": 121.35203552246094 - }, - "direction": 0.6391711831092834, - "dropPoint": { - "x": 242.83860778808594, - "y": 180.97166442871094 - }, - "position": { - "x": 117.94805908203125, - "y": 88.14596557617188 - }, - "predictedTarget": { - "x": 299.6602783203125, - "y": 210.0 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 163.82911682128906, - "y": 122.24588012695313 - }, - "direction": 0.6391505002975464, - "dropPoint": { - "x": 242.84329223632813, - "y": 180.97113037109375 - }, - "position": { - "x": 119.15196228027344, - "y": 89.04073333740234 - }, - "predictedTarget": { - "x": 299.540283203125, - "y": 209.99502563476563 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 165.03372192382813, - "y": 123.13970184326172 - }, - "direction": 0.6391298770904541, - "dropPoint": { - "x": 242.84791564941406, - "y": 180.97059631347656 - }, - "position": { - "x": 120.35588836669922, - "y": 89.93547821044922 - }, - "predictedTarget": { - "x": 299.4202575683594, - "y": 209.98501586914063 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 166.23837280273438, - "y": 124.03348541259766 - }, - "direction": 0.6391088366508484, - "dropPoint": { - "x": 242.85260009765625, - "y": 180.97007751464844 - }, - "position": { - "x": 121.55982971191406, - "y": 90.8302001953125 - }, - "predictedTarget": { - "x": 299.3002624511719, - "y": 209.9750213623047 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 167.44302368164063, - "y": 124.92724609375 - }, - "direction": 0.6390878558158875, - "dropPoint": { - "x": 242.85720825195313, - "y": 180.9695587158203 - }, - "position": { - "x": 122.76378631591797, - "y": 91.72489929199219 - }, - "predictedTarget": { - "x": 299.1802673339844, - "y": 209.96502685546875 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 168.647705078125, - "y": 125.82096862792969 - }, - "direction": 0.6390665769577026, - "dropPoint": { - "x": 242.86184692382813, - "y": 180.9690399169922 - }, - "position": { - "x": 123.96776580810547, - "y": 92.61956787109375 - }, - "predictedTarget": { - "x": 299.0602722167969, - "y": 209.95501708984375 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 169.8524169921875, - "y": 126.71464538574219 - }, - "direction": 0.6390451788902283, - "dropPoint": { - "x": 242.86647033691406, - "y": 180.96853637695313 - }, - "position": { - "x": 125.17176055908203, - "y": 93.51421356201172 - }, - "predictedTarget": { - "x": 298.9402770996094, - "y": 209.9450225830078 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 171.05714416503906, - "y": 127.60830688476563 - }, - "direction": 0.6390236020088196, - "dropPoint": { - "x": 242.87112426757813, - "y": 180.96804809570313 - }, - "position": { - "x": 126.37577819824219, - "y": 94.40882873535156 - }, - "predictedTarget": { - "x": 298.82025146484375, - "y": 209.9350128173828 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 172.26190185546875, - "y": 128.50192260742188 - }, - "direction": 0.6390019655227661, - "dropPoint": { - "x": 242.875732421875, - "y": 180.96755981445313 - }, - "position": { - "x": 127.57981872558594, - "y": 95.30342102050781 - }, - "predictedTarget": { - "x": 298.70025634765625, - "y": 209.92501831054688 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 173.47238159179688, - "y": 129.38784790039063 - }, - "direction": 0.6388130187988281, - "dropPoint": { - "x": 242.7135009765625, - "y": 180.81326293945313 - }, - "position": { - "x": 128.78402709960938, - "y": 96.19778442382813 - }, - "predictedTarget": { - "x": 298.58026123046875, - "y": 209.91502380371094 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 174.68304443359375, - "y": 130.27352905273438 - }, - "direction": 0.638623833656311, - "dropPoint": { - "x": 242.55384826660156, - "y": 180.66128540039063 - }, - "position": { - "x": 129.9884033203125, - "y": 97.0919189453125 - }, - "predictedTarget": { - "x": 298.46026611328125, - "y": 209.90501403808594 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 175.89382934570313, - "y": 131.15902709960938 - }, - "direction": 0.6384354829788208, - "dropPoint": { - "x": 242.39581298828125, - "y": 180.51112365722656 - }, - "position": { - "x": 131.1929473876953, - "y": 97.98583221435547 - }, - "predictedTarget": { - "x": 298.34027099609375, - "y": 209.89501953125 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 177.10479736328125, - "y": 132.04428100585938 - }, - "direction": 0.6382470726966858, - "dropPoint": { - "x": 242.24038696289063, - "y": 180.36334228515625 - }, - "position": { - "x": 132.3976593017578, - "y": 98.8795166015625 - }, - "predictedTarget": { - "x": 298.2202453613281, - "y": 209.885009765625 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 178.3158721923828, - "y": 132.92938232421875 - }, - "direction": 0.6380603313446045, - "dropPoint": { - "x": 242.0866241455078, - "y": 180.217529296875 - }, - "position": { - "x": 133.6025390625, - "y": 99.7729721069336 - }, - "predictedTarget": { - "x": 298.1002502441406, - "y": 209.87501525878906 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 179.52708435058594, - "y": 133.81430053710938 - }, - "direction": 0.6378740668296814, - "dropPoint": { - "x": 241.93499755859375, - "y": 180.07382202148438 - }, - "position": { - "x": 134.80758666992188, - "y": 100.66620635986328 - }, - "predictedTarget": { - "x": 297.9802551269531, - "y": 209.86502075195313 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 180.73849487304688, - "y": 134.69894409179688 - }, - "direction": 0.6376872658729553, - "dropPoint": { - "x": 241.78541564941406, - "y": 179.93199157714844 - }, - "position": { - "x": 136.01280212402344, - "y": 101.55921173095703 - }, - "predictedTarget": { - "x": 297.8602600097656, - "y": 209.8550262451172 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 181.9500732421875, - "y": 135.5833740234375 - }, - "direction": 0.6375004649162292, - "dropPoint": { - "x": 241.638427734375, - "y": 179.79251098632813 - }, - "position": { - "x": 137.2181854248047, - "y": 102.45199584960938 - }, - "predictedTarget": { - "x": 297.7402648925781, - "y": 209.8450164794922 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 183.1617431640625, - "y": 136.46766662597656 - }, - "direction": 0.6373155117034912, - "dropPoint": { - "x": 241.49313354492188, - "y": 179.655029296875 - }, - "position": { - "x": 138.42373657226563, - "y": 103.34455871582031 - }, - "predictedTarget": { - "x": 297.6202697753906, - "y": 209.83502197265625 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 184.37364196777344, - "y": 137.35162353515625 - }, - "direction": 0.6371285319328308, - "dropPoint": { - "x": 241.350341796875, - "y": 179.51951599121094 - }, - "position": { - "x": 139.6294403076172, - "y": 104.23689270019531 - }, - "predictedTarget": { - "x": 297.5002746582031, - "y": 209.8250274658203 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 185.61962890625, - "y": 138.18948364257813 - }, - "direction": 0.6359432935714722, - "dropPoint": { - "x": 241.4688720703125, - "y": 179.42059326171875 - }, - "position": { - "x": 140.83621215820313, - "y": 105.12779998779297 - }, - "predictedTarget": { - "x": 297.3802795410156, - "y": 209.8150177001953 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 186.86627197265625, - "y": 139.02630615234375 - }, - "direction": 0.6347677707672119, - "dropPoint": { - "x": 241.585205078125, - "y": 179.3236541748047 - }, - "position": { - "x": 142.0440216064453, - "y": 106.01728820800781 - }, - "predictedTarget": { - "x": 297.2602844238281, - "y": 209.80502319335938 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 188.1137237548828, - "y": 139.86190795898438 - }, - "direction": 0.6335975527763367, - "dropPoint": { - "x": 241.70016479492188, - "y": 179.22860717773438 - }, - "position": { - "x": 143.25286865234375, - "y": 106.90535736083984 - }, - "predictedTarget": { - "x": 297.1402587890625, - "y": 209.7900390625 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 189.36187744140625, - "y": 140.69639587402344 - }, - "direction": 0.6324352025985718, - "dropPoint": { - "x": 241.8128662109375, - "y": 179.13516235351563 - }, - "position": { - "x": 144.46275329589844, - "y": 107.79202270507813 - }, - "predictedTarget": { - "x": 297.020263671875, - "y": 209.77005004882813 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 190.61082458496094, - "y": 141.5297088623047 - }, - "direction": 0.631278395652771, - "dropPoint": { - "x": 241.924560546875, - "y": 179.0438690185547 - }, - "position": { - "x": 145.6736602783203, - "y": 108.67729187011719 - }, - "predictedTarget": { - "x": 296.9002685546875, - "y": 209.7500457763672 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 191.8604278564453, - "y": 142.3619842529297 - }, - "direction": 0.6301305890083313, - "dropPoint": { - "x": 242.03367614746094, - "y": 178.95407104492188 - }, - "position": { - "x": 146.88558959960938, - "y": 109.56116485595703 - }, - "predictedTarget": { - "x": 296.7802734375, - "y": 209.73004150390625 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 193.11074829101563, - "y": 143.1931610107422 - }, - "direction": 0.6289900541305542, - "dropPoint": { - "x": 242.14138793945313, - "y": 178.8663330078125 - }, - "position": { - "x": 148.09852600097656, - "y": 110.44365692138672 - }, - "predictedTarget": { - "x": 296.6602783203125, - "y": 209.71005249023438 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 194.3616943359375, - "y": 144.02333068847656 - }, - "direction": 0.6278588175773621, - "dropPoint": { - "x": 242.24691772460938, - "y": 178.78036499023438 - }, - "position": { - "x": 149.3124542236328, - "y": 111.32477569580078 - }, - "predictedTarget": { - "x": 296.5402526855469, - "y": 209.69004821777344 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 195.6133575439453, - "y": 144.85240173339844 - }, - "direction": 0.6267342567443848, - "dropPoint": { - "x": 242.35064697265625, - "y": 178.69602966308594 - }, - "position": { - "x": 150.52737426757813, - "y": 112.20452880859375 - }, - "predictedTarget": { - "x": 296.4202575683594, - "y": 209.6700439453125 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 196.86569213867188, - "y": 145.680419921875 - }, - "direction": 0.6256172060966492, - "dropPoint": { - "x": 242.4529571533203, - "y": 178.61370849609375 - }, - "position": { - "x": 151.74327087402344, - "y": 113.08292388916016 - }, - "predictedTarget": { - "x": 296.3002624511719, - "y": 209.65005493164063 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 198.06602478027344, - "y": 146.5803680419922 - }, - "direction": 0.6260824799537659, - "dropPoint": { - "x": 242.3345489501953, - "y": 178.59234619140625 - }, - "position": { - "x": 152.95877075195313, - "y": 113.96188354492188 - }, - "predictedTarget": { - "x": 296.1802673339844, - "y": 209.6300506591797 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 199.26597595214844, - "y": 147.48080444335938 - }, - "direction": 0.6265462636947632, - "dropPoint": { - "x": 242.21737670898438, - "y": 178.5706787109375 - }, - "position": { - "x": 154.17385864257813, - "y": 114.8414077758789 - }, - "predictedTarget": { - "x": 296.06024169921875, - "y": 209.61004638671875 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 200.46566772460938, - "y": 148.38157653808594 - }, - "direction": 0.6270051598548889, - "dropPoint": { - "x": 242.10302734375, - "y": 178.54940795898438 - }, - "position": { - "x": 155.38853454589844, - "y": 115.72148895263672 - }, - "predictedTarget": { - "x": 295.9452209472656, - "y": 209.5900421142578 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 201.6649627685547, - "y": 149.28289794921875 - }, - "direction": 0.6274639368057251, - "dropPoint": { - "x": 241.9903564453125, - "y": 178.52838134765625 - }, - "position": { - "x": 156.60281372070313, - "y": 116.60212707519531 - }, - "predictedTarget": { - "x": 295.8352355957031, - "y": 209.57005310058594 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 202.8640594482422, - "y": 150.18446350097656 - }, - "direction": 0.6279162168502808, - "dropPoint": { - "x": 241.8800048828125, - "y": 178.50723266601563 - }, - "position": { - "x": 157.8166961669922, - "y": 117.48331451416016 - }, - "predictedTarget": { - "x": 295.7252197265625, - "y": 209.550048828125 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 204.06272888183594, - "y": 151.0865936279297 - }, - "direction": 0.6283690929412842, - "dropPoint": { - "x": 241.7714080810547, - "y": 178.48646545410156 - }, - "position": { - "x": 159.03018188476563, - "y": 118.36505126953125 - }, - "predictedTarget": { - "x": 295.615234375, - "y": 209.53004455566406 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 205.26112365722656, - "y": 151.9890899658203 - }, - "direction": 0.6288180351257324, - "dropPoint": { - "x": 241.66476440429688, - "y": 178.46568298339844 - }, - "position": { - "x": 160.24327087402344, - "y": 119.2473373413086 - }, - "predictedTarget": { - "x": 295.5052185058594, - "y": 209.51004028320313 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 206.45925903320313, - "y": 152.89193725585938 - }, - "direction": 0.6292628049850464, - "dropPoint": { - "x": 241.5601348876953, - "y": 178.4449005126953 - }, - "position": { - "x": 161.45596313476563, - "y": 120.13015747070313 - }, - "predictedTarget": { - "x": 295.3952331542969, - "y": 209.4900360107422 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 207.65704345703125, - "y": 153.79519653320313 - }, - "direction": 0.6297051310539246, - "dropPoint": { - "x": 241.45791625976563, - "y": 178.4246368408203 - }, - "position": { - "x": 162.6682586669922, - "y": 121.01351928710938 - }, - "predictedTarget": { - "x": 295.28521728515625, - "y": 209.4700469970703 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 208.85455322265625, - "y": 154.6988525390625 - }, - "direction": 0.6301445364952087, - "dropPoint": { - "x": 241.3573455810547, - "y": 178.40431213378906 - }, - "position": { - "x": 163.8801727294922, - "y": 121.89741516113281 - }, - "predictedTarget": { - "x": 295.17523193359375, - "y": 209.45004272460938 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 210.09083557128906, - "y": 155.54931640625 - }, - "direction": 0.6294208765029907, - "dropPoint": { - "x": 241.341064453125, - "y": 178.30661010742188 - }, - "position": { - "x": 165.0927276611328, - "y": 122.78043365478516 - }, - "predictedTarget": { - "x": 295.0652160644531, - "y": 209.43003845214844 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 211.3275604248047, - "y": 156.39910888671875 - }, - "direction": 0.6287020444869995, - "dropPoint": { - "x": 241.32492065429688, - "y": 178.21104431152344 - }, - "position": { - "x": 166.305908203125, - "y": 123.6625747680664 - }, - "predictedTarget": { - "x": 294.9552307128906, - "y": 209.4100341796875 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 212.56478881835938, - "y": 157.24815368652344 - }, - "direction": 0.6279865503311157, - "dropPoint": { - "x": 241.3089599609375, - "y": 178.11744689941406 - }, - "position": { - "x": 167.5197296142578, - "y": 124.5438461303711 - }, - "predictedTarget": { - "x": 294.84521484375, - "y": 209.3850555419922 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 213.8025360107422, - "y": 158.09646606445313 - }, - "direction": 0.6272739171981812, - "dropPoint": { - "x": 241.29312133789063, - "y": 178.02569580078125 - }, - "position": { - "x": 168.7341766357422, - "y": 125.42425537109375 - }, - "predictedTarget": { - "x": 294.7352294921875, - "y": 209.3550567626953 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 215.0407257080078, - "y": 158.944091796875 - }, - "direction": 0.6265660524368286, - "dropPoint": { - "x": 241.27745056152344, - "y": 177.93603515625 - }, - "position": { - "x": 169.94924926757813, - "y": 126.30380249023438 - }, - "predictedTarget": { - "x": 294.6252136230469, - "y": 209.32505798339844 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 216.27944946289063, - "y": 159.79092407226563 - }, - "direction": 0.6258596777915955, - "dropPoint": { - "x": 241.26222229003906, - "y": 177.84828186035156 - }, - "position": { - "x": 171.16493225097656, - "y": 127.1824951171875 - }, - "predictedTarget": { - "x": 294.5152282714844, - "y": 209.29505920410156 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 217.51858520507813, - "y": 160.63717651367188 - }, - "direction": 0.6251595616340637, - "dropPoint": { - "x": 241.24688720703125, - "y": 177.76254272460938 - }, - "position": { - "x": 172.38124084472656, - "y": 128.06033325195313 - }, - "predictedTarget": { - "x": 294.40521240234375, - "y": 209.2650604248047 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 218.75814819335938, - "y": 161.48275756835938 - }, - "direction": 0.6244639158248901, - "dropPoint": { - "x": 241.231689453125, - "y": 177.6787567138672 - }, - "position": { - "x": 173.59815979003906, - "y": 128.9373321533203 - }, - "predictedTarget": { - "x": 294.29522705078125, - "y": 209.2350616455078 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 219.99819946289063, - "y": 162.32762145996094 - }, - "direction": 0.6237713694572449, - "dropPoint": { - "x": 241.21664428710938, - "y": 177.5968017578125 - }, - "position": { - "x": 174.81568908691406, - "y": 129.8134765625 - }, - "predictedTarget": { - "x": 294.1852111816406, - "y": 209.20506286621094 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 221.23866271972656, - "y": 163.17189025878906 - }, - "direction": 0.6230842471122742, - "dropPoint": { - "x": 241.20179748535156, - "y": 177.51690673828125 - }, - "position": { - "x": 176.0338134765625, - "y": 130.6887969970703 - }, - "predictedTarget": { - "x": 294.0752258300781, - "y": 209.17506408691406 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 222.4816436767578, - "y": 164.01258850097656 - }, - "direction": 0.6223388910293579, - "dropPoint": { - "x": 241.18548583984375, - "y": 177.4315948486328 - }, - "position": { - "x": 177.25259399414063, - "y": 131.56320190429688 - }, - "predictedTarget": { - "x": 293.9652099609375, - "y": 209.1450653076172 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 223.72506713867188, - "y": 164.8526153564453 - }, - "direction": 0.6215988397598267, - "dropPoint": { - "x": 241.16937255859375, - "y": 177.34841918945313 - }, - "position": { - "x": 178.47201538085938, - "y": 132.43670654296875 - }, - "predictedTarget": { - "x": 293.855224609375, - "y": 209.1150665283203 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 224.968994140625, - "y": 165.69187927246094 - }, - "direction": 0.6208621859550476, - "dropPoint": { - "x": 241.1534423828125, - "y": 177.26718139648438 - }, - "position": { - "x": 179.69207763671875, - "y": 133.30931091308594 - }, - "predictedTarget": { - "x": 293.7452087402344, - "y": 209.08009338378906 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 226.21343994140625, - "y": 166.53036499023438 - }, - "direction": 0.6201287508010864, - "dropPoint": { - "x": 241.1376495361328, - "y": 177.18780517578125 - }, - "position": { - "x": 180.91278076171875, - "y": 134.18101501464844 - }, - "predictedTarget": { - "x": 293.6352233886719, - "y": 209.0400848388672 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 227.458251953125, - "y": 167.36827087402344 - }, - "direction": 0.6194024682044983, - "dropPoint": { - "x": 241.12173461914063, - "y": 177.11044311523438 - }, - "position": { - "x": 182.13412475585938, - "y": 135.0518341064453 - }, - "predictedTarget": { - "x": 293.52520751953125, - "y": 209.00009155273438 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 228.70364379882813, - "y": 168.20535278320313 - }, - "direction": 0.6186779141426086, - "dropPoint": { - "x": 241.1062469482422, - "y": 177.03497314453125 - }, - "position": { - "x": 183.35609436035156, - "y": 135.92176818847656 - }, - "predictedTarget": { - "x": 293.41522216796875, - "y": 208.9600830078125 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 229.94943237304688, - "y": 169.0417938232422 - }, - "direction": 0.617958664894104, - "dropPoint": { - "x": 241.0909881591797, - "y": 176.96156311035156 - }, - "position": { - "x": 184.5786895751953, - "y": 136.79083251953125 - }, - "predictedTarget": { - "x": 293.30523681640625, - "y": 208.9200897216797 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 231.19569396972656, - "y": 169.87754821777344 - }, - "direction": 0.6172440052032471, - "dropPoint": { - "x": 241.07591247558594, - "y": 176.89010620117188 - }, - "position": { - "x": 185.80191040039063, - "y": 137.6590118408203 - }, - "predictedTarget": { - "x": 293.1952209472656, - "y": 208.8800811767578 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 232.44241333007813, - "y": 170.71258544921875 - }, - "direction": 0.6165332198143005, - "dropPoint": { - "x": 241.0609588623047, - "y": 176.82044982910156 - }, - "position": { - "x": 187.02574157714844, - "y": 138.5263214111328 - }, - "predictedTarget": { - "x": 293.0852355957031, - "y": 208.840087890625 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 233.6895294189453, - "y": 171.54702758789063 - }, - "direction": 0.6158285140991211, - "dropPoint": { - "x": 241.0462188720703, - "y": 176.75283813476563 - }, - "position": { - "x": 188.25018310546875, - "y": 139.3927764892578 - }, - "predictedTarget": { - "x": 292.9752197265625, - "y": 208.80007934570313 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 234.91514587402344, - "y": 172.41180419921875 - }, - "direction": 0.6157928109169006, - "dropPoint": { - "x": 241.053466796875, - "y": 176.75514221191406 - }, - "position": { - "x": 189.4746551513672, - "y": 140.25918579101563 - }, - "predictedTarget": { - "x": 292.865234375, - "y": 208.7600860595703 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 236.14080810546875, - "y": 173.2765350341797 - }, - "direction": 0.6157568693161011, - "dropPoint": { - "x": 241.06069946289063, - "y": 176.75747680664063 - }, - "position": { - "x": 190.69915771484375, - "y": 141.12554931640625 - }, - "predictedTarget": { - "x": 292.7552185058594, - "y": 208.72007751464844 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 237.3665008544922, - "y": 174.14120483398438 - }, - "direction": 0.6157205700874329, - "dropPoint": { - "x": 241.0679168701172, - "y": 176.7598419189453 - }, - "position": { - "x": 191.92369079589844, - "y": 141.9918670654297 - }, - "predictedTarget": { - "x": 292.65020751953125, - "y": 208.68008422851563 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 238.59222412109375, - "y": 175.005859375 - }, - "direction": 0.6156848669052124, - "dropPoint": { - "x": 241.07513427734375, - "y": 176.76231384277344 - }, - "position": { - "x": 193.14825439453125, - "y": 142.85813903808594 - }, - "predictedTarget": { - "x": 292.5502014160156, - "y": 208.64007568359375 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 239.818115234375, - "y": 175.87026977539063 - }, - "direction": 0.6156448125839233, - "dropPoint": { - "x": 241.08255004882813, - "y": 176.76467895507813 - }, - "position": { - "x": 194.37286376953125, - "y": 143.724365234375 - }, - "predictedTarget": { - "x": 292.4502258300781, - "y": 208.60008239746094 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 241.04393005371094, - "y": 176.73477172851563 - }, - "direction": 0.6156080961227417, - "dropPoint": { - "x": 241.08973693847656, - "y": 176.76718139648438 - }, - "position": { - "x": 195.59750366210938, - "y": 144.59054565429688 - }, - "predictedTarget": { - "x": 292.3502197265625, - "y": 208.56007385253906 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 242.26983642578125, - "y": 177.59918212890625 - }, - "direction": 0.6155698299407959, - "dropPoint": { - "x": 241.09689331054688, - "y": 176.76962280273438 - }, - "position": { - "x": 196.82217407226563, - "y": 145.45668029785156 - }, - "predictedTarget": { - "x": 292.2502136230469, - "y": 208.52008056640625 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 243.49581909179688, - "y": 178.4634552001953 - }, - "direction": 0.6155300140380859, - "dropPoint": { - "x": 241.10400390625, - "y": 176.77200317382813 - }, - "position": { - "x": 198.046875, - "y": 146.32276916503906 - }, - "predictedTarget": { - "x": 292.15020751953125, - "y": 208.48008728027344 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 244.72178649902344, - "y": 179.32774353027344 - }, - "direction": 0.6154914498329163, - "dropPoint": { - "x": 241.11114501953125, - "y": 176.77456665039063 - }, - "position": { - "x": 199.2716064453125, - "y": 147.18881225585938 - }, - "predictedTarget": { - "x": 292.0502014160156, - "y": 208.44007873535156 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 245.9478759765625, - "y": 180.19186401367188 - }, - "direction": 0.6154505014419556, - "dropPoint": { - "x": 241.1182098388672, - "y": 176.77699279785156 - }, - "position": { - "x": 200.4963836669922, - "y": 148.05479431152344 - }, - "predictedTarget": { - "x": 291.9501953125, - "y": 208.40008544921875 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 247.1988525390625, - "y": 181.02076721191406 - }, - "direction": 0.6146560907363892, - "dropPoint": { - "x": 241.10104370117188, - "y": 176.71649169921875 - }, - "position": { - "x": 201.7218475341797, - "y": 148.91981506347656 - }, - "predictedTarget": { - "x": 291.8502197265625, - "y": 208.36007690429688 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 248.45040893554688, - "y": 181.8487548828125 - }, - "direction": 0.6138636469841003, - "dropPoint": { - "x": 241.08401489257813, - "y": 176.6577606201172 - }, - "position": { - "x": 202.94798278808594, - "y": 149.7838592529297 - }, - "predictedTarget": { - "x": 291.7502136230469, - "y": 208.32008361816406 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 249.70248413085938, - "y": 182.67601013183594 - }, - "direction": 0.6130762100219727, - "dropPoint": { - "x": 241.06716918945313, - "y": 176.6009979248047 - }, - "position": { - "x": 204.1748046875, - "y": 150.64694213867188 - }, - "predictedTarget": { - "x": 291.65020751953125, - "y": 208.2751007080078 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 250.95494079589844, - "y": 183.50259399414063 - }, - "direction": 0.6122961044311523, - "dropPoint": { - "x": 241.05032348632813, - "y": 176.54617309570313 - }, - "position": { - "x": 205.4022979736328, - "y": 151.50906372070313 - }, - "predictedTarget": { - "x": 291.5502014160156, - "y": 208.22509765625 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 252.2079315185547, - "y": 184.32839965820313 - }, - "direction": 0.6115196347236633, - "dropPoint": { - "x": 241.03390502929688, - "y": 176.49334716796875 - }, - "position": { - "x": 206.63046264648438, - "y": 152.3702392578125 - }, - "predictedTarget": { - "x": 291.4501953125, - "y": 208.1750946044922 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 253.46145629882813, - "y": 185.15338134765625 - }, - "direction": 0.6107469201087952, - "dropPoint": { - "x": 241.01763916015625, - "y": 176.4423370361328 - }, - "position": { - "x": 207.8592987060547, - "y": 153.23045349121094 - }, - "predictedTarget": { - "x": 291.3502197265625, - "y": 208.12510681152344 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 254.71543884277344, - "y": 185.97763061523438 - }, - "direction": 0.6099790930747986, - "dropPoint": { - "x": 241.00180053710938, - "y": 176.39334106445313 - }, - "position": { - "x": 209.0887908935547, - "y": 154.0897216796875 - }, - "predictedTarget": { - "x": 291.2502136230469, - "y": 208.07510375976563 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 255.96978759765625, - "y": 186.8013153076172 - }, - "direction": 0.609220027923584, - "dropPoint": { - "x": 240.9860382080078, - "y": 176.34629821777344 - }, - "position": { - "x": 210.31893920898438, - "y": 154.94805908203125 - }, - "predictedTarget": { - "x": 291.15020751953125, - "y": 208.0251007080078 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 257.22454833984375, - "y": 187.62435913085938 - }, - "direction": 0.6084669232368469, - "dropPoint": { - "x": 240.97019958496094, - "y": 176.30093383789063 - }, - "position": { - "x": 211.5497283935547, - "y": 155.80548095703125 - }, - "predictedTarget": { - "x": 291.0502014160156, - "y": 207.97509765625 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 258.4797668457031, - "y": 188.44667053222656 - }, - "direction": 0.6077189445495605, - "dropPoint": { - "x": 240.954833984375, - "y": 176.25758361816406 - }, - "position": { - "x": 212.78115844726563, - "y": 156.66197204589844 - }, - "predictedTarget": { - "x": 290.9501953125, - "y": 207.9250946044922 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 259.7305603027344, - "y": 189.27529907226563 - }, - "direction": 0.6071252822875977, - "dropPoint": { - "x": 241.03173828125, - "y": 176.28619384765625 - }, - "position": { - "x": 214.01309204101563, - "y": 157.51773071289063 - }, - "predictedTarget": { - "x": 290.8502197265625, - "y": 207.87510681152344 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 260.98162841796875, - "y": 190.10350036621094 - }, - "direction": 0.6065384745597839, - "dropPoint": { - "x": 241.10643005371094, - "y": 176.31451416015625 - }, - "position": { - "x": 215.2455291748047, - "y": 158.37277221679688 - }, - "predictedTarget": { - "x": 290.7502136230469, - "y": 207.82510375976563 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 262.233154296875, - "y": 190.9310302734375 - }, - "direction": 0.6059526205062866, - "dropPoint": { - "x": 241.1795654296875, - "y": 176.34275817871094 - }, - "position": { - "x": 216.4784698486328, - "y": 159.2270965576172 - }, - "predictedTarget": { - "x": 290.6551818847656, - "y": 207.7751007080078 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 263.4848937988281, - "y": 191.75819396972656 - }, - "direction": 0.6053746938705444, - "dropPoint": { - "x": 241.2502899169922, - "y": 176.37059020996094 - }, - "position": { - "x": 217.71189880371094, - "y": 160.08070373535156 - }, - "predictedTarget": { - "x": 290.565185546875, - "y": 207.72509765625 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 264.7369689941406, - "y": 192.58480834960938 - }, - "direction": 0.604800820350647, - "dropPoint": { - "x": 241.31930541992188, - "y": 176.39833068847656 - }, - "position": { - "x": 218.94581604003906, - "y": 160.93359375 - }, - "predictedTarget": { - "x": 290.4751892089844, - "y": 207.6750946044922 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 265.9892578125, - "y": 193.41111755371094 - }, - "direction": 0.6042355895042419, - "dropPoint": { - "x": 241.38619995117188, - "y": 176.4258270263672 - }, - "position": { - "x": 220.1802215576172, - "y": 161.78579711914063 - }, - "predictedTarget": { - "x": 290.3851623535156, - "y": 207.62509155273438 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 267.241943359375, - "y": 194.23683166503906 - }, - "direction": 0.6036728024482727, - "dropPoint": { - "x": 241.45126342773438, - "y": 176.4530792236328 - }, - "position": { - "x": 221.41510009765625, - "y": 162.63729858398438 - }, - "predictedTarget": { - "x": 290.295166015625, - "y": 207.57510375976563 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 268.49493408203125, - "y": 195.06207275390625 - }, - "direction": 0.603114664554596, - "dropPoint": { - "x": 241.5143585205078, - "y": 176.48004150390625 - }, - "position": { - "x": 222.6504669189453, - "y": 163.4881134033203 - }, - "predictedTarget": { - "x": 290.2051696777344, - "y": 207.5251007080078 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 269.7481689453125, - "y": 195.88690185546875 - }, - "direction": 0.6025630235671997, - "dropPoint": { - "x": 241.57554626464844, - "y": 176.5067901611328 - }, - "position": { - "x": 223.88629150390625, - "y": 164.33824157714844 - }, - "predictedTarget": { - "x": 290.11517333984375, - "y": 207.47509765625 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 271.0015869140625, - "y": 196.71142578125 - }, - "direction": 0.6020195484161377, - "dropPoint": { - "x": 241.6345977783203, - "y": 176.533203125 - }, - "position": { - "x": 225.12258911132813, - "y": 165.1876983642578 - }, - "predictedTarget": { - "x": 290.0251770019531, - "y": 207.4250946044922 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 272.26605224609375, - "y": 197.51986694335938 - }, - "direction": 0.6011489629745483, - "dropPoint": { - "x": 241.6147003173828, - "y": 176.49839782714844 - }, - "position": { - "x": 226.359619140625, - "y": 166.0360870361328 - }, - "predictedTarget": { - "x": 289.9351501464844, - "y": 207.37509155273438 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 273.5310363769531, - "y": 198.32748413085938 - }, - "direction": 0.6002844572067261, - "dropPoint": { - "x": 241.5950164794922, - "y": 176.46554565429688 - }, - "position": { - "x": 227.59738159179688, - "y": 166.88340759277344 - }, - "predictedTarget": { - "x": 289.84515380859375, - "y": 207.32510375976563 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 274.7965087890625, - "y": 199.13424682617188 - }, - "direction": 0.5994250178337097, - "dropPoint": { - "x": 241.5755615234375, - "y": 176.43460083007813 - }, - "position": { - "x": 228.83587646484375, - "y": 167.7296600341797 - }, - "predictedTarget": { - "x": 289.7551574707031, - "y": 207.2751007080078 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 276.0625, - "y": 199.94027709960938 - }, - "direction": 0.5985727906227112, - "dropPoint": { - "x": 241.55630493164063, - "y": 176.40554809570313 - }, - "position": { - "x": 230.07508850097656, - "y": 168.57485961914063 - }, - "predictedTarget": { - "x": 289.6651611328125, - "y": 207.22509765625 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 277.3289489746094, - "y": 200.74546813964844 - }, - "direction": 0.5977261066436768, - "dropPoint": { - "x": 241.53729248046875, - "y": 176.3783721923828 - }, - "position": { - "x": 231.3150177001953, - "y": 169.41900634765625 - }, - "predictedTarget": { - "x": 289.5751647949219, - "y": 207.1750946044922 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 278.59588623046875, - "y": 201.54991149902344 - }, - "direction": 0.5968859195709229, - "dropPoint": { - "x": 241.5185089111328, - "y": 176.35304260253906 - }, - "position": { - "x": 232.55564880371094, - "y": 170.26211547851563 - }, - "predictedTarget": { - "x": 289.48516845703125, - "y": 207.12509155273438 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 279.86334228515625, - "y": 202.35350036621094 - }, - "direction": 0.5960504412651062, - "dropPoint": { - "x": 241.49998474121094, - "y": 176.3295440673828 - }, - "position": { - "x": 233.79698181152344, - "y": 171.10418701171875 - }, - "predictedTarget": { - "x": 289.3951721191406, - "y": 207.07510375976563 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 281.13116455078125, - "y": 203.15650939941406 - }, - "direction": 0.5952247977256775, - "dropPoint": { - "x": 241.48170471191406, - "y": 176.30789184570313 - }, - "position": { - "x": 235.0390167236328, - "y": 171.9452362060547 - }, - "predictedTarget": { - "x": 289.3051452636719, - "y": 207.0251007080078 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 282.3994140625, - "y": 203.9588165283203 - }, - "direction": 0.59440678358078, - "dropPoint": { - "x": 241.46371459960938, - "y": 176.28805541992188 - }, - "position": { - "x": 236.28173828125, - "y": 172.78526306152344 - }, - "predictedTarget": { - "x": 289.21514892578125, - "y": 206.97509765625 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 283.6680908203125, - "y": 204.76040649414063 - }, - "direction": 0.5935952663421631, - "dropPoint": { - "x": 241.44601440429688, - "y": 176.26998901367188 - }, - "position": { - "x": 237.525146484375, - "y": 173.62428283691406 - }, - "predictedTarget": { - "x": 289.1251525878906, - "y": 206.9250946044922 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 284.94158935546875, - "y": 205.55474853515625 - }, - "direction": 0.5926529169082642, - "dropPoint": { - "x": 241.42474365234375, - "y": 176.2502899169922 - }, - "position": { - "x": 238.7693328857422, - "y": 174.46212768554688 - }, - "predictedTarget": { - "x": 289.03515625, - "y": 206.87509155273438 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 286.21563720703125, - "y": 206.34823608398438 - }, - "direction": 0.5917176604270935, - "dropPoint": { - "x": 241.40347290039063, - "y": 176.23239135742188 - }, - "position": { - "x": 240.01431274414063, - "y": 175.29881286621094 - }, - "predictedTarget": { - "x": 288.9451599121094, - "y": 206.82510375976563 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 287.4902038574219, - "y": 207.140869140625 - }, - "direction": 0.5907895565032959, - "dropPoint": { - "x": 241.3826446533203, - "y": 176.216552734375 - }, - "position": { - "x": 241.26007080078125, - "y": 176.13433837890625 - }, - "predictedTarget": { - "x": 288.8651123046875, - "y": 206.76513671875 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 0.0, - "y": 0.0 - }, - "direction": 0.0, - "dropPoint": { - "x": 0.0, - "y": 0.0 - }, - "position": { - "x": 0.0, - "y": 0.0 - }, - "predictedTarget": { - "x": 0.0, - "y": 0.0 - }, - "state": 0, - "targetIndex": 0 - } - ], - "totalSteps": 246 -} \ No newline at end of file From b1921b5ca912fcc980aea68421d3cb1c5299d845 Mon Sep 17 00:00:00 2001 From: blinker Date: Sat, 30 May 2026 09:19:01 +0000 Subject: [PATCH 02/12] [FEATURE] hw08 stl: remove const g as a function argument --- drone_simulation/include/mission_processor.hpp | 1 - drone_simulation/include/simulation.hpp | 6 ++---- drone_simulation/src/mission_processor.cpp | 5 ++--- drone_simulation/src/simulation.cpp | 8 ++++---- drone_simulation/src/solvers/analytical_solver.cpp | 5 ++--- 5 files changed, 10 insertions(+), 15 deletions(-) diff --git a/drone_simulation/include/mission_processor.hpp b/drone_simulation/include/mission_processor.hpp index e71cde5..e904284 100644 --- a/drone_simulation/include/mission_processor.hpp +++ b/drone_simulation/include/mission_processor.hpp @@ -6,7 +6,6 @@ class MissionProcessor { const int MAX_STEPS = 10000; - const float g = 9.81f; ITargetProvider* targets; IBallisticSolver* ballisticSolver; DroneConfig droneConfig; diff --git a/drone_simulation/include/simulation.hpp b/drone_simulation/include/simulation.hpp index e8ed799..faa73e1 100644 --- a/drone_simulation/include/simulation.hpp +++ b/drone_simulation/include/simulation.hpp @@ -179,8 +179,7 @@ void writeSimulationJSONFile(const std::vector& simSteps); float getAmmoHorizontalFlightDistance( const float& attackSpeed, const float& ammoFlightTime, - const AmmoParams& ammo, - const float& g + const AmmoParams& ammo ); json parseJSONfile(const std::string& path); @@ -195,8 +194,7 @@ std::vector> fillTargets(json& targetsJSON); float getAmmoFlightTime( const DroneConfig& droneConfig, - const AmmoParams& ammo, - const float& g + const AmmoParams& ammo ); float length(const Coord& coord); diff --git a/drone_simulation/src/mission_processor.cpp b/drone_simulation/src/mission_processor.cpp index baf2978..8b0110d 100644 --- a/drone_simulation/src/mission_processor.cpp +++ b/drone_simulation/src/mission_processor.cpp @@ -13,12 +13,11 @@ auto MissionProcessor::init(IConfigLoader* configLoader) -> void { droneConfig = configLoader->getConfig(); ammo = configLoader->getAmmoParams(); - ammoFlightTime = getAmmoFlightTime(droneConfig, ammo, g); + ammoFlightTime = getAmmoFlightTime(droneConfig, ammo); ammoHorizontalFlightDistance = getAmmoHorizontalFlightDistance( droneConfig.attackSpeed, ammoFlightTime, - ammo, - g + ammo ); acceleration = droneConfig.attackSpeed * droneConfig.attackSpeed / (2.0f * droneConfig.accelPath); droneMotion = { diff --git a/drone_simulation/src/simulation.cpp b/drone_simulation/src/simulation.cpp index dd4915e..2de011b 100644 --- a/drone_simulation/src/simulation.cpp +++ b/drone_simulation/src/simulation.cpp @@ -314,9 +314,9 @@ void writeSimulationJSONFile( float getAmmoHorizontalFlightDistance( const float& attackSpeed, const float& ammoFlightTime, - const AmmoParams& ammo, - const float& g + const AmmoParams& ammo ) { + const float g = 9.81f; float ammoHorizontalFlightDistance = attackSpeed * ammoFlightTime - pow(ammoFlightTime, 2) * ammo.drag * attackSpeed / (2 * ammo.mass) + pow(ammoFlightTime, 3) * (6 * ammo.drag * g * ammo.lift * ammo.mass - 6 * pow(ammo.drag, 2) * (pow(ammo.lift, 2) - 1) * attackSpeed) / (36 * pow(ammo.mass, 2)) @@ -428,9 +428,9 @@ std::vector> fillTargets(json& targetsJSON) { float getAmmoFlightTime( const DroneConfig& droneConfig, - const AmmoParams& ammo, - const float& g + const AmmoParams& ammo ) { + const float g = 9.81f; float a = ammo.drag * g * ammo.mass - 2 * pow(ammo.drag, 2) * ammo.lift * droneConfig.attackSpeed; float b = -3 * g * pow(ammo.mass, 2) + 3 * ammo.drag * ammo.lift * ammo.mass * droneConfig.attackSpeed; float c = 6 * pow(ammo.mass, 2) * droneConfig.altitude; diff --git a/drone_simulation/src/solvers/analytical_solver.cpp b/drone_simulation/src/solvers/analytical_solver.cpp index 0c3cf42..ac6c0e0 100644 --- a/drone_simulation/src/solvers/analytical_solver.cpp +++ b/drone_simulation/src/solvers/analytical_solver.cpp @@ -9,9 +9,8 @@ auto AnalyticalSolver::solve( const Coord& targetPosition, const AmmoParams& ammo ) -> Coord { - const float g = 9.81f; - float flightTime = getAmmoFlightTime(droneConfig, ammo, g); - float ammoHorizontalFlightDistance = getAmmoHorizontalFlightDistance(droneConfig.attackSpeed, flightTime, ammo, g); + float flightTime = getAmmoFlightTime(droneConfig, ammo); + float ammoHorizontalFlightDistance = getAmmoHorizontalFlightDistance(droneConfig.attackSpeed, flightTime, ammo); float distanceToTarget = getDistanceToTarget(targetPosition, dronePosition); float ratio = getRatio(distanceToTarget, ammoHorizontalFlightDistance); From 9f90fda3b7b63d72a0d6e11efc699de591ce70c2 Mon Sep 17 00:00:00 2001 From: blinker Date: Sat, 30 May 2026 09:49:47 +0000 Subject: [PATCH 03/12] [FEATURE] hw08 stl: use unordered_map in findAmmo instead of vector --- drone_simulation/include/simulation.hpp | 5 +- .../src/config_loaders/file_config_loader.cpp | 8 +- drone_simulation/src/simulation.cpp | 34 +- simulation.json | 5150 +++++++++++++++++ 4 files changed, 5169 insertions(+), 28 deletions(-) create mode 100644 simulation.json diff --git a/drone_simulation/include/simulation.hpp b/drone_simulation/include/simulation.hpp index faa73e1..54cf3f3 100644 --- a/drone_simulation/include/simulation.hpp +++ b/drone_simulation/include/simulation.hpp @@ -2,6 +2,7 @@ #include #include #include +#include #include "json.hpp" using json = nlohmann::json; @@ -186,9 +187,9 @@ json parseJSONfile(const std::string& path); DroneConfig readDroneConfig(const std::string& path); -std::vector readAmmo(json& ammoJSON); +std::unordered_map getAmmoMap(json& ammoJSON); -AmmoParams findAmmo(const std::vector& ammoArr, const std::string ammoName); +AmmoParams findAmmo(const std::unordered_map& ammoMap, const std::string ammoName); std::vector> fillTargets(json& targetsJSON); diff --git a/drone_simulation/src/config_loaders/file_config_loader.cpp b/drone_simulation/src/config_loaders/file_config_loader.cpp index 1ff0fae..bf24284 100644 --- a/drone_simulation/src/config_loaders/file_config_loader.cpp +++ b/drone_simulation/src/config_loaders/file_config_loader.cpp @@ -1,5 +1,5 @@ - #include - #include "config_loaders/file_config_loader.hpp" +#include "simulation.hpp" +#include "config_loaders/file_config_loader.hpp" FileConfigLoader::FileConfigLoader( @@ -14,8 +14,8 @@ auto FileConfigLoader::load() -> void { } droneConfig = readDroneConfig(droneConfigPath); json ammoJSON = parseJSONfile(ammoConfigPath); - std::vector ammoArr = readAmmo(ammoJSON); - ammoParams = findAmmo(ammoArr, droneConfig.ammoName); + std::unordered_map ammoMap = getAmmoMap(ammoJSON); + ammoParams = findAmmo(ammoMap, droneConfig.ammoName); loaded = true; }; diff --git a/drone_simulation/src/simulation.cpp b/drone_simulation/src/simulation.cpp index 2de011b..e4c5b71 100644 --- a/drone_simulation/src/simulation.cpp +++ b/drone_simulation/src/simulation.cpp @@ -370,40 +370,30 @@ DroneConfig readDroneConfig(const std::string& path) { return droneConfig; } -std::vector readAmmo(json& ammoJSON) { +std::unordered_map getAmmoMap(json& ammoJSON) { int ammoCount = ammoJSON.size(); - std::vector ammoArr; + std::unordered_map ammoMap; for (int i = 0; i < ammoCount; i++) { - AmmoParams ammo = { - .name = ammoJSON[i]["name"].get(), + const std::string ammoName = ammoJSON[i]["name"].get(); + AmmoParams ammo = { + .name = ammoName, .mass = ammoJSON[i]["mass"], .drag = ammoJSON[i]["drag"], .lift = ammoJSON[i]["lift"] }; - ammoArr.push_back(ammo); + ammoMap[ammoName] = ammo; } - return ammoArr; + return ammoMap; } -AmmoParams findAmmo(const std::vector& ammoArr, const std::string ammoName) { - bool ammoFound = false; - AmmoParams ammo; - - for (const AmmoParams& item : ammoArr) { - if (ammoName == item.name) { - ammo = item; - ammoFound = true; - break; - } +AmmoParams findAmmo(const std::unordered_map& ammoMap, const std::string ammoName) { + auto it = ammoMap.find(ammoName); + if (it == ammoMap.end()) { + throw std::runtime_error("Unknown ammo\n"); } - - if (!ammoFound) { - throw std::runtime_error("Unknown ammo\n "); - } - - return ammo; + return it->second; } std::vector> fillTargets(json& targetsJSON) { diff --git a/simulation.json b/simulation.json new file mode 100644 index 0000000..41ba630 --- /dev/null +++ b/simulation.json @@ -0,0 +1,5150 @@ +{ + "steps": [ + { + "aimPoint": { + "x": 0.0, + "y": 0.0 + }, + "direction": 0.0, + "dropPoint": { + "x": 0.0, + "y": 0.0 + }, + "position": { + "x": 0.0, + "y": 0.0 + }, + "predictedTarget": { + "x": 0.0, + "y": 0.0 + }, + "state": 0, + "targetIndex": -1 + }, + { + "aimPoint": { + "x": 55.59577178955078, + "y": 2.782107353210449 + }, + "direction": 0.05000000074505806, + "dropPoint": { + "x": 269.4673156738281, + "y": 189.50930786132813 + }, + "position": { + "x": 0.0, + "y": 0.0 + }, + "predictedTarget": { + "x": 313.42510986328125, + "y": 204.42483520507813 + }, + "state": 3, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 55.38724136352539, + "y": 5.557260990142822 + }, + "direction": 0.10000000149011612, + "dropPoint": { + "x": 268.9606628417969, + "y": 189.54702758789063 + }, + "position": { + "x": 0.0, + "y": 0.0 + }, + "predictedTarget": { + "x": 313.3751220703125, + "y": 204.49484252929688 + }, + "state": 3, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 55.04027557373047, + "y": 8.318524360656738 + }, + "direction": 0.15000000596046448, + "dropPoint": { + "x": 268.4532165527344, + "y": 189.5845947265625 + }, + "position": { + "x": 0.0, + "y": 0.0 + }, + "predictedTarget": { + "x": 313.3251037597656, + "y": 204.56483459472656 + }, + "state": 3, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 54.55573654174805, + "y": 11.058995246887207 + }, + "direction": 0.20000000298023224, + "dropPoint": { + "x": 267.9465637207031, + "y": 189.62217712402344 + }, + "position": { + "x": 0.0, + "y": 0.0 + }, + "predictedTarget": { + "x": 313.2701416015625, + "y": 204.6348419189453 + }, + "state": 3, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 53.934837341308594, + "y": 13.771824836730957 + }, + "direction": 0.25, + "dropPoint": { + "x": 267.43914794921875, + "y": 189.6596221923828 + }, + "position": { + "x": 0.0, + "y": 0.0 + }, + "predictedTarget": { + "x": 313.21014404296875, + "y": 204.704833984375 + }, + "state": 3, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 53.17912673950195, + "y": 16.450231552124023 + }, + "direction": 0.30000001192092896, + "dropPoint": { + "x": 266.9325256347656, + "y": 189.69741821289063 + }, + "position": { + "x": 0.0, + "y": 0.0 + }, + "predictedTarget": { + "x": 313.150146484375, + "y": 204.77484130859375 + }, + "state": 3, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 52.290496826171875, + "y": 19.087522506713867 + }, + "direction": 0.3500000238418579, + "dropPoint": { + "x": 266.42584228515625, + "y": 189.73440551757813 + }, + "position": { + "x": 0.0, + "y": 0.0 + }, + "predictedTarget": { + "x": 313.09014892578125, + "y": 204.84483337402344 + }, + "state": 3, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 51.27116775512695, + "y": 21.677104949951172 + }, + "direction": 0.40000003576278687, + "dropPoint": { + "x": 265.91839599609375, + "y": 189.7716522216797 + }, + "position": { + "x": 0.0, + "y": 0.0 + }, + "predictedTarget": { + "x": 313.0301513671875, + "y": 204.9148406982422 + }, + "state": 3, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 50.123687744140625, + "y": 24.212505340576172 + }, + "direction": 0.4500000476837158, + "dropPoint": { + "x": 265.4117431640625, + "y": 189.8088836669922 + }, + "position": { + "x": 0.0, + "y": 0.0 + }, + "predictedTarget": { + "x": 312.97015380859375, + "y": 204.98483276367188 + }, + "state": 3, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 48.850929260253906, + "y": 26.68738555908203 + }, + "direction": 0.5000000596046448, + "dropPoint": { + "x": 264.904296875, + "y": 189.84600830078125 + }, + "position": { + "x": 0.0, + "y": 0.0 + }, + "predictedTarget": { + "x": 312.91015625, + "y": 205.05484008789063 + }, + "state": 3, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 47.45606231689453, + "y": 29.095565795898438 + }, + "direction": 0.5500000715255737, + "dropPoint": { + "x": 264.39764404296875, + "y": 189.88308715820313 + }, + "position": { + "x": 0.0, + "y": 0.0 + }, + "predictedTarget": { + "x": 312.85015869140625, + "y": 205.1248321533203 + }, + "state": 3, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 45.94258117675781, + "y": 31.43101692199707 + }, + "direction": 0.6000000834465027, + "dropPoint": { + "x": 264.38397216796875, + "y": 189.9552459716797 + }, + "position": { + "x": 0.0, + "y": 0.0 + }, + "predictedTarget": { + "x": 312.7901611328125, + "y": 205.19483947753906 + }, + "state": 3, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 45.21846389770508, + "y": 32.50270080566406 + }, + "direction": 0.6232274174690247, + "dropPoint": { + "x": 264.3702392578125, + "y": 190.0273895263672 + }, + "position": { + "x": 0.01826997846364975, + "y": 0.013132325373589993 + }, + "predictedTarget": { + "x": 312.73016357421875, + "y": 205.26483154296875 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 45.24848175048828, + "y": 32.53804016113281 + }, + "direction": 0.6234280467033386, + "dropPoint": { + "x": 264.35675048828125, + "y": 190.09812927246094 + }, + "position": { + "x": 0.054804664105176926, + "y": 0.039404306560754776 + }, + "predictedTarget": { + "x": 312.6651916503906, + "y": 205.3348388671875 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 45.29686737060547, + "y": 32.58637237548828 + }, + "direction": 0.6236252784729004, + "dropPoint": { + "x": 264.3442077636719, + "y": 190.16819763183594 + }, + "position": { + "x": 0.10959891974925995, + "y": 0.07882308214902878 + }, + "predictedTarget": { + "x": 312.5951843261719, + "y": 205.4048309326172 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 45.36351776123047, + "y": 32.6478385925293 + }, + "direction": 0.6238220930099487, + "dropPoint": { + "x": 264.330322265625, + "y": 190.2371368408203 + }, + "position": { + "x": 0.18264758586883545, + "y": 0.1313958317041397 + }, + "predictedTarget": { + "x": 312.5251770019531, + "y": 205.47483825683594 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 45.448524475097656, + "y": 32.7223014831543 + }, + "direction": 0.6240153908729553, + "dropPoint": { + "x": 264.3174743652344, + "y": 190.30538940429688 + }, + "position": { + "x": 0.27394571900367737, + "y": 0.19712941348552704 + }, + "predictedTarget": { + "x": 312.4551696777344, + "y": 205.54483032226563 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 45.55194854736328, + "y": 32.80970764160156 + }, + "direction": 0.624203622341156, + "dropPoint": { + "x": 264.3055419921875, + "y": 190.37228393554688 + }, + "position": { + "x": 0.38348862528800964, + "y": 0.2760303318500519 + }, + "predictedTarget": { + "x": 312.3851623535156, + "y": 205.61483764648438 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 45.67368698120117, + "y": 32.91017150878906 + }, + "direction": 0.6243893504142761, + "dropPoint": { + "x": 264.29302978515625, + "y": 190.43771362304688 + }, + "position": { + "x": 0.511271595954895, + "y": 0.3681051433086395 + }, + "predictedTarget": { + "x": 312.315185546875, + "y": 205.68482971191406 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 45.8137321472168, + "y": 33.023712158203125 + }, + "direction": 0.6245728731155396, + "dropPoint": { + "x": 264.28076171875, + "y": 190.50244140625 + }, + "position": { + "x": 0.6572899222373962, + "y": 0.4733603000640869 + }, + "predictedTarget": { + "x": 312.24517822265625, + "y": 205.7548370361328 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 45.972103118896484, + "y": 33.150306701660156 + }, + "direction": 0.624753475189209, + "dropPoint": { + "x": 264.2686767578125, + "y": 190.5660858154297 + }, + "position": { + "x": 0.8215391635894775, + "y": 0.5918020009994507 + }, + "predictedTarget": { + "x": 312.1751708984375, + "y": 205.8248291015625 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 46.14044189453125, + "y": 33.30154037475586 + }, + "direction": 0.625186562538147, + "dropPoint": { + "x": 263.7267150878906, + "y": 190.34837341308594 + }, + "position": { + "x": 1.003981351852417, + "y": 0.7234829068183899 + }, + "predictedTarget": { + "x": 312.10516357421875, + "y": 205.89483642578125 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 46.32712173461914, + "y": 33.46578598022461 + }, + "direction": 0.6256144046783447, + "dropPoint": { + "x": 263.1870422363281, + "y": 190.12953186035156 + }, + "position": { + "x": 1.2046056985855103, + "y": 0.8684177994728088 + }, + "predictedTarget": { + "x": 312.03515625, + "y": 205.96482849121094 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 46.531883239746094, + "y": 33.64340591430664 + }, + "direction": 0.6260448098182678, + "dropPoint": { + "x": 262.6467590332031, + "y": 189.9105224609375 + }, + "position": { + "x": 1.4234005212783813, + "y": 1.0266227722167969 + }, + "predictedTarget": { + "x": 311.9651794433594, + "y": 206.0298614501953 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 46.75490951538086, + "y": 33.834144592285156 + }, + "direction": 0.6264716386795044, + "dropPoint": { + "x": 262.1073913574219, + "y": 189.6900177001953 + }, + "position": { + "x": 1.6603550910949707, + "y": 1.1981126070022583 + }, + "predictedTarget": { + "x": 311.8951721191406, + "y": 206.08985900878906 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 46.996150970458984, + "y": 34.0380859375 + }, + "direction": 0.626896321773529, + "dropPoint": { + "x": 261.5698547363281, + "y": 189.46922302246094 + }, + "position": { + "x": 1.9154584407806396, + "y": 1.3829022645950317 + }, + "predictedTarget": { + "x": 311.8251647949219, + "y": 206.1498565673828 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 47.255577087402344, + "y": 34.2552490234375 + }, + "direction": 0.6273191571235657, + "dropPoint": { + "x": 261.033447265625, + "y": 189.24778747558594 + }, + "position": { + "x": 2.188699722290039, + "y": 1.5810067653656006 + }, + "predictedTarget": { + "x": 311.7551574707031, + "y": 206.20985412597656 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 47.53317642211914, + "y": 34.48567199707031 + }, + "direction": 0.6277405023574829, + "dropPoint": { + "x": 260.4974670410156, + "y": 189.02529907226563 + }, + "position": { + "x": 2.4800679683685303, + "y": 1.7924410104751587 + }, + "predictedTarget": { + "x": 311.6851501464844, + "y": 206.2698516845703 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 47.828887939453125, + "y": 34.72941970825195 + }, + "direction": 0.6281616687774658, + "dropPoint": { + "x": 259.962890625, + "y": 188.80294799804688 + }, + "position": { + "x": 2.7895522117614746, + "y": 2.0172202587127686 + }, + "predictedTarget": { + "x": 311.61517333984375, + "y": 206.32986450195313 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 48.14290237426758, + "y": 34.986244201660156 + }, + "direction": 0.6285765767097473, + "dropPoint": { + "x": 259.43115234375, + "y": 188.5794677734375 + }, + "position": { + "x": 3.117142677307129, + "y": 2.2553577423095703 + }, + "predictedTarget": { + "x": 311.545166015625, + "y": 206.38986206054688 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 48.474952697753906, + "y": 35.25650405883789 + }, + "direction": 0.628993034362793, + "dropPoint": { + "x": 258.8993835449219, + "y": 188.35577392578125 + }, + "position": { + "x": 3.4628279209136963, + "y": 2.506869077682495 + }, + "predictedTarget": { + "x": 311.47515869140625, + "y": 206.44985961914063 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 48.814544677734375, + "y": 35.554603576660156 + }, + "direction": 0.6297282576560974, + "dropPoint": { + "x": 258.894775390625, + "y": 188.6397705078125 + }, + "position": { + "x": 3.826512336730957, + "y": 2.771885395050049 + }, + "predictedTarget": { + "x": 311.4051513671875, + "y": 206.50985717773438 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 49.17216491699219, + "y": 35.866119384765625 + }, + "direction": 0.6304612755775452, + "dropPoint": { + "x": 258.889892578125, + "y": 188.92262268066406 + }, + "position": { + "x": 4.208176612854004, + "y": 3.0504322052001953 + }, + "predictedTarget": { + "x": 311.33514404296875, + "y": 206.56985473632813 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 49.548011779785156, + "y": 36.1907844543457 + }, + "direction": 0.6311857104301453, + "dropPoint": { + "x": 258.8869323730469, + "y": 189.20338439941406 + }, + "position": { + "x": 4.607804298400879, + "y": 3.3425328731536865 + }, + "predictedTarget": { + "x": 311.26019287109375, + "y": 206.62985229492188 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 49.94181442260742, + "y": 36.528953552246094 + }, + "direction": 0.6319088935852051, + "dropPoint": { + "x": 258.8837585449219, + "y": 189.4833221435547 + }, + "position": { + "x": 5.025375843048096, + "y": 3.6482129096984863 + }, + "predictedTarget": { + "x": 311.18017578125, + "y": 206.6898651123047 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 50.353660583496094, + "y": 36.880523681640625 + }, + "direction": 0.6326279044151306, + "dropPoint": { + "x": 258.8802795410156, + "y": 189.76126098632813 + }, + "position": { + "x": 5.460873126983643, + "y": 3.967496633529663 + }, + "predictedTarget": { + "x": 311.1001892089844, + "y": 206.74986267089844 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 50.78357696533203, + "y": 37.245452880859375 + }, + "direction": 0.6333412528038025, + "dropPoint": { + "x": 258.8780212402344, + "y": 190.03768920898438 + }, + "position": { + "x": 5.914278507232666, + "y": 4.300407409667969 + }, + "predictedTarget": { + "x": 311.0201721191406, + "y": 206.8098602294922 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 51.231483459472656, + "y": 37.62384033203125 + }, + "direction": 0.6340507864952087, + "dropPoint": { + "x": 258.8762512207031, + "y": 190.31280517578125 + }, + "position": { + "x": 6.3855743408203125, + "y": 4.646968841552734 + }, + "predictedTarget": { + "x": 310.940185546875, + "y": 206.86985778808594 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 51.69749450683594, + "y": 38.01554489135742 + }, + "direction": 0.6347527503967285, + "dropPoint": { + "x": 258.87567138671875, + "y": 190.58558654785156 + }, + "position": { + "x": 6.874744415283203, + "y": 5.007203102111816 + }, + "predictedTarget": { + "x": 310.8601989746094, + "y": 206.9298553466797 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 52.18135452270508, + "y": 38.42091369628906 + }, + "direction": 0.6354542374610901, + "dropPoint": { + "x": 258.8741149902344, + "y": 190.8572235107422 + }, + "position": { + "x": 7.38176965713501, + "y": 5.381134986877441 + }, + "predictedTarget": { + "x": 310.7801818847656, + "y": 206.98985290527344 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 52.68325424194336, + "y": 38.839683532714844 + }, + "direction": 0.636148989200592, + "dropPoint": { + "x": 258.87371826171875, + "y": 191.12681579589844 + }, + "position": { + "x": 7.9066338539123535, + "y": 5.768786430358887 + }, + "predictedTarget": { + "x": 310.7001953125, + "y": 207.0498504638672 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 53.2266845703125, + "y": 39.24006652832031 + }, + "direction": 0.6361350417137146, + "dropPoint": { + "x": 258.58758544921875, + "y": 190.9100799560547 + }, + "position": { + "x": 8.449602127075195, + "y": 6.169797897338867 + }, + "predictedTarget": { + "x": 310.62017822265625, + "y": 207.10984802246094 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 53.78831100463867, + "y": 39.653690338134766 + }, + "direction": 0.6361182928085327, + "dropPoint": { + "x": 258.30206298828125, + "y": 190.69276428222656 + }, + "position": { + "x": 9.010676383972168, + "y": 6.584167003631592 + }, + "predictedTarget": { + "x": 310.5401916503906, + "y": 207.1698455810547 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 54.36809158325195, + "y": 40.080596923828125 + }, + "direction": 0.6361001133918762, + "dropPoint": { + "x": 258.01806640625, + "y": 190.47601318359375 + }, + "position": { + "x": 9.589858055114746, + "y": 7.011892318725586 + }, + "predictedTarget": { + "x": 310.4552307128906, + "y": 207.22486877441406 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 54.96614074707031, + "y": 40.52064895629883 + }, + "direction": 0.6360771656036377, + "dropPoint": { + "x": 257.7354431152344, + "y": 190.25848388671875 + }, + "position": { + "x": 10.187149047851563, + "y": 7.452970027923584 + }, + "predictedTarget": { + "x": 310.365234375, + "y": 207.27487182617188 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 55.582427978515625, + "y": 40.97388458251953 + }, + "direction": 0.6360505223274231, + "dropPoint": { + "x": 257.45513916015625, + "y": 190.04132080078125 + }, + "position": { + "x": 10.80255126953125, + "y": 7.907397270202637 + }, + "predictedTarget": { + "x": 310.27520751953125, + "y": 207.3248748779297 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 56.2169189453125, + "y": 41.440330505371094 + }, + "direction": 0.6360208988189697, + "dropPoint": { + "x": 257.1763610839844, + "y": 189.82418823242188 + }, + "position": { + "x": 11.436067581176758, + "y": 8.375171661376953 + }, + "predictedTarget": { + "x": 310.1852111816406, + "y": 207.3748779296875 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 56.86959457397461, + "y": 41.92003631591797 + }, + "direction": 0.6359893679618835, + "dropPoint": { + "x": 256.8984375, + "y": 189.6070098876953 + }, + "position": { + "x": 12.087699890136719, + "y": 8.856289863586426 + }, + "predictedTarget": { + "x": 310.09521484375, + "y": 207.4248809814453 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 57.54049301147461, + "y": 42.41294479370117 + }, + "direction": 0.6359546780586243, + "dropPoint": { + "x": 256.6221923828125, + "y": 189.38995361328125 + }, + "position": { + "x": 12.757450103759766, + "y": 9.350749969482422 + }, + "predictedTarget": { + "x": 310.0052185058594, + "y": 207.47486877441406 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 58.22964096069336, + "y": 42.919010162353516 + }, + "direction": 0.6359160542488098, + "dropPoint": { + "x": 256.3475646972656, + "y": 189.1726837158203 + }, + "position": { + "x": 13.445321083068848, + "y": 9.85854721069336 + }, + "predictedTarget": { + "x": 309.91522216796875, + "y": 207.52487182617188 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 58.937034606933594, + "y": 43.43825149536133 + }, + "direction": 0.6358739137649536, + "dropPoint": { + "x": 256.0754699707031, + "y": 188.9560089111328 + }, + "position": { + "x": 14.15131664276123, + "y": 10.379677772521973 + }, + "predictedTarget": { + "x": 309.8252258300781, + "y": 207.5748748779297 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 59.64329147338867, + "y": 43.99689483642578 + }, + "direction": 0.6364045739173889, + "dropPoint": { + "x": 255.81396484375, + "y": 188.961181640625 + }, + "position": { + "x": 14.875130653381348, + "y": 10.914554595947266 + }, + "predictedTarget": { + "x": 309.7352294921875, + "y": 207.6248779296875 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 60.36751174926758, + "y": 44.56907653808594 + }, + "direction": 0.636930525302887, + "dropPoint": { + "x": 255.5549774169922, + "y": 188.96554565429688 + }, + "position": { + "x": 15.616751670837402, + "y": 11.463193893432617 + }, + "predictedTarget": { + "x": 309.6452331542969, + "y": 207.6748809814453 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 61.109619140625, + "y": 45.15487289428711 + }, + "direction": 0.6374530792236328, + "dropPoint": { + "x": 255.2970733642578, + "y": 188.96864318847656 + }, + "position": { + "x": 16.37616729736328, + "y": 12.02561092376709 + }, + "predictedTarget": { + "x": 309.5502624511719, + "y": 207.72486877441406 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 61.86961364746094, + "y": 45.754295349121094 + }, + "direction": 0.6379721164703369, + "dropPoint": { + "x": 255.04196166992188, + "y": 188.9716033935547 + }, + "position": { + "x": 17.153364181518555, + "y": 12.601822853088379 + }, + "predictedTarget": { + "x": 309.45025634765625, + "y": 207.77487182617188 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 62.64751434326172, + "y": 46.367332458496094 + }, + "direction": 0.6384868621826172, + "dropPoint": { + "x": 254.78802490234375, + "y": 188.97296142578125 + }, + "position": { + "x": 17.948331832885742, + "y": 13.19184398651123 + }, + "predictedTarget": { + "x": 309.3502502441406, + "y": 207.8248748779297 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 63.44322967529297, + "y": 46.99408721923828 + }, + "direction": 0.6389994621276855, + "dropPoint": { + "x": 254.5360870361328, + "y": 188.97413635253906 + }, + "position": { + "x": 18.761058807373047, + "y": 13.79569149017334 + }, + "predictedTarget": { + "x": 309.250244140625, + "y": 207.8748779296875 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 64.25691223144531, + "y": 47.63435363769531 + }, + "direction": 0.6395049691200256, + "dropPoint": { + "x": 254.28692626953125, + "y": 188.97384643554688 + }, + "position": { + "x": 19.591533660888672, + "y": 14.41337776184082 + }, + "predictedTarget": { + "x": 309.1502380371094, + "y": 207.9248809814453 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 65.08839416503906, + "y": 48.28838348388672 + }, + "direction": 0.6400084495544434, + "dropPoint": { + "x": 254.0391387939453, + "y": 188.9729766845703 + }, + "position": { + "x": 20.43974494934082, + "y": 15.04491901397705 + }, + "predictedTarget": { + "x": 309.0502624511719, + "y": 207.97486877441406 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 65.9377670288086, + "y": 48.956024169921875 + }, + "direction": 0.6405065059661865, + "dropPoint": { + "x": 253.794189453125, + "y": 188.9713134765625 + }, + "position": { + "x": 21.305681228637695, + "y": 15.690328598022461 + }, + "predictedTarget": { + "x": 308.95025634765625, + "y": 208.02487182617188 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 66.80494689941406, + "y": 49.637413024902344 + }, + "direction": 0.6410015821456909, + "dropPoint": { + "x": 253.55072021484375, + "y": 188.96876525878906 + }, + "position": { + "x": 22.189332962036133, + "y": 16.34962272644043 + }, + "predictedTarget": { + "x": 308.8502502441406, + "y": 208.0748748779297 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 67.68942260742188, + "y": 50.33320617675781 + }, + "direction": 0.6415080428123474, + "dropPoint": { + "x": 253.30035400390625, + "y": 188.96424865722656 + }, + "position": { + "x": 23.09067726135254, + "y": 17.0228271484375 + }, + "predictedTarget": { + "x": 308.750244140625, + "y": 208.1248779296875 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 68.59172058105469, + "y": 51.042728424072266 + }, + "direction": 0.6420102119445801, + "dropPoint": { + "x": 253.05227661132813, + "y": 188.9589080810547 + }, + "position": { + "x": 24.009702682495117, + "y": 17.709957122802734 + }, + "predictedTarget": { + "x": 308.6502380371094, + "y": 208.1748809814453 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 69.5118637084961, + "y": 51.76591873168945 + }, + "direction": 0.64250648021698, + "dropPoint": { + "x": 252.8071746826172, + "y": 188.9527587890625 + }, + "position": { + "x": 24.946401596069336, + "y": 18.411026000976563 + }, + "predictedTarget": { + "x": 308.5502624511719, + "y": 208.2198944091797 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 70.44977569580078, + "y": 52.50291442871094 + }, + "direction": 0.6429995894432068, + "dropPoint": { + "x": 252.56375122070313, + "y": 188.9457550048828 + }, + "position": { + "x": 25.900760650634766, + "y": 19.126047134399414 + }, + "predictedTarget": { + "x": 308.45025634765625, + "y": 208.25990295410156 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 71.40547180175781, + "y": 53.25365447998047 + }, + "direction": 0.6434880495071411, + "dropPoint": { + "x": 252.32272338867188, + "y": 188.93789672851563 + }, + "position": { + "x": 26.872770309448242, + "y": 19.85503387451172 + }, + "predictedTarget": { + "x": 308.3502502441406, + "y": 208.29989624023438 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 72.37896728515625, + "y": 54.018150329589844 + }, + "direction": 0.6439716815948486, + "dropPoint": { + "x": 252.08416748046875, + "y": 188.92922973632813 + }, + "position": { + "x": 27.8624210357666, + "y": 20.597999572753906 + }, + "predictedTarget": { + "x": 308.250244140625, + "y": 208.33990478515625 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 73.3702392578125, + "y": 54.79642868041992 + }, + "direction": 0.6444506049156189, + "dropPoint": { + "x": 251.84805297851563, + "y": 188.91973876953125 + }, + "position": { + "x": 28.86970329284668, + "y": 21.354957580566406 + }, + "predictedTarget": { + "x": 308.1502380371094, + "y": 208.37989807128906 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 74.37934112548828, + "y": 55.58840560913086 + }, + "direction": 0.6449230313301086, + "dropPoint": { + "x": 251.61520385742188, + "y": 188.90948486328125 + }, + "position": { + "x": 29.894609451293945, + "y": 22.12591552734375 + }, + "predictedTarget": { + "x": 308.0502624511719, + "y": 208.41990661621094 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 75.40616607666016, + "y": 56.394229888916016 + }, + "direction": 0.6453918814659119, + "dropPoint": { + "x": 251.3841552734375, + "y": 188.89834594726563 + }, + "position": { + "x": 30.9371280670166, + "y": 22.910888671875 + }, + "predictedTarget": { + "x": 307.95025634765625, + "y": 208.45989990234375 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 76.45075988769531, + "y": 57.213844299316406 + }, + "direction": 0.6458555459976196, + "dropPoint": { + "x": 251.15573120117188, + "y": 188.88641357421875 + }, + "position": { + "x": 31.997249603271484, + "y": 23.70988655090332 + }, + "predictedTarget": { + "x": 307.8502502441406, + "y": 208.49990844726563 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 77.54798889160156, + "y": 58.00098419189453 + }, + "direction": 0.6452978253364563, + "dropPoint": { + "x": 251.12982177734375, + "y": 188.67532348632813 + }, + "position": { + "x": 33.0757942199707, + "y": 24.521825790405273 + }, + "predictedTarget": { + "x": 307.750244140625, + "y": 208.53990173339844 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 78.66375732421875, + "y": 58.800865173339844 + }, + "direction": 0.6447363495826721, + "dropPoint": { + "x": 251.1048583984375, + "y": 188.46482849121094 + }, + "position": { + "x": 34.17277526855469, + "y": 25.346681594848633 + }, + "predictedTarget": { + "x": 307.6502380371094, + "y": 208.5799102783203 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 79.79802703857422, + "y": 59.613548278808594 + }, + "direction": 0.6441730856895447, + "dropPoint": { + "x": 251.0808563232422, + "y": 188.25559997558594 + }, + "position": { + "x": 35.288211822509766, + "y": 26.184431076049805 + }, + "predictedTarget": { + "x": 307.5452880859375, + "y": 208.61990356445313 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 80.95085144042969, + "y": 60.43897247314453 + }, + "direction": 0.6436070203781128, + "dropPoint": { + "x": 251.057861328125, + "y": 188.04737854003906 + }, + "position": { + "x": 36.422122955322266, + "y": 27.035051345825195 + }, + "predictedTarget": { + "x": 307.4352722167969, + "y": 208.659912109375 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 82.12224578857422, + "y": 61.27710723876953 + }, + "direction": 0.643038272857666, + "dropPoint": { + "x": 251.03582763671875, + "y": 187.84019470214844 + }, + "position": { + "x": 37.57452392578125, + "y": 27.89851951599121 + }, + "predictedTarget": { + "x": 307.3252868652344, + "y": 208.6999053955078 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 83.31224822998047, + "y": 62.127899169921875 + }, + "direction": 0.6424660682678223, + "dropPoint": { + "x": 251.01473999023438, + "y": 187.63375854492188 + }, + "position": { + "x": 38.74543380737305, + "y": 28.774808883666992 + }, + "predictedTarget": { + "x": 307.21527099609375, + "y": 208.73989868164063 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 84.52082824707031, + "y": 62.99139404296875 + }, + "direction": 0.6418919563293457, + "dropPoint": { + "x": 250.99472045898438, + "y": 187.42877197265625 + }, + "position": { + "x": 39.93486785888672, + "y": 29.663896560668945 + }, + "predictedTarget": { + "x": 307.10528564453125, + "y": 208.7799072265625 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 85.74201965332031, + "y": 63.86302947998047 + }, + "direction": 0.6413147449493408, + "dropPoint": { + "x": 250.97555541992188, + "y": 187.22463989257813 + }, + "position": { + "x": 41.13683319091797, + "y": 30.56127166748047 + }, + "predictedTarget": { + "x": 306.9952697753906, + "y": 208.8199005126953 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 86.96369934082031, + "y": 64.73397827148438 + }, + "direction": 0.6407380700111389, + "dropPoint": { + "x": 250.95718383789063, + "y": 187.02255249023438 + }, + "position": { + "x": 42.33931350708008, + "y": 31.45795249938965 + }, + "predictedTarget": { + "x": 306.8852844238281, + "y": 208.8599090576172 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 88.18586730957031, + "y": 65.604248046875 + }, + "direction": 0.6401617527008057, + "dropPoint": { + "x": 250.9387969970703, + "y": 186.8218536376953 + }, + "position": { + "x": 43.54231262207031, + "y": 32.353939056396484 + }, + "predictedTarget": { + "x": 306.7752685546875, + "y": 208.89990234375 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 89.3738784790039, + "y": 66.52033996582031 + }, + "direction": 0.6406004428863525, + "dropPoint": { + "x": 250.721435546875, + "y": 186.80133056640625 + }, + "position": { + "x": 44.74491882324219, + "y": 33.25045394897461 + }, + "predictedTarget": { + "x": 306.665283203125, + "y": 208.9398956298828 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 90.56143188476563, + "y": 67.4370346069336 + }, + "direction": 0.6410408020019531, + "dropPoint": { + "x": 250.50473022460938, + "y": 186.78077697753906 + }, + "position": { + "x": 45.94712829589844, + "y": 34.147499084472656 + }, + "predictedTarget": { + "x": 306.5552673339844, + "y": 208.9799041748047 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 91.74873352050781, + "y": 68.35406494140625 + }, + "direction": 0.641477108001709, + "dropPoint": { + "x": 250.29135131835938, + "y": 186.76040649414063 + }, + "position": { + "x": 47.148948669433594, + "y": 35.045066833496094 + }, + "predictedTarget": { + "x": 306.4452819824219, + "y": 209.01492309570313 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 92.9356918334961, + "y": 69.27151489257813 + }, + "direction": 0.6419112086296082, + "dropPoint": { + "x": 250.07992553710938, + "y": 186.73977661132813 + }, + "position": { + "x": 48.350379943847656, + "y": 35.94315719604492 + }, + "predictedTarget": { + "x": 306.33526611328125, + "y": 209.044921875 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 94.12223052978516, + "y": 70.18952178955078 + }, + "direction": 0.6423462629318237, + "dropPoint": { + "x": 249.869873046875, + "y": 186.71946716308594 + }, + "position": { + "x": 49.55141830444336, + "y": 36.84177017211914 + }, + "predictedTarget": { + "x": 306.22528076171875, + "y": 209.07492065429688 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 95.30845642089844, + "y": 71.10792541503906 + }, + "direction": 0.6427786946296692, + "dropPoint": { + "x": 249.66246032714844, + "y": 186.6992950439453 + }, + "position": { + "x": 50.75206756591797, + "y": 37.740901947021484 + }, + "predictedTarget": { + "x": 306.1152648925781, + "y": 209.1049346923828 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 96.49424743652344, + "y": 72.02688598632813 + }, + "direction": 0.6432120203971863, + "dropPoint": { + "x": 249.4564208984375, + "y": 186.67942810058594 + }, + "position": { + "x": 51.952327728271484, + "y": 38.64055633544922 + }, + "predictedTarget": { + "x": 306.0052795410156, + "y": 209.1349334716797 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 97.67972564697266, + "y": 72.94625091552734 + }, + "direction": 0.6436430811882019, + "dropPoint": { + "x": 249.25233459472656, + "y": 186.65933227539063 + }, + "position": { + "x": 53.152198791503906, + "y": 39.54072570800781 + }, + "predictedTarget": { + "x": 305.895263671875, + "y": 209.16493225097656 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 98.86488342285156, + "y": 73.86602020263672 + }, + "direction": 0.6440717577934265, + "dropPoint": { + "x": 249.05023193359375, + "y": 186.63900756835938 + }, + "position": { + "x": 54.3516845703125, + "y": 40.441410064697266 + }, + "predictedTarget": { + "x": 305.7852783203125, + "y": 209.19493103027344 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 100.04971313476563, + "y": 74.78621673583984 + }, + "direction": 0.6444987058639526, + "dropPoint": { + "x": 248.8507537841797, + "y": 186.61911010742188 + }, + "position": { + "x": 55.550785064697266, + "y": 41.34260559082031 + }, + "predictedTarget": { + "x": 305.6752624511719, + "y": 209.2249298095703 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 101.254150390625, + "y": 75.68031311035156 + }, + "direction": 0.6443434357643127, + "dropPoint": { + "x": 248.6236572265625, + "y": 186.4015350341797 + }, + "position": { + "x": 56.75002670288086, + "y": 42.243614196777344 + }, + "predictedTarget": { + "x": 305.5652770996094, + "y": 209.2549285888672 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 102.45875549316406, + "y": 76.57418823242188 + }, + "direction": 0.6441872119903564, + "dropPoint": { + "x": 248.39920043945313, + "y": 186.18606567382813 + }, + "position": { + "x": 57.94940948486328, + "y": 43.14443588256836 + }, + "predictedTarget": { + "x": 305.45526123046875, + "y": 209.28492736816406 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 103.66348266601563, + "y": 77.4678955078125 + }, + "direction": 0.6440315842628479, + "dropPoint": { + "x": 248.17617797851563, + "y": 185.97225952148438 + }, + "position": { + "x": 59.14893341064453, + "y": 44.04507064819336 + }, + "predictedTarget": { + "x": 305.34527587890625, + "y": 209.31492614746094 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 104.86834716796875, + "y": 78.36140441894531 + }, + "direction": 0.6438758969306946, + "dropPoint": { + "x": 247.955810546875, + "y": 185.76083374023438 + }, + "position": { + "x": 60.348594665527344, + "y": 44.945518493652344 + }, + "predictedTarget": { + "x": 305.2352600097656, + "y": 209.3449249267578 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 106.0732421875, + "y": 79.25487518310547 + }, + "direction": 0.64372318983078, + "dropPoint": { + "x": 247.73626708984375, + "y": 185.55130004882813 + }, + "position": { + "x": 61.54839324951172, + "y": 45.84578323364258 + }, + "predictedTarget": { + "x": 305.125244140625, + "y": 209.3749237060547 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 107.27835083007813, + "y": 80.1480712890625 + }, + "direction": 0.6435685157775879, + "dropPoint": { + "x": 247.5194091796875, + "y": 185.34361267089844 + }, + "position": { + "x": 62.74833297729492, + "y": 46.74586486816406 + }, + "predictedTarget": { + "x": 305.0152587890625, + "y": 209.40493774414063 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 108.48360443115234, + "y": 81.04106140136719 + }, + "direction": 0.6434135437011719, + "dropPoint": { + "x": 247.3052215576172, + "y": 185.13827514648438 + }, + "position": { + "x": 63.94841003417969, + "y": 47.64575958251953 + }, + "predictedTarget": { + "x": 304.9052429199219, + "y": 209.4349365234375 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 109.68896484375, + "y": 81.93391418457031 + }, + "direction": 0.6432594656944275, + "dropPoint": { + "x": 247.09243774414063, + "y": 184.93463134765625 + }, + "position": { + "x": 65.14862823486328, + "y": 48.54547119140625 + }, + "predictedTarget": { + "x": 304.7952575683594, + "y": 209.46493530273438 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 110.89447021484375, + "y": 82.8265609741211 + }, + "direction": 0.6431050896644592, + "dropPoint": { + "x": 246.88235473632813, + "y": 184.73333740234375 + }, + "position": { + "x": 66.34898376464844, + "y": 49.44499588012695 + }, + "predictedTarget": { + "x": 304.68524169921875, + "y": 209.49493408203125 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 112.10006713867188, + "y": 83.71910095214844 + }, + "direction": 0.6429525017738342, + "dropPoint": { + "x": 246.6737060546875, + "y": 184.5340118408203 + }, + "position": { + "x": 67.54947662353516, + "y": 50.344337463378906 + }, + "predictedTarget": { + "x": 304.57525634765625, + "y": 209.52493286132813 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 113.28520202636719, + "y": 84.63893127441406 + }, + "direction": 0.6434003114700317, + "dropPoint": { + "x": 246.47802734375, + "y": 184.5125732421875 + }, + "position": { + "x": 68.74956512451172, + "y": 51.24421691894531 + }, + "predictedTarget": { + "x": 304.4652404785156, + "y": 209.554931640625 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 114.46997833251953, + "y": 85.5592269897461 + }, + "direction": 0.6438468098640442, + "dropPoint": { + "x": 246.28433227539063, + "y": 184.4912109375 + }, + "position": { + "x": 69.94925689697266, + "y": 52.144630432128906 + }, + "predictedTarget": { + "x": 304.3552551269531, + "y": 209.58493041992188 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 115.65438842773438, + "y": 86.47998046875 + }, + "direction": 0.6442917585372925, + "dropPoint": { + "x": 246.0926513671875, + "y": 184.46990966796875 + }, + "position": { + "x": 71.14854431152344, + "y": 53.04557800292969 + }, + "predictedTarget": { + "x": 304.2402648925781, + "y": 209.60995483398438 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 116.83854675292969, + "y": 87.40106201171875 + }, + "direction": 0.6447322964668274, + "dropPoint": { + "x": 245.9041748046875, + "y": 184.44879150390625 + }, + "position": { + "x": 72.3474349975586, + "y": 53.94705581665039 + }, + "predictedTarget": { + "x": 304.1202697753906, + "y": 209.6299591064453 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 118.02224731445313, + "y": 88.32272338867188 + }, + "direction": 0.6451742649078369, + "dropPoint": { + "x": 245.71649169921875, + "y": 184.42764282226563 + }, + "position": { + "x": 73.54592895507813, + "y": 54.849063873291016 + }, + "predictedTarget": { + "x": 304.0002746582031, + "y": 209.64996337890625 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 119.20561218261719, + "y": 89.24484252929688 + }, + "direction": 0.6456144452095032, + "dropPoint": { + "x": 245.53089904785156, + "y": 184.40660095214844 + }, + "position": { + "x": 74.74402618408203, + "y": 55.7515983581543 + }, + "predictedTarget": { + "x": 303.8802795410156, + "y": 209.66995239257813 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 120.38861846923828, + "y": 90.16739654541016 + }, + "direction": 0.6460530757904053, + "dropPoint": { + "x": 245.34725952148438, + "y": 184.3856201171875 + }, + "position": { + "x": 75.94172668457031, + "y": 56.654659271240234 + }, + "predictedTarget": { + "x": 303.7602844238281, + "y": 209.68995666503906 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 121.57127380371094, + "y": 91.09040069580078 + }, + "direction": 0.6464900970458984, + "dropPoint": { + "x": 245.1656494140625, + "y": 184.36471557617188 + }, + "position": { + "x": 77.13903045654297, + "y": 57.55824279785156 + }, + "predictedTarget": { + "x": 303.6402893066406, + "y": 209.7099609375 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 122.75363159179688, + "y": 92.01377868652344 + }, + "direction": 0.6469239592552185, + "dropPoint": { + "x": 244.98663330078125, + "y": 184.34393310546875 + }, + "position": { + "x": 78.33594512939453, + "y": 58.462345123291016 + }, + "predictedTarget": { + "x": 303.5202941894531, + "y": 209.72994995117188 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 123.93560028076172, + "y": 92.93765258789063 + }, + "direction": 0.6473575234413147, + "dropPoint": { + "x": 244.80905151367188, + "y": 184.32321166992188 + }, + "position": { + "x": 79.53246307373047, + "y": 59.366966247558594 + }, + "predictedTarget": { + "x": 303.4002990722656, + "y": 209.7499542236328 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 125.15379333496094, + "y": 93.8135986328125 + }, + "direction": 0.6467287540435791, + "dropPoint": { + "x": 244.79144287109375, + "y": 184.1466522216797 + }, + "position": { + "x": 80.72955322265625, + "y": 60.270835876464844 + }, + "predictedTarget": { + "x": 303.2802734375, + "y": 209.76995849609375 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 126.37249755859375, + "y": 94.6888198852539 + }, + "direction": 0.6461009383201599, + "dropPoint": { + "x": 244.77394104003906, + "y": 183.97181701660156 + }, + "position": { + "x": 81.92720794677734, + "y": 61.173954010009766 + }, + "predictedTarget": { + "x": 303.1602783203125, + "y": 209.7899627685547 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 127.59163665771484, + "y": 95.56341552734375 + }, + "direction": 0.6454763412475586, + "dropPoint": { + "x": 244.75653076171875, + "y": 183.79922485351563 + }, + "position": { + "x": 83.12542724609375, + "y": 62.07632064819336 + }, + "predictedTarget": { + "x": 303.0452575683594, + "y": 209.8049774169922 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 128.81126403808594, + "y": 96.4373550415039 + }, + "direction": 0.6448538303375244, + "dropPoint": { + "x": 244.73922729492188, + "y": 183.6286163330078 + }, + "position": { + "x": 84.32421112060547, + "y": 62.977943420410156 + }, + "predictedTarget": { + "x": 302.9352722167969, + "y": 209.81497192382813 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 130.03134155273438, + "y": 97.31063842773438 + }, + "direction": 0.644233763217926, + "dropPoint": { + "x": 244.72201538085938, + "y": 183.4600067138672 + }, + "position": { + "x": 85.52355194091797, + "y": 63.878822326660156 + }, + "predictedTarget": { + "x": 302.82525634765625, + "y": 209.82498168945313 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 131.25192260742188, + "y": 98.1832275390625 + }, + "direction": 0.6436148285865784, + "dropPoint": { + "x": 244.70489501953125, + "y": 183.29310607910156 + }, + "position": { + "x": 86.72344970703125, + "y": 64.77896118164063 + }, + "predictedTarget": { + "x": 302.71527099609375, + "y": 209.83497619628906 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 132.47293090820313, + "y": 99.05520629882813 + }, + "direction": 0.6429991722106934, + "dropPoint": { + "x": 244.68788146972656, + "y": 183.12844848632813 + }, + "position": { + "x": 87.92390441894531, + "y": 65.67835998535156 + }, + "predictedTarget": { + "x": 302.6052551269531, + "y": 209.844970703125 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 133.69442749023438, + "y": 99.92649841308594 + }, + "direction": 0.642384946346283, + "dropPoint": { + "x": 244.67092895507813, + "y": 182.96548461914063 + }, + "position": { + "x": 89.12490844726563, + "y": 66.57701873779297 + }, + "predictedTarget": { + "x": 302.4952697753906, + "y": 209.85498046875 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 134.91632080078125, + "y": 100.79722595214844 + }, + "direction": 0.6417749524116516, + "dropPoint": { + "x": 244.65415954589844, + "y": 182.80502319335938 + }, + "position": { + "x": 90.32646179199219, + "y": 67.47494506835938 + }, + "predictedTarget": { + "x": 302.38525390625, + "y": 209.86497497558594 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 136.13870239257813, + "y": 101.66725158691406 + }, + "direction": 0.6411656141281128, + "dropPoint": { + "x": 244.637451171875, + "y": 182.64605712890625 + }, + "position": { + "x": 91.52855682373047, + "y": 68.37213897705078 + }, + "predictedTarget": { + "x": 302.2752685546875, + "y": 209.87496948242188 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 137.3253173828125, + "y": 102.58517456054688 + }, + "direction": 0.6416184306144714, + "dropPoint": { + "x": 244.4637451171875, + "y": 182.624267578125 + }, + "position": { + "x": 92.7302474975586, + "y": 69.2698745727539 + }, + "predictedTarget": { + "x": 302.1652526855469, + "y": 209.88497924804688 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 138.51162719726563, + "y": 103.50350952148438 + }, + "direction": 0.642068088054657, + "dropPoint": { + "x": 244.29263305664063, + "y": 182.6026611328125 + }, + "position": { + "x": 93.93153381347656, + "y": 70.16815185546875 + }, + "predictedTarget": { + "x": 302.0552673339844, + "y": 209.8949737548828 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 139.69754028320313, + "y": 104.42230987548828 + }, + "direction": 0.6425164341926575, + "dropPoint": { + "x": 244.1229705810547, + "y": 182.58082580566406 + }, + "position": { + "x": 95.13241577148438, + "y": 71.06697082519531 + }, + "predictedTarget": { + "x": 301.9402770996094, + "y": 209.90496826171875 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 140.88311767578125, + "y": 105.34158325195313 + }, + "direction": 0.6429634690284729, + "dropPoint": { + "x": 243.9559326171875, + "y": 182.55963134765625 + }, + "position": { + "x": 96.33290100097656, + "y": 71.96632385253906 + }, + "predictedTarget": { + "x": 301.8202819824219, + "y": 209.91497802734375 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 142.0683135986328, + "y": 106.2613296508789 + }, + "direction": 0.6434094309806824, + "dropPoint": { + "x": 243.7898406982422, + "y": 182.53790283203125 + }, + "position": { + "x": 97.5329818725586, + "y": 72.8662109375 + }, + "predictedTarget": { + "x": 301.7002868652344, + "y": 209.9249725341797 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 143.25318908691406, + "y": 107.18148803710938 + }, + "direction": 0.6438527703285217, + "dropPoint": { + "x": 243.6268310546875, + "y": 182.5168914794922 + }, + "position": { + "x": 98.732666015625, + "y": 73.76663208007813 + }, + "predictedTarget": { + "x": 301.58026123046875, + "y": 209.93496704101563 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 144.437744140625, + "y": 108.10206604003906 + }, + "direction": 0.6442936658859253, + "dropPoint": { + "x": 243.4652862548828, + "y": 182.4954376220703 + }, + "position": { + "x": 99.93195343017578, + "y": 74.6675796508789 + }, + "predictedTarget": { + "x": 301.46026611328125, + "y": 209.94497680664063 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 145.62193298339844, + "y": 109.02308654785156 + }, + "direction": 0.6447329521179199, + "dropPoint": { + "x": 243.30633544921875, + "y": 182.47459411621094 + }, + "position": { + "x": 101.13084411621094, + "y": 75.56905364990234 + }, + "predictedTarget": { + "x": 301.34027099609375, + "y": 209.95497131347656 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 146.80581665039063, + "y": 109.94453430175781 + }, + "direction": 0.6451699733734131, + "dropPoint": { + "x": 243.1488037109375, + "y": 182.45330810546875 + }, + "position": { + "x": 102.32933807373047, + "y": 76.47105407714844 + }, + "predictedTarget": { + "x": 301.22027587890625, + "y": 209.96498107910156 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 147.98931884765625, + "y": 110.86643981933594 + }, + "direction": 0.6456058025360107, + "dropPoint": { + "x": 242.99334716796875, + "y": 182.432373046875 + }, + "position": { + "x": 103.5274429321289, + "y": 77.37358093261719 + }, + "predictedTarget": { + "x": 301.10028076171875, + "y": 209.9749755859375 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 149.20982360839844, + "y": 111.73920440673828 + }, + "direction": 0.6449543237686157, + "dropPoint": { + "x": 242.9764404296875, + "y": 182.27731323242188 + }, + "position": { + "x": 104.72613525390625, + "y": 78.27532196044922 + }, + "predictedTarget": { + "x": 300.9802551269531, + "y": 209.98497009277344 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 150.43077087402344, + "y": 112.611328125 + }, + "direction": 0.6443063020706177, + "dropPoint": { + "x": 242.95962524414063, + "y": 182.12445068359375 + }, + "position": { + "x": 105.92540740966797, + "y": 79.17628479003906 + }, + "predictedTarget": { + "x": 300.8602600097656, + "y": 209.99497985839844 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 151.65220642089844, + "y": 113.48278045654297 + }, + "direction": 0.6436606049537659, + "dropPoint": { + "x": 242.94296264648438, + "y": 181.97360229492188 + }, + "position": { + "x": 107.1252670288086, + "y": 80.07647705078125 + }, + "predictedTarget": { + "x": 300.7402648925781, + "y": 210.0 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 152.87411499023438, + "y": 114.35356140136719 + }, + "direction": 0.6430174708366394, + "dropPoint": { + "x": 242.9263916015625, + "y": 181.82473754882813 + }, + "position": { + "x": 108.32569885253906, + "y": 80.97589874267578 + }, + "predictedTarget": { + "x": 300.6202697753906, + "y": 210.0 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 154.09649658203125, + "y": 115.22366333007813 + }, + "direction": 0.6423768401145935, + "dropPoint": { + "x": 242.90994262695313, + "y": 181.6778564453125 + }, + "position": { + "x": 109.5267105102539, + "y": 81.87454986572266 + }, + "predictedTarget": { + "x": 300.5002746582031, + "y": 210.0 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 155.31939697265625, + "y": 116.09305572509766 + }, + "direction": 0.6417378187179565, + "dropPoint": { + "x": 242.8935546875, + "y": 181.53273010253906 + }, + "position": { + "x": 110.7282943725586, + "y": 82.77243041992188 + }, + "predictedTarget": { + "x": 300.3802795410156, + "y": 210.0 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 156.54269409179688, + "y": 116.96184539794922 + }, + "direction": 0.6411026120185852, + "dropPoint": { + "x": 242.8773193359375, + "y": 181.38983154296875 + }, + "position": { + "x": 111.93045043945313, + "y": 83.66954803466797 + }, + "predictedTarget": { + "x": 300.26025390625, + "y": 210.0 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 157.76651000976563, + "y": 117.82992553710938 + }, + "direction": 0.6404690742492676, + "dropPoint": { + "x": 242.8611602783203, + "y": 181.24868774414063 + }, + "position": { + "x": 113.13317108154297, + "y": 84.56590270996094 + }, + "predictedTarget": { + "x": 300.1402587890625, + "y": 210.0 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 158.99073791503906, + "y": 118.69740295410156 + }, + "direction": 0.6398390531539917, + "dropPoint": { + "x": 242.84515380859375, + "y": 181.10971069335938 + }, + "position": { + "x": 114.33645629882813, + "y": 85.46150207519531 + }, + "predictedTarget": { + "x": 300.020263671875, + "y": 210.0 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 160.21542358398438, + "y": 119.56423950195313 + }, + "direction": 0.6392119526863098, + "dropPoint": { + "x": 242.82928466796875, + "y": 180.97274780273438 + }, + "position": { + "x": 115.5403060913086, + "y": 86.3563461303711 + }, + "predictedTarget": { + "x": 299.9002685546875, + "y": 210.0 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 161.41995239257813, + "y": 120.45814514160156 + }, + "direction": 0.6391916275024414, + "dropPoint": { + "x": 242.83395385742188, + "y": 180.97219848632813 + }, + "position": { + "x": 116.74417114257813, + "y": 87.25116729736328 + }, + "predictedTarget": { + "x": 299.7802734375, + "y": 210.0 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 162.62452697753906, + "y": 121.35203552246094 + }, + "direction": 0.6391711831092834, + "dropPoint": { + "x": 242.83860778808594, + "y": 180.97166442871094 + }, + "position": { + "x": 117.94805908203125, + "y": 88.14596557617188 + }, + "predictedTarget": { + "x": 299.6602783203125, + "y": 210.0 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 163.82911682128906, + "y": 122.24588012695313 + }, + "direction": 0.6391505002975464, + "dropPoint": { + "x": 242.84329223632813, + "y": 180.97113037109375 + }, + "position": { + "x": 119.15196228027344, + "y": 89.04073333740234 + }, + "predictedTarget": { + "x": 299.540283203125, + "y": 209.99502563476563 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 165.03372192382813, + "y": 123.13970184326172 + }, + "direction": 0.6391298770904541, + "dropPoint": { + "x": 242.84791564941406, + "y": 180.97059631347656 + }, + "position": { + "x": 120.35588836669922, + "y": 89.93547821044922 + }, + "predictedTarget": { + "x": 299.4202575683594, + "y": 209.98501586914063 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 166.23837280273438, + "y": 124.03348541259766 + }, + "direction": 0.6391088366508484, + "dropPoint": { + "x": 242.85260009765625, + "y": 180.97007751464844 + }, + "position": { + "x": 121.55982971191406, + "y": 90.8302001953125 + }, + "predictedTarget": { + "x": 299.3002624511719, + "y": 209.9750213623047 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 167.44302368164063, + "y": 124.92724609375 + }, + "direction": 0.6390878558158875, + "dropPoint": { + "x": 242.85720825195313, + "y": 180.9695587158203 + }, + "position": { + "x": 122.76378631591797, + "y": 91.72489929199219 + }, + "predictedTarget": { + "x": 299.1802673339844, + "y": 209.96502685546875 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 168.647705078125, + "y": 125.82096862792969 + }, + "direction": 0.6390665769577026, + "dropPoint": { + "x": 242.86184692382813, + "y": 180.9690399169922 + }, + "position": { + "x": 123.96776580810547, + "y": 92.61956787109375 + }, + "predictedTarget": { + "x": 299.0602722167969, + "y": 209.95501708984375 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 169.8524169921875, + "y": 126.71464538574219 + }, + "direction": 0.6390451788902283, + "dropPoint": { + "x": 242.86647033691406, + "y": 180.96853637695313 + }, + "position": { + "x": 125.17176055908203, + "y": 93.51421356201172 + }, + "predictedTarget": { + "x": 298.9402770996094, + "y": 209.9450225830078 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 171.05714416503906, + "y": 127.60830688476563 + }, + "direction": 0.6390236020088196, + "dropPoint": { + "x": 242.87112426757813, + "y": 180.96804809570313 + }, + "position": { + "x": 126.37577819824219, + "y": 94.40882873535156 + }, + "predictedTarget": { + "x": 298.82025146484375, + "y": 209.9350128173828 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 172.26190185546875, + "y": 128.50192260742188 + }, + "direction": 0.6390019655227661, + "dropPoint": { + "x": 242.875732421875, + "y": 180.96755981445313 + }, + "position": { + "x": 127.57981872558594, + "y": 95.30342102050781 + }, + "predictedTarget": { + "x": 298.70025634765625, + "y": 209.92501831054688 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 173.47238159179688, + "y": 129.38784790039063 + }, + "direction": 0.6388130187988281, + "dropPoint": { + "x": 242.7135009765625, + "y": 180.81326293945313 + }, + "position": { + "x": 128.78402709960938, + "y": 96.19778442382813 + }, + "predictedTarget": { + "x": 298.58026123046875, + "y": 209.91502380371094 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 174.68304443359375, + "y": 130.27352905273438 + }, + "direction": 0.638623833656311, + "dropPoint": { + "x": 242.55384826660156, + "y": 180.66128540039063 + }, + "position": { + "x": 129.9884033203125, + "y": 97.0919189453125 + }, + "predictedTarget": { + "x": 298.46026611328125, + "y": 209.90501403808594 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 175.89382934570313, + "y": 131.15902709960938 + }, + "direction": 0.6384354829788208, + "dropPoint": { + "x": 242.39581298828125, + "y": 180.51112365722656 + }, + "position": { + "x": 131.1929473876953, + "y": 97.98583221435547 + }, + "predictedTarget": { + "x": 298.34027099609375, + "y": 209.89501953125 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 177.10479736328125, + "y": 132.04428100585938 + }, + "direction": 0.6382470726966858, + "dropPoint": { + "x": 242.24038696289063, + "y": 180.36334228515625 + }, + "position": { + "x": 132.3976593017578, + "y": 98.8795166015625 + }, + "predictedTarget": { + "x": 298.2202453613281, + "y": 209.885009765625 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 178.3158721923828, + "y": 132.92938232421875 + }, + "direction": 0.6380603313446045, + "dropPoint": { + "x": 242.0866241455078, + "y": 180.217529296875 + }, + "position": { + "x": 133.6025390625, + "y": 99.7729721069336 + }, + "predictedTarget": { + "x": 298.1002502441406, + "y": 209.87501525878906 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 179.52708435058594, + "y": 133.81430053710938 + }, + "direction": 0.6378740668296814, + "dropPoint": { + "x": 241.93499755859375, + "y": 180.07382202148438 + }, + "position": { + "x": 134.80758666992188, + "y": 100.66620635986328 + }, + "predictedTarget": { + "x": 297.9802551269531, + "y": 209.86502075195313 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 180.73849487304688, + "y": 134.69894409179688 + }, + "direction": 0.6376872658729553, + "dropPoint": { + "x": 241.78541564941406, + "y": 179.93199157714844 + }, + "position": { + "x": 136.01280212402344, + "y": 101.55921173095703 + }, + "predictedTarget": { + "x": 297.8602600097656, + "y": 209.8550262451172 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 181.9500732421875, + "y": 135.5833740234375 + }, + "direction": 0.6375004649162292, + "dropPoint": { + "x": 241.638427734375, + "y": 179.79251098632813 + }, + "position": { + "x": 137.2181854248047, + "y": 102.45199584960938 + }, + "predictedTarget": { + "x": 297.7402648925781, + "y": 209.8450164794922 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 183.1617431640625, + "y": 136.46766662597656 + }, + "direction": 0.6373155117034912, + "dropPoint": { + "x": 241.49313354492188, + "y": 179.655029296875 + }, + "position": { + "x": 138.42373657226563, + "y": 103.34455871582031 + }, + "predictedTarget": { + "x": 297.6202697753906, + "y": 209.83502197265625 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 184.37364196777344, + "y": 137.35162353515625 + }, + "direction": 0.6371285319328308, + "dropPoint": { + "x": 241.350341796875, + "y": 179.51951599121094 + }, + "position": { + "x": 139.6294403076172, + "y": 104.23689270019531 + }, + "predictedTarget": { + "x": 297.5002746582031, + "y": 209.8250274658203 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 185.61962890625, + "y": 138.18948364257813 + }, + "direction": 0.6359432935714722, + "dropPoint": { + "x": 241.4688720703125, + "y": 179.42059326171875 + }, + "position": { + "x": 140.83621215820313, + "y": 105.12779998779297 + }, + "predictedTarget": { + "x": 297.3802795410156, + "y": 209.8150177001953 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 186.86627197265625, + "y": 139.02630615234375 + }, + "direction": 0.6347677707672119, + "dropPoint": { + "x": 241.585205078125, + "y": 179.3236541748047 + }, + "position": { + "x": 142.0440216064453, + "y": 106.01728820800781 + }, + "predictedTarget": { + "x": 297.2602844238281, + "y": 209.80502319335938 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 188.1137237548828, + "y": 139.86190795898438 + }, + "direction": 0.6335975527763367, + "dropPoint": { + "x": 241.70016479492188, + "y": 179.22860717773438 + }, + "position": { + "x": 143.25286865234375, + "y": 106.90535736083984 + }, + "predictedTarget": { + "x": 297.1402587890625, + "y": 209.7900390625 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 189.36187744140625, + "y": 140.69639587402344 + }, + "direction": 0.6324352025985718, + "dropPoint": { + "x": 241.8128662109375, + "y": 179.13516235351563 + }, + "position": { + "x": 144.46275329589844, + "y": 107.79202270507813 + }, + "predictedTarget": { + "x": 297.020263671875, + "y": 209.77005004882813 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 190.61082458496094, + "y": 141.5297088623047 + }, + "direction": 0.631278395652771, + "dropPoint": { + "x": 241.924560546875, + "y": 179.0438690185547 + }, + "position": { + "x": 145.6736602783203, + "y": 108.67729187011719 + }, + "predictedTarget": { + "x": 296.9002685546875, + "y": 209.7500457763672 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 191.8604278564453, + "y": 142.3619842529297 + }, + "direction": 0.6301305890083313, + "dropPoint": { + "x": 242.03367614746094, + "y": 178.95407104492188 + }, + "position": { + "x": 146.88558959960938, + "y": 109.56116485595703 + }, + "predictedTarget": { + "x": 296.7802734375, + "y": 209.73004150390625 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 193.11074829101563, + "y": 143.1931610107422 + }, + "direction": 0.6289900541305542, + "dropPoint": { + "x": 242.14138793945313, + "y": 178.8663330078125 + }, + "position": { + "x": 148.09852600097656, + "y": 110.44365692138672 + }, + "predictedTarget": { + "x": 296.6602783203125, + "y": 209.71005249023438 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 194.3616943359375, + "y": 144.02333068847656 + }, + "direction": 0.6278588175773621, + "dropPoint": { + "x": 242.24691772460938, + "y": 178.78036499023438 + }, + "position": { + "x": 149.3124542236328, + "y": 111.32477569580078 + }, + "predictedTarget": { + "x": 296.5402526855469, + "y": 209.69004821777344 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 195.6133575439453, + "y": 144.85240173339844 + }, + "direction": 0.6267342567443848, + "dropPoint": { + "x": 242.35064697265625, + "y": 178.69602966308594 + }, + "position": { + "x": 150.52737426757813, + "y": 112.20452880859375 + }, + "predictedTarget": { + "x": 296.4202575683594, + "y": 209.6700439453125 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 196.86569213867188, + "y": 145.680419921875 + }, + "direction": 0.6256172060966492, + "dropPoint": { + "x": 242.4529571533203, + "y": 178.61370849609375 + }, + "position": { + "x": 151.74327087402344, + "y": 113.08292388916016 + }, + "predictedTarget": { + "x": 296.3002624511719, + "y": 209.65005493164063 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 198.06602478027344, + "y": 146.5803680419922 + }, + "direction": 0.6260824799537659, + "dropPoint": { + "x": 242.3345489501953, + "y": 178.59234619140625 + }, + "position": { + "x": 152.95877075195313, + "y": 113.96188354492188 + }, + "predictedTarget": { + "x": 296.1802673339844, + "y": 209.6300506591797 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 199.26597595214844, + "y": 147.48080444335938 + }, + "direction": 0.6265462636947632, + "dropPoint": { + "x": 242.21737670898438, + "y": 178.5706787109375 + }, + "position": { + "x": 154.17385864257813, + "y": 114.8414077758789 + }, + "predictedTarget": { + "x": 296.06024169921875, + "y": 209.61004638671875 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 200.46566772460938, + "y": 148.38157653808594 + }, + "direction": 0.6270051598548889, + "dropPoint": { + "x": 242.10302734375, + "y": 178.54940795898438 + }, + "position": { + "x": 155.38853454589844, + "y": 115.72148895263672 + }, + "predictedTarget": { + "x": 295.9452209472656, + "y": 209.5900421142578 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 201.6649627685547, + "y": 149.28289794921875 + }, + "direction": 0.6274639368057251, + "dropPoint": { + "x": 241.9903564453125, + "y": 178.52838134765625 + }, + "position": { + "x": 156.60281372070313, + "y": 116.60212707519531 + }, + "predictedTarget": { + "x": 295.8352355957031, + "y": 209.57005310058594 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 202.8640594482422, + "y": 150.18446350097656 + }, + "direction": 0.6279162168502808, + "dropPoint": { + "x": 241.8800048828125, + "y": 178.50723266601563 + }, + "position": { + "x": 157.8166961669922, + "y": 117.48331451416016 + }, + "predictedTarget": { + "x": 295.7252197265625, + "y": 209.550048828125 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 204.06272888183594, + "y": 151.0865936279297 + }, + "direction": 0.6283690929412842, + "dropPoint": { + "x": 241.7714080810547, + "y": 178.48646545410156 + }, + "position": { + "x": 159.03018188476563, + "y": 118.36505126953125 + }, + "predictedTarget": { + "x": 295.615234375, + "y": 209.53004455566406 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 205.26112365722656, + "y": 151.9890899658203 + }, + "direction": 0.6288180351257324, + "dropPoint": { + "x": 241.66476440429688, + "y": 178.46568298339844 + }, + "position": { + "x": 160.24327087402344, + "y": 119.2473373413086 + }, + "predictedTarget": { + "x": 295.5052185058594, + "y": 209.51004028320313 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 206.45925903320313, + "y": 152.89193725585938 + }, + "direction": 0.6292628049850464, + "dropPoint": { + "x": 241.5601348876953, + "y": 178.4449005126953 + }, + "position": { + "x": 161.45596313476563, + "y": 120.13015747070313 + }, + "predictedTarget": { + "x": 295.3952331542969, + "y": 209.4900360107422 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 207.65704345703125, + "y": 153.79519653320313 + }, + "direction": 0.6297051310539246, + "dropPoint": { + "x": 241.45791625976563, + "y": 178.4246368408203 + }, + "position": { + "x": 162.6682586669922, + "y": 121.01351928710938 + }, + "predictedTarget": { + "x": 295.28521728515625, + "y": 209.4700469970703 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 208.85455322265625, + "y": 154.6988525390625 + }, + "direction": 0.6301445364952087, + "dropPoint": { + "x": 241.3573455810547, + "y": 178.40431213378906 + }, + "position": { + "x": 163.8801727294922, + "y": 121.89741516113281 + }, + "predictedTarget": { + "x": 295.17523193359375, + "y": 209.45004272460938 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 210.09083557128906, + "y": 155.54931640625 + }, + "direction": 0.6294208765029907, + "dropPoint": { + "x": 241.341064453125, + "y": 178.30661010742188 + }, + "position": { + "x": 165.0927276611328, + "y": 122.78043365478516 + }, + "predictedTarget": { + "x": 295.0652160644531, + "y": 209.43003845214844 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 211.3275604248047, + "y": 156.39910888671875 + }, + "direction": 0.6287020444869995, + "dropPoint": { + "x": 241.32492065429688, + "y": 178.21104431152344 + }, + "position": { + "x": 166.305908203125, + "y": 123.6625747680664 + }, + "predictedTarget": { + "x": 294.9552307128906, + "y": 209.4100341796875 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 212.56478881835938, + "y": 157.24815368652344 + }, + "direction": 0.6279865503311157, + "dropPoint": { + "x": 241.3089599609375, + "y": 178.11744689941406 + }, + "position": { + "x": 167.5197296142578, + "y": 124.5438461303711 + }, + "predictedTarget": { + "x": 294.84521484375, + "y": 209.3850555419922 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 213.8025360107422, + "y": 158.09646606445313 + }, + "direction": 0.6272739171981812, + "dropPoint": { + "x": 241.29312133789063, + "y": 178.02569580078125 + }, + "position": { + "x": 168.7341766357422, + "y": 125.42425537109375 + }, + "predictedTarget": { + "x": 294.7352294921875, + "y": 209.3550567626953 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 215.0407257080078, + "y": 158.944091796875 + }, + "direction": 0.6265660524368286, + "dropPoint": { + "x": 241.27745056152344, + "y": 177.93603515625 + }, + "position": { + "x": 169.94924926757813, + "y": 126.30380249023438 + }, + "predictedTarget": { + "x": 294.6252136230469, + "y": 209.32505798339844 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 216.27944946289063, + "y": 159.79092407226563 + }, + "direction": 0.6258596777915955, + "dropPoint": { + "x": 241.26222229003906, + "y": 177.84828186035156 + }, + "position": { + "x": 171.16493225097656, + "y": 127.1824951171875 + }, + "predictedTarget": { + "x": 294.5152282714844, + "y": 209.29505920410156 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 217.51858520507813, + "y": 160.63717651367188 + }, + "direction": 0.6251595616340637, + "dropPoint": { + "x": 241.24688720703125, + "y": 177.76254272460938 + }, + "position": { + "x": 172.38124084472656, + "y": 128.06033325195313 + }, + "predictedTarget": { + "x": 294.40521240234375, + "y": 209.2650604248047 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 218.75814819335938, + "y": 161.48275756835938 + }, + "direction": 0.6244639158248901, + "dropPoint": { + "x": 241.231689453125, + "y": 177.6787567138672 + }, + "position": { + "x": 173.59815979003906, + "y": 128.9373321533203 + }, + "predictedTarget": { + "x": 294.29522705078125, + "y": 209.2350616455078 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 219.99819946289063, + "y": 162.32762145996094 + }, + "direction": 0.6237713694572449, + "dropPoint": { + "x": 241.21664428710938, + "y": 177.5968017578125 + }, + "position": { + "x": 174.81568908691406, + "y": 129.8134765625 + }, + "predictedTarget": { + "x": 294.1852111816406, + "y": 209.20506286621094 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 221.23866271972656, + "y": 163.17189025878906 + }, + "direction": 0.6230842471122742, + "dropPoint": { + "x": 241.20179748535156, + "y": 177.51690673828125 + }, + "position": { + "x": 176.0338134765625, + "y": 130.6887969970703 + }, + "predictedTarget": { + "x": 294.0752258300781, + "y": 209.17506408691406 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 222.4816436767578, + "y": 164.01258850097656 + }, + "direction": 0.6223388910293579, + "dropPoint": { + "x": 241.18548583984375, + "y": 177.4315948486328 + }, + "position": { + "x": 177.25259399414063, + "y": 131.56320190429688 + }, + "predictedTarget": { + "x": 293.9652099609375, + "y": 209.1450653076172 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 223.72506713867188, + "y": 164.8526153564453 + }, + "direction": 0.6215988397598267, + "dropPoint": { + "x": 241.16937255859375, + "y": 177.34841918945313 + }, + "position": { + "x": 178.47201538085938, + "y": 132.43670654296875 + }, + "predictedTarget": { + "x": 293.855224609375, + "y": 209.1150665283203 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 224.968994140625, + "y": 165.69187927246094 + }, + "direction": 0.6208621859550476, + "dropPoint": { + "x": 241.1534423828125, + "y": 177.26718139648438 + }, + "position": { + "x": 179.69207763671875, + "y": 133.30931091308594 + }, + "predictedTarget": { + "x": 293.7452087402344, + "y": 209.08009338378906 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 226.21343994140625, + "y": 166.53036499023438 + }, + "direction": 0.6201287508010864, + "dropPoint": { + "x": 241.1376495361328, + "y": 177.18780517578125 + }, + "position": { + "x": 180.91278076171875, + "y": 134.18101501464844 + }, + "predictedTarget": { + "x": 293.6352233886719, + "y": 209.0400848388672 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 227.458251953125, + "y": 167.36827087402344 + }, + "direction": 0.6194024682044983, + "dropPoint": { + "x": 241.12173461914063, + "y": 177.11044311523438 + }, + "position": { + "x": 182.13412475585938, + "y": 135.0518341064453 + }, + "predictedTarget": { + "x": 293.52520751953125, + "y": 209.00009155273438 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 228.70364379882813, + "y": 168.20535278320313 + }, + "direction": 0.6186779141426086, + "dropPoint": { + "x": 241.1062469482422, + "y": 177.03497314453125 + }, + "position": { + "x": 183.35609436035156, + "y": 135.92176818847656 + }, + "predictedTarget": { + "x": 293.41522216796875, + "y": 208.9600830078125 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 229.94943237304688, + "y": 169.0417938232422 + }, + "direction": 0.617958664894104, + "dropPoint": { + "x": 241.0909881591797, + "y": 176.96156311035156 + }, + "position": { + "x": 184.5786895751953, + "y": 136.79083251953125 + }, + "predictedTarget": { + "x": 293.30523681640625, + "y": 208.9200897216797 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 231.19569396972656, + "y": 169.87754821777344 + }, + "direction": 0.6172440052032471, + "dropPoint": { + "x": 241.07591247558594, + "y": 176.89010620117188 + }, + "position": { + "x": 185.80191040039063, + "y": 137.6590118408203 + }, + "predictedTarget": { + "x": 293.1952209472656, + "y": 208.8800811767578 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 232.44241333007813, + "y": 170.71258544921875 + }, + "direction": 0.6165332198143005, + "dropPoint": { + "x": 241.0609588623047, + "y": 176.82044982910156 + }, + "position": { + "x": 187.02574157714844, + "y": 138.5263214111328 + }, + "predictedTarget": { + "x": 293.0852355957031, + "y": 208.840087890625 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 233.6895294189453, + "y": 171.54702758789063 + }, + "direction": 0.6158285140991211, + "dropPoint": { + "x": 241.0462188720703, + "y": 176.75283813476563 + }, + "position": { + "x": 188.25018310546875, + "y": 139.3927764892578 + }, + "predictedTarget": { + "x": 292.9752197265625, + "y": 208.80007934570313 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 234.91514587402344, + "y": 172.41180419921875 + }, + "direction": 0.6157928109169006, + "dropPoint": { + "x": 241.053466796875, + "y": 176.75514221191406 + }, + "position": { + "x": 189.4746551513672, + "y": 140.25918579101563 + }, + "predictedTarget": { + "x": 292.865234375, + "y": 208.7600860595703 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 236.14080810546875, + "y": 173.2765350341797 + }, + "direction": 0.6157568693161011, + "dropPoint": { + "x": 241.06069946289063, + "y": 176.75747680664063 + }, + "position": { + "x": 190.69915771484375, + "y": 141.12554931640625 + }, + "predictedTarget": { + "x": 292.7552185058594, + "y": 208.72007751464844 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 237.3665008544922, + "y": 174.14120483398438 + }, + "direction": 0.6157205700874329, + "dropPoint": { + "x": 241.0679168701172, + "y": 176.7598419189453 + }, + "position": { + "x": 191.92369079589844, + "y": 141.9918670654297 + }, + "predictedTarget": { + "x": 292.65020751953125, + "y": 208.68008422851563 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 238.59222412109375, + "y": 175.005859375 + }, + "direction": 0.6156848669052124, + "dropPoint": { + "x": 241.07513427734375, + "y": 176.76231384277344 + }, + "position": { + "x": 193.14825439453125, + "y": 142.85813903808594 + }, + "predictedTarget": { + "x": 292.5502014160156, + "y": 208.64007568359375 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 239.818115234375, + "y": 175.87026977539063 + }, + "direction": 0.6156448125839233, + "dropPoint": { + "x": 241.08255004882813, + "y": 176.76467895507813 + }, + "position": { + "x": 194.37286376953125, + "y": 143.724365234375 + }, + "predictedTarget": { + "x": 292.4502258300781, + "y": 208.60008239746094 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 241.04393005371094, + "y": 176.73477172851563 + }, + "direction": 0.6156080961227417, + "dropPoint": { + "x": 241.08973693847656, + "y": 176.76718139648438 + }, + "position": { + "x": 195.59750366210938, + "y": 144.59054565429688 + }, + "predictedTarget": { + "x": 292.3502197265625, + "y": 208.56007385253906 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 242.26983642578125, + "y": 177.59918212890625 + }, + "direction": 0.6155698299407959, + "dropPoint": { + "x": 241.09689331054688, + "y": 176.76962280273438 + }, + "position": { + "x": 196.82217407226563, + "y": 145.45668029785156 + }, + "predictedTarget": { + "x": 292.2502136230469, + "y": 208.52008056640625 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 243.49581909179688, + "y": 178.4634552001953 + }, + "direction": 0.6155300140380859, + "dropPoint": { + "x": 241.10400390625, + "y": 176.77200317382813 + }, + "position": { + "x": 198.046875, + "y": 146.32276916503906 + }, + "predictedTarget": { + "x": 292.15020751953125, + "y": 208.48008728027344 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 244.72178649902344, + "y": 179.32774353027344 + }, + "direction": 0.6154914498329163, + "dropPoint": { + "x": 241.11114501953125, + "y": 176.77456665039063 + }, + "position": { + "x": 199.2716064453125, + "y": 147.18881225585938 + }, + "predictedTarget": { + "x": 292.0502014160156, + "y": 208.44007873535156 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 245.9478759765625, + "y": 180.19186401367188 + }, + "direction": 0.6154505014419556, + "dropPoint": { + "x": 241.1182098388672, + "y": 176.77699279785156 + }, + "position": { + "x": 200.4963836669922, + "y": 148.05479431152344 + }, + "predictedTarget": { + "x": 291.9501953125, + "y": 208.40008544921875 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 247.1988525390625, + "y": 181.02076721191406 + }, + "direction": 0.6146560907363892, + "dropPoint": { + "x": 241.10104370117188, + "y": 176.71649169921875 + }, + "position": { + "x": 201.7218475341797, + "y": 148.91981506347656 + }, + "predictedTarget": { + "x": 291.8502197265625, + "y": 208.36007690429688 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 248.45040893554688, + "y": 181.8487548828125 + }, + "direction": 0.6138636469841003, + "dropPoint": { + "x": 241.08401489257813, + "y": 176.6577606201172 + }, + "position": { + "x": 202.94798278808594, + "y": 149.7838592529297 + }, + "predictedTarget": { + "x": 291.7502136230469, + "y": 208.32008361816406 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 249.70248413085938, + "y": 182.67601013183594 + }, + "direction": 0.6130762100219727, + "dropPoint": { + "x": 241.06716918945313, + "y": 176.6009979248047 + }, + "position": { + "x": 204.1748046875, + "y": 150.64694213867188 + }, + "predictedTarget": { + "x": 291.65020751953125, + "y": 208.2751007080078 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 250.95494079589844, + "y": 183.50259399414063 + }, + "direction": 0.6122961044311523, + "dropPoint": { + "x": 241.05032348632813, + "y": 176.54617309570313 + }, + "position": { + "x": 205.4022979736328, + "y": 151.50906372070313 + }, + "predictedTarget": { + "x": 291.5502014160156, + "y": 208.22509765625 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 252.2079315185547, + "y": 184.32839965820313 + }, + "direction": 0.6115196347236633, + "dropPoint": { + "x": 241.03390502929688, + "y": 176.49334716796875 + }, + "position": { + "x": 206.63046264648438, + "y": 152.3702392578125 + }, + "predictedTarget": { + "x": 291.4501953125, + "y": 208.1750946044922 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 253.46145629882813, + "y": 185.15338134765625 + }, + "direction": 0.6107469201087952, + "dropPoint": { + "x": 241.01763916015625, + "y": 176.4423370361328 + }, + "position": { + "x": 207.8592987060547, + "y": 153.23045349121094 + }, + "predictedTarget": { + "x": 291.3502197265625, + "y": 208.12510681152344 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 254.71543884277344, + "y": 185.97763061523438 + }, + "direction": 0.6099790930747986, + "dropPoint": { + "x": 241.00180053710938, + "y": 176.39334106445313 + }, + "position": { + "x": 209.0887908935547, + "y": 154.0897216796875 + }, + "predictedTarget": { + "x": 291.2502136230469, + "y": 208.07510375976563 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 255.96978759765625, + "y": 186.8013153076172 + }, + "direction": 0.609220027923584, + "dropPoint": { + "x": 240.9860382080078, + "y": 176.34629821777344 + }, + "position": { + "x": 210.31893920898438, + "y": 154.94805908203125 + }, + "predictedTarget": { + "x": 291.15020751953125, + "y": 208.0251007080078 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 257.22454833984375, + "y": 187.62435913085938 + }, + "direction": 0.6084669232368469, + "dropPoint": { + "x": 240.97019958496094, + "y": 176.30093383789063 + }, + "position": { + "x": 211.5497283935547, + "y": 155.80548095703125 + }, + "predictedTarget": { + "x": 291.0502014160156, + "y": 207.97509765625 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 258.4797668457031, + "y": 188.44667053222656 + }, + "direction": 0.6077189445495605, + "dropPoint": { + "x": 240.954833984375, + "y": 176.25758361816406 + }, + "position": { + "x": 212.78115844726563, + "y": 156.66197204589844 + }, + "predictedTarget": { + "x": 290.9501953125, + "y": 207.9250946044922 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 259.7305603027344, + "y": 189.27529907226563 + }, + "direction": 0.6071252822875977, + "dropPoint": { + "x": 241.03173828125, + "y": 176.28619384765625 + }, + "position": { + "x": 214.01309204101563, + "y": 157.51773071289063 + }, + "predictedTarget": { + "x": 290.8502197265625, + "y": 207.87510681152344 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 260.98162841796875, + "y": 190.10350036621094 + }, + "direction": 0.6065384745597839, + "dropPoint": { + "x": 241.10643005371094, + "y": 176.31451416015625 + }, + "position": { + "x": 215.2455291748047, + "y": 158.37277221679688 + }, + "predictedTarget": { + "x": 290.7502136230469, + "y": 207.82510375976563 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 262.233154296875, + "y": 190.9310302734375 + }, + "direction": 0.6059526205062866, + "dropPoint": { + "x": 241.1795654296875, + "y": 176.34275817871094 + }, + "position": { + "x": 216.4784698486328, + "y": 159.2270965576172 + }, + "predictedTarget": { + "x": 290.6551818847656, + "y": 207.7751007080078 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 263.4848937988281, + "y": 191.75819396972656 + }, + "direction": 0.6053746938705444, + "dropPoint": { + "x": 241.2502899169922, + "y": 176.37059020996094 + }, + "position": { + "x": 217.71189880371094, + "y": 160.08070373535156 + }, + "predictedTarget": { + "x": 290.565185546875, + "y": 207.72509765625 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 264.7369689941406, + "y": 192.58480834960938 + }, + "direction": 0.604800820350647, + "dropPoint": { + "x": 241.31930541992188, + "y": 176.39833068847656 + }, + "position": { + "x": 218.94581604003906, + "y": 160.93359375 + }, + "predictedTarget": { + "x": 290.4751892089844, + "y": 207.6750946044922 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 265.9892578125, + "y": 193.41111755371094 + }, + "direction": 0.6042355895042419, + "dropPoint": { + "x": 241.38619995117188, + "y": 176.4258270263672 + }, + "position": { + "x": 220.1802215576172, + "y": 161.78579711914063 + }, + "predictedTarget": { + "x": 290.3851623535156, + "y": 207.62509155273438 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 267.241943359375, + "y": 194.23683166503906 + }, + "direction": 0.6036728024482727, + "dropPoint": { + "x": 241.45126342773438, + "y": 176.4530792236328 + }, + "position": { + "x": 221.41510009765625, + "y": 162.63729858398438 + }, + "predictedTarget": { + "x": 290.295166015625, + "y": 207.57510375976563 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 268.49493408203125, + "y": 195.06207275390625 + }, + "direction": 0.603114664554596, + "dropPoint": { + "x": 241.5143585205078, + "y": 176.48004150390625 + }, + "position": { + "x": 222.6504669189453, + "y": 163.4881134033203 + }, + "predictedTarget": { + "x": 290.2051696777344, + "y": 207.5251007080078 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 269.7481689453125, + "y": 195.88690185546875 + }, + "direction": 0.6025630235671997, + "dropPoint": { + "x": 241.57554626464844, + "y": 176.5067901611328 + }, + "position": { + "x": 223.88629150390625, + "y": 164.33824157714844 + }, + "predictedTarget": { + "x": 290.11517333984375, + "y": 207.47509765625 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 271.0015869140625, + "y": 196.71142578125 + }, + "direction": 0.6020195484161377, + "dropPoint": { + "x": 241.6345977783203, + "y": 176.533203125 + }, + "position": { + "x": 225.12258911132813, + "y": 165.1876983642578 + }, + "predictedTarget": { + "x": 290.0251770019531, + "y": 207.4250946044922 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 272.26605224609375, + "y": 197.51986694335938 + }, + "direction": 0.6011489629745483, + "dropPoint": { + "x": 241.6147003173828, + "y": 176.49839782714844 + }, + "position": { + "x": 226.359619140625, + "y": 166.0360870361328 + }, + "predictedTarget": { + "x": 289.9351501464844, + "y": 207.37509155273438 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 273.5310363769531, + "y": 198.32748413085938 + }, + "direction": 0.6002844572067261, + "dropPoint": { + "x": 241.5950164794922, + "y": 176.46554565429688 + }, + "position": { + "x": 227.59738159179688, + "y": 166.88340759277344 + }, + "predictedTarget": { + "x": 289.84515380859375, + "y": 207.32510375976563 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 274.7965087890625, + "y": 199.13424682617188 + }, + "direction": 0.5994250178337097, + "dropPoint": { + "x": 241.5755615234375, + "y": 176.43460083007813 + }, + "position": { + "x": 228.83587646484375, + "y": 167.7296600341797 + }, + "predictedTarget": { + "x": 289.7551574707031, + "y": 207.2751007080078 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 276.0625, + "y": 199.94027709960938 + }, + "direction": 0.5985727906227112, + "dropPoint": { + "x": 241.55630493164063, + "y": 176.40554809570313 + }, + "position": { + "x": 230.07508850097656, + "y": 168.57485961914063 + }, + "predictedTarget": { + "x": 289.6651611328125, + "y": 207.22509765625 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 277.3289489746094, + "y": 200.74546813964844 + }, + "direction": 0.5977261066436768, + "dropPoint": { + "x": 241.53729248046875, + "y": 176.3783721923828 + }, + "position": { + "x": 231.3150177001953, + "y": 169.41900634765625 + }, + "predictedTarget": { + "x": 289.5751647949219, + "y": 207.1750946044922 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 278.59588623046875, + "y": 201.54991149902344 + }, + "direction": 0.5968859195709229, + "dropPoint": { + "x": 241.5185089111328, + "y": 176.35304260253906 + }, + "position": { + "x": 232.55564880371094, + "y": 170.26211547851563 + }, + "predictedTarget": { + "x": 289.48516845703125, + "y": 207.12509155273438 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 279.86334228515625, + "y": 202.35350036621094 + }, + "direction": 0.5960504412651062, + "dropPoint": { + "x": 241.49998474121094, + "y": 176.3295440673828 + }, + "position": { + "x": 233.79698181152344, + "y": 171.10418701171875 + }, + "predictedTarget": { + "x": 289.3951721191406, + "y": 207.07510375976563 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 281.13116455078125, + "y": 203.15650939941406 + }, + "direction": 0.5952247977256775, + "dropPoint": { + "x": 241.48170471191406, + "y": 176.30789184570313 + }, + "position": { + "x": 235.0390167236328, + "y": 171.9452362060547 + }, + "predictedTarget": { + "x": 289.3051452636719, + "y": 207.0251007080078 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 282.3994140625, + "y": 203.9588165283203 + }, + "direction": 0.59440678358078, + "dropPoint": { + "x": 241.46371459960938, + "y": 176.28805541992188 + }, + "position": { + "x": 236.28173828125, + "y": 172.78526306152344 + }, + "predictedTarget": { + "x": 289.21514892578125, + "y": 206.97509765625 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 283.6680908203125, + "y": 204.76040649414063 + }, + "direction": 0.5935952663421631, + "dropPoint": { + "x": 241.44601440429688, + "y": 176.26998901367188 + }, + "position": { + "x": 237.525146484375, + "y": 173.62428283691406 + }, + "predictedTarget": { + "x": 289.1251525878906, + "y": 206.9250946044922 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 284.94158935546875, + "y": 205.55474853515625 + }, + "direction": 0.5926529169082642, + "dropPoint": { + "x": 241.42474365234375, + "y": 176.2502899169922 + }, + "position": { + "x": 238.7693328857422, + "y": 174.46212768554688 + }, + "predictedTarget": { + "x": 289.03515625, + "y": 206.87509155273438 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 286.21563720703125, + "y": 206.34823608398438 + }, + "direction": 0.5917176604270935, + "dropPoint": { + "x": 241.40347290039063, + "y": 176.23239135742188 + }, + "position": { + "x": 240.01431274414063, + "y": 175.29881286621094 + }, + "predictedTarget": { + "x": 288.9451599121094, + "y": 206.82510375976563 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 287.4902038574219, + "y": 207.140869140625 + }, + "direction": 0.5907895565032959, + "dropPoint": { + "x": 241.3826446533203, + "y": 176.216552734375 + }, + "position": { + "x": 241.26007080078125, + "y": 176.13433837890625 + }, + "predictedTarget": { + "x": 288.8651123046875, + "y": 206.76513671875 + }, + "state": 4, + "targetIndex": 0 + } + ], + "totalSteps": 245 +} \ No newline at end of file From 25e40f2b174e170ff03c0e44c3e88618a1885e1a Mon Sep 17 00:00:00 2001 From: blinker Date: Sat, 30 May 2026 09:53:08 +0000 Subject: [PATCH 04/12] [FEATURE] hw08 stl: remove simulation.json output file --- simulation.json | 5150 ----------------------------------------------- 1 file changed, 5150 deletions(-) delete mode 100644 simulation.json diff --git a/simulation.json b/simulation.json deleted file mode 100644 index 41ba630..0000000 --- a/simulation.json +++ /dev/null @@ -1,5150 +0,0 @@ -{ - "steps": [ - { - "aimPoint": { - "x": 0.0, - "y": 0.0 - }, - "direction": 0.0, - "dropPoint": { - "x": 0.0, - "y": 0.0 - }, - "position": { - "x": 0.0, - "y": 0.0 - }, - "predictedTarget": { - "x": 0.0, - "y": 0.0 - }, - "state": 0, - "targetIndex": -1 - }, - { - "aimPoint": { - "x": 55.59577178955078, - "y": 2.782107353210449 - }, - "direction": 0.05000000074505806, - "dropPoint": { - "x": 269.4673156738281, - "y": 189.50930786132813 - }, - "position": { - "x": 0.0, - "y": 0.0 - }, - "predictedTarget": { - "x": 313.42510986328125, - "y": 204.42483520507813 - }, - "state": 3, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 55.38724136352539, - "y": 5.557260990142822 - }, - "direction": 0.10000000149011612, - "dropPoint": { - "x": 268.9606628417969, - "y": 189.54702758789063 - }, - "position": { - "x": 0.0, - "y": 0.0 - }, - "predictedTarget": { - "x": 313.3751220703125, - "y": 204.49484252929688 - }, - "state": 3, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 55.04027557373047, - "y": 8.318524360656738 - }, - "direction": 0.15000000596046448, - "dropPoint": { - "x": 268.4532165527344, - "y": 189.5845947265625 - }, - "position": { - "x": 0.0, - "y": 0.0 - }, - "predictedTarget": { - "x": 313.3251037597656, - "y": 204.56483459472656 - }, - "state": 3, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 54.55573654174805, - "y": 11.058995246887207 - }, - "direction": 0.20000000298023224, - "dropPoint": { - "x": 267.9465637207031, - "y": 189.62217712402344 - }, - "position": { - "x": 0.0, - "y": 0.0 - }, - "predictedTarget": { - "x": 313.2701416015625, - "y": 204.6348419189453 - }, - "state": 3, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 53.934837341308594, - "y": 13.771824836730957 - }, - "direction": 0.25, - "dropPoint": { - "x": 267.43914794921875, - "y": 189.6596221923828 - }, - "position": { - "x": 0.0, - "y": 0.0 - }, - "predictedTarget": { - "x": 313.21014404296875, - "y": 204.704833984375 - }, - "state": 3, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 53.17912673950195, - "y": 16.450231552124023 - }, - "direction": 0.30000001192092896, - "dropPoint": { - "x": 266.9325256347656, - "y": 189.69741821289063 - }, - "position": { - "x": 0.0, - "y": 0.0 - }, - "predictedTarget": { - "x": 313.150146484375, - "y": 204.77484130859375 - }, - "state": 3, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 52.290496826171875, - "y": 19.087522506713867 - }, - "direction": 0.3500000238418579, - "dropPoint": { - "x": 266.42584228515625, - "y": 189.73440551757813 - }, - "position": { - "x": 0.0, - "y": 0.0 - }, - "predictedTarget": { - "x": 313.09014892578125, - "y": 204.84483337402344 - }, - "state": 3, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 51.27116775512695, - "y": 21.677104949951172 - }, - "direction": 0.40000003576278687, - "dropPoint": { - "x": 265.91839599609375, - "y": 189.7716522216797 - }, - "position": { - "x": 0.0, - "y": 0.0 - }, - "predictedTarget": { - "x": 313.0301513671875, - "y": 204.9148406982422 - }, - "state": 3, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 50.123687744140625, - "y": 24.212505340576172 - }, - "direction": 0.4500000476837158, - "dropPoint": { - "x": 265.4117431640625, - "y": 189.8088836669922 - }, - "position": { - "x": 0.0, - "y": 0.0 - }, - "predictedTarget": { - "x": 312.97015380859375, - "y": 204.98483276367188 - }, - "state": 3, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 48.850929260253906, - "y": 26.68738555908203 - }, - "direction": 0.5000000596046448, - "dropPoint": { - "x": 264.904296875, - "y": 189.84600830078125 - }, - "position": { - "x": 0.0, - "y": 0.0 - }, - "predictedTarget": { - "x": 312.91015625, - "y": 205.05484008789063 - }, - "state": 3, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 47.45606231689453, - "y": 29.095565795898438 - }, - "direction": 0.5500000715255737, - "dropPoint": { - "x": 264.39764404296875, - "y": 189.88308715820313 - }, - "position": { - "x": 0.0, - "y": 0.0 - }, - "predictedTarget": { - "x": 312.85015869140625, - "y": 205.1248321533203 - }, - "state": 3, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 45.94258117675781, - "y": 31.43101692199707 - }, - "direction": 0.6000000834465027, - "dropPoint": { - "x": 264.38397216796875, - "y": 189.9552459716797 - }, - "position": { - "x": 0.0, - "y": 0.0 - }, - "predictedTarget": { - "x": 312.7901611328125, - "y": 205.19483947753906 - }, - "state": 3, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 45.21846389770508, - "y": 32.50270080566406 - }, - "direction": 0.6232274174690247, - "dropPoint": { - "x": 264.3702392578125, - "y": 190.0273895263672 - }, - "position": { - "x": 0.01826997846364975, - "y": 0.013132325373589993 - }, - "predictedTarget": { - "x": 312.73016357421875, - "y": 205.26483154296875 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 45.24848175048828, - "y": 32.53804016113281 - }, - "direction": 0.6234280467033386, - "dropPoint": { - "x": 264.35675048828125, - "y": 190.09812927246094 - }, - "position": { - "x": 0.054804664105176926, - "y": 0.039404306560754776 - }, - "predictedTarget": { - "x": 312.6651916503906, - "y": 205.3348388671875 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 45.29686737060547, - "y": 32.58637237548828 - }, - "direction": 0.6236252784729004, - "dropPoint": { - "x": 264.3442077636719, - "y": 190.16819763183594 - }, - "position": { - "x": 0.10959891974925995, - "y": 0.07882308214902878 - }, - "predictedTarget": { - "x": 312.5951843261719, - "y": 205.4048309326172 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 45.36351776123047, - "y": 32.6478385925293 - }, - "direction": 0.6238220930099487, - "dropPoint": { - "x": 264.330322265625, - "y": 190.2371368408203 - }, - "position": { - "x": 0.18264758586883545, - "y": 0.1313958317041397 - }, - "predictedTarget": { - "x": 312.5251770019531, - "y": 205.47483825683594 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 45.448524475097656, - "y": 32.7223014831543 - }, - "direction": 0.6240153908729553, - "dropPoint": { - "x": 264.3174743652344, - "y": 190.30538940429688 - }, - "position": { - "x": 0.27394571900367737, - "y": 0.19712941348552704 - }, - "predictedTarget": { - "x": 312.4551696777344, - "y": 205.54483032226563 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 45.55194854736328, - "y": 32.80970764160156 - }, - "direction": 0.624203622341156, - "dropPoint": { - "x": 264.3055419921875, - "y": 190.37228393554688 - }, - "position": { - "x": 0.38348862528800964, - "y": 0.2760303318500519 - }, - "predictedTarget": { - "x": 312.3851623535156, - "y": 205.61483764648438 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 45.67368698120117, - "y": 32.91017150878906 - }, - "direction": 0.6243893504142761, - "dropPoint": { - "x": 264.29302978515625, - "y": 190.43771362304688 - }, - "position": { - "x": 0.511271595954895, - "y": 0.3681051433086395 - }, - "predictedTarget": { - "x": 312.315185546875, - "y": 205.68482971191406 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 45.8137321472168, - "y": 33.023712158203125 - }, - "direction": 0.6245728731155396, - "dropPoint": { - "x": 264.28076171875, - "y": 190.50244140625 - }, - "position": { - "x": 0.6572899222373962, - "y": 0.4733603000640869 - }, - "predictedTarget": { - "x": 312.24517822265625, - "y": 205.7548370361328 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 45.972103118896484, - "y": 33.150306701660156 - }, - "direction": 0.624753475189209, - "dropPoint": { - "x": 264.2686767578125, - "y": 190.5660858154297 - }, - "position": { - "x": 0.8215391635894775, - "y": 0.5918020009994507 - }, - "predictedTarget": { - "x": 312.1751708984375, - "y": 205.8248291015625 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 46.14044189453125, - "y": 33.30154037475586 - }, - "direction": 0.625186562538147, - "dropPoint": { - "x": 263.7267150878906, - "y": 190.34837341308594 - }, - "position": { - "x": 1.003981351852417, - "y": 0.7234829068183899 - }, - "predictedTarget": { - "x": 312.10516357421875, - "y": 205.89483642578125 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 46.32712173461914, - "y": 33.46578598022461 - }, - "direction": 0.6256144046783447, - "dropPoint": { - "x": 263.1870422363281, - "y": 190.12953186035156 - }, - "position": { - "x": 1.2046056985855103, - "y": 0.8684177994728088 - }, - "predictedTarget": { - "x": 312.03515625, - "y": 205.96482849121094 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 46.531883239746094, - "y": 33.64340591430664 - }, - "direction": 0.6260448098182678, - "dropPoint": { - "x": 262.6467590332031, - "y": 189.9105224609375 - }, - "position": { - "x": 1.4234005212783813, - "y": 1.0266227722167969 - }, - "predictedTarget": { - "x": 311.9651794433594, - "y": 206.0298614501953 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 46.75490951538086, - "y": 33.834144592285156 - }, - "direction": 0.6264716386795044, - "dropPoint": { - "x": 262.1073913574219, - "y": 189.6900177001953 - }, - "position": { - "x": 1.6603550910949707, - "y": 1.1981126070022583 - }, - "predictedTarget": { - "x": 311.8951721191406, - "y": 206.08985900878906 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 46.996150970458984, - "y": 34.0380859375 - }, - "direction": 0.626896321773529, - "dropPoint": { - "x": 261.5698547363281, - "y": 189.46922302246094 - }, - "position": { - "x": 1.9154584407806396, - "y": 1.3829022645950317 - }, - "predictedTarget": { - "x": 311.8251647949219, - "y": 206.1498565673828 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 47.255577087402344, - "y": 34.2552490234375 - }, - "direction": 0.6273191571235657, - "dropPoint": { - "x": 261.033447265625, - "y": 189.24778747558594 - }, - "position": { - "x": 2.188699722290039, - "y": 1.5810067653656006 - }, - "predictedTarget": { - "x": 311.7551574707031, - "y": 206.20985412597656 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 47.53317642211914, - "y": 34.48567199707031 - }, - "direction": 0.6277405023574829, - "dropPoint": { - "x": 260.4974670410156, - "y": 189.02529907226563 - }, - "position": { - "x": 2.4800679683685303, - "y": 1.7924410104751587 - }, - "predictedTarget": { - "x": 311.6851501464844, - "y": 206.2698516845703 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 47.828887939453125, - "y": 34.72941970825195 - }, - "direction": 0.6281616687774658, - "dropPoint": { - "x": 259.962890625, - "y": 188.80294799804688 - }, - "position": { - "x": 2.7895522117614746, - "y": 2.0172202587127686 - }, - "predictedTarget": { - "x": 311.61517333984375, - "y": 206.32986450195313 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 48.14290237426758, - "y": 34.986244201660156 - }, - "direction": 0.6285765767097473, - "dropPoint": { - "x": 259.43115234375, - "y": 188.5794677734375 - }, - "position": { - "x": 3.117142677307129, - "y": 2.2553577423095703 - }, - "predictedTarget": { - "x": 311.545166015625, - "y": 206.38986206054688 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 48.474952697753906, - "y": 35.25650405883789 - }, - "direction": 0.628993034362793, - "dropPoint": { - "x": 258.8993835449219, - "y": 188.35577392578125 - }, - "position": { - "x": 3.4628279209136963, - "y": 2.506869077682495 - }, - "predictedTarget": { - "x": 311.47515869140625, - "y": 206.44985961914063 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 48.814544677734375, - "y": 35.554603576660156 - }, - "direction": 0.6297282576560974, - "dropPoint": { - "x": 258.894775390625, - "y": 188.6397705078125 - }, - "position": { - "x": 3.826512336730957, - "y": 2.771885395050049 - }, - "predictedTarget": { - "x": 311.4051513671875, - "y": 206.50985717773438 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 49.17216491699219, - "y": 35.866119384765625 - }, - "direction": 0.6304612755775452, - "dropPoint": { - "x": 258.889892578125, - "y": 188.92262268066406 - }, - "position": { - "x": 4.208176612854004, - "y": 3.0504322052001953 - }, - "predictedTarget": { - "x": 311.33514404296875, - "y": 206.56985473632813 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 49.548011779785156, - "y": 36.1907844543457 - }, - "direction": 0.6311857104301453, - "dropPoint": { - "x": 258.8869323730469, - "y": 189.20338439941406 - }, - "position": { - "x": 4.607804298400879, - "y": 3.3425328731536865 - }, - "predictedTarget": { - "x": 311.26019287109375, - "y": 206.62985229492188 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 49.94181442260742, - "y": 36.528953552246094 - }, - "direction": 0.6319088935852051, - "dropPoint": { - "x": 258.8837585449219, - "y": 189.4833221435547 - }, - "position": { - "x": 5.025375843048096, - "y": 3.6482129096984863 - }, - "predictedTarget": { - "x": 311.18017578125, - "y": 206.6898651123047 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 50.353660583496094, - "y": 36.880523681640625 - }, - "direction": 0.6326279044151306, - "dropPoint": { - "x": 258.8802795410156, - "y": 189.76126098632813 - }, - "position": { - "x": 5.460873126983643, - "y": 3.967496633529663 - }, - "predictedTarget": { - "x": 311.1001892089844, - "y": 206.74986267089844 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 50.78357696533203, - "y": 37.245452880859375 - }, - "direction": 0.6333412528038025, - "dropPoint": { - "x": 258.8780212402344, - "y": 190.03768920898438 - }, - "position": { - "x": 5.914278507232666, - "y": 4.300407409667969 - }, - "predictedTarget": { - "x": 311.0201721191406, - "y": 206.8098602294922 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 51.231483459472656, - "y": 37.62384033203125 - }, - "direction": 0.6340507864952087, - "dropPoint": { - "x": 258.8762512207031, - "y": 190.31280517578125 - }, - "position": { - "x": 6.3855743408203125, - "y": 4.646968841552734 - }, - "predictedTarget": { - "x": 310.940185546875, - "y": 206.86985778808594 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 51.69749450683594, - "y": 38.01554489135742 - }, - "direction": 0.6347527503967285, - "dropPoint": { - "x": 258.87567138671875, - "y": 190.58558654785156 - }, - "position": { - "x": 6.874744415283203, - "y": 5.007203102111816 - }, - "predictedTarget": { - "x": 310.8601989746094, - "y": 206.9298553466797 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 52.18135452270508, - "y": 38.42091369628906 - }, - "direction": 0.6354542374610901, - "dropPoint": { - "x": 258.8741149902344, - "y": 190.8572235107422 - }, - "position": { - "x": 7.38176965713501, - "y": 5.381134986877441 - }, - "predictedTarget": { - "x": 310.7801818847656, - "y": 206.98985290527344 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 52.68325424194336, - "y": 38.839683532714844 - }, - "direction": 0.636148989200592, - "dropPoint": { - "x": 258.87371826171875, - "y": 191.12681579589844 - }, - "position": { - "x": 7.9066338539123535, - "y": 5.768786430358887 - }, - "predictedTarget": { - "x": 310.7001953125, - "y": 207.0498504638672 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 53.2266845703125, - "y": 39.24006652832031 - }, - "direction": 0.6361350417137146, - "dropPoint": { - "x": 258.58758544921875, - "y": 190.9100799560547 - }, - "position": { - "x": 8.449602127075195, - "y": 6.169797897338867 - }, - "predictedTarget": { - "x": 310.62017822265625, - "y": 207.10984802246094 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 53.78831100463867, - "y": 39.653690338134766 - }, - "direction": 0.6361182928085327, - "dropPoint": { - "x": 258.30206298828125, - "y": 190.69276428222656 - }, - "position": { - "x": 9.010676383972168, - "y": 6.584167003631592 - }, - "predictedTarget": { - "x": 310.5401916503906, - "y": 207.1698455810547 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 54.36809158325195, - "y": 40.080596923828125 - }, - "direction": 0.6361001133918762, - "dropPoint": { - "x": 258.01806640625, - "y": 190.47601318359375 - }, - "position": { - "x": 9.589858055114746, - "y": 7.011892318725586 - }, - "predictedTarget": { - "x": 310.4552307128906, - "y": 207.22486877441406 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 54.96614074707031, - "y": 40.52064895629883 - }, - "direction": 0.6360771656036377, - "dropPoint": { - "x": 257.7354431152344, - "y": 190.25848388671875 - }, - "position": { - "x": 10.187149047851563, - "y": 7.452970027923584 - }, - "predictedTarget": { - "x": 310.365234375, - "y": 207.27487182617188 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 55.582427978515625, - "y": 40.97388458251953 - }, - "direction": 0.6360505223274231, - "dropPoint": { - "x": 257.45513916015625, - "y": 190.04132080078125 - }, - "position": { - "x": 10.80255126953125, - "y": 7.907397270202637 - }, - "predictedTarget": { - "x": 310.27520751953125, - "y": 207.3248748779297 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 56.2169189453125, - "y": 41.440330505371094 - }, - "direction": 0.6360208988189697, - "dropPoint": { - "x": 257.1763610839844, - "y": 189.82418823242188 - }, - "position": { - "x": 11.436067581176758, - "y": 8.375171661376953 - }, - "predictedTarget": { - "x": 310.1852111816406, - "y": 207.3748779296875 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 56.86959457397461, - "y": 41.92003631591797 - }, - "direction": 0.6359893679618835, - "dropPoint": { - "x": 256.8984375, - "y": 189.6070098876953 - }, - "position": { - "x": 12.087699890136719, - "y": 8.856289863586426 - }, - "predictedTarget": { - "x": 310.09521484375, - "y": 207.4248809814453 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 57.54049301147461, - "y": 42.41294479370117 - }, - "direction": 0.6359546780586243, - "dropPoint": { - "x": 256.6221923828125, - "y": 189.38995361328125 - }, - "position": { - "x": 12.757450103759766, - "y": 9.350749969482422 - }, - "predictedTarget": { - "x": 310.0052185058594, - "y": 207.47486877441406 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 58.22964096069336, - "y": 42.919010162353516 - }, - "direction": 0.6359160542488098, - "dropPoint": { - "x": 256.3475646972656, - "y": 189.1726837158203 - }, - "position": { - "x": 13.445321083068848, - "y": 9.85854721069336 - }, - "predictedTarget": { - "x": 309.91522216796875, - "y": 207.52487182617188 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 58.937034606933594, - "y": 43.43825149536133 - }, - "direction": 0.6358739137649536, - "dropPoint": { - "x": 256.0754699707031, - "y": 188.9560089111328 - }, - "position": { - "x": 14.15131664276123, - "y": 10.379677772521973 - }, - "predictedTarget": { - "x": 309.8252258300781, - "y": 207.5748748779297 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 59.64329147338867, - "y": 43.99689483642578 - }, - "direction": 0.6364045739173889, - "dropPoint": { - "x": 255.81396484375, - "y": 188.961181640625 - }, - "position": { - "x": 14.875130653381348, - "y": 10.914554595947266 - }, - "predictedTarget": { - "x": 309.7352294921875, - "y": 207.6248779296875 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 60.36751174926758, - "y": 44.56907653808594 - }, - "direction": 0.636930525302887, - "dropPoint": { - "x": 255.5549774169922, - "y": 188.96554565429688 - }, - "position": { - "x": 15.616751670837402, - "y": 11.463193893432617 - }, - "predictedTarget": { - "x": 309.6452331542969, - "y": 207.6748809814453 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 61.109619140625, - "y": 45.15487289428711 - }, - "direction": 0.6374530792236328, - "dropPoint": { - "x": 255.2970733642578, - "y": 188.96864318847656 - }, - "position": { - "x": 16.37616729736328, - "y": 12.02561092376709 - }, - "predictedTarget": { - "x": 309.5502624511719, - "y": 207.72486877441406 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 61.86961364746094, - "y": 45.754295349121094 - }, - "direction": 0.6379721164703369, - "dropPoint": { - "x": 255.04196166992188, - "y": 188.9716033935547 - }, - "position": { - "x": 17.153364181518555, - "y": 12.601822853088379 - }, - "predictedTarget": { - "x": 309.45025634765625, - "y": 207.77487182617188 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 62.64751434326172, - "y": 46.367332458496094 - }, - "direction": 0.6384868621826172, - "dropPoint": { - "x": 254.78802490234375, - "y": 188.97296142578125 - }, - "position": { - "x": 17.948331832885742, - "y": 13.19184398651123 - }, - "predictedTarget": { - "x": 309.3502502441406, - "y": 207.8248748779297 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 63.44322967529297, - "y": 46.99408721923828 - }, - "direction": 0.6389994621276855, - "dropPoint": { - "x": 254.5360870361328, - "y": 188.97413635253906 - }, - "position": { - "x": 18.761058807373047, - "y": 13.79569149017334 - }, - "predictedTarget": { - "x": 309.250244140625, - "y": 207.8748779296875 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 64.25691223144531, - "y": 47.63435363769531 - }, - "direction": 0.6395049691200256, - "dropPoint": { - "x": 254.28692626953125, - "y": 188.97384643554688 - }, - "position": { - "x": 19.591533660888672, - "y": 14.41337776184082 - }, - "predictedTarget": { - "x": 309.1502380371094, - "y": 207.9248809814453 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 65.08839416503906, - "y": 48.28838348388672 - }, - "direction": 0.6400084495544434, - "dropPoint": { - "x": 254.0391387939453, - "y": 188.9729766845703 - }, - "position": { - "x": 20.43974494934082, - "y": 15.04491901397705 - }, - "predictedTarget": { - "x": 309.0502624511719, - "y": 207.97486877441406 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 65.9377670288086, - "y": 48.956024169921875 - }, - "direction": 0.6405065059661865, - "dropPoint": { - "x": 253.794189453125, - "y": 188.9713134765625 - }, - "position": { - "x": 21.305681228637695, - "y": 15.690328598022461 - }, - "predictedTarget": { - "x": 308.95025634765625, - "y": 208.02487182617188 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 66.80494689941406, - "y": 49.637413024902344 - }, - "direction": 0.6410015821456909, - "dropPoint": { - "x": 253.55072021484375, - "y": 188.96876525878906 - }, - "position": { - "x": 22.189332962036133, - "y": 16.34962272644043 - }, - "predictedTarget": { - "x": 308.8502502441406, - "y": 208.0748748779297 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 67.68942260742188, - "y": 50.33320617675781 - }, - "direction": 0.6415080428123474, - "dropPoint": { - "x": 253.30035400390625, - "y": 188.96424865722656 - }, - "position": { - "x": 23.09067726135254, - "y": 17.0228271484375 - }, - "predictedTarget": { - "x": 308.750244140625, - "y": 208.1248779296875 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 68.59172058105469, - "y": 51.042728424072266 - }, - "direction": 0.6420102119445801, - "dropPoint": { - "x": 253.05227661132813, - "y": 188.9589080810547 - }, - "position": { - "x": 24.009702682495117, - "y": 17.709957122802734 - }, - "predictedTarget": { - "x": 308.6502380371094, - "y": 208.1748809814453 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 69.5118637084961, - "y": 51.76591873168945 - }, - "direction": 0.64250648021698, - "dropPoint": { - "x": 252.8071746826172, - "y": 188.9527587890625 - }, - "position": { - "x": 24.946401596069336, - "y": 18.411026000976563 - }, - "predictedTarget": { - "x": 308.5502624511719, - "y": 208.2198944091797 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 70.44977569580078, - "y": 52.50291442871094 - }, - "direction": 0.6429995894432068, - "dropPoint": { - "x": 252.56375122070313, - "y": 188.9457550048828 - }, - "position": { - "x": 25.900760650634766, - "y": 19.126047134399414 - }, - "predictedTarget": { - "x": 308.45025634765625, - "y": 208.25990295410156 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 71.40547180175781, - "y": 53.25365447998047 - }, - "direction": 0.6434880495071411, - "dropPoint": { - "x": 252.32272338867188, - "y": 188.93789672851563 - }, - "position": { - "x": 26.872770309448242, - "y": 19.85503387451172 - }, - "predictedTarget": { - "x": 308.3502502441406, - "y": 208.29989624023438 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 72.37896728515625, - "y": 54.018150329589844 - }, - "direction": 0.6439716815948486, - "dropPoint": { - "x": 252.08416748046875, - "y": 188.92922973632813 - }, - "position": { - "x": 27.8624210357666, - "y": 20.597999572753906 - }, - "predictedTarget": { - "x": 308.250244140625, - "y": 208.33990478515625 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 73.3702392578125, - "y": 54.79642868041992 - }, - "direction": 0.6444506049156189, - "dropPoint": { - "x": 251.84805297851563, - "y": 188.91973876953125 - }, - "position": { - "x": 28.86970329284668, - "y": 21.354957580566406 - }, - "predictedTarget": { - "x": 308.1502380371094, - "y": 208.37989807128906 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 74.37934112548828, - "y": 55.58840560913086 - }, - "direction": 0.6449230313301086, - "dropPoint": { - "x": 251.61520385742188, - "y": 188.90948486328125 - }, - "position": { - "x": 29.894609451293945, - "y": 22.12591552734375 - }, - "predictedTarget": { - "x": 308.0502624511719, - "y": 208.41990661621094 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 75.40616607666016, - "y": 56.394229888916016 - }, - "direction": 0.6453918814659119, - "dropPoint": { - "x": 251.3841552734375, - "y": 188.89834594726563 - }, - "position": { - "x": 30.9371280670166, - "y": 22.910888671875 - }, - "predictedTarget": { - "x": 307.95025634765625, - "y": 208.45989990234375 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 76.45075988769531, - "y": 57.213844299316406 - }, - "direction": 0.6458555459976196, - "dropPoint": { - "x": 251.15573120117188, - "y": 188.88641357421875 - }, - "position": { - "x": 31.997249603271484, - "y": 23.70988655090332 - }, - "predictedTarget": { - "x": 307.8502502441406, - "y": 208.49990844726563 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 77.54798889160156, - "y": 58.00098419189453 - }, - "direction": 0.6452978253364563, - "dropPoint": { - "x": 251.12982177734375, - "y": 188.67532348632813 - }, - "position": { - "x": 33.0757942199707, - "y": 24.521825790405273 - }, - "predictedTarget": { - "x": 307.750244140625, - "y": 208.53990173339844 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 78.66375732421875, - "y": 58.800865173339844 - }, - "direction": 0.6447363495826721, - "dropPoint": { - "x": 251.1048583984375, - "y": 188.46482849121094 - }, - "position": { - "x": 34.17277526855469, - "y": 25.346681594848633 - }, - "predictedTarget": { - "x": 307.6502380371094, - "y": 208.5799102783203 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 79.79802703857422, - "y": 59.613548278808594 - }, - "direction": 0.6441730856895447, - "dropPoint": { - "x": 251.0808563232422, - "y": 188.25559997558594 - }, - "position": { - "x": 35.288211822509766, - "y": 26.184431076049805 - }, - "predictedTarget": { - "x": 307.5452880859375, - "y": 208.61990356445313 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 80.95085144042969, - "y": 60.43897247314453 - }, - "direction": 0.6436070203781128, - "dropPoint": { - "x": 251.057861328125, - "y": 188.04737854003906 - }, - "position": { - "x": 36.422122955322266, - "y": 27.035051345825195 - }, - "predictedTarget": { - "x": 307.4352722167969, - "y": 208.659912109375 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 82.12224578857422, - "y": 61.27710723876953 - }, - "direction": 0.643038272857666, - "dropPoint": { - "x": 251.03582763671875, - "y": 187.84019470214844 - }, - "position": { - "x": 37.57452392578125, - "y": 27.89851951599121 - }, - "predictedTarget": { - "x": 307.3252868652344, - "y": 208.6999053955078 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 83.31224822998047, - "y": 62.127899169921875 - }, - "direction": 0.6424660682678223, - "dropPoint": { - "x": 251.01473999023438, - "y": 187.63375854492188 - }, - "position": { - "x": 38.74543380737305, - "y": 28.774808883666992 - }, - "predictedTarget": { - "x": 307.21527099609375, - "y": 208.73989868164063 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 84.52082824707031, - "y": 62.99139404296875 - }, - "direction": 0.6418919563293457, - "dropPoint": { - "x": 250.99472045898438, - "y": 187.42877197265625 - }, - "position": { - "x": 39.93486785888672, - "y": 29.663896560668945 - }, - "predictedTarget": { - "x": 307.10528564453125, - "y": 208.7799072265625 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 85.74201965332031, - "y": 63.86302947998047 - }, - "direction": 0.6413147449493408, - "dropPoint": { - "x": 250.97555541992188, - "y": 187.22463989257813 - }, - "position": { - "x": 41.13683319091797, - "y": 30.56127166748047 - }, - "predictedTarget": { - "x": 306.9952697753906, - "y": 208.8199005126953 - }, - "state": 1, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 86.96369934082031, - "y": 64.73397827148438 - }, - "direction": 0.6407380700111389, - "dropPoint": { - "x": 250.95718383789063, - "y": 187.02255249023438 - }, - "position": { - "x": 42.33931350708008, - "y": 31.45795249938965 - }, - "predictedTarget": { - "x": 306.8852844238281, - "y": 208.8599090576172 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 88.18586730957031, - "y": 65.604248046875 - }, - "direction": 0.6401617527008057, - "dropPoint": { - "x": 250.9387969970703, - "y": 186.8218536376953 - }, - "position": { - "x": 43.54231262207031, - "y": 32.353939056396484 - }, - "predictedTarget": { - "x": 306.7752685546875, - "y": 208.89990234375 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 89.3738784790039, - "y": 66.52033996582031 - }, - "direction": 0.6406004428863525, - "dropPoint": { - "x": 250.721435546875, - "y": 186.80133056640625 - }, - "position": { - "x": 44.74491882324219, - "y": 33.25045394897461 - }, - "predictedTarget": { - "x": 306.665283203125, - "y": 208.9398956298828 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 90.56143188476563, - "y": 67.4370346069336 - }, - "direction": 0.6410408020019531, - "dropPoint": { - "x": 250.50473022460938, - "y": 186.78077697753906 - }, - "position": { - "x": 45.94712829589844, - "y": 34.147499084472656 - }, - "predictedTarget": { - "x": 306.5552673339844, - "y": 208.9799041748047 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 91.74873352050781, - "y": 68.35406494140625 - }, - "direction": 0.641477108001709, - "dropPoint": { - "x": 250.29135131835938, - "y": 186.76040649414063 - }, - "position": { - "x": 47.148948669433594, - "y": 35.045066833496094 - }, - "predictedTarget": { - "x": 306.4452819824219, - "y": 209.01492309570313 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 92.9356918334961, - "y": 69.27151489257813 - }, - "direction": 0.6419112086296082, - "dropPoint": { - "x": 250.07992553710938, - "y": 186.73977661132813 - }, - "position": { - "x": 48.350379943847656, - "y": 35.94315719604492 - }, - "predictedTarget": { - "x": 306.33526611328125, - "y": 209.044921875 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 94.12223052978516, - "y": 70.18952178955078 - }, - "direction": 0.6423462629318237, - "dropPoint": { - "x": 249.869873046875, - "y": 186.71946716308594 - }, - "position": { - "x": 49.55141830444336, - "y": 36.84177017211914 - }, - "predictedTarget": { - "x": 306.22528076171875, - "y": 209.07492065429688 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 95.30845642089844, - "y": 71.10792541503906 - }, - "direction": 0.6427786946296692, - "dropPoint": { - "x": 249.66246032714844, - "y": 186.6992950439453 - }, - "position": { - "x": 50.75206756591797, - "y": 37.740901947021484 - }, - "predictedTarget": { - "x": 306.1152648925781, - "y": 209.1049346923828 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 96.49424743652344, - "y": 72.02688598632813 - }, - "direction": 0.6432120203971863, - "dropPoint": { - "x": 249.4564208984375, - "y": 186.67942810058594 - }, - "position": { - "x": 51.952327728271484, - "y": 38.64055633544922 - }, - "predictedTarget": { - "x": 306.0052795410156, - "y": 209.1349334716797 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 97.67972564697266, - "y": 72.94625091552734 - }, - "direction": 0.6436430811882019, - "dropPoint": { - "x": 249.25233459472656, - "y": 186.65933227539063 - }, - "position": { - "x": 53.152198791503906, - "y": 39.54072570800781 - }, - "predictedTarget": { - "x": 305.895263671875, - "y": 209.16493225097656 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 98.86488342285156, - "y": 73.86602020263672 - }, - "direction": 0.6440717577934265, - "dropPoint": { - "x": 249.05023193359375, - "y": 186.63900756835938 - }, - "position": { - "x": 54.3516845703125, - "y": 40.441410064697266 - }, - "predictedTarget": { - "x": 305.7852783203125, - "y": 209.19493103027344 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 100.04971313476563, - "y": 74.78621673583984 - }, - "direction": 0.6444987058639526, - "dropPoint": { - "x": 248.8507537841797, - "y": 186.61911010742188 - }, - "position": { - "x": 55.550785064697266, - "y": 41.34260559082031 - }, - "predictedTarget": { - "x": 305.6752624511719, - "y": 209.2249298095703 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 101.254150390625, - "y": 75.68031311035156 - }, - "direction": 0.6443434357643127, - "dropPoint": { - "x": 248.6236572265625, - "y": 186.4015350341797 - }, - "position": { - "x": 56.75002670288086, - "y": 42.243614196777344 - }, - "predictedTarget": { - "x": 305.5652770996094, - "y": 209.2549285888672 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 102.45875549316406, - "y": 76.57418823242188 - }, - "direction": 0.6441872119903564, - "dropPoint": { - "x": 248.39920043945313, - "y": 186.18606567382813 - }, - "position": { - "x": 57.94940948486328, - "y": 43.14443588256836 - }, - "predictedTarget": { - "x": 305.45526123046875, - "y": 209.28492736816406 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 103.66348266601563, - "y": 77.4678955078125 - }, - "direction": 0.6440315842628479, - "dropPoint": { - "x": 248.17617797851563, - "y": 185.97225952148438 - }, - "position": { - "x": 59.14893341064453, - "y": 44.04507064819336 - }, - "predictedTarget": { - "x": 305.34527587890625, - "y": 209.31492614746094 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 104.86834716796875, - "y": 78.36140441894531 - }, - "direction": 0.6438758969306946, - "dropPoint": { - "x": 247.955810546875, - "y": 185.76083374023438 - }, - "position": { - "x": 60.348594665527344, - "y": 44.945518493652344 - }, - "predictedTarget": { - "x": 305.2352600097656, - "y": 209.3449249267578 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 106.0732421875, - "y": 79.25487518310547 - }, - "direction": 0.64372318983078, - "dropPoint": { - "x": 247.73626708984375, - "y": 185.55130004882813 - }, - "position": { - "x": 61.54839324951172, - "y": 45.84578323364258 - }, - "predictedTarget": { - "x": 305.125244140625, - "y": 209.3749237060547 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 107.27835083007813, - "y": 80.1480712890625 - }, - "direction": 0.6435685157775879, - "dropPoint": { - "x": 247.5194091796875, - "y": 185.34361267089844 - }, - "position": { - "x": 62.74833297729492, - "y": 46.74586486816406 - }, - "predictedTarget": { - "x": 305.0152587890625, - "y": 209.40493774414063 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 108.48360443115234, - "y": 81.04106140136719 - }, - "direction": 0.6434135437011719, - "dropPoint": { - "x": 247.3052215576172, - "y": 185.13827514648438 - }, - "position": { - "x": 63.94841003417969, - "y": 47.64575958251953 - }, - "predictedTarget": { - "x": 304.9052429199219, - "y": 209.4349365234375 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 109.68896484375, - "y": 81.93391418457031 - }, - "direction": 0.6432594656944275, - "dropPoint": { - "x": 247.09243774414063, - "y": 184.93463134765625 - }, - "position": { - "x": 65.14862823486328, - "y": 48.54547119140625 - }, - "predictedTarget": { - "x": 304.7952575683594, - "y": 209.46493530273438 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 110.89447021484375, - "y": 82.8265609741211 - }, - "direction": 0.6431050896644592, - "dropPoint": { - "x": 246.88235473632813, - "y": 184.73333740234375 - }, - "position": { - "x": 66.34898376464844, - "y": 49.44499588012695 - }, - "predictedTarget": { - "x": 304.68524169921875, - "y": 209.49493408203125 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 112.10006713867188, - "y": 83.71910095214844 - }, - "direction": 0.6429525017738342, - "dropPoint": { - "x": 246.6737060546875, - "y": 184.5340118408203 - }, - "position": { - "x": 67.54947662353516, - "y": 50.344337463378906 - }, - "predictedTarget": { - "x": 304.57525634765625, - "y": 209.52493286132813 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 113.28520202636719, - "y": 84.63893127441406 - }, - "direction": 0.6434003114700317, - "dropPoint": { - "x": 246.47802734375, - "y": 184.5125732421875 - }, - "position": { - "x": 68.74956512451172, - "y": 51.24421691894531 - }, - "predictedTarget": { - "x": 304.4652404785156, - "y": 209.554931640625 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 114.46997833251953, - "y": 85.5592269897461 - }, - "direction": 0.6438468098640442, - "dropPoint": { - "x": 246.28433227539063, - "y": 184.4912109375 - }, - "position": { - "x": 69.94925689697266, - "y": 52.144630432128906 - }, - "predictedTarget": { - "x": 304.3552551269531, - "y": 209.58493041992188 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 115.65438842773438, - "y": 86.47998046875 - }, - "direction": 0.6442917585372925, - "dropPoint": { - "x": 246.0926513671875, - "y": 184.46990966796875 - }, - "position": { - "x": 71.14854431152344, - "y": 53.04557800292969 - }, - "predictedTarget": { - "x": 304.2402648925781, - "y": 209.60995483398438 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 116.83854675292969, - "y": 87.40106201171875 - }, - "direction": 0.6447322964668274, - "dropPoint": { - "x": 245.9041748046875, - "y": 184.44879150390625 - }, - "position": { - "x": 72.3474349975586, - "y": 53.94705581665039 - }, - "predictedTarget": { - "x": 304.1202697753906, - "y": 209.6299591064453 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 118.02224731445313, - "y": 88.32272338867188 - }, - "direction": 0.6451742649078369, - "dropPoint": { - "x": 245.71649169921875, - "y": 184.42764282226563 - }, - "position": { - "x": 73.54592895507813, - "y": 54.849063873291016 - }, - "predictedTarget": { - "x": 304.0002746582031, - "y": 209.64996337890625 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 119.20561218261719, - "y": 89.24484252929688 - }, - "direction": 0.6456144452095032, - "dropPoint": { - "x": 245.53089904785156, - "y": 184.40660095214844 - }, - "position": { - "x": 74.74402618408203, - "y": 55.7515983581543 - }, - "predictedTarget": { - "x": 303.8802795410156, - "y": 209.66995239257813 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 120.38861846923828, - "y": 90.16739654541016 - }, - "direction": 0.6460530757904053, - "dropPoint": { - "x": 245.34725952148438, - "y": 184.3856201171875 - }, - "position": { - "x": 75.94172668457031, - "y": 56.654659271240234 - }, - "predictedTarget": { - "x": 303.7602844238281, - "y": 209.68995666503906 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 121.57127380371094, - "y": 91.09040069580078 - }, - "direction": 0.6464900970458984, - "dropPoint": { - "x": 245.1656494140625, - "y": 184.36471557617188 - }, - "position": { - "x": 77.13903045654297, - "y": 57.55824279785156 - }, - "predictedTarget": { - "x": 303.6402893066406, - "y": 209.7099609375 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 122.75363159179688, - "y": 92.01377868652344 - }, - "direction": 0.6469239592552185, - "dropPoint": { - "x": 244.98663330078125, - "y": 184.34393310546875 - }, - "position": { - "x": 78.33594512939453, - "y": 58.462345123291016 - }, - "predictedTarget": { - "x": 303.5202941894531, - "y": 209.72994995117188 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 123.93560028076172, - "y": 92.93765258789063 - }, - "direction": 0.6473575234413147, - "dropPoint": { - "x": 244.80905151367188, - "y": 184.32321166992188 - }, - "position": { - "x": 79.53246307373047, - "y": 59.366966247558594 - }, - "predictedTarget": { - "x": 303.4002990722656, - "y": 209.7499542236328 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 125.15379333496094, - "y": 93.8135986328125 - }, - "direction": 0.6467287540435791, - "dropPoint": { - "x": 244.79144287109375, - "y": 184.1466522216797 - }, - "position": { - "x": 80.72955322265625, - "y": 60.270835876464844 - }, - "predictedTarget": { - "x": 303.2802734375, - "y": 209.76995849609375 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 126.37249755859375, - "y": 94.6888198852539 - }, - "direction": 0.6461009383201599, - "dropPoint": { - "x": 244.77394104003906, - "y": 183.97181701660156 - }, - "position": { - "x": 81.92720794677734, - "y": 61.173954010009766 - }, - "predictedTarget": { - "x": 303.1602783203125, - "y": 209.7899627685547 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 127.59163665771484, - "y": 95.56341552734375 - }, - "direction": 0.6454763412475586, - "dropPoint": { - "x": 244.75653076171875, - "y": 183.79922485351563 - }, - "position": { - "x": 83.12542724609375, - "y": 62.07632064819336 - }, - "predictedTarget": { - "x": 303.0452575683594, - "y": 209.8049774169922 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 128.81126403808594, - "y": 96.4373550415039 - }, - "direction": 0.6448538303375244, - "dropPoint": { - "x": 244.73922729492188, - "y": 183.6286163330078 - }, - "position": { - "x": 84.32421112060547, - "y": 62.977943420410156 - }, - "predictedTarget": { - "x": 302.9352722167969, - "y": 209.81497192382813 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 130.03134155273438, - "y": 97.31063842773438 - }, - "direction": 0.644233763217926, - "dropPoint": { - "x": 244.72201538085938, - "y": 183.4600067138672 - }, - "position": { - "x": 85.52355194091797, - "y": 63.878822326660156 - }, - "predictedTarget": { - "x": 302.82525634765625, - "y": 209.82498168945313 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 131.25192260742188, - "y": 98.1832275390625 - }, - "direction": 0.6436148285865784, - "dropPoint": { - "x": 244.70489501953125, - "y": 183.29310607910156 - }, - "position": { - "x": 86.72344970703125, - "y": 64.77896118164063 - }, - "predictedTarget": { - "x": 302.71527099609375, - "y": 209.83497619628906 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 132.47293090820313, - "y": 99.05520629882813 - }, - "direction": 0.6429991722106934, - "dropPoint": { - "x": 244.68788146972656, - "y": 183.12844848632813 - }, - "position": { - "x": 87.92390441894531, - "y": 65.67835998535156 - }, - "predictedTarget": { - "x": 302.6052551269531, - "y": 209.844970703125 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 133.69442749023438, - "y": 99.92649841308594 - }, - "direction": 0.642384946346283, - "dropPoint": { - "x": 244.67092895507813, - "y": 182.96548461914063 - }, - "position": { - "x": 89.12490844726563, - "y": 66.57701873779297 - }, - "predictedTarget": { - "x": 302.4952697753906, - "y": 209.85498046875 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 134.91632080078125, - "y": 100.79722595214844 - }, - "direction": 0.6417749524116516, - "dropPoint": { - "x": 244.65415954589844, - "y": 182.80502319335938 - }, - "position": { - "x": 90.32646179199219, - "y": 67.47494506835938 - }, - "predictedTarget": { - "x": 302.38525390625, - "y": 209.86497497558594 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 136.13870239257813, - "y": 101.66725158691406 - }, - "direction": 0.6411656141281128, - "dropPoint": { - "x": 244.637451171875, - "y": 182.64605712890625 - }, - "position": { - "x": 91.52855682373047, - "y": 68.37213897705078 - }, - "predictedTarget": { - "x": 302.2752685546875, - "y": 209.87496948242188 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 137.3253173828125, - "y": 102.58517456054688 - }, - "direction": 0.6416184306144714, - "dropPoint": { - "x": 244.4637451171875, - "y": 182.624267578125 - }, - "position": { - "x": 92.7302474975586, - "y": 69.2698745727539 - }, - "predictedTarget": { - "x": 302.1652526855469, - "y": 209.88497924804688 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 138.51162719726563, - "y": 103.50350952148438 - }, - "direction": 0.642068088054657, - "dropPoint": { - "x": 244.29263305664063, - "y": 182.6026611328125 - }, - "position": { - "x": 93.93153381347656, - "y": 70.16815185546875 - }, - "predictedTarget": { - "x": 302.0552673339844, - "y": 209.8949737548828 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 139.69754028320313, - "y": 104.42230987548828 - }, - "direction": 0.6425164341926575, - "dropPoint": { - "x": 244.1229705810547, - "y": 182.58082580566406 - }, - "position": { - "x": 95.13241577148438, - "y": 71.06697082519531 - }, - "predictedTarget": { - "x": 301.9402770996094, - "y": 209.90496826171875 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 140.88311767578125, - "y": 105.34158325195313 - }, - "direction": 0.6429634690284729, - "dropPoint": { - "x": 243.9559326171875, - "y": 182.55963134765625 - }, - "position": { - "x": 96.33290100097656, - "y": 71.96632385253906 - }, - "predictedTarget": { - "x": 301.8202819824219, - "y": 209.91497802734375 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 142.0683135986328, - "y": 106.2613296508789 - }, - "direction": 0.6434094309806824, - "dropPoint": { - "x": 243.7898406982422, - "y": 182.53790283203125 - }, - "position": { - "x": 97.5329818725586, - "y": 72.8662109375 - }, - "predictedTarget": { - "x": 301.7002868652344, - "y": 209.9249725341797 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 143.25318908691406, - "y": 107.18148803710938 - }, - "direction": 0.6438527703285217, - "dropPoint": { - "x": 243.6268310546875, - "y": 182.5168914794922 - }, - "position": { - "x": 98.732666015625, - "y": 73.76663208007813 - }, - "predictedTarget": { - "x": 301.58026123046875, - "y": 209.93496704101563 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 144.437744140625, - "y": 108.10206604003906 - }, - "direction": 0.6442936658859253, - "dropPoint": { - "x": 243.4652862548828, - "y": 182.4954376220703 - }, - "position": { - "x": 99.93195343017578, - "y": 74.6675796508789 - }, - "predictedTarget": { - "x": 301.46026611328125, - "y": 209.94497680664063 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 145.62193298339844, - "y": 109.02308654785156 - }, - "direction": 0.6447329521179199, - "dropPoint": { - "x": 243.30633544921875, - "y": 182.47459411621094 - }, - "position": { - "x": 101.13084411621094, - "y": 75.56905364990234 - }, - "predictedTarget": { - "x": 301.34027099609375, - "y": 209.95497131347656 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 146.80581665039063, - "y": 109.94453430175781 - }, - "direction": 0.6451699733734131, - "dropPoint": { - "x": 243.1488037109375, - "y": 182.45330810546875 - }, - "position": { - "x": 102.32933807373047, - "y": 76.47105407714844 - }, - "predictedTarget": { - "x": 301.22027587890625, - "y": 209.96498107910156 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 147.98931884765625, - "y": 110.86643981933594 - }, - "direction": 0.6456058025360107, - "dropPoint": { - "x": 242.99334716796875, - "y": 182.432373046875 - }, - "position": { - "x": 103.5274429321289, - "y": 77.37358093261719 - }, - "predictedTarget": { - "x": 301.10028076171875, - "y": 209.9749755859375 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 149.20982360839844, - "y": 111.73920440673828 - }, - "direction": 0.6449543237686157, - "dropPoint": { - "x": 242.9764404296875, - "y": 182.27731323242188 - }, - "position": { - "x": 104.72613525390625, - "y": 78.27532196044922 - }, - "predictedTarget": { - "x": 300.9802551269531, - "y": 209.98497009277344 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 150.43077087402344, - "y": 112.611328125 - }, - "direction": 0.6443063020706177, - "dropPoint": { - "x": 242.95962524414063, - "y": 182.12445068359375 - }, - "position": { - "x": 105.92540740966797, - "y": 79.17628479003906 - }, - "predictedTarget": { - "x": 300.8602600097656, - "y": 209.99497985839844 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 151.65220642089844, - "y": 113.48278045654297 - }, - "direction": 0.6436606049537659, - "dropPoint": { - "x": 242.94296264648438, - "y": 181.97360229492188 - }, - "position": { - "x": 107.1252670288086, - "y": 80.07647705078125 - }, - "predictedTarget": { - "x": 300.7402648925781, - "y": 210.0 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 152.87411499023438, - "y": 114.35356140136719 - }, - "direction": 0.6430174708366394, - "dropPoint": { - "x": 242.9263916015625, - "y": 181.82473754882813 - }, - "position": { - "x": 108.32569885253906, - "y": 80.97589874267578 - }, - "predictedTarget": { - "x": 300.6202697753906, - "y": 210.0 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 154.09649658203125, - "y": 115.22366333007813 - }, - "direction": 0.6423768401145935, - "dropPoint": { - "x": 242.90994262695313, - "y": 181.6778564453125 - }, - "position": { - "x": 109.5267105102539, - "y": 81.87454986572266 - }, - "predictedTarget": { - "x": 300.5002746582031, - "y": 210.0 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 155.31939697265625, - "y": 116.09305572509766 - }, - "direction": 0.6417378187179565, - "dropPoint": { - "x": 242.8935546875, - "y": 181.53273010253906 - }, - "position": { - "x": 110.7282943725586, - "y": 82.77243041992188 - }, - "predictedTarget": { - "x": 300.3802795410156, - "y": 210.0 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 156.54269409179688, - "y": 116.96184539794922 - }, - "direction": 0.6411026120185852, - "dropPoint": { - "x": 242.8773193359375, - "y": 181.38983154296875 - }, - "position": { - "x": 111.93045043945313, - "y": 83.66954803466797 - }, - "predictedTarget": { - "x": 300.26025390625, - "y": 210.0 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 157.76651000976563, - "y": 117.82992553710938 - }, - "direction": 0.6404690742492676, - "dropPoint": { - "x": 242.8611602783203, - "y": 181.24868774414063 - }, - "position": { - "x": 113.13317108154297, - "y": 84.56590270996094 - }, - "predictedTarget": { - "x": 300.1402587890625, - "y": 210.0 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 158.99073791503906, - "y": 118.69740295410156 - }, - "direction": 0.6398390531539917, - "dropPoint": { - "x": 242.84515380859375, - "y": 181.10971069335938 - }, - "position": { - "x": 114.33645629882813, - "y": 85.46150207519531 - }, - "predictedTarget": { - "x": 300.020263671875, - "y": 210.0 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 160.21542358398438, - "y": 119.56423950195313 - }, - "direction": 0.6392119526863098, - "dropPoint": { - "x": 242.82928466796875, - "y": 180.97274780273438 - }, - "position": { - "x": 115.5403060913086, - "y": 86.3563461303711 - }, - "predictedTarget": { - "x": 299.9002685546875, - "y": 210.0 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 161.41995239257813, - "y": 120.45814514160156 - }, - "direction": 0.6391916275024414, - "dropPoint": { - "x": 242.83395385742188, - "y": 180.97219848632813 - }, - "position": { - "x": 116.74417114257813, - "y": 87.25116729736328 - }, - "predictedTarget": { - "x": 299.7802734375, - "y": 210.0 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 162.62452697753906, - "y": 121.35203552246094 - }, - "direction": 0.6391711831092834, - "dropPoint": { - "x": 242.83860778808594, - "y": 180.97166442871094 - }, - "position": { - "x": 117.94805908203125, - "y": 88.14596557617188 - }, - "predictedTarget": { - "x": 299.6602783203125, - "y": 210.0 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 163.82911682128906, - "y": 122.24588012695313 - }, - "direction": 0.6391505002975464, - "dropPoint": { - "x": 242.84329223632813, - "y": 180.97113037109375 - }, - "position": { - "x": 119.15196228027344, - "y": 89.04073333740234 - }, - "predictedTarget": { - "x": 299.540283203125, - "y": 209.99502563476563 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 165.03372192382813, - "y": 123.13970184326172 - }, - "direction": 0.6391298770904541, - "dropPoint": { - "x": 242.84791564941406, - "y": 180.97059631347656 - }, - "position": { - "x": 120.35588836669922, - "y": 89.93547821044922 - }, - "predictedTarget": { - "x": 299.4202575683594, - "y": 209.98501586914063 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 166.23837280273438, - "y": 124.03348541259766 - }, - "direction": 0.6391088366508484, - "dropPoint": { - "x": 242.85260009765625, - "y": 180.97007751464844 - }, - "position": { - "x": 121.55982971191406, - "y": 90.8302001953125 - }, - "predictedTarget": { - "x": 299.3002624511719, - "y": 209.9750213623047 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 167.44302368164063, - "y": 124.92724609375 - }, - "direction": 0.6390878558158875, - "dropPoint": { - "x": 242.85720825195313, - "y": 180.9695587158203 - }, - "position": { - "x": 122.76378631591797, - "y": 91.72489929199219 - }, - "predictedTarget": { - "x": 299.1802673339844, - "y": 209.96502685546875 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 168.647705078125, - "y": 125.82096862792969 - }, - "direction": 0.6390665769577026, - "dropPoint": { - "x": 242.86184692382813, - "y": 180.9690399169922 - }, - "position": { - "x": 123.96776580810547, - "y": 92.61956787109375 - }, - "predictedTarget": { - "x": 299.0602722167969, - "y": 209.95501708984375 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 169.8524169921875, - "y": 126.71464538574219 - }, - "direction": 0.6390451788902283, - "dropPoint": { - "x": 242.86647033691406, - "y": 180.96853637695313 - }, - "position": { - "x": 125.17176055908203, - "y": 93.51421356201172 - }, - "predictedTarget": { - "x": 298.9402770996094, - "y": 209.9450225830078 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 171.05714416503906, - "y": 127.60830688476563 - }, - "direction": 0.6390236020088196, - "dropPoint": { - "x": 242.87112426757813, - "y": 180.96804809570313 - }, - "position": { - "x": 126.37577819824219, - "y": 94.40882873535156 - }, - "predictedTarget": { - "x": 298.82025146484375, - "y": 209.9350128173828 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 172.26190185546875, - "y": 128.50192260742188 - }, - "direction": 0.6390019655227661, - "dropPoint": { - "x": 242.875732421875, - "y": 180.96755981445313 - }, - "position": { - "x": 127.57981872558594, - "y": 95.30342102050781 - }, - "predictedTarget": { - "x": 298.70025634765625, - "y": 209.92501831054688 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 173.47238159179688, - "y": 129.38784790039063 - }, - "direction": 0.6388130187988281, - "dropPoint": { - "x": 242.7135009765625, - "y": 180.81326293945313 - }, - "position": { - "x": 128.78402709960938, - "y": 96.19778442382813 - }, - "predictedTarget": { - "x": 298.58026123046875, - "y": 209.91502380371094 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 174.68304443359375, - "y": 130.27352905273438 - }, - "direction": 0.638623833656311, - "dropPoint": { - "x": 242.55384826660156, - "y": 180.66128540039063 - }, - "position": { - "x": 129.9884033203125, - "y": 97.0919189453125 - }, - "predictedTarget": { - "x": 298.46026611328125, - "y": 209.90501403808594 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 175.89382934570313, - "y": 131.15902709960938 - }, - "direction": 0.6384354829788208, - "dropPoint": { - "x": 242.39581298828125, - "y": 180.51112365722656 - }, - "position": { - "x": 131.1929473876953, - "y": 97.98583221435547 - }, - "predictedTarget": { - "x": 298.34027099609375, - "y": 209.89501953125 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 177.10479736328125, - "y": 132.04428100585938 - }, - "direction": 0.6382470726966858, - "dropPoint": { - "x": 242.24038696289063, - "y": 180.36334228515625 - }, - "position": { - "x": 132.3976593017578, - "y": 98.8795166015625 - }, - "predictedTarget": { - "x": 298.2202453613281, - "y": 209.885009765625 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 178.3158721923828, - "y": 132.92938232421875 - }, - "direction": 0.6380603313446045, - "dropPoint": { - "x": 242.0866241455078, - "y": 180.217529296875 - }, - "position": { - "x": 133.6025390625, - "y": 99.7729721069336 - }, - "predictedTarget": { - "x": 298.1002502441406, - "y": 209.87501525878906 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 179.52708435058594, - "y": 133.81430053710938 - }, - "direction": 0.6378740668296814, - "dropPoint": { - "x": 241.93499755859375, - "y": 180.07382202148438 - }, - "position": { - "x": 134.80758666992188, - "y": 100.66620635986328 - }, - "predictedTarget": { - "x": 297.9802551269531, - "y": 209.86502075195313 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 180.73849487304688, - "y": 134.69894409179688 - }, - "direction": 0.6376872658729553, - "dropPoint": { - "x": 241.78541564941406, - "y": 179.93199157714844 - }, - "position": { - "x": 136.01280212402344, - "y": 101.55921173095703 - }, - "predictedTarget": { - "x": 297.8602600097656, - "y": 209.8550262451172 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 181.9500732421875, - "y": 135.5833740234375 - }, - "direction": 0.6375004649162292, - "dropPoint": { - "x": 241.638427734375, - "y": 179.79251098632813 - }, - "position": { - "x": 137.2181854248047, - "y": 102.45199584960938 - }, - "predictedTarget": { - "x": 297.7402648925781, - "y": 209.8450164794922 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 183.1617431640625, - "y": 136.46766662597656 - }, - "direction": 0.6373155117034912, - "dropPoint": { - "x": 241.49313354492188, - "y": 179.655029296875 - }, - "position": { - "x": 138.42373657226563, - "y": 103.34455871582031 - }, - "predictedTarget": { - "x": 297.6202697753906, - "y": 209.83502197265625 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 184.37364196777344, - "y": 137.35162353515625 - }, - "direction": 0.6371285319328308, - "dropPoint": { - "x": 241.350341796875, - "y": 179.51951599121094 - }, - "position": { - "x": 139.6294403076172, - "y": 104.23689270019531 - }, - "predictedTarget": { - "x": 297.5002746582031, - "y": 209.8250274658203 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 185.61962890625, - "y": 138.18948364257813 - }, - "direction": 0.6359432935714722, - "dropPoint": { - "x": 241.4688720703125, - "y": 179.42059326171875 - }, - "position": { - "x": 140.83621215820313, - "y": 105.12779998779297 - }, - "predictedTarget": { - "x": 297.3802795410156, - "y": 209.8150177001953 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 186.86627197265625, - "y": 139.02630615234375 - }, - "direction": 0.6347677707672119, - "dropPoint": { - "x": 241.585205078125, - "y": 179.3236541748047 - }, - "position": { - "x": 142.0440216064453, - "y": 106.01728820800781 - }, - "predictedTarget": { - "x": 297.2602844238281, - "y": 209.80502319335938 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 188.1137237548828, - "y": 139.86190795898438 - }, - "direction": 0.6335975527763367, - "dropPoint": { - "x": 241.70016479492188, - "y": 179.22860717773438 - }, - "position": { - "x": 143.25286865234375, - "y": 106.90535736083984 - }, - "predictedTarget": { - "x": 297.1402587890625, - "y": 209.7900390625 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 189.36187744140625, - "y": 140.69639587402344 - }, - "direction": 0.6324352025985718, - "dropPoint": { - "x": 241.8128662109375, - "y": 179.13516235351563 - }, - "position": { - "x": 144.46275329589844, - "y": 107.79202270507813 - }, - "predictedTarget": { - "x": 297.020263671875, - "y": 209.77005004882813 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 190.61082458496094, - "y": 141.5297088623047 - }, - "direction": 0.631278395652771, - "dropPoint": { - "x": 241.924560546875, - "y": 179.0438690185547 - }, - "position": { - "x": 145.6736602783203, - "y": 108.67729187011719 - }, - "predictedTarget": { - "x": 296.9002685546875, - "y": 209.7500457763672 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 191.8604278564453, - "y": 142.3619842529297 - }, - "direction": 0.6301305890083313, - "dropPoint": { - "x": 242.03367614746094, - "y": 178.95407104492188 - }, - "position": { - "x": 146.88558959960938, - "y": 109.56116485595703 - }, - "predictedTarget": { - "x": 296.7802734375, - "y": 209.73004150390625 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 193.11074829101563, - "y": 143.1931610107422 - }, - "direction": 0.6289900541305542, - "dropPoint": { - "x": 242.14138793945313, - "y": 178.8663330078125 - }, - "position": { - "x": 148.09852600097656, - "y": 110.44365692138672 - }, - "predictedTarget": { - "x": 296.6602783203125, - "y": 209.71005249023438 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 194.3616943359375, - "y": 144.02333068847656 - }, - "direction": 0.6278588175773621, - "dropPoint": { - "x": 242.24691772460938, - "y": 178.78036499023438 - }, - "position": { - "x": 149.3124542236328, - "y": 111.32477569580078 - }, - "predictedTarget": { - "x": 296.5402526855469, - "y": 209.69004821777344 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 195.6133575439453, - "y": 144.85240173339844 - }, - "direction": 0.6267342567443848, - "dropPoint": { - "x": 242.35064697265625, - "y": 178.69602966308594 - }, - "position": { - "x": 150.52737426757813, - "y": 112.20452880859375 - }, - "predictedTarget": { - "x": 296.4202575683594, - "y": 209.6700439453125 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 196.86569213867188, - "y": 145.680419921875 - }, - "direction": 0.6256172060966492, - "dropPoint": { - "x": 242.4529571533203, - "y": 178.61370849609375 - }, - "position": { - "x": 151.74327087402344, - "y": 113.08292388916016 - }, - "predictedTarget": { - "x": 296.3002624511719, - "y": 209.65005493164063 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 198.06602478027344, - "y": 146.5803680419922 - }, - "direction": 0.6260824799537659, - "dropPoint": { - "x": 242.3345489501953, - "y": 178.59234619140625 - }, - "position": { - "x": 152.95877075195313, - "y": 113.96188354492188 - }, - "predictedTarget": { - "x": 296.1802673339844, - "y": 209.6300506591797 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 199.26597595214844, - "y": 147.48080444335938 - }, - "direction": 0.6265462636947632, - "dropPoint": { - "x": 242.21737670898438, - "y": 178.5706787109375 - }, - "position": { - "x": 154.17385864257813, - "y": 114.8414077758789 - }, - "predictedTarget": { - "x": 296.06024169921875, - "y": 209.61004638671875 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 200.46566772460938, - "y": 148.38157653808594 - }, - "direction": 0.6270051598548889, - "dropPoint": { - "x": 242.10302734375, - "y": 178.54940795898438 - }, - "position": { - "x": 155.38853454589844, - "y": 115.72148895263672 - }, - "predictedTarget": { - "x": 295.9452209472656, - "y": 209.5900421142578 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 201.6649627685547, - "y": 149.28289794921875 - }, - "direction": 0.6274639368057251, - "dropPoint": { - "x": 241.9903564453125, - "y": 178.52838134765625 - }, - "position": { - "x": 156.60281372070313, - "y": 116.60212707519531 - }, - "predictedTarget": { - "x": 295.8352355957031, - "y": 209.57005310058594 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 202.8640594482422, - "y": 150.18446350097656 - }, - "direction": 0.6279162168502808, - "dropPoint": { - "x": 241.8800048828125, - "y": 178.50723266601563 - }, - "position": { - "x": 157.8166961669922, - "y": 117.48331451416016 - }, - "predictedTarget": { - "x": 295.7252197265625, - "y": 209.550048828125 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 204.06272888183594, - "y": 151.0865936279297 - }, - "direction": 0.6283690929412842, - "dropPoint": { - "x": 241.7714080810547, - "y": 178.48646545410156 - }, - "position": { - "x": 159.03018188476563, - "y": 118.36505126953125 - }, - "predictedTarget": { - "x": 295.615234375, - "y": 209.53004455566406 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 205.26112365722656, - "y": 151.9890899658203 - }, - "direction": 0.6288180351257324, - "dropPoint": { - "x": 241.66476440429688, - "y": 178.46568298339844 - }, - "position": { - "x": 160.24327087402344, - "y": 119.2473373413086 - }, - "predictedTarget": { - "x": 295.5052185058594, - "y": 209.51004028320313 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 206.45925903320313, - "y": 152.89193725585938 - }, - "direction": 0.6292628049850464, - "dropPoint": { - "x": 241.5601348876953, - "y": 178.4449005126953 - }, - "position": { - "x": 161.45596313476563, - "y": 120.13015747070313 - }, - "predictedTarget": { - "x": 295.3952331542969, - "y": 209.4900360107422 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 207.65704345703125, - "y": 153.79519653320313 - }, - "direction": 0.6297051310539246, - "dropPoint": { - "x": 241.45791625976563, - "y": 178.4246368408203 - }, - "position": { - "x": 162.6682586669922, - "y": 121.01351928710938 - }, - "predictedTarget": { - "x": 295.28521728515625, - "y": 209.4700469970703 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 208.85455322265625, - "y": 154.6988525390625 - }, - "direction": 0.6301445364952087, - "dropPoint": { - "x": 241.3573455810547, - "y": 178.40431213378906 - }, - "position": { - "x": 163.8801727294922, - "y": 121.89741516113281 - }, - "predictedTarget": { - "x": 295.17523193359375, - "y": 209.45004272460938 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 210.09083557128906, - "y": 155.54931640625 - }, - "direction": 0.6294208765029907, - "dropPoint": { - "x": 241.341064453125, - "y": 178.30661010742188 - }, - "position": { - "x": 165.0927276611328, - "y": 122.78043365478516 - }, - "predictedTarget": { - "x": 295.0652160644531, - "y": 209.43003845214844 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 211.3275604248047, - "y": 156.39910888671875 - }, - "direction": 0.6287020444869995, - "dropPoint": { - "x": 241.32492065429688, - "y": 178.21104431152344 - }, - "position": { - "x": 166.305908203125, - "y": 123.6625747680664 - }, - "predictedTarget": { - "x": 294.9552307128906, - "y": 209.4100341796875 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 212.56478881835938, - "y": 157.24815368652344 - }, - "direction": 0.6279865503311157, - "dropPoint": { - "x": 241.3089599609375, - "y": 178.11744689941406 - }, - "position": { - "x": 167.5197296142578, - "y": 124.5438461303711 - }, - "predictedTarget": { - "x": 294.84521484375, - "y": 209.3850555419922 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 213.8025360107422, - "y": 158.09646606445313 - }, - "direction": 0.6272739171981812, - "dropPoint": { - "x": 241.29312133789063, - "y": 178.02569580078125 - }, - "position": { - "x": 168.7341766357422, - "y": 125.42425537109375 - }, - "predictedTarget": { - "x": 294.7352294921875, - "y": 209.3550567626953 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 215.0407257080078, - "y": 158.944091796875 - }, - "direction": 0.6265660524368286, - "dropPoint": { - "x": 241.27745056152344, - "y": 177.93603515625 - }, - "position": { - "x": 169.94924926757813, - "y": 126.30380249023438 - }, - "predictedTarget": { - "x": 294.6252136230469, - "y": 209.32505798339844 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 216.27944946289063, - "y": 159.79092407226563 - }, - "direction": 0.6258596777915955, - "dropPoint": { - "x": 241.26222229003906, - "y": 177.84828186035156 - }, - "position": { - "x": 171.16493225097656, - "y": 127.1824951171875 - }, - "predictedTarget": { - "x": 294.5152282714844, - "y": 209.29505920410156 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 217.51858520507813, - "y": 160.63717651367188 - }, - "direction": 0.6251595616340637, - "dropPoint": { - "x": 241.24688720703125, - "y": 177.76254272460938 - }, - "position": { - "x": 172.38124084472656, - "y": 128.06033325195313 - }, - "predictedTarget": { - "x": 294.40521240234375, - "y": 209.2650604248047 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 218.75814819335938, - "y": 161.48275756835938 - }, - "direction": 0.6244639158248901, - "dropPoint": { - "x": 241.231689453125, - "y": 177.6787567138672 - }, - "position": { - "x": 173.59815979003906, - "y": 128.9373321533203 - }, - "predictedTarget": { - "x": 294.29522705078125, - "y": 209.2350616455078 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 219.99819946289063, - "y": 162.32762145996094 - }, - "direction": 0.6237713694572449, - "dropPoint": { - "x": 241.21664428710938, - "y": 177.5968017578125 - }, - "position": { - "x": 174.81568908691406, - "y": 129.8134765625 - }, - "predictedTarget": { - "x": 294.1852111816406, - "y": 209.20506286621094 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 221.23866271972656, - "y": 163.17189025878906 - }, - "direction": 0.6230842471122742, - "dropPoint": { - "x": 241.20179748535156, - "y": 177.51690673828125 - }, - "position": { - "x": 176.0338134765625, - "y": 130.6887969970703 - }, - "predictedTarget": { - "x": 294.0752258300781, - "y": 209.17506408691406 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 222.4816436767578, - "y": 164.01258850097656 - }, - "direction": 0.6223388910293579, - "dropPoint": { - "x": 241.18548583984375, - "y": 177.4315948486328 - }, - "position": { - "x": 177.25259399414063, - "y": 131.56320190429688 - }, - "predictedTarget": { - "x": 293.9652099609375, - "y": 209.1450653076172 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 223.72506713867188, - "y": 164.8526153564453 - }, - "direction": 0.6215988397598267, - "dropPoint": { - "x": 241.16937255859375, - "y": 177.34841918945313 - }, - "position": { - "x": 178.47201538085938, - "y": 132.43670654296875 - }, - "predictedTarget": { - "x": 293.855224609375, - "y": 209.1150665283203 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 224.968994140625, - "y": 165.69187927246094 - }, - "direction": 0.6208621859550476, - "dropPoint": { - "x": 241.1534423828125, - "y": 177.26718139648438 - }, - "position": { - "x": 179.69207763671875, - "y": 133.30931091308594 - }, - "predictedTarget": { - "x": 293.7452087402344, - "y": 209.08009338378906 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 226.21343994140625, - "y": 166.53036499023438 - }, - "direction": 0.6201287508010864, - "dropPoint": { - "x": 241.1376495361328, - "y": 177.18780517578125 - }, - "position": { - "x": 180.91278076171875, - "y": 134.18101501464844 - }, - "predictedTarget": { - "x": 293.6352233886719, - "y": 209.0400848388672 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 227.458251953125, - "y": 167.36827087402344 - }, - "direction": 0.6194024682044983, - "dropPoint": { - "x": 241.12173461914063, - "y": 177.11044311523438 - }, - "position": { - "x": 182.13412475585938, - "y": 135.0518341064453 - }, - "predictedTarget": { - "x": 293.52520751953125, - "y": 209.00009155273438 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 228.70364379882813, - "y": 168.20535278320313 - }, - "direction": 0.6186779141426086, - "dropPoint": { - "x": 241.1062469482422, - "y": 177.03497314453125 - }, - "position": { - "x": 183.35609436035156, - "y": 135.92176818847656 - }, - "predictedTarget": { - "x": 293.41522216796875, - "y": 208.9600830078125 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 229.94943237304688, - "y": 169.0417938232422 - }, - "direction": 0.617958664894104, - "dropPoint": { - "x": 241.0909881591797, - "y": 176.96156311035156 - }, - "position": { - "x": 184.5786895751953, - "y": 136.79083251953125 - }, - "predictedTarget": { - "x": 293.30523681640625, - "y": 208.9200897216797 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 231.19569396972656, - "y": 169.87754821777344 - }, - "direction": 0.6172440052032471, - "dropPoint": { - "x": 241.07591247558594, - "y": 176.89010620117188 - }, - "position": { - "x": 185.80191040039063, - "y": 137.6590118408203 - }, - "predictedTarget": { - "x": 293.1952209472656, - "y": 208.8800811767578 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 232.44241333007813, - "y": 170.71258544921875 - }, - "direction": 0.6165332198143005, - "dropPoint": { - "x": 241.0609588623047, - "y": 176.82044982910156 - }, - "position": { - "x": 187.02574157714844, - "y": 138.5263214111328 - }, - "predictedTarget": { - "x": 293.0852355957031, - "y": 208.840087890625 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 233.6895294189453, - "y": 171.54702758789063 - }, - "direction": 0.6158285140991211, - "dropPoint": { - "x": 241.0462188720703, - "y": 176.75283813476563 - }, - "position": { - "x": 188.25018310546875, - "y": 139.3927764892578 - }, - "predictedTarget": { - "x": 292.9752197265625, - "y": 208.80007934570313 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 234.91514587402344, - "y": 172.41180419921875 - }, - "direction": 0.6157928109169006, - "dropPoint": { - "x": 241.053466796875, - "y": 176.75514221191406 - }, - "position": { - "x": 189.4746551513672, - "y": 140.25918579101563 - }, - "predictedTarget": { - "x": 292.865234375, - "y": 208.7600860595703 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 236.14080810546875, - "y": 173.2765350341797 - }, - "direction": 0.6157568693161011, - "dropPoint": { - "x": 241.06069946289063, - "y": 176.75747680664063 - }, - "position": { - "x": 190.69915771484375, - "y": 141.12554931640625 - }, - "predictedTarget": { - "x": 292.7552185058594, - "y": 208.72007751464844 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 237.3665008544922, - "y": 174.14120483398438 - }, - "direction": 0.6157205700874329, - "dropPoint": { - "x": 241.0679168701172, - "y": 176.7598419189453 - }, - "position": { - "x": 191.92369079589844, - "y": 141.9918670654297 - }, - "predictedTarget": { - "x": 292.65020751953125, - "y": 208.68008422851563 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 238.59222412109375, - "y": 175.005859375 - }, - "direction": 0.6156848669052124, - "dropPoint": { - "x": 241.07513427734375, - "y": 176.76231384277344 - }, - "position": { - "x": 193.14825439453125, - "y": 142.85813903808594 - }, - "predictedTarget": { - "x": 292.5502014160156, - "y": 208.64007568359375 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 239.818115234375, - "y": 175.87026977539063 - }, - "direction": 0.6156448125839233, - "dropPoint": { - "x": 241.08255004882813, - "y": 176.76467895507813 - }, - "position": { - "x": 194.37286376953125, - "y": 143.724365234375 - }, - "predictedTarget": { - "x": 292.4502258300781, - "y": 208.60008239746094 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 241.04393005371094, - "y": 176.73477172851563 - }, - "direction": 0.6156080961227417, - "dropPoint": { - "x": 241.08973693847656, - "y": 176.76718139648438 - }, - "position": { - "x": 195.59750366210938, - "y": 144.59054565429688 - }, - "predictedTarget": { - "x": 292.3502197265625, - "y": 208.56007385253906 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 242.26983642578125, - "y": 177.59918212890625 - }, - "direction": 0.6155698299407959, - "dropPoint": { - "x": 241.09689331054688, - "y": 176.76962280273438 - }, - "position": { - "x": 196.82217407226563, - "y": 145.45668029785156 - }, - "predictedTarget": { - "x": 292.2502136230469, - "y": 208.52008056640625 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 243.49581909179688, - "y": 178.4634552001953 - }, - "direction": 0.6155300140380859, - "dropPoint": { - "x": 241.10400390625, - "y": 176.77200317382813 - }, - "position": { - "x": 198.046875, - "y": 146.32276916503906 - }, - "predictedTarget": { - "x": 292.15020751953125, - "y": 208.48008728027344 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 244.72178649902344, - "y": 179.32774353027344 - }, - "direction": 0.6154914498329163, - "dropPoint": { - "x": 241.11114501953125, - "y": 176.77456665039063 - }, - "position": { - "x": 199.2716064453125, - "y": 147.18881225585938 - }, - "predictedTarget": { - "x": 292.0502014160156, - "y": 208.44007873535156 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 245.9478759765625, - "y": 180.19186401367188 - }, - "direction": 0.6154505014419556, - "dropPoint": { - "x": 241.1182098388672, - "y": 176.77699279785156 - }, - "position": { - "x": 200.4963836669922, - "y": 148.05479431152344 - }, - "predictedTarget": { - "x": 291.9501953125, - "y": 208.40008544921875 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 247.1988525390625, - "y": 181.02076721191406 - }, - "direction": 0.6146560907363892, - "dropPoint": { - "x": 241.10104370117188, - "y": 176.71649169921875 - }, - "position": { - "x": 201.7218475341797, - "y": 148.91981506347656 - }, - "predictedTarget": { - "x": 291.8502197265625, - "y": 208.36007690429688 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 248.45040893554688, - "y": 181.8487548828125 - }, - "direction": 0.6138636469841003, - "dropPoint": { - "x": 241.08401489257813, - "y": 176.6577606201172 - }, - "position": { - "x": 202.94798278808594, - "y": 149.7838592529297 - }, - "predictedTarget": { - "x": 291.7502136230469, - "y": 208.32008361816406 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 249.70248413085938, - "y": 182.67601013183594 - }, - "direction": 0.6130762100219727, - "dropPoint": { - "x": 241.06716918945313, - "y": 176.6009979248047 - }, - "position": { - "x": 204.1748046875, - "y": 150.64694213867188 - }, - "predictedTarget": { - "x": 291.65020751953125, - "y": 208.2751007080078 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 250.95494079589844, - "y": 183.50259399414063 - }, - "direction": 0.6122961044311523, - "dropPoint": { - "x": 241.05032348632813, - "y": 176.54617309570313 - }, - "position": { - "x": 205.4022979736328, - "y": 151.50906372070313 - }, - "predictedTarget": { - "x": 291.5502014160156, - "y": 208.22509765625 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 252.2079315185547, - "y": 184.32839965820313 - }, - "direction": 0.6115196347236633, - "dropPoint": { - "x": 241.03390502929688, - "y": 176.49334716796875 - }, - "position": { - "x": 206.63046264648438, - "y": 152.3702392578125 - }, - "predictedTarget": { - "x": 291.4501953125, - "y": 208.1750946044922 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 253.46145629882813, - "y": 185.15338134765625 - }, - "direction": 0.6107469201087952, - "dropPoint": { - "x": 241.01763916015625, - "y": 176.4423370361328 - }, - "position": { - "x": 207.8592987060547, - "y": 153.23045349121094 - }, - "predictedTarget": { - "x": 291.3502197265625, - "y": 208.12510681152344 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 254.71543884277344, - "y": 185.97763061523438 - }, - "direction": 0.6099790930747986, - "dropPoint": { - "x": 241.00180053710938, - "y": 176.39334106445313 - }, - "position": { - "x": 209.0887908935547, - "y": 154.0897216796875 - }, - "predictedTarget": { - "x": 291.2502136230469, - "y": 208.07510375976563 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 255.96978759765625, - "y": 186.8013153076172 - }, - "direction": 0.609220027923584, - "dropPoint": { - "x": 240.9860382080078, - "y": 176.34629821777344 - }, - "position": { - "x": 210.31893920898438, - "y": 154.94805908203125 - }, - "predictedTarget": { - "x": 291.15020751953125, - "y": 208.0251007080078 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 257.22454833984375, - "y": 187.62435913085938 - }, - "direction": 0.6084669232368469, - "dropPoint": { - "x": 240.97019958496094, - "y": 176.30093383789063 - }, - "position": { - "x": 211.5497283935547, - "y": 155.80548095703125 - }, - "predictedTarget": { - "x": 291.0502014160156, - "y": 207.97509765625 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 258.4797668457031, - "y": 188.44667053222656 - }, - "direction": 0.6077189445495605, - "dropPoint": { - "x": 240.954833984375, - "y": 176.25758361816406 - }, - "position": { - "x": 212.78115844726563, - "y": 156.66197204589844 - }, - "predictedTarget": { - "x": 290.9501953125, - "y": 207.9250946044922 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 259.7305603027344, - "y": 189.27529907226563 - }, - "direction": 0.6071252822875977, - "dropPoint": { - "x": 241.03173828125, - "y": 176.28619384765625 - }, - "position": { - "x": 214.01309204101563, - "y": 157.51773071289063 - }, - "predictedTarget": { - "x": 290.8502197265625, - "y": 207.87510681152344 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 260.98162841796875, - "y": 190.10350036621094 - }, - "direction": 0.6065384745597839, - "dropPoint": { - "x": 241.10643005371094, - "y": 176.31451416015625 - }, - "position": { - "x": 215.2455291748047, - "y": 158.37277221679688 - }, - "predictedTarget": { - "x": 290.7502136230469, - "y": 207.82510375976563 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 262.233154296875, - "y": 190.9310302734375 - }, - "direction": 0.6059526205062866, - "dropPoint": { - "x": 241.1795654296875, - "y": 176.34275817871094 - }, - "position": { - "x": 216.4784698486328, - "y": 159.2270965576172 - }, - "predictedTarget": { - "x": 290.6551818847656, - "y": 207.7751007080078 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 263.4848937988281, - "y": 191.75819396972656 - }, - "direction": 0.6053746938705444, - "dropPoint": { - "x": 241.2502899169922, - "y": 176.37059020996094 - }, - "position": { - "x": 217.71189880371094, - "y": 160.08070373535156 - }, - "predictedTarget": { - "x": 290.565185546875, - "y": 207.72509765625 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 264.7369689941406, - "y": 192.58480834960938 - }, - "direction": 0.604800820350647, - "dropPoint": { - "x": 241.31930541992188, - "y": 176.39833068847656 - }, - "position": { - "x": 218.94581604003906, - "y": 160.93359375 - }, - "predictedTarget": { - "x": 290.4751892089844, - "y": 207.6750946044922 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 265.9892578125, - "y": 193.41111755371094 - }, - "direction": 0.6042355895042419, - "dropPoint": { - "x": 241.38619995117188, - "y": 176.4258270263672 - }, - "position": { - "x": 220.1802215576172, - "y": 161.78579711914063 - }, - "predictedTarget": { - "x": 290.3851623535156, - "y": 207.62509155273438 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 267.241943359375, - "y": 194.23683166503906 - }, - "direction": 0.6036728024482727, - "dropPoint": { - "x": 241.45126342773438, - "y": 176.4530792236328 - }, - "position": { - "x": 221.41510009765625, - "y": 162.63729858398438 - }, - "predictedTarget": { - "x": 290.295166015625, - "y": 207.57510375976563 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 268.49493408203125, - "y": 195.06207275390625 - }, - "direction": 0.603114664554596, - "dropPoint": { - "x": 241.5143585205078, - "y": 176.48004150390625 - }, - "position": { - "x": 222.6504669189453, - "y": 163.4881134033203 - }, - "predictedTarget": { - "x": 290.2051696777344, - "y": 207.5251007080078 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 269.7481689453125, - "y": 195.88690185546875 - }, - "direction": 0.6025630235671997, - "dropPoint": { - "x": 241.57554626464844, - "y": 176.5067901611328 - }, - "position": { - "x": 223.88629150390625, - "y": 164.33824157714844 - }, - "predictedTarget": { - "x": 290.11517333984375, - "y": 207.47509765625 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 271.0015869140625, - "y": 196.71142578125 - }, - "direction": 0.6020195484161377, - "dropPoint": { - "x": 241.6345977783203, - "y": 176.533203125 - }, - "position": { - "x": 225.12258911132813, - "y": 165.1876983642578 - }, - "predictedTarget": { - "x": 290.0251770019531, - "y": 207.4250946044922 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 272.26605224609375, - "y": 197.51986694335938 - }, - "direction": 0.6011489629745483, - "dropPoint": { - "x": 241.6147003173828, - "y": 176.49839782714844 - }, - "position": { - "x": 226.359619140625, - "y": 166.0360870361328 - }, - "predictedTarget": { - "x": 289.9351501464844, - "y": 207.37509155273438 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 273.5310363769531, - "y": 198.32748413085938 - }, - "direction": 0.6002844572067261, - "dropPoint": { - "x": 241.5950164794922, - "y": 176.46554565429688 - }, - "position": { - "x": 227.59738159179688, - "y": 166.88340759277344 - }, - "predictedTarget": { - "x": 289.84515380859375, - "y": 207.32510375976563 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 274.7965087890625, - "y": 199.13424682617188 - }, - "direction": 0.5994250178337097, - "dropPoint": { - "x": 241.5755615234375, - "y": 176.43460083007813 - }, - "position": { - "x": 228.83587646484375, - "y": 167.7296600341797 - }, - "predictedTarget": { - "x": 289.7551574707031, - "y": 207.2751007080078 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 276.0625, - "y": 199.94027709960938 - }, - "direction": 0.5985727906227112, - "dropPoint": { - "x": 241.55630493164063, - "y": 176.40554809570313 - }, - "position": { - "x": 230.07508850097656, - "y": 168.57485961914063 - }, - "predictedTarget": { - "x": 289.6651611328125, - "y": 207.22509765625 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 277.3289489746094, - "y": 200.74546813964844 - }, - "direction": 0.5977261066436768, - "dropPoint": { - "x": 241.53729248046875, - "y": 176.3783721923828 - }, - "position": { - "x": 231.3150177001953, - "y": 169.41900634765625 - }, - "predictedTarget": { - "x": 289.5751647949219, - "y": 207.1750946044922 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 278.59588623046875, - "y": 201.54991149902344 - }, - "direction": 0.5968859195709229, - "dropPoint": { - "x": 241.5185089111328, - "y": 176.35304260253906 - }, - "position": { - "x": 232.55564880371094, - "y": 170.26211547851563 - }, - "predictedTarget": { - "x": 289.48516845703125, - "y": 207.12509155273438 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 279.86334228515625, - "y": 202.35350036621094 - }, - "direction": 0.5960504412651062, - "dropPoint": { - "x": 241.49998474121094, - "y": 176.3295440673828 - }, - "position": { - "x": 233.79698181152344, - "y": 171.10418701171875 - }, - "predictedTarget": { - "x": 289.3951721191406, - "y": 207.07510375976563 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 281.13116455078125, - "y": 203.15650939941406 - }, - "direction": 0.5952247977256775, - "dropPoint": { - "x": 241.48170471191406, - "y": 176.30789184570313 - }, - "position": { - "x": 235.0390167236328, - "y": 171.9452362060547 - }, - "predictedTarget": { - "x": 289.3051452636719, - "y": 207.0251007080078 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 282.3994140625, - "y": 203.9588165283203 - }, - "direction": 0.59440678358078, - "dropPoint": { - "x": 241.46371459960938, - "y": 176.28805541992188 - }, - "position": { - "x": 236.28173828125, - "y": 172.78526306152344 - }, - "predictedTarget": { - "x": 289.21514892578125, - "y": 206.97509765625 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 283.6680908203125, - "y": 204.76040649414063 - }, - "direction": 0.5935952663421631, - "dropPoint": { - "x": 241.44601440429688, - "y": 176.26998901367188 - }, - "position": { - "x": 237.525146484375, - "y": 173.62428283691406 - }, - "predictedTarget": { - "x": 289.1251525878906, - "y": 206.9250946044922 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 284.94158935546875, - "y": 205.55474853515625 - }, - "direction": 0.5926529169082642, - "dropPoint": { - "x": 241.42474365234375, - "y": 176.2502899169922 - }, - "position": { - "x": 238.7693328857422, - "y": 174.46212768554688 - }, - "predictedTarget": { - "x": 289.03515625, - "y": 206.87509155273438 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 286.21563720703125, - "y": 206.34823608398438 - }, - "direction": 0.5917176604270935, - "dropPoint": { - "x": 241.40347290039063, - "y": 176.23239135742188 - }, - "position": { - "x": 240.01431274414063, - "y": 175.29881286621094 - }, - "predictedTarget": { - "x": 288.9451599121094, - "y": 206.82510375976563 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 287.4902038574219, - "y": 207.140869140625 - }, - "direction": 0.5907895565032959, - "dropPoint": { - "x": 241.3826446533203, - "y": 176.216552734375 - }, - "position": { - "x": 241.26007080078125, - "y": 176.13433837890625 - }, - "predictedTarget": { - "x": 288.8651123046875, - "y": 206.76513671875 - }, - "state": 4, - "targetIndex": 0 - } - ], - "totalSteps": 245 -} \ No newline at end of file From af347b437107b134e18022bff667d3a196fe0fa2 Mon Sep 17 00:00:00 2001 From: blinker Date: Mon, 8 Jun 2026 17:44:38 +0000 Subject: [PATCH 05/12] [FEATURE] hw09-state-machine: Fix factory to use unique_ptr instead of pointers --- .../include/config_loaders/factory.hpp | 7 +- .../include/mission_processor.hpp | 10 +- .../src/config_loaders/factory.cpp | 12 +- drone_simulation/src/main.cpp | 22 +- drone_simulation/src/mission_processor.cpp | 13 +- simulation.json | 5150 +++++++++++++++++ 6 files changed, 5180 insertions(+), 34 deletions(-) create mode 100644 simulation.json diff --git a/drone_simulation/include/config_loaders/factory.hpp b/drone_simulation/include/config_loaders/factory.hpp index 183a2f2..ba39ef8 100644 --- a/drone_simulation/include/config_loaders/factory.hpp +++ b/drone_simulation/include/config_loaders/factory.hpp @@ -1,5 +1,6 @@ #pragma once #include +#include #include "simulation.hpp" #include "interfaces/ballistic_solver.hpp" #include "interfaces/target_provider.hpp" @@ -9,6 +10,6 @@ enum class SolverType { ANALYTICAL }; enum class ProviderType { JSON }; enum class LoaderType { FILE }; -IBallisticSolver* createSolver(SolverType type, const DroneConfig& config); -ITargetProvider* createProvider(ProviderType type, const std::string path); -IConfigLoader* createLoader(LoaderType type, const std::string c, const std::string a); \ No newline at end of file +std::unique_ptr createSolver(SolverType type, const DroneConfig& config); +std::unique_ptr createProvider(ProviderType type, const std::string path); +std::unique_ptr createLoader(LoaderType type, const std::string c, const std::string a); \ No newline at end of file diff --git a/drone_simulation/include/mission_processor.hpp b/drone_simulation/include/mission_processor.hpp index e904284..bda0577 100644 --- a/drone_simulation/include/mission_processor.hpp +++ b/drone_simulation/include/mission_processor.hpp @@ -6,8 +6,8 @@ class MissionProcessor { const int MAX_STEPS = 10000; - ITargetProvider* targets; - IBallisticSolver* ballisticSolver; + std::unique_ptr targets; + std::unique_ptr ballisticSolver; DroneConfig droneConfig; AmmoParams ammo; DroneMotion droneMotion; @@ -21,12 +21,12 @@ class MissionProcessor { bool hit = false; public: - MissionProcessor(ITargetProvider* targetProvider, IBallisticSolver* solver); + MissionProcessor(std::unique_ptr targetProvider, std::unique_ptr solver); - auto init(IConfigLoader* configLoader) -> void; + auto init(std::unique_ptr configLoader) -> void; auto hasNext() -> bool; auto getCurrentStep() -> int; auto step() -> SimulationStep; auto reset() -> void; - auto changeSolver(IBallisticSolver* ballisticSolver) -> void; + auto changeSolver(std::unique_ptr ballisticSolver) -> void; }; \ No newline at end of file diff --git a/drone_simulation/src/config_loaders/factory.cpp b/drone_simulation/src/config_loaders/factory.cpp index 675266e..23f0f4d 100644 --- a/drone_simulation/src/config_loaders/factory.cpp +++ b/drone_simulation/src/config_loaders/factory.cpp @@ -4,28 +4,28 @@ #include "providers/json_target_provider.hpp" #include "config_loaders/file_config_loader.hpp" -auto createSolver(SolverType type, const DroneConfig& config) -> IBallisticSolver* { +auto createSolver(SolverType type, const DroneConfig& config) -> std::unique_ptr { switch (type) { case SolverType::ANALYTICAL: - return new AnalyticalSolver(config); + return std::make_unique(config); } return nullptr; } -auto createProvider(ProviderType type, const std::string param) -> ITargetProvider* { +auto createProvider(ProviderType type, const std::string param) -> std::unique_ptr { switch (type) { case ProviderType::JSON: - return new JsonTargetProvider(param); + return std::make_unique(param); } return nullptr; } -auto createLoader(LoaderType type, const std::string droneConfigPath, const std::string ammoConfigPath) -> IConfigLoader* { +auto createLoader(LoaderType type, const std::string droneConfigPath, const std::string ammoConfigPath) -> std::unique_ptr { switch (type) { case LoaderType::FILE: - return new FileConfigLoader(droneConfigPath, ammoConfigPath); + return std::make_unique(droneConfigPath, ammoConfigPath); } return nullptr; diff --git a/drone_simulation/src/main.cpp b/drone_simulation/src/main.cpp index 577779e..a76de2b 100644 --- a/drone_simulation/src/main.cpp +++ b/drone_simulation/src/main.cpp @@ -25,10 +25,9 @@ using json = nlohmann::json; auto main(int argc, char* argv[]) -> int { - bool failed = false; - IConfigLoader* loader = nullptr; - ITargetProvider* targets = nullptr; - IBallisticSolver* ballisticSolver = nullptr; + std::unique_ptr loader; + std::unique_ptr targets; + std::unique_ptr ballisticSolver; std::vector simSteps; const std::string configPath = (argc > 1) ? argv[1] : "config.json"; @@ -44,8 +43,8 @@ using json = nlohmann::json; ballisticSolver = createSolver(SolverType::ANALYTICAL, droneConfig); - MissionProcessor missionProcessor(targets, ballisticSolver); - missionProcessor.init(loader); + MissionProcessor missionProcessor(std::move(targets), std::move(ballisticSolver)); + missionProcessor.init(std::move(loader)); //write initial sim data simSteps.push_back({ @@ -69,15 +68,12 @@ using json = nlohmann::json; } writeSimulationJSONFile(simSteps); + + return 0; } catch (const std::exception& error) { LOG("Error: " << error.what()); - failed = true; - } - delete loader; - delete targets; - delete ballisticSolver; - - return failed ? 1 : 0; + return 1; + } } diff --git a/drone_simulation/src/mission_processor.cpp b/drone_simulation/src/mission_processor.cpp index 8b0110d..dea1c45 100644 --- a/drone_simulation/src/mission_processor.cpp +++ b/drone_simulation/src/mission_processor.cpp @@ -3,12 +3,12 @@ #include MissionProcessor::MissionProcessor( - ITargetProvider* targetProvider, - IBallisticSolver* solver -): targets(targetProvider), ballisticSolver(solver) { + std::unique_ptr targetProvider, + std::unique_ptr solver +): targets(std::move(targetProvider)), ballisticSolver(std::move(solver)) { } -auto MissionProcessor::init(IConfigLoader* configLoader) -> void { +auto MissionProcessor::init(std::unique_ptr configLoader) -> void { configLoader->load(); droneConfig = configLoader->getConfig(); ammo = configLoader->getAmmoParams(); @@ -31,7 +31,6 @@ auto MissionProcessor::init(IConfigLoader* configLoader) -> void { }; } - auto MissionProcessor::hasNext() -> bool { return currentStep <= MAX_STEPS && !hit; } @@ -201,6 +200,6 @@ auto MissionProcessor::reset() -> void { }; } -auto MissionProcessor::changeSolver(IBallisticSolver* ballisticSolver) -> void { - this->ballisticSolver = ballisticSolver; +auto MissionProcessor::changeSolver(std::unique_ptr ballisticSolver) -> void { + this->ballisticSolver = std::move(ballisticSolver); } diff --git a/simulation.json b/simulation.json new file mode 100644 index 0000000..41ba630 --- /dev/null +++ b/simulation.json @@ -0,0 +1,5150 @@ +{ + "steps": [ + { + "aimPoint": { + "x": 0.0, + "y": 0.0 + }, + "direction": 0.0, + "dropPoint": { + "x": 0.0, + "y": 0.0 + }, + "position": { + "x": 0.0, + "y": 0.0 + }, + "predictedTarget": { + "x": 0.0, + "y": 0.0 + }, + "state": 0, + "targetIndex": -1 + }, + { + "aimPoint": { + "x": 55.59577178955078, + "y": 2.782107353210449 + }, + "direction": 0.05000000074505806, + "dropPoint": { + "x": 269.4673156738281, + "y": 189.50930786132813 + }, + "position": { + "x": 0.0, + "y": 0.0 + }, + "predictedTarget": { + "x": 313.42510986328125, + "y": 204.42483520507813 + }, + "state": 3, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 55.38724136352539, + "y": 5.557260990142822 + }, + "direction": 0.10000000149011612, + "dropPoint": { + "x": 268.9606628417969, + "y": 189.54702758789063 + }, + "position": { + "x": 0.0, + "y": 0.0 + }, + "predictedTarget": { + "x": 313.3751220703125, + "y": 204.49484252929688 + }, + "state": 3, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 55.04027557373047, + "y": 8.318524360656738 + }, + "direction": 0.15000000596046448, + "dropPoint": { + "x": 268.4532165527344, + "y": 189.5845947265625 + }, + "position": { + "x": 0.0, + "y": 0.0 + }, + "predictedTarget": { + "x": 313.3251037597656, + "y": 204.56483459472656 + }, + "state": 3, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 54.55573654174805, + "y": 11.058995246887207 + }, + "direction": 0.20000000298023224, + "dropPoint": { + "x": 267.9465637207031, + "y": 189.62217712402344 + }, + "position": { + "x": 0.0, + "y": 0.0 + }, + "predictedTarget": { + "x": 313.2701416015625, + "y": 204.6348419189453 + }, + "state": 3, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 53.934837341308594, + "y": 13.771824836730957 + }, + "direction": 0.25, + "dropPoint": { + "x": 267.43914794921875, + "y": 189.6596221923828 + }, + "position": { + "x": 0.0, + "y": 0.0 + }, + "predictedTarget": { + "x": 313.21014404296875, + "y": 204.704833984375 + }, + "state": 3, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 53.17912673950195, + "y": 16.450231552124023 + }, + "direction": 0.30000001192092896, + "dropPoint": { + "x": 266.9325256347656, + "y": 189.69741821289063 + }, + "position": { + "x": 0.0, + "y": 0.0 + }, + "predictedTarget": { + "x": 313.150146484375, + "y": 204.77484130859375 + }, + "state": 3, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 52.290496826171875, + "y": 19.087522506713867 + }, + "direction": 0.3500000238418579, + "dropPoint": { + "x": 266.42584228515625, + "y": 189.73440551757813 + }, + "position": { + "x": 0.0, + "y": 0.0 + }, + "predictedTarget": { + "x": 313.09014892578125, + "y": 204.84483337402344 + }, + "state": 3, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 51.27116775512695, + "y": 21.677104949951172 + }, + "direction": 0.40000003576278687, + "dropPoint": { + "x": 265.91839599609375, + "y": 189.7716522216797 + }, + "position": { + "x": 0.0, + "y": 0.0 + }, + "predictedTarget": { + "x": 313.0301513671875, + "y": 204.9148406982422 + }, + "state": 3, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 50.123687744140625, + "y": 24.212505340576172 + }, + "direction": 0.4500000476837158, + "dropPoint": { + "x": 265.4117431640625, + "y": 189.8088836669922 + }, + "position": { + "x": 0.0, + "y": 0.0 + }, + "predictedTarget": { + "x": 312.97015380859375, + "y": 204.98483276367188 + }, + "state": 3, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 48.850929260253906, + "y": 26.68738555908203 + }, + "direction": 0.5000000596046448, + "dropPoint": { + "x": 264.904296875, + "y": 189.84600830078125 + }, + "position": { + "x": 0.0, + "y": 0.0 + }, + "predictedTarget": { + "x": 312.91015625, + "y": 205.05484008789063 + }, + "state": 3, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 47.45606231689453, + "y": 29.095565795898438 + }, + "direction": 0.5500000715255737, + "dropPoint": { + "x": 264.39764404296875, + "y": 189.88308715820313 + }, + "position": { + "x": 0.0, + "y": 0.0 + }, + "predictedTarget": { + "x": 312.85015869140625, + "y": 205.1248321533203 + }, + "state": 3, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 45.94258117675781, + "y": 31.43101692199707 + }, + "direction": 0.6000000834465027, + "dropPoint": { + "x": 264.38397216796875, + "y": 189.9552459716797 + }, + "position": { + "x": 0.0, + "y": 0.0 + }, + "predictedTarget": { + "x": 312.7901611328125, + "y": 205.19483947753906 + }, + "state": 3, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 45.21846389770508, + "y": 32.50270080566406 + }, + "direction": 0.6232274174690247, + "dropPoint": { + "x": 264.3702392578125, + "y": 190.0273895263672 + }, + "position": { + "x": 0.01826997846364975, + "y": 0.013132325373589993 + }, + "predictedTarget": { + "x": 312.73016357421875, + "y": 205.26483154296875 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 45.24848175048828, + "y": 32.53804016113281 + }, + "direction": 0.6234280467033386, + "dropPoint": { + "x": 264.35675048828125, + "y": 190.09812927246094 + }, + "position": { + "x": 0.054804664105176926, + "y": 0.039404306560754776 + }, + "predictedTarget": { + "x": 312.6651916503906, + "y": 205.3348388671875 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 45.29686737060547, + "y": 32.58637237548828 + }, + "direction": 0.6236252784729004, + "dropPoint": { + "x": 264.3442077636719, + "y": 190.16819763183594 + }, + "position": { + "x": 0.10959891974925995, + "y": 0.07882308214902878 + }, + "predictedTarget": { + "x": 312.5951843261719, + "y": 205.4048309326172 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 45.36351776123047, + "y": 32.6478385925293 + }, + "direction": 0.6238220930099487, + "dropPoint": { + "x": 264.330322265625, + "y": 190.2371368408203 + }, + "position": { + "x": 0.18264758586883545, + "y": 0.1313958317041397 + }, + "predictedTarget": { + "x": 312.5251770019531, + "y": 205.47483825683594 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 45.448524475097656, + "y": 32.7223014831543 + }, + "direction": 0.6240153908729553, + "dropPoint": { + "x": 264.3174743652344, + "y": 190.30538940429688 + }, + "position": { + "x": 0.27394571900367737, + "y": 0.19712941348552704 + }, + "predictedTarget": { + "x": 312.4551696777344, + "y": 205.54483032226563 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 45.55194854736328, + "y": 32.80970764160156 + }, + "direction": 0.624203622341156, + "dropPoint": { + "x": 264.3055419921875, + "y": 190.37228393554688 + }, + "position": { + "x": 0.38348862528800964, + "y": 0.2760303318500519 + }, + "predictedTarget": { + "x": 312.3851623535156, + "y": 205.61483764648438 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 45.67368698120117, + "y": 32.91017150878906 + }, + "direction": 0.6243893504142761, + "dropPoint": { + "x": 264.29302978515625, + "y": 190.43771362304688 + }, + "position": { + "x": 0.511271595954895, + "y": 0.3681051433086395 + }, + "predictedTarget": { + "x": 312.315185546875, + "y": 205.68482971191406 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 45.8137321472168, + "y": 33.023712158203125 + }, + "direction": 0.6245728731155396, + "dropPoint": { + "x": 264.28076171875, + "y": 190.50244140625 + }, + "position": { + "x": 0.6572899222373962, + "y": 0.4733603000640869 + }, + "predictedTarget": { + "x": 312.24517822265625, + "y": 205.7548370361328 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 45.972103118896484, + "y": 33.150306701660156 + }, + "direction": 0.624753475189209, + "dropPoint": { + "x": 264.2686767578125, + "y": 190.5660858154297 + }, + "position": { + "x": 0.8215391635894775, + "y": 0.5918020009994507 + }, + "predictedTarget": { + "x": 312.1751708984375, + "y": 205.8248291015625 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 46.14044189453125, + "y": 33.30154037475586 + }, + "direction": 0.625186562538147, + "dropPoint": { + "x": 263.7267150878906, + "y": 190.34837341308594 + }, + "position": { + "x": 1.003981351852417, + "y": 0.7234829068183899 + }, + "predictedTarget": { + "x": 312.10516357421875, + "y": 205.89483642578125 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 46.32712173461914, + "y": 33.46578598022461 + }, + "direction": 0.6256144046783447, + "dropPoint": { + "x": 263.1870422363281, + "y": 190.12953186035156 + }, + "position": { + "x": 1.2046056985855103, + "y": 0.8684177994728088 + }, + "predictedTarget": { + "x": 312.03515625, + "y": 205.96482849121094 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 46.531883239746094, + "y": 33.64340591430664 + }, + "direction": 0.6260448098182678, + "dropPoint": { + "x": 262.6467590332031, + "y": 189.9105224609375 + }, + "position": { + "x": 1.4234005212783813, + "y": 1.0266227722167969 + }, + "predictedTarget": { + "x": 311.9651794433594, + "y": 206.0298614501953 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 46.75490951538086, + "y": 33.834144592285156 + }, + "direction": 0.6264716386795044, + "dropPoint": { + "x": 262.1073913574219, + "y": 189.6900177001953 + }, + "position": { + "x": 1.6603550910949707, + "y": 1.1981126070022583 + }, + "predictedTarget": { + "x": 311.8951721191406, + "y": 206.08985900878906 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 46.996150970458984, + "y": 34.0380859375 + }, + "direction": 0.626896321773529, + "dropPoint": { + "x": 261.5698547363281, + "y": 189.46922302246094 + }, + "position": { + "x": 1.9154584407806396, + "y": 1.3829022645950317 + }, + "predictedTarget": { + "x": 311.8251647949219, + "y": 206.1498565673828 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 47.255577087402344, + "y": 34.2552490234375 + }, + "direction": 0.6273191571235657, + "dropPoint": { + "x": 261.033447265625, + "y": 189.24778747558594 + }, + "position": { + "x": 2.188699722290039, + "y": 1.5810067653656006 + }, + "predictedTarget": { + "x": 311.7551574707031, + "y": 206.20985412597656 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 47.53317642211914, + "y": 34.48567199707031 + }, + "direction": 0.6277405023574829, + "dropPoint": { + "x": 260.4974670410156, + "y": 189.02529907226563 + }, + "position": { + "x": 2.4800679683685303, + "y": 1.7924410104751587 + }, + "predictedTarget": { + "x": 311.6851501464844, + "y": 206.2698516845703 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 47.828887939453125, + "y": 34.72941970825195 + }, + "direction": 0.6281616687774658, + "dropPoint": { + "x": 259.962890625, + "y": 188.80294799804688 + }, + "position": { + "x": 2.7895522117614746, + "y": 2.0172202587127686 + }, + "predictedTarget": { + "x": 311.61517333984375, + "y": 206.32986450195313 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 48.14290237426758, + "y": 34.986244201660156 + }, + "direction": 0.6285765767097473, + "dropPoint": { + "x": 259.43115234375, + "y": 188.5794677734375 + }, + "position": { + "x": 3.117142677307129, + "y": 2.2553577423095703 + }, + "predictedTarget": { + "x": 311.545166015625, + "y": 206.38986206054688 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 48.474952697753906, + "y": 35.25650405883789 + }, + "direction": 0.628993034362793, + "dropPoint": { + "x": 258.8993835449219, + "y": 188.35577392578125 + }, + "position": { + "x": 3.4628279209136963, + "y": 2.506869077682495 + }, + "predictedTarget": { + "x": 311.47515869140625, + "y": 206.44985961914063 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 48.814544677734375, + "y": 35.554603576660156 + }, + "direction": 0.6297282576560974, + "dropPoint": { + "x": 258.894775390625, + "y": 188.6397705078125 + }, + "position": { + "x": 3.826512336730957, + "y": 2.771885395050049 + }, + "predictedTarget": { + "x": 311.4051513671875, + "y": 206.50985717773438 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 49.17216491699219, + "y": 35.866119384765625 + }, + "direction": 0.6304612755775452, + "dropPoint": { + "x": 258.889892578125, + "y": 188.92262268066406 + }, + "position": { + "x": 4.208176612854004, + "y": 3.0504322052001953 + }, + "predictedTarget": { + "x": 311.33514404296875, + "y": 206.56985473632813 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 49.548011779785156, + "y": 36.1907844543457 + }, + "direction": 0.6311857104301453, + "dropPoint": { + "x": 258.8869323730469, + "y": 189.20338439941406 + }, + "position": { + "x": 4.607804298400879, + "y": 3.3425328731536865 + }, + "predictedTarget": { + "x": 311.26019287109375, + "y": 206.62985229492188 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 49.94181442260742, + "y": 36.528953552246094 + }, + "direction": 0.6319088935852051, + "dropPoint": { + "x": 258.8837585449219, + "y": 189.4833221435547 + }, + "position": { + "x": 5.025375843048096, + "y": 3.6482129096984863 + }, + "predictedTarget": { + "x": 311.18017578125, + "y": 206.6898651123047 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 50.353660583496094, + "y": 36.880523681640625 + }, + "direction": 0.6326279044151306, + "dropPoint": { + "x": 258.8802795410156, + "y": 189.76126098632813 + }, + "position": { + "x": 5.460873126983643, + "y": 3.967496633529663 + }, + "predictedTarget": { + "x": 311.1001892089844, + "y": 206.74986267089844 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 50.78357696533203, + "y": 37.245452880859375 + }, + "direction": 0.6333412528038025, + "dropPoint": { + "x": 258.8780212402344, + "y": 190.03768920898438 + }, + "position": { + "x": 5.914278507232666, + "y": 4.300407409667969 + }, + "predictedTarget": { + "x": 311.0201721191406, + "y": 206.8098602294922 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 51.231483459472656, + "y": 37.62384033203125 + }, + "direction": 0.6340507864952087, + "dropPoint": { + "x": 258.8762512207031, + "y": 190.31280517578125 + }, + "position": { + "x": 6.3855743408203125, + "y": 4.646968841552734 + }, + "predictedTarget": { + "x": 310.940185546875, + "y": 206.86985778808594 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 51.69749450683594, + "y": 38.01554489135742 + }, + "direction": 0.6347527503967285, + "dropPoint": { + "x": 258.87567138671875, + "y": 190.58558654785156 + }, + "position": { + "x": 6.874744415283203, + "y": 5.007203102111816 + }, + "predictedTarget": { + "x": 310.8601989746094, + "y": 206.9298553466797 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 52.18135452270508, + "y": 38.42091369628906 + }, + "direction": 0.6354542374610901, + "dropPoint": { + "x": 258.8741149902344, + "y": 190.8572235107422 + }, + "position": { + "x": 7.38176965713501, + "y": 5.381134986877441 + }, + "predictedTarget": { + "x": 310.7801818847656, + "y": 206.98985290527344 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 52.68325424194336, + "y": 38.839683532714844 + }, + "direction": 0.636148989200592, + "dropPoint": { + "x": 258.87371826171875, + "y": 191.12681579589844 + }, + "position": { + "x": 7.9066338539123535, + "y": 5.768786430358887 + }, + "predictedTarget": { + "x": 310.7001953125, + "y": 207.0498504638672 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 53.2266845703125, + "y": 39.24006652832031 + }, + "direction": 0.6361350417137146, + "dropPoint": { + "x": 258.58758544921875, + "y": 190.9100799560547 + }, + "position": { + "x": 8.449602127075195, + "y": 6.169797897338867 + }, + "predictedTarget": { + "x": 310.62017822265625, + "y": 207.10984802246094 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 53.78831100463867, + "y": 39.653690338134766 + }, + "direction": 0.6361182928085327, + "dropPoint": { + "x": 258.30206298828125, + "y": 190.69276428222656 + }, + "position": { + "x": 9.010676383972168, + "y": 6.584167003631592 + }, + "predictedTarget": { + "x": 310.5401916503906, + "y": 207.1698455810547 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 54.36809158325195, + "y": 40.080596923828125 + }, + "direction": 0.6361001133918762, + "dropPoint": { + "x": 258.01806640625, + "y": 190.47601318359375 + }, + "position": { + "x": 9.589858055114746, + "y": 7.011892318725586 + }, + "predictedTarget": { + "x": 310.4552307128906, + "y": 207.22486877441406 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 54.96614074707031, + "y": 40.52064895629883 + }, + "direction": 0.6360771656036377, + "dropPoint": { + "x": 257.7354431152344, + "y": 190.25848388671875 + }, + "position": { + "x": 10.187149047851563, + "y": 7.452970027923584 + }, + "predictedTarget": { + "x": 310.365234375, + "y": 207.27487182617188 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 55.582427978515625, + "y": 40.97388458251953 + }, + "direction": 0.6360505223274231, + "dropPoint": { + "x": 257.45513916015625, + "y": 190.04132080078125 + }, + "position": { + "x": 10.80255126953125, + "y": 7.907397270202637 + }, + "predictedTarget": { + "x": 310.27520751953125, + "y": 207.3248748779297 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 56.2169189453125, + "y": 41.440330505371094 + }, + "direction": 0.6360208988189697, + "dropPoint": { + "x": 257.1763610839844, + "y": 189.82418823242188 + }, + "position": { + "x": 11.436067581176758, + "y": 8.375171661376953 + }, + "predictedTarget": { + "x": 310.1852111816406, + "y": 207.3748779296875 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 56.86959457397461, + "y": 41.92003631591797 + }, + "direction": 0.6359893679618835, + "dropPoint": { + "x": 256.8984375, + "y": 189.6070098876953 + }, + "position": { + "x": 12.087699890136719, + "y": 8.856289863586426 + }, + "predictedTarget": { + "x": 310.09521484375, + "y": 207.4248809814453 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 57.54049301147461, + "y": 42.41294479370117 + }, + "direction": 0.6359546780586243, + "dropPoint": { + "x": 256.6221923828125, + "y": 189.38995361328125 + }, + "position": { + "x": 12.757450103759766, + "y": 9.350749969482422 + }, + "predictedTarget": { + "x": 310.0052185058594, + "y": 207.47486877441406 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 58.22964096069336, + "y": 42.919010162353516 + }, + "direction": 0.6359160542488098, + "dropPoint": { + "x": 256.3475646972656, + "y": 189.1726837158203 + }, + "position": { + "x": 13.445321083068848, + "y": 9.85854721069336 + }, + "predictedTarget": { + "x": 309.91522216796875, + "y": 207.52487182617188 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 58.937034606933594, + "y": 43.43825149536133 + }, + "direction": 0.6358739137649536, + "dropPoint": { + "x": 256.0754699707031, + "y": 188.9560089111328 + }, + "position": { + "x": 14.15131664276123, + "y": 10.379677772521973 + }, + "predictedTarget": { + "x": 309.8252258300781, + "y": 207.5748748779297 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 59.64329147338867, + "y": 43.99689483642578 + }, + "direction": 0.6364045739173889, + "dropPoint": { + "x": 255.81396484375, + "y": 188.961181640625 + }, + "position": { + "x": 14.875130653381348, + "y": 10.914554595947266 + }, + "predictedTarget": { + "x": 309.7352294921875, + "y": 207.6248779296875 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 60.36751174926758, + "y": 44.56907653808594 + }, + "direction": 0.636930525302887, + "dropPoint": { + "x": 255.5549774169922, + "y": 188.96554565429688 + }, + "position": { + "x": 15.616751670837402, + "y": 11.463193893432617 + }, + "predictedTarget": { + "x": 309.6452331542969, + "y": 207.6748809814453 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 61.109619140625, + "y": 45.15487289428711 + }, + "direction": 0.6374530792236328, + "dropPoint": { + "x": 255.2970733642578, + "y": 188.96864318847656 + }, + "position": { + "x": 16.37616729736328, + "y": 12.02561092376709 + }, + "predictedTarget": { + "x": 309.5502624511719, + "y": 207.72486877441406 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 61.86961364746094, + "y": 45.754295349121094 + }, + "direction": 0.6379721164703369, + "dropPoint": { + "x": 255.04196166992188, + "y": 188.9716033935547 + }, + "position": { + "x": 17.153364181518555, + "y": 12.601822853088379 + }, + "predictedTarget": { + "x": 309.45025634765625, + "y": 207.77487182617188 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 62.64751434326172, + "y": 46.367332458496094 + }, + "direction": 0.6384868621826172, + "dropPoint": { + "x": 254.78802490234375, + "y": 188.97296142578125 + }, + "position": { + "x": 17.948331832885742, + "y": 13.19184398651123 + }, + "predictedTarget": { + "x": 309.3502502441406, + "y": 207.8248748779297 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 63.44322967529297, + "y": 46.99408721923828 + }, + "direction": 0.6389994621276855, + "dropPoint": { + "x": 254.5360870361328, + "y": 188.97413635253906 + }, + "position": { + "x": 18.761058807373047, + "y": 13.79569149017334 + }, + "predictedTarget": { + "x": 309.250244140625, + "y": 207.8748779296875 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 64.25691223144531, + "y": 47.63435363769531 + }, + "direction": 0.6395049691200256, + "dropPoint": { + "x": 254.28692626953125, + "y": 188.97384643554688 + }, + "position": { + "x": 19.591533660888672, + "y": 14.41337776184082 + }, + "predictedTarget": { + "x": 309.1502380371094, + "y": 207.9248809814453 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 65.08839416503906, + "y": 48.28838348388672 + }, + "direction": 0.6400084495544434, + "dropPoint": { + "x": 254.0391387939453, + "y": 188.9729766845703 + }, + "position": { + "x": 20.43974494934082, + "y": 15.04491901397705 + }, + "predictedTarget": { + "x": 309.0502624511719, + "y": 207.97486877441406 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 65.9377670288086, + "y": 48.956024169921875 + }, + "direction": 0.6405065059661865, + "dropPoint": { + "x": 253.794189453125, + "y": 188.9713134765625 + }, + "position": { + "x": 21.305681228637695, + "y": 15.690328598022461 + }, + "predictedTarget": { + "x": 308.95025634765625, + "y": 208.02487182617188 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 66.80494689941406, + "y": 49.637413024902344 + }, + "direction": 0.6410015821456909, + "dropPoint": { + "x": 253.55072021484375, + "y": 188.96876525878906 + }, + "position": { + "x": 22.189332962036133, + "y": 16.34962272644043 + }, + "predictedTarget": { + "x": 308.8502502441406, + "y": 208.0748748779297 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 67.68942260742188, + "y": 50.33320617675781 + }, + "direction": 0.6415080428123474, + "dropPoint": { + "x": 253.30035400390625, + "y": 188.96424865722656 + }, + "position": { + "x": 23.09067726135254, + "y": 17.0228271484375 + }, + "predictedTarget": { + "x": 308.750244140625, + "y": 208.1248779296875 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 68.59172058105469, + "y": 51.042728424072266 + }, + "direction": 0.6420102119445801, + "dropPoint": { + "x": 253.05227661132813, + "y": 188.9589080810547 + }, + "position": { + "x": 24.009702682495117, + "y": 17.709957122802734 + }, + "predictedTarget": { + "x": 308.6502380371094, + "y": 208.1748809814453 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 69.5118637084961, + "y": 51.76591873168945 + }, + "direction": 0.64250648021698, + "dropPoint": { + "x": 252.8071746826172, + "y": 188.9527587890625 + }, + "position": { + "x": 24.946401596069336, + "y": 18.411026000976563 + }, + "predictedTarget": { + "x": 308.5502624511719, + "y": 208.2198944091797 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 70.44977569580078, + "y": 52.50291442871094 + }, + "direction": 0.6429995894432068, + "dropPoint": { + "x": 252.56375122070313, + "y": 188.9457550048828 + }, + "position": { + "x": 25.900760650634766, + "y": 19.126047134399414 + }, + "predictedTarget": { + "x": 308.45025634765625, + "y": 208.25990295410156 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 71.40547180175781, + "y": 53.25365447998047 + }, + "direction": 0.6434880495071411, + "dropPoint": { + "x": 252.32272338867188, + "y": 188.93789672851563 + }, + "position": { + "x": 26.872770309448242, + "y": 19.85503387451172 + }, + "predictedTarget": { + "x": 308.3502502441406, + "y": 208.29989624023438 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 72.37896728515625, + "y": 54.018150329589844 + }, + "direction": 0.6439716815948486, + "dropPoint": { + "x": 252.08416748046875, + "y": 188.92922973632813 + }, + "position": { + "x": 27.8624210357666, + "y": 20.597999572753906 + }, + "predictedTarget": { + "x": 308.250244140625, + "y": 208.33990478515625 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 73.3702392578125, + "y": 54.79642868041992 + }, + "direction": 0.6444506049156189, + "dropPoint": { + "x": 251.84805297851563, + "y": 188.91973876953125 + }, + "position": { + "x": 28.86970329284668, + "y": 21.354957580566406 + }, + "predictedTarget": { + "x": 308.1502380371094, + "y": 208.37989807128906 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 74.37934112548828, + "y": 55.58840560913086 + }, + "direction": 0.6449230313301086, + "dropPoint": { + "x": 251.61520385742188, + "y": 188.90948486328125 + }, + "position": { + "x": 29.894609451293945, + "y": 22.12591552734375 + }, + "predictedTarget": { + "x": 308.0502624511719, + "y": 208.41990661621094 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 75.40616607666016, + "y": 56.394229888916016 + }, + "direction": 0.6453918814659119, + "dropPoint": { + "x": 251.3841552734375, + "y": 188.89834594726563 + }, + "position": { + "x": 30.9371280670166, + "y": 22.910888671875 + }, + "predictedTarget": { + "x": 307.95025634765625, + "y": 208.45989990234375 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 76.45075988769531, + "y": 57.213844299316406 + }, + "direction": 0.6458555459976196, + "dropPoint": { + "x": 251.15573120117188, + "y": 188.88641357421875 + }, + "position": { + "x": 31.997249603271484, + "y": 23.70988655090332 + }, + "predictedTarget": { + "x": 307.8502502441406, + "y": 208.49990844726563 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 77.54798889160156, + "y": 58.00098419189453 + }, + "direction": 0.6452978253364563, + "dropPoint": { + "x": 251.12982177734375, + "y": 188.67532348632813 + }, + "position": { + "x": 33.0757942199707, + "y": 24.521825790405273 + }, + "predictedTarget": { + "x": 307.750244140625, + "y": 208.53990173339844 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 78.66375732421875, + "y": 58.800865173339844 + }, + "direction": 0.6447363495826721, + "dropPoint": { + "x": 251.1048583984375, + "y": 188.46482849121094 + }, + "position": { + "x": 34.17277526855469, + "y": 25.346681594848633 + }, + "predictedTarget": { + "x": 307.6502380371094, + "y": 208.5799102783203 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 79.79802703857422, + "y": 59.613548278808594 + }, + "direction": 0.6441730856895447, + "dropPoint": { + "x": 251.0808563232422, + "y": 188.25559997558594 + }, + "position": { + "x": 35.288211822509766, + "y": 26.184431076049805 + }, + "predictedTarget": { + "x": 307.5452880859375, + "y": 208.61990356445313 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 80.95085144042969, + "y": 60.43897247314453 + }, + "direction": 0.6436070203781128, + "dropPoint": { + "x": 251.057861328125, + "y": 188.04737854003906 + }, + "position": { + "x": 36.422122955322266, + "y": 27.035051345825195 + }, + "predictedTarget": { + "x": 307.4352722167969, + "y": 208.659912109375 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 82.12224578857422, + "y": 61.27710723876953 + }, + "direction": 0.643038272857666, + "dropPoint": { + "x": 251.03582763671875, + "y": 187.84019470214844 + }, + "position": { + "x": 37.57452392578125, + "y": 27.89851951599121 + }, + "predictedTarget": { + "x": 307.3252868652344, + "y": 208.6999053955078 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 83.31224822998047, + "y": 62.127899169921875 + }, + "direction": 0.6424660682678223, + "dropPoint": { + "x": 251.01473999023438, + "y": 187.63375854492188 + }, + "position": { + "x": 38.74543380737305, + "y": 28.774808883666992 + }, + "predictedTarget": { + "x": 307.21527099609375, + "y": 208.73989868164063 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 84.52082824707031, + "y": 62.99139404296875 + }, + "direction": 0.6418919563293457, + "dropPoint": { + "x": 250.99472045898438, + "y": 187.42877197265625 + }, + "position": { + "x": 39.93486785888672, + "y": 29.663896560668945 + }, + "predictedTarget": { + "x": 307.10528564453125, + "y": 208.7799072265625 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 85.74201965332031, + "y": 63.86302947998047 + }, + "direction": 0.6413147449493408, + "dropPoint": { + "x": 250.97555541992188, + "y": 187.22463989257813 + }, + "position": { + "x": 41.13683319091797, + "y": 30.56127166748047 + }, + "predictedTarget": { + "x": 306.9952697753906, + "y": 208.8199005126953 + }, + "state": 1, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 86.96369934082031, + "y": 64.73397827148438 + }, + "direction": 0.6407380700111389, + "dropPoint": { + "x": 250.95718383789063, + "y": 187.02255249023438 + }, + "position": { + "x": 42.33931350708008, + "y": 31.45795249938965 + }, + "predictedTarget": { + "x": 306.8852844238281, + "y": 208.8599090576172 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 88.18586730957031, + "y": 65.604248046875 + }, + "direction": 0.6401617527008057, + "dropPoint": { + "x": 250.9387969970703, + "y": 186.8218536376953 + }, + "position": { + "x": 43.54231262207031, + "y": 32.353939056396484 + }, + "predictedTarget": { + "x": 306.7752685546875, + "y": 208.89990234375 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 89.3738784790039, + "y": 66.52033996582031 + }, + "direction": 0.6406004428863525, + "dropPoint": { + "x": 250.721435546875, + "y": 186.80133056640625 + }, + "position": { + "x": 44.74491882324219, + "y": 33.25045394897461 + }, + "predictedTarget": { + "x": 306.665283203125, + "y": 208.9398956298828 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 90.56143188476563, + "y": 67.4370346069336 + }, + "direction": 0.6410408020019531, + "dropPoint": { + "x": 250.50473022460938, + "y": 186.78077697753906 + }, + "position": { + "x": 45.94712829589844, + "y": 34.147499084472656 + }, + "predictedTarget": { + "x": 306.5552673339844, + "y": 208.9799041748047 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 91.74873352050781, + "y": 68.35406494140625 + }, + "direction": 0.641477108001709, + "dropPoint": { + "x": 250.29135131835938, + "y": 186.76040649414063 + }, + "position": { + "x": 47.148948669433594, + "y": 35.045066833496094 + }, + "predictedTarget": { + "x": 306.4452819824219, + "y": 209.01492309570313 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 92.9356918334961, + "y": 69.27151489257813 + }, + "direction": 0.6419112086296082, + "dropPoint": { + "x": 250.07992553710938, + "y": 186.73977661132813 + }, + "position": { + "x": 48.350379943847656, + "y": 35.94315719604492 + }, + "predictedTarget": { + "x": 306.33526611328125, + "y": 209.044921875 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 94.12223052978516, + "y": 70.18952178955078 + }, + "direction": 0.6423462629318237, + "dropPoint": { + "x": 249.869873046875, + "y": 186.71946716308594 + }, + "position": { + "x": 49.55141830444336, + "y": 36.84177017211914 + }, + "predictedTarget": { + "x": 306.22528076171875, + "y": 209.07492065429688 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 95.30845642089844, + "y": 71.10792541503906 + }, + "direction": 0.6427786946296692, + "dropPoint": { + "x": 249.66246032714844, + "y": 186.6992950439453 + }, + "position": { + "x": 50.75206756591797, + "y": 37.740901947021484 + }, + "predictedTarget": { + "x": 306.1152648925781, + "y": 209.1049346923828 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 96.49424743652344, + "y": 72.02688598632813 + }, + "direction": 0.6432120203971863, + "dropPoint": { + "x": 249.4564208984375, + "y": 186.67942810058594 + }, + "position": { + "x": 51.952327728271484, + "y": 38.64055633544922 + }, + "predictedTarget": { + "x": 306.0052795410156, + "y": 209.1349334716797 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 97.67972564697266, + "y": 72.94625091552734 + }, + "direction": 0.6436430811882019, + "dropPoint": { + "x": 249.25233459472656, + "y": 186.65933227539063 + }, + "position": { + "x": 53.152198791503906, + "y": 39.54072570800781 + }, + "predictedTarget": { + "x": 305.895263671875, + "y": 209.16493225097656 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 98.86488342285156, + "y": 73.86602020263672 + }, + "direction": 0.6440717577934265, + "dropPoint": { + "x": 249.05023193359375, + "y": 186.63900756835938 + }, + "position": { + "x": 54.3516845703125, + "y": 40.441410064697266 + }, + "predictedTarget": { + "x": 305.7852783203125, + "y": 209.19493103027344 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 100.04971313476563, + "y": 74.78621673583984 + }, + "direction": 0.6444987058639526, + "dropPoint": { + "x": 248.8507537841797, + "y": 186.61911010742188 + }, + "position": { + "x": 55.550785064697266, + "y": 41.34260559082031 + }, + "predictedTarget": { + "x": 305.6752624511719, + "y": 209.2249298095703 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 101.254150390625, + "y": 75.68031311035156 + }, + "direction": 0.6443434357643127, + "dropPoint": { + "x": 248.6236572265625, + "y": 186.4015350341797 + }, + "position": { + "x": 56.75002670288086, + "y": 42.243614196777344 + }, + "predictedTarget": { + "x": 305.5652770996094, + "y": 209.2549285888672 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 102.45875549316406, + "y": 76.57418823242188 + }, + "direction": 0.6441872119903564, + "dropPoint": { + "x": 248.39920043945313, + "y": 186.18606567382813 + }, + "position": { + "x": 57.94940948486328, + "y": 43.14443588256836 + }, + "predictedTarget": { + "x": 305.45526123046875, + "y": 209.28492736816406 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 103.66348266601563, + "y": 77.4678955078125 + }, + "direction": 0.6440315842628479, + "dropPoint": { + "x": 248.17617797851563, + "y": 185.97225952148438 + }, + "position": { + "x": 59.14893341064453, + "y": 44.04507064819336 + }, + "predictedTarget": { + "x": 305.34527587890625, + "y": 209.31492614746094 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 104.86834716796875, + "y": 78.36140441894531 + }, + "direction": 0.6438758969306946, + "dropPoint": { + "x": 247.955810546875, + "y": 185.76083374023438 + }, + "position": { + "x": 60.348594665527344, + "y": 44.945518493652344 + }, + "predictedTarget": { + "x": 305.2352600097656, + "y": 209.3449249267578 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 106.0732421875, + "y": 79.25487518310547 + }, + "direction": 0.64372318983078, + "dropPoint": { + "x": 247.73626708984375, + "y": 185.55130004882813 + }, + "position": { + "x": 61.54839324951172, + "y": 45.84578323364258 + }, + "predictedTarget": { + "x": 305.125244140625, + "y": 209.3749237060547 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 107.27835083007813, + "y": 80.1480712890625 + }, + "direction": 0.6435685157775879, + "dropPoint": { + "x": 247.5194091796875, + "y": 185.34361267089844 + }, + "position": { + "x": 62.74833297729492, + "y": 46.74586486816406 + }, + "predictedTarget": { + "x": 305.0152587890625, + "y": 209.40493774414063 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 108.48360443115234, + "y": 81.04106140136719 + }, + "direction": 0.6434135437011719, + "dropPoint": { + "x": 247.3052215576172, + "y": 185.13827514648438 + }, + "position": { + "x": 63.94841003417969, + "y": 47.64575958251953 + }, + "predictedTarget": { + "x": 304.9052429199219, + "y": 209.4349365234375 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 109.68896484375, + "y": 81.93391418457031 + }, + "direction": 0.6432594656944275, + "dropPoint": { + "x": 247.09243774414063, + "y": 184.93463134765625 + }, + "position": { + "x": 65.14862823486328, + "y": 48.54547119140625 + }, + "predictedTarget": { + "x": 304.7952575683594, + "y": 209.46493530273438 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 110.89447021484375, + "y": 82.8265609741211 + }, + "direction": 0.6431050896644592, + "dropPoint": { + "x": 246.88235473632813, + "y": 184.73333740234375 + }, + "position": { + "x": 66.34898376464844, + "y": 49.44499588012695 + }, + "predictedTarget": { + "x": 304.68524169921875, + "y": 209.49493408203125 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 112.10006713867188, + "y": 83.71910095214844 + }, + "direction": 0.6429525017738342, + "dropPoint": { + "x": 246.6737060546875, + "y": 184.5340118408203 + }, + "position": { + "x": 67.54947662353516, + "y": 50.344337463378906 + }, + "predictedTarget": { + "x": 304.57525634765625, + "y": 209.52493286132813 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 113.28520202636719, + "y": 84.63893127441406 + }, + "direction": 0.6434003114700317, + "dropPoint": { + "x": 246.47802734375, + "y": 184.5125732421875 + }, + "position": { + "x": 68.74956512451172, + "y": 51.24421691894531 + }, + "predictedTarget": { + "x": 304.4652404785156, + "y": 209.554931640625 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 114.46997833251953, + "y": 85.5592269897461 + }, + "direction": 0.6438468098640442, + "dropPoint": { + "x": 246.28433227539063, + "y": 184.4912109375 + }, + "position": { + "x": 69.94925689697266, + "y": 52.144630432128906 + }, + "predictedTarget": { + "x": 304.3552551269531, + "y": 209.58493041992188 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 115.65438842773438, + "y": 86.47998046875 + }, + "direction": 0.6442917585372925, + "dropPoint": { + "x": 246.0926513671875, + "y": 184.46990966796875 + }, + "position": { + "x": 71.14854431152344, + "y": 53.04557800292969 + }, + "predictedTarget": { + "x": 304.2402648925781, + "y": 209.60995483398438 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 116.83854675292969, + "y": 87.40106201171875 + }, + "direction": 0.6447322964668274, + "dropPoint": { + "x": 245.9041748046875, + "y": 184.44879150390625 + }, + "position": { + "x": 72.3474349975586, + "y": 53.94705581665039 + }, + "predictedTarget": { + "x": 304.1202697753906, + "y": 209.6299591064453 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 118.02224731445313, + "y": 88.32272338867188 + }, + "direction": 0.6451742649078369, + "dropPoint": { + "x": 245.71649169921875, + "y": 184.42764282226563 + }, + "position": { + "x": 73.54592895507813, + "y": 54.849063873291016 + }, + "predictedTarget": { + "x": 304.0002746582031, + "y": 209.64996337890625 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 119.20561218261719, + "y": 89.24484252929688 + }, + "direction": 0.6456144452095032, + "dropPoint": { + "x": 245.53089904785156, + "y": 184.40660095214844 + }, + "position": { + "x": 74.74402618408203, + "y": 55.7515983581543 + }, + "predictedTarget": { + "x": 303.8802795410156, + "y": 209.66995239257813 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 120.38861846923828, + "y": 90.16739654541016 + }, + "direction": 0.6460530757904053, + "dropPoint": { + "x": 245.34725952148438, + "y": 184.3856201171875 + }, + "position": { + "x": 75.94172668457031, + "y": 56.654659271240234 + }, + "predictedTarget": { + "x": 303.7602844238281, + "y": 209.68995666503906 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 121.57127380371094, + "y": 91.09040069580078 + }, + "direction": 0.6464900970458984, + "dropPoint": { + "x": 245.1656494140625, + "y": 184.36471557617188 + }, + "position": { + "x": 77.13903045654297, + "y": 57.55824279785156 + }, + "predictedTarget": { + "x": 303.6402893066406, + "y": 209.7099609375 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 122.75363159179688, + "y": 92.01377868652344 + }, + "direction": 0.6469239592552185, + "dropPoint": { + "x": 244.98663330078125, + "y": 184.34393310546875 + }, + "position": { + "x": 78.33594512939453, + "y": 58.462345123291016 + }, + "predictedTarget": { + "x": 303.5202941894531, + "y": 209.72994995117188 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 123.93560028076172, + "y": 92.93765258789063 + }, + "direction": 0.6473575234413147, + "dropPoint": { + "x": 244.80905151367188, + "y": 184.32321166992188 + }, + "position": { + "x": 79.53246307373047, + "y": 59.366966247558594 + }, + "predictedTarget": { + "x": 303.4002990722656, + "y": 209.7499542236328 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 125.15379333496094, + "y": 93.8135986328125 + }, + "direction": 0.6467287540435791, + "dropPoint": { + "x": 244.79144287109375, + "y": 184.1466522216797 + }, + "position": { + "x": 80.72955322265625, + "y": 60.270835876464844 + }, + "predictedTarget": { + "x": 303.2802734375, + "y": 209.76995849609375 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 126.37249755859375, + "y": 94.6888198852539 + }, + "direction": 0.6461009383201599, + "dropPoint": { + "x": 244.77394104003906, + "y": 183.97181701660156 + }, + "position": { + "x": 81.92720794677734, + "y": 61.173954010009766 + }, + "predictedTarget": { + "x": 303.1602783203125, + "y": 209.7899627685547 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 127.59163665771484, + "y": 95.56341552734375 + }, + "direction": 0.6454763412475586, + "dropPoint": { + "x": 244.75653076171875, + "y": 183.79922485351563 + }, + "position": { + "x": 83.12542724609375, + "y": 62.07632064819336 + }, + "predictedTarget": { + "x": 303.0452575683594, + "y": 209.8049774169922 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 128.81126403808594, + "y": 96.4373550415039 + }, + "direction": 0.6448538303375244, + "dropPoint": { + "x": 244.73922729492188, + "y": 183.6286163330078 + }, + "position": { + "x": 84.32421112060547, + "y": 62.977943420410156 + }, + "predictedTarget": { + "x": 302.9352722167969, + "y": 209.81497192382813 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 130.03134155273438, + "y": 97.31063842773438 + }, + "direction": 0.644233763217926, + "dropPoint": { + "x": 244.72201538085938, + "y": 183.4600067138672 + }, + "position": { + "x": 85.52355194091797, + "y": 63.878822326660156 + }, + "predictedTarget": { + "x": 302.82525634765625, + "y": 209.82498168945313 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 131.25192260742188, + "y": 98.1832275390625 + }, + "direction": 0.6436148285865784, + "dropPoint": { + "x": 244.70489501953125, + "y": 183.29310607910156 + }, + "position": { + "x": 86.72344970703125, + "y": 64.77896118164063 + }, + "predictedTarget": { + "x": 302.71527099609375, + "y": 209.83497619628906 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 132.47293090820313, + "y": 99.05520629882813 + }, + "direction": 0.6429991722106934, + "dropPoint": { + "x": 244.68788146972656, + "y": 183.12844848632813 + }, + "position": { + "x": 87.92390441894531, + "y": 65.67835998535156 + }, + "predictedTarget": { + "x": 302.6052551269531, + "y": 209.844970703125 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 133.69442749023438, + "y": 99.92649841308594 + }, + "direction": 0.642384946346283, + "dropPoint": { + "x": 244.67092895507813, + "y": 182.96548461914063 + }, + "position": { + "x": 89.12490844726563, + "y": 66.57701873779297 + }, + "predictedTarget": { + "x": 302.4952697753906, + "y": 209.85498046875 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 134.91632080078125, + "y": 100.79722595214844 + }, + "direction": 0.6417749524116516, + "dropPoint": { + "x": 244.65415954589844, + "y": 182.80502319335938 + }, + "position": { + "x": 90.32646179199219, + "y": 67.47494506835938 + }, + "predictedTarget": { + "x": 302.38525390625, + "y": 209.86497497558594 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 136.13870239257813, + "y": 101.66725158691406 + }, + "direction": 0.6411656141281128, + "dropPoint": { + "x": 244.637451171875, + "y": 182.64605712890625 + }, + "position": { + "x": 91.52855682373047, + "y": 68.37213897705078 + }, + "predictedTarget": { + "x": 302.2752685546875, + "y": 209.87496948242188 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 137.3253173828125, + "y": 102.58517456054688 + }, + "direction": 0.6416184306144714, + "dropPoint": { + "x": 244.4637451171875, + "y": 182.624267578125 + }, + "position": { + "x": 92.7302474975586, + "y": 69.2698745727539 + }, + "predictedTarget": { + "x": 302.1652526855469, + "y": 209.88497924804688 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 138.51162719726563, + "y": 103.50350952148438 + }, + "direction": 0.642068088054657, + "dropPoint": { + "x": 244.29263305664063, + "y": 182.6026611328125 + }, + "position": { + "x": 93.93153381347656, + "y": 70.16815185546875 + }, + "predictedTarget": { + "x": 302.0552673339844, + "y": 209.8949737548828 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 139.69754028320313, + "y": 104.42230987548828 + }, + "direction": 0.6425164341926575, + "dropPoint": { + "x": 244.1229705810547, + "y": 182.58082580566406 + }, + "position": { + "x": 95.13241577148438, + "y": 71.06697082519531 + }, + "predictedTarget": { + "x": 301.9402770996094, + "y": 209.90496826171875 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 140.88311767578125, + "y": 105.34158325195313 + }, + "direction": 0.6429634690284729, + "dropPoint": { + "x": 243.9559326171875, + "y": 182.55963134765625 + }, + "position": { + "x": 96.33290100097656, + "y": 71.96632385253906 + }, + "predictedTarget": { + "x": 301.8202819824219, + "y": 209.91497802734375 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 142.0683135986328, + "y": 106.2613296508789 + }, + "direction": 0.6434094309806824, + "dropPoint": { + "x": 243.7898406982422, + "y": 182.53790283203125 + }, + "position": { + "x": 97.5329818725586, + "y": 72.8662109375 + }, + "predictedTarget": { + "x": 301.7002868652344, + "y": 209.9249725341797 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 143.25318908691406, + "y": 107.18148803710938 + }, + "direction": 0.6438527703285217, + "dropPoint": { + "x": 243.6268310546875, + "y": 182.5168914794922 + }, + "position": { + "x": 98.732666015625, + "y": 73.76663208007813 + }, + "predictedTarget": { + "x": 301.58026123046875, + "y": 209.93496704101563 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 144.437744140625, + "y": 108.10206604003906 + }, + "direction": 0.6442936658859253, + "dropPoint": { + "x": 243.4652862548828, + "y": 182.4954376220703 + }, + "position": { + "x": 99.93195343017578, + "y": 74.6675796508789 + }, + "predictedTarget": { + "x": 301.46026611328125, + "y": 209.94497680664063 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 145.62193298339844, + "y": 109.02308654785156 + }, + "direction": 0.6447329521179199, + "dropPoint": { + "x": 243.30633544921875, + "y": 182.47459411621094 + }, + "position": { + "x": 101.13084411621094, + "y": 75.56905364990234 + }, + "predictedTarget": { + "x": 301.34027099609375, + "y": 209.95497131347656 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 146.80581665039063, + "y": 109.94453430175781 + }, + "direction": 0.6451699733734131, + "dropPoint": { + "x": 243.1488037109375, + "y": 182.45330810546875 + }, + "position": { + "x": 102.32933807373047, + "y": 76.47105407714844 + }, + "predictedTarget": { + "x": 301.22027587890625, + "y": 209.96498107910156 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 147.98931884765625, + "y": 110.86643981933594 + }, + "direction": 0.6456058025360107, + "dropPoint": { + "x": 242.99334716796875, + "y": 182.432373046875 + }, + "position": { + "x": 103.5274429321289, + "y": 77.37358093261719 + }, + "predictedTarget": { + "x": 301.10028076171875, + "y": 209.9749755859375 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 149.20982360839844, + "y": 111.73920440673828 + }, + "direction": 0.6449543237686157, + "dropPoint": { + "x": 242.9764404296875, + "y": 182.27731323242188 + }, + "position": { + "x": 104.72613525390625, + "y": 78.27532196044922 + }, + "predictedTarget": { + "x": 300.9802551269531, + "y": 209.98497009277344 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 150.43077087402344, + "y": 112.611328125 + }, + "direction": 0.6443063020706177, + "dropPoint": { + "x": 242.95962524414063, + "y": 182.12445068359375 + }, + "position": { + "x": 105.92540740966797, + "y": 79.17628479003906 + }, + "predictedTarget": { + "x": 300.8602600097656, + "y": 209.99497985839844 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 151.65220642089844, + "y": 113.48278045654297 + }, + "direction": 0.6436606049537659, + "dropPoint": { + "x": 242.94296264648438, + "y": 181.97360229492188 + }, + "position": { + "x": 107.1252670288086, + "y": 80.07647705078125 + }, + "predictedTarget": { + "x": 300.7402648925781, + "y": 210.0 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 152.87411499023438, + "y": 114.35356140136719 + }, + "direction": 0.6430174708366394, + "dropPoint": { + "x": 242.9263916015625, + "y": 181.82473754882813 + }, + "position": { + "x": 108.32569885253906, + "y": 80.97589874267578 + }, + "predictedTarget": { + "x": 300.6202697753906, + "y": 210.0 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 154.09649658203125, + "y": 115.22366333007813 + }, + "direction": 0.6423768401145935, + "dropPoint": { + "x": 242.90994262695313, + "y": 181.6778564453125 + }, + "position": { + "x": 109.5267105102539, + "y": 81.87454986572266 + }, + "predictedTarget": { + "x": 300.5002746582031, + "y": 210.0 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 155.31939697265625, + "y": 116.09305572509766 + }, + "direction": 0.6417378187179565, + "dropPoint": { + "x": 242.8935546875, + "y": 181.53273010253906 + }, + "position": { + "x": 110.7282943725586, + "y": 82.77243041992188 + }, + "predictedTarget": { + "x": 300.3802795410156, + "y": 210.0 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 156.54269409179688, + "y": 116.96184539794922 + }, + "direction": 0.6411026120185852, + "dropPoint": { + "x": 242.8773193359375, + "y": 181.38983154296875 + }, + "position": { + "x": 111.93045043945313, + "y": 83.66954803466797 + }, + "predictedTarget": { + "x": 300.26025390625, + "y": 210.0 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 157.76651000976563, + "y": 117.82992553710938 + }, + "direction": 0.6404690742492676, + "dropPoint": { + "x": 242.8611602783203, + "y": 181.24868774414063 + }, + "position": { + "x": 113.13317108154297, + "y": 84.56590270996094 + }, + "predictedTarget": { + "x": 300.1402587890625, + "y": 210.0 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 158.99073791503906, + "y": 118.69740295410156 + }, + "direction": 0.6398390531539917, + "dropPoint": { + "x": 242.84515380859375, + "y": 181.10971069335938 + }, + "position": { + "x": 114.33645629882813, + "y": 85.46150207519531 + }, + "predictedTarget": { + "x": 300.020263671875, + "y": 210.0 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 160.21542358398438, + "y": 119.56423950195313 + }, + "direction": 0.6392119526863098, + "dropPoint": { + "x": 242.82928466796875, + "y": 180.97274780273438 + }, + "position": { + "x": 115.5403060913086, + "y": 86.3563461303711 + }, + "predictedTarget": { + "x": 299.9002685546875, + "y": 210.0 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 161.41995239257813, + "y": 120.45814514160156 + }, + "direction": 0.6391916275024414, + "dropPoint": { + "x": 242.83395385742188, + "y": 180.97219848632813 + }, + "position": { + "x": 116.74417114257813, + "y": 87.25116729736328 + }, + "predictedTarget": { + "x": 299.7802734375, + "y": 210.0 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 162.62452697753906, + "y": 121.35203552246094 + }, + "direction": 0.6391711831092834, + "dropPoint": { + "x": 242.83860778808594, + "y": 180.97166442871094 + }, + "position": { + "x": 117.94805908203125, + "y": 88.14596557617188 + }, + "predictedTarget": { + "x": 299.6602783203125, + "y": 210.0 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 163.82911682128906, + "y": 122.24588012695313 + }, + "direction": 0.6391505002975464, + "dropPoint": { + "x": 242.84329223632813, + "y": 180.97113037109375 + }, + "position": { + "x": 119.15196228027344, + "y": 89.04073333740234 + }, + "predictedTarget": { + "x": 299.540283203125, + "y": 209.99502563476563 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 165.03372192382813, + "y": 123.13970184326172 + }, + "direction": 0.6391298770904541, + "dropPoint": { + "x": 242.84791564941406, + "y": 180.97059631347656 + }, + "position": { + "x": 120.35588836669922, + "y": 89.93547821044922 + }, + "predictedTarget": { + "x": 299.4202575683594, + "y": 209.98501586914063 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 166.23837280273438, + "y": 124.03348541259766 + }, + "direction": 0.6391088366508484, + "dropPoint": { + "x": 242.85260009765625, + "y": 180.97007751464844 + }, + "position": { + "x": 121.55982971191406, + "y": 90.8302001953125 + }, + "predictedTarget": { + "x": 299.3002624511719, + "y": 209.9750213623047 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 167.44302368164063, + "y": 124.92724609375 + }, + "direction": 0.6390878558158875, + "dropPoint": { + "x": 242.85720825195313, + "y": 180.9695587158203 + }, + "position": { + "x": 122.76378631591797, + "y": 91.72489929199219 + }, + "predictedTarget": { + "x": 299.1802673339844, + "y": 209.96502685546875 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 168.647705078125, + "y": 125.82096862792969 + }, + "direction": 0.6390665769577026, + "dropPoint": { + "x": 242.86184692382813, + "y": 180.9690399169922 + }, + "position": { + "x": 123.96776580810547, + "y": 92.61956787109375 + }, + "predictedTarget": { + "x": 299.0602722167969, + "y": 209.95501708984375 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 169.8524169921875, + "y": 126.71464538574219 + }, + "direction": 0.6390451788902283, + "dropPoint": { + "x": 242.86647033691406, + "y": 180.96853637695313 + }, + "position": { + "x": 125.17176055908203, + "y": 93.51421356201172 + }, + "predictedTarget": { + "x": 298.9402770996094, + "y": 209.9450225830078 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 171.05714416503906, + "y": 127.60830688476563 + }, + "direction": 0.6390236020088196, + "dropPoint": { + "x": 242.87112426757813, + "y": 180.96804809570313 + }, + "position": { + "x": 126.37577819824219, + "y": 94.40882873535156 + }, + "predictedTarget": { + "x": 298.82025146484375, + "y": 209.9350128173828 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 172.26190185546875, + "y": 128.50192260742188 + }, + "direction": 0.6390019655227661, + "dropPoint": { + "x": 242.875732421875, + "y": 180.96755981445313 + }, + "position": { + "x": 127.57981872558594, + "y": 95.30342102050781 + }, + "predictedTarget": { + "x": 298.70025634765625, + "y": 209.92501831054688 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 173.47238159179688, + "y": 129.38784790039063 + }, + "direction": 0.6388130187988281, + "dropPoint": { + "x": 242.7135009765625, + "y": 180.81326293945313 + }, + "position": { + "x": 128.78402709960938, + "y": 96.19778442382813 + }, + "predictedTarget": { + "x": 298.58026123046875, + "y": 209.91502380371094 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 174.68304443359375, + "y": 130.27352905273438 + }, + "direction": 0.638623833656311, + "dropPoint": { + "x": 242.55384826660156, + "y": 180.66128540039063 + }, + "position": { + "x": 129.9884033203125, + "y": 97.0919189453125 + }, + "predictedTarget": { + "x": 298.46026611328125, + "y": 209.90501403808594 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 175.89382934570313, + "y": 131.15902709960938 + }, + "direction": 0.6384354829788208, + "dropPoint": { + "x": 242.39581298828125, + "y": 180.51112365722656 + }, + "position": { + "x": 131.1929473876953, + "y": 97.98583221435547 + }, + "predictedTarget": { + "x": 298.34027099609375, + "y": 209.89501953125 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 177.10479736328125, + "y": 132.04428100585938 + }, + "direction": 0.6382470726966858, + "dropPoint": { + "x": 242.24038696289063, + "y": 180.36334228515625 + }, + "position": { + "x": 132.3976593017578, + "y": 98.8795166015625 + }, + "predictedTarget": { + "x": 298.2202453613281, + "y": 209.885009765625 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 178.3158721923828, + "y": 132.92938232421875 + }, + "direction": 0.6380603313446045, + "dropPoint": { + "x": 242.0866241455078, + "y": 180.217529296875 + }, + "position": { + "x": 133.6025390625, + "y": 99.7729721069336 + }, + "predictedTarget": { + "x": 298.1002502441406, + "y": 209.87501525878906 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 179.52708435058594, + "y": 133.81430053710938 + }, + "direction": 0.6378740668296814, + "dropPoint": { + "x": 241.93499755859375, + "y": 180.07382202148438 + }, + "position": { + "x": 134.80758666992188, + "y": 100.66620635986328 + }, + "predictedTarget": { + "x": 297.9802551269531, + "y": 209.86502075195313 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 180.73849487304688, + "y": 134.69894409179688 + }, + "direction": 0.6376872658729553, + "dropPoint": { + "x": 241.78541564941406, + "y": 179.93199157714844 + }, + "position": { + "x": 136.01280212402344, + "y": 101.55921173095703 + }, + "predictedTarget": { + "x": 297.8602600097656, + "y": 209.8550262451172 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 181.9500732421875, + "y": 135.5833740234375 + }, + "direction": 0.6375004649162292, + "dropPoint": { + "x": 241.638427734375, + "y": 179.79251098632813 + }, + "position": { + "x": 137.2181854248047, + "y": 102.45199584960938 + }, + "predictedTarget": { + "x": 297.7402648925781, + "y": 209.8450164794922 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 183.1617431640625, + "y": 136.46766662597656 + }, + "direction": 0.6373155117034912, + "dropPoint": { + "x": 241.49313354492188, + "y": 179.655029296875 + }, + "position": { + "x": 138.42373657226563, + "y": 103.34455871582031 + }, + "predictedTarget": { + "x": 297.6202697753906, + "y": 209.83502197265625 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 184.37364196777344, + "y": 137.35162353515625 + }, + "direction": 0.6371285319328308, + "dropPoint": { + "x": 241.350341796875, + "y": 179.51951599121094 + }, + "position": { + "x": 139.6294403076172, + "y": 104.23689270019531 + }, + "predictedTarget": { + "x": 297.5002746582031, + "y": 209.8250274658203 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 185.61962890625, + "y": 138.18948364257813 + }, + "direction": 0.6359432935714722, + "dropPoint": { + "x": 241.4688720703125, + "y": 179.42059326171875 + }, + "position": { + "x": 140.83621215820313, + "y": 105.12779998779297 + }, + "predictedTarget": { + "x": 297.3802795410156, + "y": 209.8150177001953 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 186.86627197265625, + "y": 139.02630615234375 + }, + "direction": 0.6347677707672119, + "dropPoint": { + "x": 241.585205078125, + "y": 179.3236541748047 + }, + "position": { + "x": 142.0440216064453, + "y": 106.01728820800781 + }, + "predictedTarget": { + "x": 297.2602844238281, + "y": 209.80502319335938 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 188.1137237548828, + "y": 139.86190795898438 + }, + "direction": 0.6335975527763367, + "dropPoint": { + "x": 241.70016479492188, + "y": 179.22860717773438 + }, + "position": { + "x": 143.25286865234375, + "y": 106.90535736083984 + }, + "predictedTarget": { + "x": 297.1402587890625, + "y": 209.7900390625 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 189.36187744140625, + "y": 140.69639587402344 + }, + "direction": 0.6324352025985718, + "dropPoint": { + "x": 241.8128662109375, + "y": 179.13516235351563 + }, + "position": { + "x": 144.46275329589844, + "y": 107.79202270507813 + }, + "predictedTarget": { + "x": 297.020263671875, + "y": 209.77005004882813 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 190.61082458496094, + "y": 141.5297088623047 + }, + "direction": 0.631278395652771, + "dropPoint": { + "x": 241.924560546875, + "y": 179.0438690185547 + }, + "position": { + "x": 145.6736602783203, + "y": 108.67729187011719 + }, + "predictedTarget": { + "x": 296.9002685546875, + "y": 209.7500457763672 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 191.8604278564453, + "y": 142.3619842529297 + }, + "direction": 0.6301305890083313, + "dropPoint": { + "x": 242.03367614746094, + "y": 178.95407104492188 + }, + "position": { + "x": 146.88558959960938, + "y": 109.56116485595703 + }, + "predictedTarget": { + "x": 296.7802734375, + "y": 209.73004150390625 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 193.11074829101563, + "y": 143.1931610107422 + }, + "direction": 0.6289900541305542, + "dropPoint": { + "x": 242.14138793945313, + "y": 178.8663330078125 + }, + "position": { + "x": 148.09852600097656, + "y": 110.44365692138672 + }, + "predictedTarget": { + "x": 296.6602783203125, + "y": 209.71005249023438 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 194.3616943359375, + "y": 144.02333068847656 + }, + "direction": 0.6278588175773621, + "dropPoint": { + "x": 242.24691772460938, + "y": 178.78036499023438 + }, + "position": { + "x": 149.3124542236328, + "y": 111.32477569580078 + }, + "predictedTarget": { + "x": 296.5402526855469, + "y": 209.69004821777344 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 195.6133575439453, + "y": 144.85240173339844 + }, + "direction": 0.6267342567443848, + "dropPoint": { + "x": 242.35064697265625, + "y": 178.69602966308594 + }, + "position": { + "x": 150.52737426757813, + "y": 112.20452880859375 + }, + "predictedTarget": { + "x": 296.4202575683594, + "y": 209.6700439453125 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 196.86569213867188, + "y": 145.680419921875 + }, + "direction": 0.6256172060966492, + "dropPoint": { + "x": 242.4529571533203, + "y": 178.61370849609375 + }, + "position": { + "x": 151.74327087402344, + "y": 113.08292388916016 + }, + "predictedTarget": { + "x": 296.3002624511719, + "y": 209.65005493164063 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 198.06602478027344, + "y": 146.5803680419922 + }, + "direction": 0.6260824799537659, + "dropPoint": { + "x": 242.3345489501953, + "y": 178.59234619140625 + }, + "position": { + "x": 152.95877075195313, + "y": 113.96188354492188 + }, + "predictedTarget": { + "x": 296.1802673339844, + "y": 209.6300506591797 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 199.26597595214844, + "y": 147.48080444335938 + }, + "direction": 0.6265462636947632, + "dropPoint": { + "x": 242.21737670898438, + "y": 178.5706787109375 + }, + "position": { + "x": 154.17385864257813, + "y": 114.8414077758789 + }, + "predictedTarget": { + "x": 296.06024169921875, + "y": 209.61004638671875 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 200.46566772460938, + "y": 148.38157653808594 + }, + "direction": 0.6270051598548889, + "dropPoint": { + "x": 242.10302734375, + "y": 178.54940795898438 + }, + "position": { + "x": 155.38853454589844, + "y": 115.72148895263672 + }, + "predictedTarget": { + "x": 295.9452209472656, + "y": 209.5900421142578 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 201.6649627685547, + "y": 149.28289794921875 + }, + "direction": 0.6274639368057251, + "dropPoint": { + "x": 241.9903564453125, + "y": 178.52838134765625 + }, + "position": { + "x": 156.60281372070313, + "y": 116.60212707519531 + }, + "predictedTarget": { + "x": 295.8352355957031, + "y": 209.57005310058594 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 202.8640594482422, + "y": 150.18446350097656 + }, + "direction": 0.6279162168502808, + "dropPoint": { + "x": 241.8800048828125, + "y": 178.50723266601563 + }, + "position": { + "x": 157.8166961669922, + "y": 117.48331451416016 + }, + "predictedTarget": { + "x": 295.7252197265625, + "y": 209.550048828125 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 204.06272888183594, + "y": 151.0865936279297 + }, + "direction": 0.6283690929412842, + "dropPoint": { + "x": 241.7714080810547, + "y": 178.48646545410156 + }, + "position": { + "x": 159.03018188476563, + "y": 118.36505126953125 + }, + "predictedTarget": { + "x": 295.615234375, + "y": 209.53004455566406 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 205.26112365722656, + "y": 151.9890899658203 + }, + "direction": 0.6288180351257324, + "dropPoint": { + "x": 241.66476440429688, + "y": 178.46568298339844 + }, + "position": { + "x": 160.24327087402344, + "y": 119.2473373413086 + }, + "predictedTarget": { + "x": 295.5052185058594, + "y": 209.51004028320313 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 206.45925903320313, + "y": 152.89193725585938 + }, + "direction": 0.6292628049850464, + "dropPoint": { + "x": 241.5601348876953, + "y": 178.4449005126953 + }, + "position": { + "x": 161.45596313476563, + "y": 120.13015747070313 + }, + "predictedTarget": { + "x": 295.3952331542969, + "y": 209.4900360107422 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 207.65704345703125, + "y": 153.79519653320313 + }, + "direction": 0.6297051310539246, + "dropPoint": { + "x": 241.45791625976563, + "y": 178.4246368408203 + }, + "position": { + "x": 162.6682586669922, + "y": 121.01351928710938 + }, + "predictedTarget": { + "x": 295.28521728515625, + "y": 209.4700469970703 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 208.85455322265625, + "y": 154.6988525390625 + }, + "direction": 0.6301445364952087, + "dropPoint": { + "x": 241.3573455810547, + "y": 178.40431213378906 + }, + "position": { + "x": 163.8801727294922, + "y": 121.89741516113281 + }, + "predictedTarget": { + "x": 295.17523193359375, + "y": 209.45004272460938 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 210.09083557128906, + "y": 155.54931640625 + }, + "direction": 0.6294208765029907, + "dropPoint": { + "x": 241.341064453125, + "y": 178.30661010742188 + }, + "position": { + "x": 165.0927276611328, + "y": 122.78043365478516 + }, + "predictedTarget": { + "x": 295.0652160644531, + "y": 209.43003845214844 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 211.3275604248047, + "y": 156.39910888671875 + }, + "direction": 0.6287020444869995, + "dropPoint": { + "x": 241.32492065429688, + "y": 178.21104431152344 + }, + "position": { + "x": 166.305908203125, + "y": 123.6625747680664 + }, + "predictedTarget": { + "x": 294.9552307128906, + "y": 209.4100341796875 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 212.56478881835938, + "y": 157.24815368652344 + }, + "direction": 0.6279865503311157, + "dropPoint": { + "x": 241.3089599609375, + "y": 178.11744689941406 + }, + "position": { + "x": 167.5197296142578, + "y": 124.5438461303711 + }, + "predictedTarget": { + "x": 294.84521484375, + "y": 209.3850555419922 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 213.8025360107422, + "y": 158.09646606445313 + }, + "direction": 0.6272739171981812, + "dropPoint": { + "x": 241.29312133789063, + "y": 178.02569580078125 + }, + "position": { + "x": 168.7341766357422, + "y": 125.42425537109375 + }, + "predictedTarget": { + "x": 294.7352294921875, + "y": 209.3550567626953 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 215.0407257080078, + "y": 158.944091796875 + }, + "direction": 0.6265660524368286, + "dropPoint": { + "x": 241.27745056152344, + "y": 177.93603515625 + }, + "position": { + "x": 169.94924926757813, + "y": 126.30380249023438 + }, + "predictedTarget": { + "x": 294.6252136230469, + "y": 209.32505798339844 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 216.27944946289063, + "y": 159.79092407226563 + }, + "direction": 0.6258596777915955, + "dropPoint": { + "x": 241.26222229003906, + "y": 177.84828186035156 + }, + "position": { + "x": 171.16493225097656, + "y": 127.1824951171875 + }, + "predictedTarget": { + "x": 294.5152282714844, + "y": 209.29505920410156 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 217.51858520507813, + "y": 160.63717651367188 + }, + "direction": 0.6251595616340637, + "dropPoint": { + "x": 241.24688720703125, + "y": 177.76254272460938 + }, + "position": { + "x": 172.38124084472656, + "y": 128.06033325195313 + }, + "predictedTarget": { + "x": 294.40521240234375, + "y": 209.2650604248047 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 218.75814819335938, + "y": 161.48275756835938 + }, + "direction": 0.6244639158248901, + "dropPoint": { + "x": 241.231689453125, + "y": 177.6787567138672 + }, + "position": { + "x": 173.59815979003906, + "y": 128.9373321533203 + }, + "predictedTarget": { + "x": 294.29522705078125, + "y": 209.2350616455078 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 219.99819946289063, + "y": 162.32762145996094 + }, + "direction": 0.6237713694572449, + "dropPoint": { + "x": 241.21664428710938, + "y": 177.5968017578125 + }, + "position": { + "x": 174.81568908691406, + "y": 129.8134765625 + }, + "predictedTarget": { + "x": 294.1852111816406, + "y": 209.20506286621094 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 221.23866271972656, + "y": 163.17189025878906 + }, + "direction": 0.6230842471122742, + "dropPoint": { + "x": 241.20179748535156, + "y": 177.51690673828125 + }, + "position": { + "x": 176.0338134765625, + "y": 130.6887969970703 + }, + "predictedTarget": { + "x": 294.0752258300781, + "y": 209.17506408691406 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 222.4816436767578, + "y": 164.01258850097656 + }, + "direction": 0.6223388910293579, + "dropPoint": { + "x": 241.18548583984375, + "y": 177.4315948486328 + }, + "position": { + "x": 177.25259399414063, + "y": 131.56320190429688 + }, + "predictedTarget": { + "x": 293.9652099609375, + "y": 209.1450653076172 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 223.72506713867188, + "y": 164.8526153564453 + }, + "direction": 0.6215988397598267, + "dropPoint": { + "x": 241.16937255859375, + "y": 177.34841918945313 + }, + "position": { + "x": 178.47201538085938, + "y": 132.43670654296875 + }, + "predictedTarget": { + "x": 293.855224609375, + "y": 209.1150665283203 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 224.968994140625, + "y": 165.69187927246094 + }, + "direction": 0.6208621859550476, + "dropPoint": { + "x": 241.1534423828125, + "y": 177.26718139648438 + }, + "position": { + "x": 179.69207763671875, + "y": 133.30931091308594 + }, + "predictedTarget": { + "x": 293.7452087402344, + "y": 209.08009338378906 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 226.21343994140625, + "y": 166.53036499023438 + }, + "direction": 0.6201287508010864, + "dropPoint": { + "x": 241.1376495361328, + "y": 177.18780517578125 + }, + "position": { + "x": 180.91278076171875, + "y": 134.18101501464844 + }, + "predictedTarget": { + "x": 293.6352233886719, + "y": 209.0400848388672 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 227.458251953125, + "y": 167.36827087402344 + }, + "direction": 0.6194024682044983, + "dropPoint": { + "x": 241.12173461914063, + "y": 177.11044311523438 + }, + "position": { + "x": 182.13412475585938, + "y": 135.0518341064453 + }, + "predictedTarget": { + "x": 293.52520751953125, + "y": 209.00009155273438 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 228.70364379882813, + "y": 168.20535278320313 + }, + "direction": 0.6186779141426086, + "dropPoint": { + "x": 241.1062469482422, + "y": 177.03497314453125 + }, + "position": { + "x": 183.35609436035156, + "y": 135.92176818847656 + }, + "predictedTarget": { + "x": 293.41522216796875, + "y": 208.9600830078125 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 229.94943237304688, + "y": 169.0417938232422 + }, + "direction": 0.617958664894104, + "dropPoint": { + "x": 241.0909881591797, + "y": 176.96156311035156 + }, + "position": { + "x": 184.5786895751953, + "y": 136.79083251953125 + }, + "predictedTarget": { + "x": 293.30523681640625, + "y": 208.9200897216797 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 231.19569396972656, + "y": 169.87754821777344 + }, + "direction": 0.6172440052032471, + "dropPoint": { + "x": 241.07591247558594, + "y": 176.89010620117188 + }, + "position": { + "x": 185.80191040039063, + "y": 137.6590118408203 + }, + "predictedTarget": { + "x": 293.1952209472656, + "y": 208.8800811767578 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 232.44241333007813, + "y": 170.71258544921875 + }, + "direction": 0.6165332198143005, + "dropPoint": { + "x": 241.0609588623047, + "y": 176.82044982910156 + }, + "position": { + "x": 187.02574157714844, + "y": 138.5263214111328 + }, + "predictedTarget": { + "x": 293.0852355957031, + "y": 208.840087890625 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 233.6895294189453, + "y": 171.54702758789063 + }, + "direction": 0.6158285140991211, + "dropPoint": { + "x": 241.0462188720703, + "y": 176.75283813476563 + }, + "position": { + "x": 188.25018310546875, + "y": 139.3927764892578 + }, + "predictedTarget": { + "x": 292.9752197265625, + "y": 208.80007934570313 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 234.91514587402344, + "y": 172.41180419921875 + }, + "direction": 0.6157928109169006, + "dropPoint": { + "x": 241.053466796875, + "y": 176.75514221191406 + }, + "position": { + "x": 189.4746551513672, + "y": 140.25918579101563 + }, + "predictedTarget": { + "x": 292.865234375, + "y": 208.7600860595703 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 236.14080810546875, + "y": 173.2765350341797 + }, + "direction": 0.6157568693161011, + "dropPoint": { + "x": 241.06069946289063, + "y": 176.75747680664063 + }, + "position": { + "x": 190.69915771484375, + "y": 141.12554931640625 + }, + "predictedTarget": { + "x": 292.7552185058594, + "y": 208.72007751464844 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 237.3665008544922, + "y": 174.14120483398438 + }, + "direction": 0.6157205700874329, + "dropPoint": { + "x": 241.0679168701172, + "y": 176.7598419189453 + }, + "position": { + "x": 191.92369079589844, + "y": 141.9918670654297 + }, + "predictedTarget": { + "x": 292.65020751953125, + "y": 208.68008422851563 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 238.59222412109375, + "y": 175.005859375 + }, + "direction": 0.6156848669052124, + "dropPoint": { + "x": 241.07513427734375, + "y": 176.76231384277344 + }, + "position": { + "x": 193.14825439453125, + "y": 142.85813903808594 + }, + "predictedTarget": { + "x": 292.5502014160156, + "y": 208.64007568359375 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 239.818115234375, + "y": 175.87026977539063 + }, + "direction": 0.6156448125839233, + "dropPoint": { + "x": 241.08255004882813, + "y": 176.76467895507813 + }, + "position": { + "x": 194.37286376953125, + "y": 143.724365234375 + }, + "predictedTarget": { + "x": 292.4502258300781, + "y": 208.60008239746094 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 241.04393005371094, + "y": 176.73477172851563 + }, + "direction": 0.6156080961227417, + "dropPoint": { + "x": 241.08973693847656, + "y": 176.76718139648438 + }, + "position": { + "x": 195.59750366210938, + "y": 144.59054565429688 + }, + "predictedTarget": { + "x": 292.3502197265625, + "y": 208.56007385253906 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 242.26983642578125, + "y": 177.59918212890625 + }, + "direction": 0.6155698299407959, + "dropPoint": { + "x": 241.09689331054688, + "y": 176.76962280273438 + }, + "position": { + "x": 196.82217407226563, + "y": 145.45668029785156 + }, + "predictedTarget": { + "x": 292.2502136230469, + "y": 208.52008056640625 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 243.49581909179688, + "y": 178.4634552001953 + }, + "direction": 0.6155300140380859, + "dropPoint": { + "x": 241.10400390625, + "y": 176.77200317382813 + }, + "position": { + "x": 198.046875, + "y": 146.32276916503906 + }, + "predictedTarget": { + "x": 292.15020751953125, + "y": 208.48008728027344 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 244.72178649902344, + "y": 179.32774353027344 + }, + "direction": 0.6154914498329163, + "dropPoint": { + "x": 241.11114501953125, + "y": 176.77456665039063 + }, + "position": { + "x": 199.2716064453125, + "y": 147.18881225585938 + }, + "predictedTarget": { + "x": 292.0502014160156, + "y": 208.44007873535156 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 245.9478759765625, + "y": 180.19186401367188 + }, + "direction": 0.6154505014419556, + "dropPoint": { + "x": 241.1182098388672, + "y": 176.77699279785156 + }, + "position": { + "x": 200.4963836669922, + "y": 148.05479431152344 + }, + "predictedTarget": { + "x": 291.9501953125, + "y": 208.40008544921875 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 247.1988525390625, + "y": 181.02076721191406 + }, + "direction": 0.6146560907363892, + "dropPoint": { + "x": 241.10104370117188, + "y": 176.71649169921875 + }, + "position": { + "x": 201.7218475341797, + "y": 148.91981506347656 + }, + "predictedTarget": { + "x": 291.8502197265625, + "y": 208.36007690429688 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 248.45040893554688, + "y": 181.8487548828125 + }, + "direction": 0.6138636469841003, + "dropPoint": { + "x": 241.08401489257813, + "y": 176.6577606201172 + }, + "position": { + "x": 202.94798278808594, + "y": 149.7838592529297 + }, + "predictedTarget": { + "x": 291.7502136230469, + "y": 208.32008361816406 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 249.70248413085938, + "y": 182.67601013183594 + }, + "direction": 0.6130762100219727, + "dropPoint": { + "x": 241.06716918945313, + "y": 176.6009979248047 + }, + "position": { + "x": 204.1748046875, + "y": 150.64694213867188 + }, + "predictedTarget": { + "x": 291.65020751953125, + "y": 208.2751007080078 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 250.95494079589844, + "y": 183.50259399414063 + }, + "direction": 0.6122961044311523, + "dropPoint": { + "x": 241.05032348632813, + "y": 176.54617309570313 + }, + "position": { + "x": 205.4022979736328, + "y": 151.50906372070313 + }, + "predictedTarget": { + "x": 291.5502014160156, + "y": 208.22509765625 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 252.2079315185547, + "y": 184.32839965820313 + }, + "direction": 0.6115196347236633, + "dropPoint": { + "x": 241.03390502929688, + "y": 176.49334716796875 + }, + "position": { + "x": 206.63046264648438, + "y": 152.3702392578125 + }, + "predictedTarget": { + "x": 291.4501953125, + "y": 208.1750946044922 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 253.46145629882813, + "y": 185.15338134765625 + }, + "direction": 0.6107469201087952, + "dropPoint": { + "x": 241.01763916015625, + "y": 176.4423370361328 + }, + "position": { + "x": 207.8592987060547, + "y": 153.23045349121094 + }, + "predictedTarget": { + "x": 291.3502197265625, + "y": 208.12510681152344 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 254.71543884277344, + "y": 185.97763061523438 + }, + "direction": 0.6099790930747986, + "dropPoint": { + "x": 241.00180053710938, + "y": 176.39334106445313 + }, + "position": { + "x": 209.0887908935547, + "y": 154.0897216796875 + }, + "predictedTarget": { + "x": 291.2502136230469, + "y": 208.07510375976563 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 255.96978759765625, + "y": 186.8013153076172 + }, + "direction": 0.609220027923584, + "dropPoint": { + "x": 240.9860382080078, + "y": 176.34629821777344 + }, + "position": { + "x": 210.31893920898438, + "y": 154.94805908203125 + }, + "predictedTarget": { + "x": 291.15020751953125, + "y": 208.0251007080078 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 257.22454833984375, + "y": 187.62435913085938 + }, + "direction": 0.6084669232368469, + "dropPoint": { + "x": 240.97019958496094, + "y": 176.30093383789063 + }, + "position": { + "x": 211.5497283935547, + "y": 155.80548095703125 + }, + "predictedTarget": { + "x": 291.0502014160156, + "y": 207.97509765625 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 258.4797668457031, + "y": 188.44667053222656 + }, + "direction": 0.6077189445495605, + "dropPoint": { + "x": 240.954833984375, + "y": 176.25758361816406 + }, + "position": { + "x": 212.78115844726563, + "y": 156.66197204589844 + }, + "predictedTarget": { + "x": 290.9501953125, + "y": 207.9250946044922 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 259.7305603027344, + "y": 189.27529907226563 + }, + "direction": 0.6071252822875977, + "dropPoint": { + "x": 241.03173828125, + "y": 176.28619384765625 + }, + "position": { + "x": 214.01309204101563, + "y": 157.51773071289063 + }, + "predictedTarget": { + "x": 290.8502197265625, + "y": 207.87510681152344 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 260.98162841796875, + "y": 190.10350036621094 + }, + "direction": 0.6065384745597839, + "dropPoint": { + "x": 241.10643005371094, + "y": 176.31451416015625 + }, + "position": { + "x": 215.2455291748047, + "y": 158.37277221679688 + }, + "predictedTarget": { + "x": 290.7502136230469, + "y": 207.82510375976563 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 262.233154296875, + "y": 190.9310302734375 + }, + "direction": 0.6059526205062866, + "dropPoint": { + "x": 241.1795654296875, + "y": 176.34275817871094 + }, + "position": { + "x": 216.4784698486328, + "y": 159.2270965576172 + }, + "predictedTarget": { + "x": 290.6551818847656, + "y": 207.7751007080078 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 263.4848937988281, + "y": 191.75819396972656 + }, + "direction": 0.6053746938705444, + "dropPoint": { + "x": 241.2502899169922, + "y": 176.37059020996094 + }, + "position": { + "x": 217.71189880371094, + "y": 160.08070373535156 + }, + "predictedTarget": { + "x": 290.565185546875, + "y": 207.72509765625 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 264.7369689941406, + "y": 192.58480834960938 + }, + "direction": 0.604800820350647, + "dropPoint": { + "x": 241.31930541992188, + "y": 176.39833068847656 + }, + "position": { + "x": 218.94581604003906, + "y": 160.93359375 + }, + "predictedTarget": { + "x": 290.4751892089844, + "y": 207.6750946044922 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 265.9892578125, + "y": 193.41111755371094 + }, + "direction": 0.6042355895042419, + "dropPoint": { + "x": 241.38619995117188, + "y": 176.4258270263672 + }, + "position": { + "x": 220.1802215576172, + "y": 161.78579711914063 + }, + "predictedTarget": { + "x": 290.3851623535156, + "y": 207.62509155273438 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 267.241943359375, + "y": 194.23683166503906 + }, + "direction": 0.6036728024482727, + "dropPoint": { + "x": 241.45126342773438, + "y": 176.4530792236328 + }, + "position": { + "x": 221.41510009765625, + "y": 162.63729858398438 + }, + "predictedTarget": { + "x": 290.295166015625, + "y": 207.57510375976563 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 268.49493408203125, + "y": 195.06207275390625 + }, + "direction": 0.603114664554596, + "dropPoint": { + "x": 241.5143585205078, + "y": 176.48004150390625 + }, + "position": { + "x": 222.6504669189453, + "y": 163.4881134033203 + }, + "predictedTarget": { + "x": 290.2051696777344, + "y": 207.5251007080078 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 269.7481689453125, + "y": 195.88690185546875 + }, + "direction": 0.6025630235671997, + "dropPoint": { + "x": 241.57554626464844, + "y": 176.5067901611328 + }, + "position": { + "x": 223.88629150390625, + "y": 164.33824157714844 + }, + "predictedTarget": { + "x": 290.11517333984375, + "y": 207.47509765625 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 271.0015869140625, + "y": 196.71142578125 + }, + "direction": 0.6020195484161377, + "dropPoint": { + "x": 241.6345977783203, + "y": 176.533203125 + }, + "position": { + "x": 225.12258911132813, + "y": 165.1876983642578 + }, + "predictedTarget": { + "x": 290.0251770019531, + "y": 207.4250946044922 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 272.26605224609375, + "y": 197.51986694335938 + }, + "direction": 0.6011489629745483, + "dropPoint": { + "x": 241.6147003173828, + "y": 176.49839782714844 + }, + "position": { + "x": 226.359619140625, + "y": 166.0360870361328 + }, + "predictedTarget": { + "x": 289.9351501464844, + "y": 207.37509155273438 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 273.5310363769531, + "y": 198.32748413085938 + }, + "direction": 0.6002844572067261, + "dropPoint": { + "x": 241.5950164794922, + "y": 176.46554565429688 + }, + "position": { + "x": 227.59738159179688, + "y": 166.88340759277344 + }, + "predictedTarget": { + "x": 289.84515380859375, + "y": 207.32510375976563 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 274.7965087890625, + "y": 199.13424682617188 + }, + "direction": 0.5994250178337097, + "dropPoint": { + "x": 241.5755615234375, + "y": 176.43460083007813 + }, + "position": { + "x": 228.83587646484375, + "y": 167.7296600341797 + }, + "predictedTarget": { + "x": 289.7551574707031, + "y": 207.2751007080078 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 276.0625, + "y": 199.94027709960938 + }, + "direction": 0.5985727906227112, + "dropPoint": { + "x": 241.55630493164063, + "y": 176.40554809570313 + }, + "position": { + "x": 230.07508850097656, + "y": 168.57485961914063 + }, + "predictedTarget": { + "x": 289.6651611328125, + "y": 207.22509765625 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 277.3289489746094, + "y": 200.74546813964844 + }, + "direction": 0.5977261066436768, + "dropPoint": { + "x": 241.53729248046875, + "y": 176.3783721923828 + }, + "position": { + "x": 231.3150177001953, + "y": 169.41900634765625 + }, + "predictedTarget": { + "x": 289.5751647949219, + "y": 207.1750946044922 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 278.59588623046875, + "y": 201.54991149902344 + }, + "direction": 0.5968859195709229, + "dropPoint": { + "x": 241.5185089111328, + "y": 176.35304260253906 + }, + "position": { + "x": 232.55564880371094, + "y": 170.26211547851563 + }, + "predictedTarget": { + "x": 289.48516845703125, + "y": 207.12509155273438 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 279.86334228515625, + "y": 202.35350036621094 + }, + "direction": 0.5960504412651062, + "dropPoint": { + "x": 241.49998474121094, + "y": 176.3295440673828 + }, + "position": { + "x": 233.79698181152344, + "y": 171.10418701171875 + }, + "predictedTarget": { + "x": 289.3951721191406, + "y": 207.07510375976563 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 281.13116455078125, + "y": 203.15650939941406 + }, + "direction": 0.5952247977256775, + "dropPoint": { + "x": 241.48170471191406, + "y": 176.30789184570313 + }, + "position": { + "x": 235.0390167236328, + "y": 171.9452362060547 + }, + "predictedTarget": { + "x": 289.3051452636719, + "y": 207.0251007080078 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 282.3994140625, + "y": 203.9588165283203 + }, + "direction": 0.59440678358078, + "dropPoint": { + "x": 241.46371459960938, + "y": 176.28805541992188 + }, + "position": { + "x": 236.28173828125, + "y": 172.78526306152344 + }, + "predictedTarget": { + "x": 289.21514892578125, + "y": 206.97509765625 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 283.6680908203125, + "y": 204.76040649414063 + }, + "direction": 0.5935952663421631, + "dropPoint": { + "x": 241.44601440429688, + "y": 176.26998901367188 + }, + "position": { + "x": 237.525146484375, + "y": 173.62428283691406 + }, + "predictedTarget": { + "x": 289.1251525878906, + "y": 206.9250946044922 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 284.94158935546875, + "y": 205.55474853515625 + }, + "direction": 0.5926529169082642, + "dropPoint": { + "x": 241.42474365234375, + "y": 176.2502899169922 + }, + "position": { + "x": 238.7693328857422, + "y": 174.46212768554688 + }, + "predictedTarget": { + "x": 289.03515625, + "y": 206.87509155273438 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 286.21563720703125, + "y": 206.34823608398438 + }, + "direction": 0.5917176604270935, + "dropPoint": { + "x": 241.40347290039063, + "y": 176.23239135742188 + }, + "position": { + "x": 240.01431274414063, + "y": 175.29881286621094 + }, + "predictedTarget": { + "x": 288.9451599121094, + "y": 206.82510375976563 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 287.4902038574219, + "y": 207.140869140625 + }, + "direction": 0.5907895565032959, + "dropPoint": { + "x": 241.3826446533203, + "y": 176.216552734375 + }, + "position": { + "x": 241.26007080078125, + "y": 176.13433837890625 + }, + "predictedTarget": { + "x": 288.8651123046875, + "y": 206.76513671875 + }, + "state": 4, + "targetIndex": 0 + } + ], + "totalSteps": 245 +} \ No newline at end of file From 482fc9c7954f7cebc0c50168031503015d47b948 Mon Sep 17 00:00:00 2001 From: blinker Date: Mon, 8 Jun 2026 21:05:10 +0000 Subject: [PATCH 06/12] [FEATURE] hw09-state-machine: added empty templates for drone state classes --- .../include/drone_states/state_accelerating.hpp | 10 ++++++++++ .../include/drone_states/state_decelerating.hpp | 10 ++++++++++ .../include/drone_states/state_moving.hpp | 10 ++++++++++ .../include/drone_states/state_stopped.hpp | 10 ++++++++++ .../include/drone_states/state_turning.hpp | 10 ++++++++++ .../include/interfaces/drone_state.hpp | 17 +++++++++++++++++ drone_simulation/include/simulation.hpp | 12 ++++++++++++ .../src/drone_states/state_accelerating.cpp | 12 ++++++++++++ .../src/drone_states/state_decelerating.cpp | 12 ++++++++++++ .../src/drone_states/state_moving.cpp | 12 ++++++++++++ .../src/drone_states/state_stopped.cpp | 12 ++++++++++++ .../src/drone_states/state_turning.cpp | 13 +++++++++++++ 12 files changed, 140 insertions(+) create mode 100644 drone_simulation/include/drone_states/state_accelerating.hpp create mode 100644 drone_simulation/include/drone_states/state_decelerating.hpp create mode 100644 drone_simulation/include/drone_states/state_moving.hpp create mode 100644 drone_simulation/include/drone_states/state_stopped.hpp create mode 100644 drone_simulation/include/drone_states/state_turning.hpp create mode 100644 drone_simulation/include/interfaces/drone_state.hpp create mode 100644 drone_simulation/src/drone_states/state_accelerating.cpp create mode 100644 drone_simulation/src/drone_states/state_decelerating.cpp create mode 100644 drone_simulation/src/drone_states/state_moving.cpp create mode 100644 drone_simulation/src/drone_states/state_stopped.cpp create mode 100644 drone_simulation/src/drone_states/state_turning.cpp diff --git a/drone_simulation/include/drone_states/state_accelerating.hpp b/drone_simulation/include/drone_states/state_accelerating.hpp new file mode 100644 index 0000000..3b8fd1e --- /dev/null +++ b/drone_simulation/include/drone_states/state_accelerating.hpp @@ -0,0 +1,10 @@ +#pragma once +#include "interfaces/drone_state.hpp" + +class StateAccelerating : public IDroneState { + public: + StateAccelerating(); + + auto execute(DroneContext& ctx) -> std::unique_ptr override; + auto name() const -> const std::string override; +}; \ No newline at end of file diff --git a/drone_simulation/include/drone_states/state_decelerating.hpp b/drone_simulation/include/drone_states/state_decelerating.hpp new file mode 100644 index 0000000..ce9f0d5 --- /dev/null +++ b/drone_simulation/include/drone_states/state_decelerating.hpp @@ -0,0 +1,10 @@ +#pragma once +#include "interfaces/drone_state.hpp" + +class StateDecelerating : public IDroneState { + public: + StateDecelerating(); + + auto execute(DroneContext& ctx) -> std::unique_ptr override; + auto name() const -> const std::string override; +}; \ No newline at end of file diff --git a/drone_simulation/include/drone_states/state_moving.hpp b/drone_simulation/include/drone_states/state_moving.hpp new file mode 100644 index 0000000..f3af3de --- /dev/null +++ b/drone_simulation/include/drone_states/state_moving.hpp @@ -0,0 +1,10 @@ +#pragma once +#include "interfaces/drone_state.hpp" + +class StateMoving : public IDroneState { + public: + StateMoving(); + + auto execute(DroneContext& ctx) -> std::unique_ptr override; + auto name() const -> const std::string override; +}; \ No newline at end of file diff --git a/drone_simulation/include/drone_states/state_stopped.hpp b/drone_simulation/include/drone_states/state_stopped.hpp new file mode 100644 index 0000000..1490526 --- /dev/null +++ b/drone_simulation/include/drone_states/state_stopped.hpp @@ -0,0 +1,10 @@ +#pragma once +#include "interfaces/drone_state.hpp" + +class StateStopped : public IDroneState { + public: + StateStopped(); + + auto execute(DroneContext& ctx) -> std::unique_ptr override; + auto name() const -> const std::string override; +}; \ No newline at end of file diff --git a/drone_simulation/include/drone_states/state_turning.hpp b/drone_simulation/include/drone_states/state_turning.hpp new file mode 100644 index 0000000..913dfc9 --- /dev/null +++ b/drone_simulation/include/drone_states/state_turning.hpp @@ -0,0 +1,10 @@ +#pragma once +#include "interfaces/drone_state.hpp" + +class StateTurning : public IDroneState { + public: + StateTurning(); + + auto execute(DroneContext& ctx) -> std::unique_ptr override; + auto name() const -> const std::string override; +}; \ No newline at end of file diff --git a/drone_simulation/include/interfaces/drone_state.hpp b/drone_simulation/include/interfaces/drone_state.hpp new file mode 100644 index 0000000..cce579a --- /dev/null +++ b/drone_simulation/include/interfaces/drone_state.hpp @@ -0,0 +1,17 @@ +#pragma once +#include +#include +#include "simulation.hpp" + +class IDroneState { +public: + virtual ~IDroneState() = default; + + // Виконати логіку стану, повернути наступний стан. + // Якщо стан не змінився — повернути nullptr + // (головний цикл залишить поточний). + virtual std::unique_ptr execute(DroneContext& ctx) = 0; + + virtual const std::string name() const = 0; +}; + diff --git a/drone_simulation/include/simulation.hpp b/drone_simulation/include/simulation.hpp index 54cf3f3..09474c3 100644 --- a/drone_simulation/include/simulation.hpp +++ b/drone_simulation/include/simulation.hpp @@ -83,6 +83,18 @@ struct DroneMotion { DroneState state = STOPPED; }; +struct DroneContext { + float desiredDir; + float turnRemaining; + float targetDir; + + float speed = 0.0f; + float dir; + Coord pos; + + const DroneConfig& cfg; +}; + struct SimulationStep { int target; Coord dropPoint; diff --git a/drone_simulation/src/drone_states/state_accelerating.cpp b/drone_simulation/src/drone_states/state_accelerating.cpp new file mode 100644 index 0000000..657cae2 --- /dev/null +++ b/drone_simulation/src/drone_states/state_accelerating.cpp @@ -0,0 +1,12 @@ +#include "drone_states/state_accelerating.hpp" +#include + +StateAccelerating::StateAccelerating() {} + +auto StateAccelerating::execute(DroneContext& ctx) -> std::unique_ptr { + return std::make_unique(); +}; + +auto StateAccelerating::name() const -> const std::string { + return ""; +}; \ No newline at end of file diff --git a/drone_simulation/src/drone_states/state_decelerating.cpp b/drone_simulation/src/drone_states/state_decelerating.cpp new file mode 100644 index 0000000..4cf25f7 --- /dev/null +++ b/drone_simulation/src/drone_states/state_decelerating.cpp @@ -0,0 +1,12 @@ +#include "drone_states/state_decelerating.hpp" +#include + +StateDecelerating::StateDecelerating() {} + +auto StateDecelerating::execute(DroneContext& ctx) -> std::unique_ptr { + return std::make_unique(); +}; + +auto StateDecelerating::name() const -> const std::string { + return ""; +}; \ No newline at end of file diff --git a/drone_simulation/src/drone_states/state_moving.cpp b/drone_simulation/src/drone_states/state_moving.cpp new file mode 100644 index 0000000..dc5a7c0 --- /dev/null +++ b/drone_simulation/src/drone_states/state_moving.cpp @@ -0,0 +1,12 @@ +#include "drone_states/state_moving.hpp" +#include + +StateMoving::StateMoving() {} + +auto StateMoving::execute(DroneContext& ctx) -> std::unique_ptr { + return std::make_unique(); +}; + +auto StateMoving::name() const -> const std::string { + return ""; +}; \ No newline at end of file diff --git a/drone_simulation/src/drone_states/state_stopped.cpp b/drone_simulation/src/drone_states/state_stopped.cpp new file mode 100644 index 0000000..771a475 --- /dev/null +++ b/drone_simulation/src/drone_states/state_stopped.cpp @@ -0,0 +1,12 @@ +#include "drone_states/state_stopped.hpp" +#include + +StateStopped::StateStopped() {} + +auto StateStopped::execute(DroneContext& ctx) -> std::unique_ptr { + return std::make_unique(); +}; + +auto StateStopped::name() const -> const std::string { + return ""; +}; \ No newline at end of file diff --git a/drone_simulation/src/drone_states/state_turning.cpp b/drone_simulation/src/drone_states/state_turning.cpp new file mode 100644 index 0000000..2a6b952 --- /dev/null +++ b/drone_simulation/src/drone_states/state_turning.cpp @@ -0,0 +1,13 @@ + +#include "drone_states/state_turning.hpp" +#include + +StateTurning::StateTurning() {} + +auto StateTurning::execute(DroneContext& ctx) -> std::unique_ptr { + return std::make_unique(); +}; + +auto StateTurning::name() const -> const std::string { + return ""; +}; From 42faad97b38f9ebfd1743aa4364d808b4fb4fb7c Mon Sep 17 00:00:00 2001 From: blinker Date: Tue, 9 Jun 2026 21:07:32 +0000 Subject: [PATCH 07/12] [FEATURE] hw09-state-machine: implement drone_states classses --- .../drone_states/state_decelerating.hpp | 2 +- .../include/drone_states/state_moving.hpp | 2 +- .../include/drone_states/state_stopped.hpp | 2 +- .../include/drone_states/state_turning.hpp | 2 +- .../include/interfaces/drone_state.hpp | 2 +- drone_simulation/include/simulation.hpp | 17 ++++------ .../src/drone_states/state_accelerating.cpp | 32 +++++++++++++++---- .../src/drone_states/state_decelerating.cpp | 28 ++++++++++++---- .../src/drone_states/state_moving.cpp | 26 +++++++++++---- .../src/drone_states/state_stopped.cpp | 26 +++++++++++---- .../src/drone_states/state_turning.cpp | 24 ++++++++++---- drone_simulation/src/simulation.cpp | 13 ++++++++ 12 files changed, 129 insertions(+), 47 deletions(-) diff --git a/drone_simulation/include/drone_states/state_decelerating.hpp b/drone_simulation/include/drone_states/state_decelerating.hpp index ce9f0d5..db375e9 100644 --- a/drone_simulation/include/drone_states/state_decelerating.hpp +++ b/drone_simulation/include/drone_states/state_decelerating.hpp @@ -5,6 +5,6 @@ class StateDecelerating : public IDroneState { public: StateDecelerating(); - auto execute(DroneContext& ctx) -> std::unique_ptr override; + auto execute(DroneContext& context) -> std::unique_ptr override; auto name() const -> const std::string override; }; \ No newline at end of file diff --git a/drone_simulation/include/drone_states/state_moving.hpp b/drone_simulation/include/drone_states/state_moving.hpp index f3af3de..e1cf17d 100644 --- a/drone_simulation/include/drone_states/state_moving.hpp +++ b/drone_simulation/include/drone_states/state_moving.hpp @@ -5,6 +5,6 @@ class StateMoving : public IDroneState { public: StateMoving(); - auto execute(DroneContext& ctx) -> std::unique_ptr override; + auto execute(DroneContext& context) -> std::unique_ptr override; auto name() const -> const std::string override; }; \ No newline at end of file diff --git a/drone_simulation/include/drone_states/state_stopped.hpp b/drone_simulation/include/drone_states/state_stopped.hpp index 1490526..5231360 100644 --- a/drone_simulation/include/drone_states/state_stopped.hpp +++ b/drone_simulation/include/drone_states/state_stopped.hpp @@ -5,6 +5,6 @@ class StateStopped : public IDroneState { public: StateStopped(); - auto execute(DroneContext& ctx) -> std::unique_ptr override; + auto execute(DroneContext& context) -> std::unique_ptr override; auto name() const -> const std::string override; }; \ No newline at end of file diff --git a/drone_simulation/include/drone_states/state_turning.hpp b/drone_simulation/include/drone_states/state_turning.hpp index 913dfc9..6a7b63c 100644 --- a/drone_simulation/include/drone_states/state_turning.hpp +++ b/drone_simulation/include/drone_states/state_turning.hpp @@ -5,6 +5,6 @@ class StateTurning : public IDroneState { public: StateTurning(); - auto execute(DroneContext& ctx) -> std::unique_ptr override; + auto execute(DroneContext& context) -> std::unique_ptr override; auto name() const -> const std::string override; }; \ No newline at end of file diff --git a/drone_simulation/include/interfaces/drone_state.hpp b/drone_simulation/include/interfaces/drone_state.hpp index cce579a..a7e3f42 100644 --- a/drone_simulation/include/interfaces/drone_state.hpp +++ b/drone_simulation/include/interfaces/drone_state.hpp @@ -10,7 +10,7 @@ class IDroneState { // Виконати логіку стану, повернути наступний стан. // Якщо стан не змінився — повернути nullptr // (головний цикл залишить поточний). - virtual std::unique_ptr execute(DroneContext& ctx) = 0; + virtual std::unique_ptr execute(DroneContext& context) = 0; virtual const std::string name() const = 0; }; diff --git a/drone_simulation/include/simulation.hpp b/drone_simulation/include/simulation.hpp index 09474c3..2796f34 100644 --- a/drone_simulation/include/simulation.hpp +++ b/drone_simulation/include/simulation.hpp @@ -84,15 +84,13 @@ struct DroneMotion { }; struct DroneContext { - float desiredDir; - float turnRemaining; - float targetDir; - + float directionToTarget; float speed = 0.0f; - float dir; - Coord pos; + float direction; + float acceleration; + Coord position; - const DroneConfig& cfg; + const DroneConfig& config; }; struct SimulationStep { @@ -103,7 +101,6 @@ struct SimulationStep { DroneMotion droneMotion; }; - float getDistanceToTarget( const Coord& target, const Coord& posiiton ); @@ -145,7 +142,6 @@ float getTimeToStop( float getRatio(const float& distanceToTarget, const float& ammoHorizontalFlightDistance); - DroneState updateDroneState( const DroneState& droneState, const float& deltaAngle, @@ -163,7 +159,6 @@ DroneMotion updateDroneVelocity( DroneMotion droneMotion ); - DroneMotion updateDroneMotion( const float& acceleration, const float& simTimeStep, @@ -174,6 +169,8 @@ DroneMotion updateDroneMotion( DroneMotion droneMotion ); +auto updateDronePosition(const DroneContext& context) -> Coord; + float getManeuveringTime( const float& distanceToTarget, const float& ammoHorizontalFlightDistance, diff --git a/drone_simulation/src/drone_states/state_accelerating.cpp b/drone_simulation/src/drone_states/state_accelerating.cpp index 657cae2..2170a54 100644 --- a/drone_simulation/src/drone_states/state_accelerating.cpp +++ b/drone_simulation/src/drone_states/state_accelerating.cpp @@ -1,12 +1,32 @@ -#include "drone_states/state_accelerating.hpp" #include +#include "drone_states/state_accelerating.hpp" +#include "drone_states/state_moving.hpp" + StateAccelerating::StateAccelerating() {} -auto StateAccelerating::execute(DroneContext& ctx) -> std::unique_ptr { - return std::make_unique(); -}; +auto StateAccelerating::execute(DroneContext& context) -> std::unique_ptr { + + float deltaAngle = normalizeAngle(context.directionToTarget - context.direction); + context.speed += context.acceleration * context.config.simTimeStep; + + if (context.speed > context.config.attackSpeed) { + context.speed = context.config.attackSpeed; + } + + if (fabs(deltaAngle) > 1e-3f && fabs(deltaAngle) <= context.config.turnThreshold) { + context.direction = turnDrone(deltaAngle, context.config.angularSpeed, context.config.simTimeStep, context.direction); + } + + context.position = updateDronePosition(context); + + if (context.speed >= context.config.attackSpeed) { + return std::make_unique(); + } + + return nullptr; +} auto StateAccelerating::name() const -> const std::string { - return ""; -}; \ No newline at end of file + return "Accelerating"; +} \ No newline at end of file diff --git a/drone_simulation/src/drone_states/state_decelerating.cpp b/drone_simulation/src/drone_states/state_decelerating.cpp index 4cf25f7..92219fa 100644 --- a/drone_simulation/src/drone_states/state_decelerating.cpp +++ b/drone_simulation/src/drone_states/state_decelerating.cpp @@ -1,12 +1,28 @@ -#include "drone_states/state_decelerating.hpp" #include +#include "drone_states/state_decelerating.hpp" +#include "drone_states/state_stopped.hpp" +#include "drone_states/state_accelerating.hpp" StateDecelerating::StateDecelerating() {} -auto StateDecelerating::execute(DroneContext& ctx) -> std::unique_ptr { - return std::make_unique(); -}; +auto StateDecelerating::execute(DroneContext& context) -> std::unique_ptr { + float deltaAngle = normalizeAngle(context.directionToTarget - context.direction); + context.position = updateDronePosition(context); + context.speed -= context.acceleration * context.config.simTimeStep; + + if (context.speed <= 1e-3f) { + context.speed = 0; + + return std::make_unique(); + } + + if (std::fabs(deltaAngle) <= context.config.turnThreshold) { + return std::make_unique(); + } + + return nullptr; +} auto StateDecelerating::name() const -> const std::string { - return ""; -}; \ No newline at end of file + return "Decelerating"; +} \ No newline at end of file diff --git a/drone_simulation/src/drone_states/state_moving.cpp b/drone_simulation/src/drone_states/state_moving.cpp index dc5a7c0..33352f2 100644 --- a/drone_simulation/src/drone_states/state_moving.cpp +++ b/drone_simulation/src/drone_states/state_moving.cpp @@ -1,12 +1,26 @@ -#include "drone_states/state_moving.hpp" #include +#include "drone_states/state_moving.hpp" +#include "drone_states/state_decelerating.hpp" + StateMoving::StateMoving() {} -auto StateMoving::execute(DroneContext& ctx) -> std::unique_ptr { - return std::make_unique(); -}; +auto StateMoving::execute(DroneContext& context) -> std::unique_ptr { + float deltaAngle = normalizeAngle(context.directionToTarget - context.direction); + + if (fabs(deltaAngle) > 1e-3f && fabs(deltaAngle) <= context.config.turnThreshold) { + context.direction = turnDrone(deltaAngle, context.config.angularSpeed, context.config.simTimeStep, context.direction); + } + + context.position = updateDronePosition(context); + + if (fabs(deltaAngle) > context.config.turnThreshold) { + return std::make_unique(); + } + + return nullptr; +} auto StateMoving::name() const -> const std::string { - return ""; -}; \ No newline at end of file + return "Moving"; +} \ No newline at end of file diff --git a/drone_simulation/src/drone_states/state_stopped.cpp b/drone_simulation/src/drone_states/state_stopped.cpp index 771a475..a30fb19 100644 --- a/drone_simulation/src/drone_states/state_stopped.cpp +++ b/drone_simulation/src/drone_states/state_stopped.cpp @@ -1,12 +1,24 @@ -#include "drone_states/state_stopped.hpp" #include +#include "drone_states/state_stopped.hpp" +#include "drone_states/state_turning.hpp" +#include "drone_states/state_accelerating.hpp" StateStopped::StateStopped() {} -auto StateStopped::execute(DroneContext& ctx) -> std::unique_ptr { - return std::make_unique(); -}; +auto StateStopped::execute(DroneContext& context) -> std::unique_ptr +{ + float deltaAngle = normalizeAngle(context.directionToTarget - context.direction); + + if (std::fabs(deltaAngle) > context.config.turnThreshold) { + + return std::make_unique(); + } + + return std::make_unique(); +} + -auto StateStopped::name() const -> const std::string { - return ""; -}; \ No newline at end of file +auto StateStopped::name() const -> const std::string +{ + return "Stopped"; +} \ No newline at end of file diff --git a/drone_simulation/src/drone_states/state_turning.cpp b/drone_simulation/src/drone_states/state_turning.cpp index 2a6b952..8daac49 100644 --- a/drone_simulation/src/drone_states/state_turning.cpp +++ b/drone_simulation/src/drone_states/state_turning.cpp @@ -1,13 +1,23 @@ - -#include "drone_states/state_turning.hpp" #include +#include "drone_states/state_turning.hpp" +#include "drone_states/state_accelerating.hpp" + StateTurning::StateTurning() {} -auto StateTurning::execute(DroneContext& ctx) -> std::unique_ptr { - return std::make_unique(); -}; +auto StateTurning::execute(DroneContext& context) -> std::unique_ptr { + float deltaAngle = normalizeAngle(context.directionToTarget - context.direction); + context.direction = turnDrone( + deltaAngle, context.config.angularSpeed, context.config.simTimeStep, context.direction + ); + + if (std::fabs(deltaAngle) <= context.config.turnThreshold) { + return std::make_unique(); + } + + return nullptr; +} auto StateTurning::name() const -> const std::string { - return ""; -}; + return "Turning"; +} diff --git a/drone_simulation/src/simulation.cpp b/drone_simulation/src/simulation.cpp index e4c5b71..e465f21 100644 --- a/drone_simulation/src/simulation.cpp +++ b/drone_simulation/src/simulation.cpp @@ -246,6 +246,19 @@ DroneMotion updateDroneMotion( return droneMotion; } +auto updateDronePosition(const DroneContext& context) -> Coord +{ + Coord position = { + context.position.x, + context.position.y + }; + + position.x += context.speed * cos(context.direction) * context.config.simTimeStep; + position.y += context.speed * sin(context.direction) * context.config.simTimeStep; + + return position; +} + float getManeuveringTime( const float& distanceToTarget, const float& ammoHorizontalFlightDistance, From b62991e9e56471f800554e1c4d23160688986c60 Mon Sep 17 00:00:00 2001 From: blinker Date: Thu, 11 Jun 2026 10:40:21 +0000 Subject: [PATCH 08/12] [FEATURE] hw09-state-machine: add state classes to cmakelists. use state classes in mission_processor step. remove redundant functions from simulation.cpp --- drone_simulation/CMakeLists.txt | 5 + .../drone_states/state_accelerating.hpp | 2 +- .../drone_states/state_decelerating.hpp | 2 +- .../include/drone_states/state_moving.hpp | 2 +- .../include/drone_states/state_stopped.hpp | 2 +- .../include/drone_states/state_turning.hpp | 2 +- .../include/interfaces/drone_state.hpp | 2 +- .../include/mission_processor.hpp | 5 +- drone_simulation/include/simulation.hpp | 46 +- .../src/drone_states/state_accelerating.cpp | 19 +- .../src/drone_states/state_decelerating.cpp | 11 +- .../src/drone_states/state_moving.cpp | 12 +- .../src/drone_states/state_stopped.cpp | 8 +- .../src/drone_states/state_turning.cpp | 10 +- drone_simulation/src/mission_processor.cpp | 90 +- drone_simulation/src/simulation.cpp | 159 +- simulation.json | 3364 +++++++++-------- 17 files changed, 1806 insertions(+), 1935 deletions(-) diff --git a/drone_simulation/CMakeLists.txt b/drone_simulation/CMakeLists.txt index e802d90..9b48d19 100644 --- a/drone_simulation/CMakeLists.txt +++ b/drone_simulation/CMakeLists.txt @@ -8,6 +8,11 @@ add_library(drone_simulation_lib src/config_loaders/file_config_loader.cpp src/config_loaders/factory.cpp src/mission_processor.cpp + src/drone_states/state_stopped.cpp + src/drone_states/state_accelerating.cpp + src/drone_states/state_decelerating.cpp + src/drone_states/state_turning.cpp + src/drone_states/state_moving.cpp ) target_include_directories(drone_simulation_lib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/include) target_compile_options(drone_simulation_lib PRIVATE -Wall -Wextra -pedantic) diff --git a/drone_simulation/include/drone_states/state_accelerating.hpp b/drone_simulation/include/drone_states/state_accelerating.hpp index 3b8fd1e..c3e4b1a 100644 --- a/drone_simulation/include/drone_states/state_accelerating.hpp +++ b/drone_simulation/include/drone_states/state_accelerating.hpp @@ -6,5 +6,5 @@ class StateAccelerating : public IDroneState { StateAccelerating(); auto execute(DroneContext& ctx) -> std::unique_ptr override; - auto name() const -> const std::string override; + auto code() const -> DroneState override; }; \ No newline at end of file diff --git a/drone_simulation/include/drone_states/state_decelerating.hpp b/drone_simulation/include/drone_states/state_decelerating.hpp index db375e9..f0a0979 100644 --- a/drone_simulation/include/drone_states/state_decelerating.hpp +++ b/drone_simulation/include/drone_states/state_decelerating.hpp @@ -6,5 +6,5 @@ class StateDecelerating : public IDroneState { StateDecelerating(); auto execute(DroneContext& context) -> std::unique_ptr override; - auto name() const -> const std::string override; + auto code() const -> DroneState override; }; \ No newline at end of file diff --git a/drone_simulation/include/drone_states/state_moving.hpp b/drone_simulation/include/drone_states/state_moving.hpp index e1cf17d..2239f32 100644 --- a/drone_simulation/include/drone_states/state_moving.hpp +++ b/drone_simulation/include/drone_states/state_moving.hpp @@ -6,5 +6,5 @@ class StateMoving : public IDroneState { StateMoving(); auto execute(DroneContext& context) -> std::unique_ptr override; - auto name() const -> const std::string override; + auto code() const -> DroneState override; }; \ No newline at end of file diff --git a/drone_simulation/include/drone_states/state_stopped.hpp b/drone_simulation/include/drone_states/state_stopped.hpp index 5231360..e9348d2 100644 --- a/drone_simulation/include/drone_states/state_stopped.hpp +++ b/drone_simulation/include/drone_states/state_stopped.hpp @@ -6,5 +6,5 @@ class StateStopped : public IDroneState { StateStopped(); auto execute(DroneContext& context) -> std::unique_ptr override; - auto name() const -> const std::string override; + auto code() const -> DroneState override; }; \ No newline at end of file diff --git a/drone_simulation/include/drone_states/state_turning.hpp b/drone_simulation/include/drone_states/state_turning.hpp index 6a7b63c..9d5c26b 100644 --- a/drone_simulation/include/drone_states/state_turning.hpp +++ b/drone_simulation/include/drone_states/state_turning.hpp @@ -6,5 +6,5 @@ class StateTurning : public IDroneState { StateTurning(); auto execute(DroneContext& context) -> std::unique_ptr override; - auto name() const -> const std::string override; + auto code() const -> DroneState override; }; \ No newline at end of file diff --git a/drone_simulation/include/interfaces/drone_state.hpp b/drone_simulation/include/interfaces/drone_state.hpp index a7e3f42..452f506 100644 --- a/drone_simulation/include/interfaces/drone_state.hpp +++ b/drone_simulation/include/interfaces/drone_state.hpp @@ -12,6 +12,6 @@ class IDroneState { // (головний цикл залишить поточний). virtual std::unique_ptr execute(DroneContext& context) = 0; - virtual const std::string name() const = 0; + virtual DroneState code() const = 0; }; diff --git a/drone_simulation/include/mission_processor.hpp b/drone_simulation/include/mission_processor.hpp index bda0577..2ee105e 100644 --- a/drone_simulation/include/mission_processor.hpp +++ b/drone_simulation/include/mission_processor.hpp @@ -2,6 +2,7 @@ #include "interfaces/ballistic_solver.hpp" #include "interfaces/config_loader.hpp" #include "interfaces/target_provider.hpp" +#include "interfaces/drone_state.hpp" class MissionProcessor { @@ -10,15 +11,15 @@ class MissionProcessor { std::unique_ptr ballisticSolver; DroneConfig droneConfig; AmmoParams ammo; - DroneMotion droneMotion; + DroneContext droneContext; int currentStep = 1; int prevTargetIndex = -1; float currentTime = 0.0f; float prevDirToTarget; float ammoFlightTime; float ammoHorizontalFlightDistance; - float acceleration; bool hit = false; + std::unique_ptr state; public: MissionProcessor(std::unique_ptr targetProvider, std::unique_ptr solver); diff --git a/drone_simulation/include/simulation.hpp b/drone_simulation/include/simulation.hpp index 2796f34..f422fff 100644 --- a/drone_simulation/include/simulation.hpp +++ b/drone_simulation/include/simulation.hpp @@ -80,17 +80,18 @@ struct DroneMotion { float speed = 0.0f; float dir; Coord pos; - DroneState state = STOPPED; + DroneState state; }; struct DroneContext { - float directionToTarget; + float directionToTarget; + float prevDirectionToTarget; float speed = 0.0f; float direction; float acceleration; + float timeToStop; Coord position; - - const DroneConfig& config; + const DroneConfig* config; }; struct SimulationStep { @@ -132,43 +133,8 @@ float turnDrone( float droneDir ); -float getTimeToStop( - const float& attackSpeed, - const float& acceleration, - const float& prevDirToTarget, - const float& angularSpeed, - const DroneMotion& droneMotion -); - float getRatio(const float& distanceToTarget, const float& ammoHorizontalFlightDistance); -DroneState updateDroneState( - const DroneState& droneState, - const float& deltaAngle, - const float& turnThreshold, - const float& droneSpeed, - const float& attackSpeed -); - -DroneMotion updateDroneVelocity( - const float& acceleration, - const float& simTimeStep, - const float& attackSpeed, - const float& angularSpeed, - const float& deltaAngle, - DroneMotion droneMotion -); - -DroneMotion updateDroneMotion( - const float& acceleration, - const float& simTimeStep, - const float& attackSpeed, - const float& angularSpeed, - const float& dirToTarget, - const float& turnThreshold, - DroneMotion droneMotion -); - auto updateDronePosition(const DroneContext& context) -> Coord; float getManeuveringTime( @@ -180,7 +146,7 @@ float getManeuveringTime( ); Coord getBombLandCoord( - DroneMotion& droneMotion, + const DroneContext& droneContext, const float& ammoHorizontalFlightDistance ); diff --git a/drone_simulation/src/drone_states/state_accelerating.cpp b/drone_simulation/src/drone_states/state_accelerating.cpp index 2170a54..8287bfe 100644 --- a/drone_simulation/src/drone_states/state_accelerating.cpp +++ b/drone_simulation/src/drone_states/state_accelerating.cpp @@ -1,6 +1,7 @@ #include #include "drone_states/state_accelerating.hpp" #include "drone_states/state_moving.hpp" +#include "simulation.hpp" StateAccelerating::StateAccelerating() {} @@ -8,25 +9,27 @@ StateAccelerating::StateAccelerating() {} auto StateAccelerating::execute(DroneContext& context) -> std::unique_ptr { float deltaAngle = normalizeAngle(context.directionToTarget - context.direction); - context.speed += context.acceleration * context.config.simTimeStep; + context.speed += context.acceleration * context.config->simTimeStep; - if (context.speed > context.config.attackSpeed) { - context.speed = context.config.attackSpeed; + if (context.speed > context.config->attackSpeed) { + context.speed = context.config->attackSpeed; } - if (fabs(deltaAngle) > 1e-3f && fabs(deltaAngle) <= context.config.turnThreshold) { - context.direction = turnDrone(deltaAngle, context.config.angularSpeed, context.config.simTimeStep, context.direction); + context.timeToStop = context.speed / context.acceleration; + + if (fabs(deltaAngle) > 1e-3f && fabs(deltaAngle) <= context.config->turnThreshold) { + context.direction = turnDrone(deltaAngle, context.config->angularSpeed, context.config->simTimeStep, context.direction); } context.position = updateDronePosition(context); - if (context.speed >= context.config.attackSpeed) { + if (context.speed >= context.config->attackSpeed) { return std::make_unique(); } return nullptr; } -auto StateAccelerating::name() const -> const std::string { - return "Accelerating"; +auto StateAccelerating::code() const -> DroneState { + return ACCELERATING; } \ No newline at end of file diff --git a/drone_simulation/src/drone_states/state_decelerating.cpp b/drone_simulation/src/drone_states/state_decelerating.cpp index 92219fa..b1dd316 100644 --- a/drone_simulation/src/drone_states/state_decelerating.cpp +++ b/drone_simulation/src/drone_states/state_decelerating.cpp @@ -2,27 +2,30 @@ #include "drone_states/state_decelerating.hpp" #include "drone_states/state_stopped.hpp" #include "drone_states/state_accelerating.hpp" +#include "simulation.hpp" StateDecelerating::StateDecelerating() {} auto StateDecelerating::execute(DroneContext& context) -> std::unique_ptr { float deltaAngle = normalizeAngle(context.directionToTarget - context.direction); context.position = updateDronePosition(context); - context.speed -= context.acceleration * context.config.simTimeStep; + context.speed -= context.acceleration * context.config->simTimeStep; + context.timeToStop = context.speed / context.acceleration; if (context.speed <= 1e-3f) { context.speed = 0; + context.timeToStop = 0; return std::make_unique(); } - if (std::fabs(deltaAngle) <= context.config.turnThreshold) { + if (std::fabs(deltaAngle) <= context.config->turnThreshold) { return std::make_unique(); } return nullptr; } -auto StateDecelerating::name() const -> const std::string { - return "Decelerating"; +auto StateDecelerating::code() const -> DroneState { + return DECELERATING; } \ No newline at end of file diff --git a/drone_simulation/src/drone_states/state_moving.cpp b/drone_simulation/src/drone_states/state_moving.cpp index 33352f2..fb745ef 100644 --- a/drone_simulation/src/drone_states/state_moving.cpp +++ b/drone_simulation/src/drone_states/state_moving.cpp @@ -1,6 +1,7 @@ #include #include "drone_states/state_moving.hpp" #include "drone_states/state_decelerating.hpp" +#include "simulation.hpp" StateMoving::StateMoving() {} @@ -8,19 +9,20 @@ StateMoving::StateMoving() {} auto StateMoving::execute(DroneContext& context) -> std::unique_ptr { float deltaAngle = normalizeAngle(context.directionToTarget - context.direction); - if (fabs(deltaAngle) > 1e-3f && fabs(deltaAngle) <= context.config.turnThreshold) { - context.direction = turnDrone(deltaAngle, context.config.angularSpeed, context.config.simTimeStep, context.direction); + if (fabs(deltaAngle) > 1e-3f && fabs(deltaAngle) <= context.config->turnThreshold) { + context.direction = turnDrone(deltaAngle, context.config->angularSpeed, context.config->simTimeStep, context.direction); } + context.timeToStop = context.config->attackSpeed / context.acceleration; context.position = updateDronePosition(context); - if (fabs(deltaAngle) > context.config.turnThreshold) { + if (fabs(deltaAngle) > context.config->turnThreshold) { return std::make_unique(); } return nullptr; } -auto StateMoving::name() const -> const std::string { - return "Moving"; +auto StateMoving::code() const -> DroneState { + return MOVING; } \ No newline at end of file diff --git a/drone_simulation/src/drone_states/state_stopped.cpp b/drone_simulation/src/drone_states/state_stopped.cpp index a30fb19..90da60f 100644 --- a/drone_simulation/src/drone_states/state_stopped.cpp +++ b/drone_simulation/src/drone_states/state_stopped.cpp @@ -2,14 +2,16 @@ #include "drone_states/state_stopped.hpp" #include "drone_states/state_turning.hpp" #include "drone_states/state_accelerating.hpp" +#include "simulation.hpp" StateStopped::StateStopped() {} auto StateStopped::execute(DroneContext& context) -> std::unique_ptr { float deltaAngle = normalizeAngle(context.directionToTarget - context.direction); + context.timeToStop = 0; - if (std::fabs(deltaAngle) > context.config.turnThreshold) { + if (std::fabs(deltaAngle) > context.config->turnThreshold) { return std::make_unique(); } @@ -18,7 +20,7 @@ auto StateStopped::execute(DroneContext& context) -> std::unique_ptr const std::string +auto StateStopped::code() const -> DroneState { - return "Stopped"; + return STOPPED; } \ No newline at end of file diff --git a/drone_simulation/src/drone_states/state_turning.cpp b/drone_simulation/src/drone_states/state_turning.cpp index 8daac49..c7fbf09 100644 --- a/drone_simulation/src/drone_states/state_turning.cpp +++ b/drone_simulation/src/drone_states/state_turning.cpp @@ -1,6 +1,7 @@ #include #include "drone_states/state_turning.hpp" #include "drone_states/state_accelerating.hpp" +#include "simulation.hpp" StateTurning::StateTurning() {} @@ -8,16 +9,17 @@ StateTurning::StateTurning() {} auto StateTurning::execute(DroneContext& context) -> std::unique_ptr { float deltaAngle = normalizeAngle(context.directionToTarget - context.direction); context.direction = turnDrone( - deltaAngle, context.config.angularSpeed, context.config.simTimeStep, context.direction + deltaAngle, context.config->angularSpeed, context.config->simTimeStep, context.direction ); + context.timeToStop = fabs(normalizeAngle(context.prevDirectionToTarget - context.direction)) / context.config->angularSpeed; - if (std::fabs(deltaAngle) <= context.config.turnThreshold) { + if (std::fabs(deltaAngle) <= context.config->turnThreshold) { return std::make_unique(); } return nullptr; } -auto StateTurning::name() const -> const std::string { - return "Turning"; +auto StateTurning::code() const -> DroneState { + return TURNING; } diff --git a/drone_simulation/src/mission_processor.cpp b/drone_simulation/src/mission_processor.cpp index dea1c45..622a5f7 100644 --- a/drone_simulation/src/mission_processor.cpp +++ b/drone_simulation/src/mission_processor.cpp @@ -1,6 +1,7 @@ -#include "mission_processor.hpp" #include +#include "mission_processor.hpp" +#include "drone_states/state_stopped.hpp" MissionProcessor::MissionProcessor( std::unique_ptr targetProvider, @@ -19,16 +20,17 @@ auto MissionProcessor::init(std::unique_ptr configLoader) -> void ammoFlightTime, ammo ); - acceleration = droneConfig.attackSpeed * droneConfig.attackSpeed / (2.0f * droneConfig.accelPath); - droneMotion = { + droneContext = { + .directionToTarget = 0.0f, + .prevDirectionToTarget = 0.0f, .speed = 0.0f, - .dir = droneConfig.initialDir, - .pos = { - .x = droneConfig.startPos.x, - .y = droneConfig.startPos.y - }, - .state = STOPPED + .direction = droneConfig.initialDir, + .acceleration = droneConfig.attackSpeed * droneConfig.attackSpeed / (2.0f * droneConfig.accelPath), + .timeToStop = 0.0f, + .position = droneConfig.startPos, + .config = &droneConfig }; + state = std::make_unique(); } auto MissionProcessor::hasNext() -> bool { @@ -52,15 +54,15 @@ auto MissionProcessor::step() -> SimulationStep { Coord target = getInterpolatedCoords(currentTime, droneConfig.arrayTimeStep, targets->getTarget(i)); // balistic - float distanceToTarget = getDistanceToTarget(target, droneMotion.pos); + float distanceToTarget = getDistanceToTarget(target, droneContext.position); if (distanceToTarget < 1e-6f) { std::cout << "Distance to the target " << i << " is near or less then 0\n" << std::endl; continue; } float ratio = getRatio(distanceToTarget, ammoHorizontalFlightDistance); - Coord fireCoord = getFireCoords(target, droneMotion.pos, ratio); - float distanceToFire = getDistanceToTarget(fireCoord, droneMotion.pos); + Coord fireCoord = getFireCoords(target, droneContext.position, ratio); + float distanceToFire = getDistanceToTarget(fireCoord, droneContext.position); float droneToFireTime = distanceToFire / droneConfig.attackSpeed; float totalTimeRough = droneToFireTime + ammoFlightTime; @@ -69,15 +71,15 @@ auto MissionProcessor::step() -> SimulationStep { ); //predicted balistic - float newDistanceToTarget = getDistanceToTarget(predictedTarget, droneMotion.pos); + float newDistanceToTarget = getDistanceToTarget(predictedTarget, droneContext.position); if (newDistanceToTarget < 1e-6f) { std::cout << "Predicted distance to the target " << i << " is near or less then 0\n" << std::endl; continue; } float newRatio = getRatio(newDistanceToTarget, ammoHorizontalFlightDistance); - Coord newFireCoord = getFireCoords(predictedTarget, droneMotion.pos, newRatio); - float newDistanceToFire = getDistanceToTarget(newFireCoord, droneMotion.pos); + Coord newFireCoord = getFireCoords(predictedTarget, droneContext.position, newRatio); + float newDistanceToFire = getDistanceToTarget(newFireCoord, droneContext.position); float newDroneToFireTime = newDistanceToFire / droneConfig.attackSpeed; float newTotalTime = newDroneToFireTime + ammoFlightTime; @@ -86,19 +88,13 @@ auto MissionProcessor::step() -> SimulationStep { newDistanceToTarget, ammoHorizontalFlightDistance, droneConfig.attackSpeed, - acceleration, + droneContext.acceleration, droneConfig.angularSpeed ); } if (prevTargetIndex != i && prevTargetIndex != -1) { - newTotalTime += getTimeToStop( - droneConfig.attackSpeed, - acceleration, - prevDirToTarget, - droneConfig.angularSpeed, - droneMotion - ); + newTotalTime += droneContext.timeToStop; } if (newTotalTime < bestTotalTime) { @@ -119,27 +115,21 @@ auto MissionProcessor::step() -> SimulationStep { .dropPoint = {0, 0}, .aimPoint = {0, 0}, .predictedTarget = {0, 0}, - .droneMotion = droneMotion + .droneMotion = { droneContext.speed, droneContext.direction, droneContext.position, STOPPED } }; return emptyStep; } - Coord deltaToFire = bestFireCoord - droneMotion.pos; + Coord deltaToFire = bestFireCoord - droneContext.position; Coord dirVec = normalize(deltaToFire); - float dirToTarget = atan2(dirVec.y, dirVec.x); + droneContext.prevDirectionToTarget = prevDirToTarget; + droneContext.directionToTarget = atan2(dirVec.y, dirVec.x); - droneMotion = updateDroneMotion( - acceleration, - droneConfig.simTimeStep, - droneConfig.attackSpeed, - droneConfig.angularSpeed, - dirToTarget, - droneConfig.turnThreshold, - droneMotion - ); + auto next = state->execute(droneContext); + if (next) state = std::move(next); - Coord bombLandCoord = getBombLandCoord(droneMotion, ammoHorizontalFlightDistance); + Coord bombLandCoord = getBombLandCoord(droneContext, ammoHorizontalFlightDistance); Coord targetAtImpact = getInterpolatedCoords( currentTime + ammoFlightTime, droneConfig.arrayTimeStep, @@ -148,18 +138,18 @@ auto MissionProcessor::step() -> SimulationStep { float bombMissDistance = getDistanceToTarget(bombLandCoord, targetAtImpact); Coord dir = { - .x = std::cos(droneMotion.dir), - .y = std::sin(droneMotion.dir) + .x = std::cos(droneContext.direction), + .y = std::sin(droneContext.direction) }; - Coord aimPoint = droneMotion.pos + dir * ammoHorizontalFlightDistance; + Coord aimPoint = droneContext.position + dir * ammoHorizontalFlightDistance; SimulationStep simulationStep = { .target = bestTargetIndex, .dropPoint = bestFireCoord, .aimPoint = aimPoint, .predictedTarget = targetAtImpact, - .droneMotion = droneMotion + .droneMotion = { droneContext.speed, droneContext.direction, droneContext.position, state->code() } }; if (bombMissDistance < droneConfig.hitRadius) { @@ -175,7 +165,7 @@ auto MissionProcessor::step() -> SimulationStep { } prevTargetIndex = bestTargetIndex; - prevDirToTarget = dirToTarget; + prevDirToTarget = droneContext.directionToTarget; currentStep++; currentTime += droneConfig.simTimeStep; @@ -189,15 +179,19 @@ auto MissionProcessor::reset() -> void { prevDirToTarget = droneConfig.initialDir; currentStep = 1; currentTime = 0.0f; - droneMotion = { + + droneContext = { + .directionToTarget = 0.0f, + .prevDirectionToTarget = 0.0f, .speed = 0.0f, - .dir = droneConfig.initialDir, - .pos = { - .x = droneConfig.startPos.x, - .y = droneConfig.startPos.y - }, - .state = STOPPED + .direction = droneConfig.initialDir, + .acceleration = droneContext.acceleration, + .timeToStop = 0.0f, + .position = droneConfig.startPos, + .config = &droneConfig }; + + state = std::make_unique(); } auto MissionProcessor::changeSolver(std::unique_ptr ballisticSolver) -> void { diff --git a/drone_simulation/src/simulation.cpp b/drone_simulation/src/simulation.cpp index e465f21..df5f720 100644 --- a/drone_simulation/src/simulation.cpp +++ b/drone_simulation/src/simulation.cpp @@ -93,159 +93,10 @@ float turnDrone( return droneDir; } -float getTimeToStop( - const float& attackSpeed, - const float& acceleration, - const float& prevDirToTarget, - const float& angularSpeed, - const DroneMotion& droneMotion -) { - switch (droneMotion.state) { - case STOPPED: - return 0; - break; - - case ACCELERATING: - return droneMotion.speed / acceleration; - break; - - case MOVING: - return attackSpeed / acceleration; - break; - - case TURNING: - return fabs(normalizeAngle(prevDirToTarget - droneMotion.dir)) / angularSpeed; - break; - - case DECELERATING: - return droneMotion.speed / acceleration; - break; - - default: - return 0; - } -} - float getRatio(const float& distanceToTarget, const float& ammoHorizontalFlightDistance) { return (distanceToTarget - ammoHorizontalFlightDistance) / distanceToTarget; } -DroneState updateDroneState( - const DroneState& droneState, - const float& deltaAngle, - const float& turnThreshold, - const float& droneSpeed, - const float& attackSpeed -) { - const bool deltaAngleOkToMove = fabs(deltaAngle) <= turnThreshold; - const bool deltaAngleNeedTurn = fabs(deltaAngle) > turnThreshold; - - if (droneState == MOVING && deltaAngleNeedTurn) { - - return DECELERATING; - } else if (droneState == DECELERATING && droneSpeed < 1e-6f) { - - return STOPPED; - } else if (droneState == STOPPED && deltaAngleNeedTurn) { - - return TURNING; - } else if (deltaAngleOkToMove && (droneState == TURNING - || droneState == STOPPED - || droneState == DECELERATING)) { - - return ACCELERATING; - } else if (droneState == ACCELERATING && droneSpeed >= attackSpeed) { - - return MOVING; - } - - return droneState; -} - -DroneMotion updateDroneVelocity( - const float& acceleration, - const float& simTimeStep, - const float& attackSpeed, - const float& angularSpeed, - const float& deltaAngle, - DroneMotion droneMotion -) { - switch (droneMotion.state) { - case STOPPED: - droneMotion.speed = 0; - break; - - case ACCELERATING: - droneMotion.speed += acceleration * simTimeStep; - if (droneMotion.speed > attackSpeed) { - droneMotion.speed = attackSpeed; - } - - if (fabs(deltaAngle) > 1e-6f) { - droneMotion.dir = turnDrone(deltaAngle, angularSpeed, simTimeStep, droneMotion.dir); - } - - break; - - case MOVING: - droneMotion.speed = attackSpeed; - if (fabs(deltaAngle) > 1e-6f) { - droneMotion.dir = turnDrone(deltaAngle, angularSpeed, simTimeStep, droneMotion.dir); - } - break; - - case DECELERATING: - droneMotion.speed -= acceleration * simTimeStep; - if (droneMotion.speed <= 1e-6f) { - droneMotion.speed = 0; - } - break; - - case TURNING: - { - droneMotion.speed = 0; - droneMotion.dir = turnDrone( - deltaAngle, angularSpeed, simTimeStep, droneMotion.dir - ); - } - break; - } - - return droneMotion; -} - -DroneMotion updateDroneMotion( - const float& acceleration, - const float& simTimeStep, - const float& attackSpeed, - const float& angularSpeed, - const float& dirToTarget, - const float& turnThreshold, - DroneMotion droneMotion -) { - float deltaAngle = normalizeAngle(dirToTarget - droneMotion.dir); - - droneMotion.state = updateDroneState( - droneMotion.state, - deltaAngle, - turnThreshold, - droneMotion.speed, - attackSpeed - ); - droneMotion = updateDroneVelocity( - acceleration, - simTimeStep, - attackSpeed, - angularSpeed, - deltaAngle, - droneMotion - ); - droneMotion.pos.x += droneMotion.speed * cos(droneMotion.dir) * simTimeStep; - droneMotion.pos.y += droneMotion.speed * sin(droneMotion.dir) * simTimeStep; - - return droneMotion; -} - auto updateDronePosition(const DroneContext& context) -> Coord { Coord position = { @@ -253,8 +104,8 @@ auto updateDronePosition(const DroneContext& context) -> Coord context.position.y }; - position.x += context.speed * cos(context.direction) * context.config.simTimeStep; - position.y += context.speed * sin(context.direction) * context.config.simTimeStep; + position.x += context.speed * cos(context.direction) * context.config->simTimeStep; + position.y += context.speed * sin(context.direction) * context.config->simTimeStep; return position; } @@ -277,11 +128,11 @@ float getManeuveringTime( } Coord getBombLandCoord( - DroneMotion& droneMotion, + const DroneContext& droneContext, const float& ammoHorizontalFlightDistance ) { - const float bombLandX = droneMotion.pos.x + ammoHorizontalFlightDistance * cos(droneMotion.dir); - const float bombLandY = droneMotion.pos.y + ammoHorizontalFlightDistance * sin(droneMotion.dir); + const float bombLandX = droneContext.position.x + ammoHorizontalFlightDistance * cos(droneContext.direction); + const float bombLandY = droneContext.position.y + ammoHorizontalFlightDistance * sin(droneContext.direction); Coord bombLandCoord = { .x = bombLandX, .y = bombLandY diff --git a/simulation.json b/simulation.json index 41ba630..aa86138 100644 --- a/simulation.json +++ b/simulation.json @@ -23,10 +23,10 @@ }, { "aimPoint": { - "x": 55.59577178955078, - "y": 2.782107353210449 + "x": 55.66533660888672, + "y": 0.0 }, - "direction": 0.05000000074505806, + "direction": 0.0, "dropPoint": { "x": 269.4673156738281, "y": 189.50930786132813 @@ -44,10 +44,10 @@ }, { "aimPoint": { - "x": 55.38724136352539, - "y": 5.557260990142822 + "x": 55.59577178955078, + "y": 2.782107353210449 }, - "direction": 0.10000000149011612, + "direction": 0.05000000074505806, "dropPoint": { "x": 268.9606628417969, "y": 189.54702758789063 @@ -65,10 +65,10 @@ }, { "aimPoint": { - "x": 55.04027557373047, - "y": 8.318524360656738 + "x": 55.38724136352539, + "y": 5.557260990142822 }, - "direction": 0.15000000596046448, + "direction": 0.10000000149011612, "dropPoint": { "x": 268.4532165527344, "y": 189.5845947265625 @@ -86,10 +86,10 @@ }, { "aimPoint": { - "x": 54.55573654174805, - "y": 11.058995246887207 + "x": 55.04027557373047, + "y": 8.318524360656738 }, - "direction": 0.20000000298023224, + "direction": 0.15000000596046448, "dropPoint": { "x": 267.9465637207031, "y": 189.62217712402344 @@ -107,10 +107,10 @@ }, { "aimPoint": { - "x": 53.934837341308594, - "y": 13.771824836730957 + "x": 54.55573654174805, + "y": 11.058995246887207 }, - "direction": 0.25, + "direction": 0.20000000298023224, "dropPoint": { "x": 267.43914794921875, "y": 189.6596221923828 @@ -128,10 +128,10 @@ }, { "aimPoint": { - "x": 53.17912673950195, - "y": 16.450231552124023 + "x": 53.934837341308594, + "y": 13.771824836730957 }, - "direction": 0.30000001192092896, + "direction": 0.25, "dropPoint": { "x": 266.9325256347656, "y": 189.69741821289063 @@ -149,10 +149,10 @@ }, { "aimPoint": { - "x": 52.290496826171875, - "y": 19.087522506713867 + "x": 53.17912673950195, + "y": 16.450231552124023 }, - "direction": 0.3500000238418579, + "direction": 0.30000001192092896, "dropPoint": { "x": 266.42584228515625, "y": 189.73440551757813 @@ -170,10 +170,10 @@ }, { "aimPoint": { - "x": 51.27116775512695, - "y": 21.677104949951172 + "x": 52.290496826171875, + "y": 19.087522506713867 }, - "direction": 0.40000003576278687, + "direction": 0.3500000238418579, "dropPoint": { "x": 265.91839599609375, "y": 189.7716522216797 @@ -191,10 +191,10 @@ }, { "aimPoint": { - "x": 50.123687744140625, - "y": 24.212505340576172 + "x": 51.27116775512695, + "y": 21.677104949951172 }, - "direction": 0.4500000476837158, + "direction": 0.40000003576278687, "dropPoint": { "x": 265.4117431640625, "y": 189.8088836669922 @@ -212,10 +212,10 @@ }, { "aimPoint": { - "x": 48.850929260253906, - "y": 26.68738555908203 + "x": 50.123687744140625, + "y": 24.212505340576172 }, - "direction": 0.5000000596046448, + "direction": 0.4500000476837158, "dropPoint": { "x": 264.904296875, "y": 189.84600830078125 @@ -233,10 +233,10 @@ }, { "aimPoint": { - "x": 47.45606231689453, - "y": 29.095565795898438 + "x": 48.850929260253906, + "y": 26.68738555908203 }, - "direction": 0.5500000715255737, + "direction": 0.5000000596046448, "dropPoint": { "x": 264.39764404296875, "y": 189.88308715820313 @@ -254,10 +254,10 @@ }, { "aimPoint": { - "x": 45.94258117675781, - "y": 31.43101692199707 + "x": 47.45606231689453, + "y": 29.095565795898438 }, - "direction": 0.6000000834465027, + "direction": 0.5500000715255737, "dropPoint": { "x": 264.38397216796875, "y": 189.9552459716797 @@ -275,38 +275,38 @@ }, { "aimPoint": { - "x": 45.21846389770508, - "y": 32.50270080566406 + "x": 45.94258117675781, + "y": 31.43101692199707 }, - "direction": 0.6232274174690247, + "direction": 0.6000000834465027, "dropPoint": { "x": 264.3702392578125, "y": 190.0273895263672 }, "position": { - "x": 0.01826997846364975, - "y": 0.013132325373589993 + "x": 0.0, + "y": 0.0 }, "predictedTarget": { "x": 312.73016357421875, "y": 205.26483154296875 }, - "state": 1, + "state": 3, "targetIndex": 0 }, { "aimPoint": { - "x": 45.24848175048828, - "y": 32.53804016113281 + "x": 45.193580627441406, + "y": 32.49877166748047 }, - "direction": 0.6234280467033386, + "direction": 0.6234310865402222, "dropPoint": { - "x": 264.35675048828125, - "y": 190.09812927246094 + "x": 264.3565368652344, + "y": 190.09918212890625 }, "position": { - "x": 0.054804664105176926, - "y": 0.039404306560754776 + "x": 0.0, + "y": 0.0 }, "predictedTarget": { "x": 312.6651916503906, @@ -317,17 +317,17 @@ }, { "aimPoint": { - "x": 45.29686737060547, - "y": 32.58637237548828 + "x": 45.211849212646484, + "y": 32.51190948486328 }, - "direction": 0.6236252784729004, + "direction": 0.6234310865402222, "dropPoint": { - "x": 264.3442077636719, - "y": 190.16819763183594 + "x": 264.34356689453125, + "y": 190.17138671875 }, "position": { - "x": 0.10959891974925995, - "y": 0.07882308214902878 + "x": 0.018267303705215454, + "y": 0.013136046007275581 }, "predictedTarget": { "x": 312.5951843261719, @@ -338,17 +338,17 @@ }, { "aimPoint": { - "x": 45.36351776123047, - "y": 32.6478385925293 + "x": 45.248382568359375, + "y": 32.53818130493164 }, - "direction": 0.6238220930099487, + "direction": 0.6234310865402222, "dropPoint": { - "x": 264.330322265625, - "y": 190.2371368408203 + "x": 264.3293151855469, + "y": 190.242431640625 }, "position": { - "x": 0.18264758586883545, - "y": 0.1313958317041397 + "x": 0.05480191111564636, + "y": 0.039408136159181595 }, "predictedTarget": { "x": 312.5251770019531, @@ -359,17 +359,17 @@ }, { "aimPoint": { - "x": 45.448524475097656, - "y": 32.7223014831543 + "x": 45.303184509277344, + "y": 32.57758712768555 }, - "direction": 0.6240153908729553, + "direction": 0.6234310865402222, "dropPoint": { - "x": 264.3174743652344, - "y": 190.30538940429688 + "x": 264.3160400390625, + "y": 190.31283569335938 }, "position": { - "x": 0.27394571900367737, - "y": 0.19712941348552704 + "x": 0.10960382223129272, + "y": 0.07881627231836319 }, "predictedTarget": { "x": 312.4551696777344, @@ -380,17 +380,17 @@ }, { "aimPoint": { - "x": 45.55194854736328, - "y": 32.80970764160156 + "x": 45.37625503540039, + "y": 32.630130767822266 }, - "direction": 0.624203622341156, + "direction": 0.6234310865402222, "dropPoint": { - "x": 264.3055419921875, - "y": 190.37228393554688 + "x": 264.3037109375, + "y": 190.38185119628906 }, "position": { - "x": 0.38348862528800964, - "y": 0.2760303318500519 + "x": 0.18267303705215454, + "y": 0.13136045634746552 }, "predictedTarget": { "x": 312.3851623535156, @@ -401,17 +401,17 @@ }, { "aimPoint": { - "x": 45.67368698120117, - "y": 32.91017150878906 + "x": 45.46759033203125, + "y": 32.6958122253418 }, - "direction": 0.6243893504142761, + "direction": 0.6234310865402222, "dropPoint": { - "x": 264.29302978515625, - "y": 190.43771362304688 + "x": 264.29083251953125, + "y": 190.4493865966797 }, "position": { - "x": 0.511271595954895, - "y": 0.3681051433086395 + "x": 0.2740095555782318, + "y": 0.19704067707061768 }, "predictedTarget": { "x": 312.315185546875, @@ -422,17 +422,17 @@ }, { "aimPoint": { - "x": 45.8137321472168, - "y": 33.023712158203125 + "x": 45.5386848449707, + "y": 32.8281135559082 }, - "direction": 0.6245728731155396, + "direction": 0.6246122121810913, "dropPoint": { - "x": 264.28076171875, - "y": 190.50244140625 + "x": 264.2781066894531, + "y": 190.5162353515625 }, "position": { - "x": 0.6572899222373962, - "y": 0.4733603000640869 + "x": 0.3835202157497406, + "y": 0.27598634362220764 }, "predictedTarget": { "x": 312.24517822265625, @@ -443,17 +443,17 @@ }, { "aimPoint": { - "x": 45.972103118896484, - "y": 33.150306701660156 + "x": 45.666446685791016, + "y": 32.92021560668945 }, - "direction": 0.624753475189209, + "direction": 0.6246122121810913, "dropPoint": { - "x": 264.2686767578125, - "y": 190.5660858154297 + "x": 264.26568603515625, + "y": 190.58203125 }, "position": { - "x": 0.8215391635894775, - "y": 0.5918020009994507 + "x": 0.5112826228141785, + "y": 0.36808961629867554 }, "predictedTarget": { "x": 312.1751708984375, @@ -464,17 +464,17 @@ }, { "aimPoint": { - "x": 46.14044189453125, - "y": 33.30154037475586 + "x": 45.81245803833008, + "y": 33.02547836303711 }, - "direction": 0.625186562538147, + "direction": 0.6246122121810913, "dropPoint": { - "x": 263.7267150878906, - "y": 190.34837341308594 + "x": 263.7227783203125, + "y": 190.36619567871094 }, "position": { - "x": 1.003981351852417, - "y": 0.7234829068183899 + "x": 0.6572968363761902, + "y": 0.47335052490234375 }, "predictedTarget": { "x": 312.10516357421875, @@ -485,17 +485,17 @@ }, { "aimPoint": { - "x": 46.32712173461914, - "y": 33.46578598022461 + "x": 45.94208526611328, + "y": 33.191890716552734 }, - "direction": 0.6256144046783447, + "direction": 0.6256716251373291, "dropPoint": { - "x": 263.1870422363281, - "y": 190.12953186035156 + "x": 263.1820983886719, + "y": 190.149169921875 }, "position": { - "x": 1.2046056985855103, - "y": 0.8684177994728088 + "x": 0.8214372396469116, + "y": 0.5919430255889893 }, "predictedTarget": { "x": 312.03515625, @@ -506,17 +506,17 @@ }, { "aimPoint": { - "x": 46.531883239746094, - "y": 33.64340591430664 + "x": 46.12446212768555, + "y": 33.32366180419922 }, - "direction": 0.6260448098182678, + "direction": 0.6256716251373291, "dropPoint": { - "x": 262.6467590332031, - "y": 189.9105224609375 + "x": 262.6406555175781, + "y": 189.93190002441406 }, "position": { - "x": 1.4234005212783813, - "y": 1.0266227722167969 + "x": 1.0038155317306519, + "y": 0.7237124443054199 }, "predictedTarget": { "x": 311.9651794433594, @@ -527,17 +527,17 @@ }, { "aimPoint": { - "x": 46.75490951538086, - "y": 33.834144592285156 + "x": 46.32508087158203, + "y": 33.46860885620117 }, - "direction": 0.6264716386795044, + "direction": 0.6256716251373291, "dropPoint": { - "x": 262.1073913574219, - "y": 189.6900177001953 + "x": 262.10003662109375, + "y": 189.71307373046875 }, "position": { - "x": 1.6603550910949707, - "y": 1.1981126070022583 + "x": 1.2044316530227661, + "y": 0.8686587810516357 }, "predictedTarget": { "x": 311.8951721191406, @@ -548,17 +548,17 @@ }, { "aimPoint": { - "x": 46.996150970458984, - "y": 34.0380859375 + "x": 46.50128936767578, + "y": 33.68567657470703 }, - "direction": 0.626896321773529, + "direction": 0.6269723773002625, "dropPoint": { - "x": 261.5698547363281, - "y": 189.46922302246094 + "x": 261.5611267089844, + "y": 189.493896484375 }, "position": { - "x": 1.9154584407806396, - "y": 1.3829022645950317 + "x": 1.4230796098709106, + "y": 1.0270665884017944 }, "predictedTarget": { "x": 311.8251647949219, @@ -569,17 +569,17 @@ }, { "aimPoint": { - "x": 47.255577087402344, - "y": 34.2552490234375 + "x": 46.738155364990234, + "y": 33.85728454589844 }, - "direction": 0.6273191571235657, + "direction": 0.6269723773002625, "dropPoint": { - "x": 261.033447265625, - "y": 189.24778747558594 + "x": 261.023193359375, + "y": 189.27401733398438 }, "position": { - "x": 2.188699722290039, - "y": 1.5810067653656006 + "x": 1.6599482297897339, + "y": 1.1986750364303589 }, "predictedTarget": { "x": 311.7551574707031, @@ -590,17 +590,17 @@ }, { "aimPoint": { - "x": 47.53317642211914, - "y": 34.48567199707031 + "x": 46.993247985839844, + "y": 34.04209518432617 }, - "direction": 0.6277405023574829, + "direction": 0.6269723773002625, "dropPoint": { - "x": 260.4974670410156, - "y": 189.02529907226563 + "x": 260.485595703125, + "y": 189.05300903320313 }, "position": { - "x": 2.4800679683685303, - "y": 1.7924410104751587 + "x": 1.9150375127792358, + "y": 1.383484125137329 }, "predictedTarget": { "x": 311.6851501464844, @@ -611,17 +611,17 @@ }, { "aimPoint": { - "x": 47.828887939453125, - "y": 34.72941970825195 + "x": 47.22430419921875, + "y": 34.298336029052734 }, - "direction": 0.6281616687774658, + "direction": 0.6282570362091064, "dropPoint": { - "x": 259.962890625, - "y": 188.80294799804688 + "x": 259.94927978515625, + "y": 188.83209228515625 }, "position": { - "x": 2.7895522117614746, - "y": 2.0172202587127686 + "x": 2.1880929470062256, + "y": 1.5818448066711426 }, "predictedTarget": { "x": 311.61517333984375, @@ -632,17 +632,17 @@ }, { "aimPoint": { - "x": 48.14290237426758, - "y": 34.986244201660156 + "x": 47.51556396484375, + "y": 34.50992202758789 }, - "direction": 0.6285765767097473, + "direction": 0.6282570362091064, "dropPoint": { - "x": 259.43115234375, - "y": 188.5794677734375 + "x": 259.4156799316406, + "y": 188.61000061035156 }, "position": { - "x": 3.117142677307129, - "y": 2.2553577423095703 + "x": 2.4793519973754883, + "y": 1.7934296131134033 }, "predictedTarget": { "x": 311.545166015625, @@ -653,17 +653,17 @@ }, { "aimPoint": { - "x": 48.474952697753906, - "y": 35.25650405883789 + "x": 47.82502746582031, + "y": 34.7347297668457 }, - "direction": 0.628993034362793, + "direction": 0.6282570362091064, "dropPoint": { - "x": 258.8993835449219, - "y": 188.35577392578125 + "x": 258.8819580078125, + "y": 188.38760375976563 }, "position": { - "x": 3.4628279209136963, - "y": 2.506869077682495 + "x": 2.7888147830963135, + "y": 2.0182383060455322 }, "predictedTarget": { "x": 311.47515869140625, @@ -674,17 +674,17 @@ }, { "aimPoint": { - "x": 48.814544677734375, - "y": 35.554603576660156 + "x": 48.10036849975586, + "y": 35.044681549072266 }, - "direction": 0.6297282576560974, + "direction": 0.6298432946205139, "dropPoint": { - "x": 258.894775390625, - "y": 188.6397705078125 + "x": 258.8763427734375, + "y": 188.6739501953125 }, "position": { - "x": 3.826512336730957, - "y": 2.771885395050049 + "x": 3.116103172302246, + "y": 2.2567906379699707 }, "predictedTarget": { "x": 311.4051513671875, @@ -695,17 +695,17 @@ }, { "aimPoint": { - "x": 49.17216491699219, - "y": 35.866119384765625 + "x": 48.445838928222656, + "y": 35.296485900878906 }, - "direction": 0.6304612755775452, + "direction": 0.6298432946205139, "dropPoint": { - "x": 258.889892578125, - "y": 188.92262268066406 + "x": 258.8704833984375, + "y": 188.959228515625 }, "position": { - "x": 4.208176612854004, - "y": 3.0504322052001953 + "x": 3.4615743160247803, + "y": 2.5085959434509277 }, "predictedTarget": { "x": 311.33514404296875, @@ -716,17 +716,17 @@ }, { "aimPoint": { - "x": 49.548011779785156, - "y": 36.1907844543457 + "x": 48.760841369628906, + "y": 35.6281852722168 }, - "direction": 0.6311857104301453, + "direction": 0.6313136219978333, "dropPoint": { - "x": 258.8869323730469, - "y": 189.20338439941406 + "x": 258.8665466308594, + "y": 189.2424774169922 }, "position": { - "x": 4.607804298400879, - "y": 3.3425328731536865 + "x": 3.824838161468506, + "y": 2.77418851852417 }, "predictedTarget": { "x": 311.26019287109375, @@ -737,17 +737,17 @@ }, { "aimPoint": { - "x": 49.94181442260742, - "y": 36.528953552246094 + "x": 49.142269134521484, + "y": 35.90705871582031 }, - "direction": 0.6319088935852051, + "direction": 0.6313136219978333, "dropPoint": { - "x": 258.8837585449219, - "y": 189.4833221435547 + "x": 258.8623962402344, + "y": 189.5249481201172 }, "position": { - "x": 5.025375843048096, - "y": 3.6482129096984863 + "x": 4.206264972686768, + "y": 3.053060531616211 }, "predictedTarget": { "x": 311.18017578125, @@ -758,17 +758,17 @@ }, { "aimPoint": { - "x": 50.353660583496094, - "y": 36.880523681640625 + "x": 49.49357604980469, + "y": 36.26515197753906 }, - "direction": 0.6326279044151306, + "direction": 0.6327688694000244, "dropPoint": { - "x": 258.8802795410156, - "y": 189.76126098632813 + "x": 258.85797119140625, + "y": 189.80548095703125 }, "position": { - "x": 5.460873126983643, - "y": 3.967496633529663 + "x": 4.605429649353027, + "y": 3.3457934856414795 }, "predictedTarget": { "x": 311.1001892089844, @@ -779,17 +779,17 @@ }, { "aimPoint": { - "x": 50.78357696533203, - "y": 37.245452880859375 + "x": 49.910884857177734, + "y": 36.571189880371094 }, - "direction": 0.6333412528038025, + "direction": 0.6327688694000244, "dropPoint": { - "x": 258.8780212402344, - "y": 190.03768920898438 + "x": 258.8547058105469, + "y": 190.08457946777344 }, "position": { - "x": 5.914278507232666, - "y": 4.300407409667969 + "x": 5.022737979888916, + "y": 3.6518325805664063 }, "predictedTarget": { "x": 311.0201721191406, @@ -800,17 +800,17 @@ }, { "aimPoint": { - "x": 51.231483459472656, - "y": 37.62384033203125 + "x": 50.298553466796875, + "y": 36.955596923828125 }, - "direction": 0.6340507864952087, + "direction": 0.634205162525177, "dropPoint": { - "x": 258.8762512207031, - "y": 190.31280517578125 + "x": 258.85205078125, + "y": 190.36239624023438 }, "position": { - "x": 6.3855743408203125, - "y": 4.646968841552734 + "x": 5.457731246948242, + "y": 3.9718027114868164 }, "predictedTarget": { "x": 310.940185546875, @@ -821,17 +821,17 @@ }, { "aimPoint": { - "x": 51.69749450683594, - "y": 38.01554489135742 + "x": 50.751670837402344, + "y": 37.28889846801758 }, - "direction": 0.6347527503967285, + "direction": 0.634205162525177, "dropPoint": { - "x": 258.87567138671875, - "y": 190.58558654785156 + "x": 258.85040283203125, + "y": 190.637939453125 }, "position": { - "x": 6.874744415283203, - "y": 5.007203102111816 + "x": 5.910849094390869, + "y": 4.305104732513428 }, "predictedTarget": { "x": 310.8601989746094, @@ -842,17 +842,17 @@ }, { "aimPoint": { - "x": 52.18135452270508, - "y": 38.42091369628906 + "x": 51.175621032714844, + "y": 37.69972229003906 }, - "direction": 0.6354542374610901, + "direction": 0.635622501373291, "dropPoint": { - "x": 258.8741149902344, - "y": 190.8572235107422 + "x": 258.8479309082031, + "y": 190.9123992919922 }, "position": { - "x": 7.38176965713501, - "y": 5.381134986877441 + "x": 6.3815999031066895, + "y": 4.652406692504883 }, "predictedTarget": { "x": 310.7801818847656, @@ -863,17 +863,17 @@ }, { "aimPoint": { - "x": 52.68325424194336, - "y": 38.839683532714844 + "x": 51.66447830200195, + "y": 38.06037902832031 }, - "direction": 0.636148989200592, + "direction": 0.635622501373291, "dropPoint": { - "x": 258.87371826171875, - "y": 191.12681579589844 + "x": 258.8465576171875, + "y": 191.1848907470703 }, "position": { - "x": 7.9066338539123535, - "y": 5.768786430358887 + "x": 6.870456218719482, + "y": 5.013066291809082 }, "predictedTarget": { "x": 310.7001953125, @@ -884,17 +884,17 @@ }, { "aimPoint": { - "x": 53.2266845703125, - "y": 39.24006652832031 + "x": 52.17144012451172, + "y": 38.43439865112305 }, - "direction": 0.6361350417137146, + "direction": 0.635622501373291, "dropPoint": { - "x": 258.58758544921875, - "y": 190.9100799560547 + "x": 258.5586853027344, + "y": 190.96934509277344 }, "position": { - "x": 8.449602127075195, - "y": 6.169797897338867 + "x": 7.377418518066406, + "y": 5.387083530426025 }, "predictedTarget": { "x": 310.62017822265625, @@ -905,17 +905,17 @@ }, { "aimPoint": { - "x": 53.78831100463867, - "y": 39.653690338134766 + "x": 52.696510314941406, + "y": 38.821773529052734 }, - "direction": 0.6361182928085327, + "direction": 0.635622501373291, "dropPoint": { - "x": 258.30206298828125, - "y": 190.69276428222656 + "x": 258.2712707519531, + "y": 190.7531280517578 }, "position": { - "x": 9.010676383972168, - "y": 6.584167003631592 + "x": 7.902486801147461, + "y": 5.774458885192871 }, "predictedTarget": { "x": 310.5401916503906, @@ -926,17 +926,17 @@ }, { "aimPoint": { - "x": 54.36809158325195, - "y": 40.080596923828125 + "x": 53.239681243896484, + "y": 39.222503662109375 }, - "direction": 0.6361001133918762, + "direction": 0.635622501373291, "dropPoint": { - "x": 258.01806640625, - "y": 190.47601318359375 + "x": 257.9853515625, + "y": 190.5374298095703 }, "position": { - "x": 9.589858055114746, - "y": 7.011892318725586 + "x": 8.445660591125488, + "y": 6.175191879272461 }, "predictedTarget": { "x": 310.4552307128906, @@ -947,17 +947,17 @@ }, { "aimPoint": { - "x": 54.96614074707031, - "y": 40.52064895629883 + "x": 53.800960540771484, + "y": 39.6365966796875 }, - "direction": 0.6360771656036377, + "direction": 0.635622501373291, "dropPoint": { - "x": 257.7354431152344, - "y": 190.25848388671875 + "x": 257.7007751464844, + "y": 190.32090759277344 }, "position": { - "x": 10.187149047851563, - "y": 7.452970027923584 + "x": 9.006939888000488, + "y": 6.589282512664795 }, "predictedTarget": { "x": 310.365234375, @@ -968,17 +968,17 @@ }, { "aimPoint": { - "x": 55.582427978515625, - "y": 40.97388458251953 + "x": 54.380348205566406, + "y": 40.06404495239258 }, - "direction": 0.6360505223274231, + "direction": 0.635622501373291, "dropPoint": { - "x": 257.45513916015625, - "y": 190.04132080078125 + "x": 257.4184265136719, + "y": 190.10467529296875 }, "position": { - "x": 10.80255126953125, - "y": 7.907397270202637 + "x": 9.586325645446777, + "y": 7.016730785369873 }, "predictedTarget": { "x": 310.27520751953125, @@ -989,17 +989,17 @@ }, { "aimPoint": { - "x": 56.2169189453125, - "y": 41.440330505371094 + "x": 54.97783660888672, + "y": 40.504852294921875 }, - "direction": 0.6360208988189697, + "direction": 0.635622501373291, "dropPoint": { - "x": 257.1763610839844, - "y": 189.82418823242188 + "x": 257.1375732421875, + "y": 189.88839721679688 }, "position": { - "x": 11.436067581176758, - "y": 8.375171661376953 + "x": 10.183816909790039, + "y": 7.4575371742248535 }, "predictedTarget": { "x": 310.1852111816406, @@ -1010,17 +1010,17 @@ }, { "aimPoint": { - "x": 56.86959457397461, - "y": 41.92003631591797 + "x": 55.59343719482422, + "y": 40.959014892578125 }, - "direction": 0.6359893679618835, + "direction": 0.635622501373291, "dropPoint": { - "x": 256.8984375, - "y": 189.6070098876953 + "x": 256.8575439453125, + "y": 189.6720733642578 }, "position": { - "x": 12.087699890136719, - "y": 8.856289863586426 + "x": 10.799413681030273, + "y": 7.911701202392578 }, "predictedTarget": { "x": 310.09521484375, @@ -1031,17 +1031,17 @@ }, { "aimPoint": { - "x": 57.54049301147461, - "y": 42.41294479370117 + "x": 56.22713851928711, + "y": 41.426536560058594 }, - "direction": 0.6359546780586243, + "direction": 0.635622501373291, "dropPoint": { - "x": 256.6221923828125, - "y": 189.38995361328125 + "x": 256.5790710449219, + "y": 189.4557647705078 }, "position": { - "x": 12.757450103759766, - "y": 9.350749969482422 + "x": 11.433116912841797, + "y": 8.379222869873047 }, "predictedTarget": { "x": 310.0052185058594, @@ -1052,17 +1052,17 @@ }, { "aimPoint": { - "x": 58.22964096069336, - "y": 42.919010162353516 + "x": 56.87894821166992, + "y": 41.90741729736328 }, - "direction": 0.6359160542488098, + "direction": 0.635622501373291, "dropPoint": { - "x": 256.3475646972656, - "y": 189.1726837158203 + "x": 256.3022155761719, + "y": 189.2391815185547 }, "position": { - "x": 13.445321083068848, - "y": 9.85854721069336 + "x": 12.084925651550293, + "y": 8.860102653503418 }, "predictedTarget": { "x": 309.91522216796875, @@ -1073,17 +1073,17 @@ }, { "aimPoint": { - "x": 58.937034606933594, - "y": 43.43825149536133 + "x": 57.54886245727539, + "y": 42.40165328979492 }, - "direction": 0.6358739137649536, + "direction": 0.635622501373291, "dropPoint": { - "x": 256.0754699707031, - "y": 188.9560089111328 + "x": 256.0278015136719, + "y": 189.02313232421875 }, "position": { - "x": 14.15131664276123, - "y": 10.379677772521973 + "x": 12.754839897155762, + "y": 9.354339599609375 }, "predictedTarget": { "x": 309.8252258300781, @@ -1094,17 +1094,17 @@ }, { "aimPoint": { - "x": 59.64329147338867, - "y": 43.99689483642578 + "x": 58.201751708984375, + "y": 42.95682144165039 }, - "direction": 0.6364045739173889, + "direction": 0.6366688013076782, "dropPoint": { - "x": 255.81396484375, - "y": 188.961181640625 + "x": 255.7638702392578, + "y": 189.03005981445313 }, "position": { - "x": 14.875130653381348, - "y": 10.914554595947266 + "x": 13.442328453063965, + "y": 9.862654685974121 }, "predictedTarget": { "x": 309.7352294921875, @@ -1115,17 +1115,17 @@ }, { "aimPoint": { - "x": 60.36751174926758, - "y": 44.56907653808594 + "x": 58.90733337402344, + "y": 43.478511810302734 }, - "direction": 0.636930525302887, + "direction": 0.6366688013076782, "dropPoint": { - "x": 255.5549774169922, - "y": 188.96554565429688 + "x": 255.5023956298828, + "y": 189.03622436523438 }, "position": { - "x": 15.616751670837402, - "y": 11.463193893432617 + "x": 14.147909164428711, + "y": 10.384346008300781 }, "predictedTarget": { "x": 309.6452331542969, @@ -1136,17 +1136,17 @@ }, { "aimPoint": { - "x": 61.109619140625, - "y": 45.15487289428711 + "x": 59.59522247314453, + "y": 44.061920166015625 }, - "direction": 0.6374530792236328, + "direction": 0.6377320885658264, "dropPoint": { - "x": 255.2970733642578, - "y": 188.96864318847656 + "x": 255.24205017089844, + "y": 189.04104614257813 }, "position": { - "x": 16.37616729736328, - "y": 12.02561092376709 + "x": 14.871012687683105, + "y": 10.920183181762695 }, "predictedTarget": { "x": 309.5502624511719, @@ -1157,17 +1157,17 @@ }, { "aimPoint": { - "x": 61.86961364746094, - "y": 45.754295349121094 + "x": 60.336402893066406, + "y": 44.61115646362305 }, - "direction": 0.6379721164703369, + "direction": 0.6377320885658264, "dropPoint": { - "x": 255.04196166992188, - "y": 188.9716033935547 + "x": 254.98434448242188, + "y": 189.04580688476563 }, "position": { - "x": 17.153364181518555, - "y": 12.601822853088379 + "x": 15.61219310760498, + "y": 11.469416618347168 }, "predictedTarget": { "x": 309.45025634765625, @@ -1178,17 +1178,17 @@ }, { "aimPoint": { - "x": 62.64751434326172, - "y": 46.367332458496094 + "x": 61.060272216796875, + "y": 45.22148513793945 }, - "direction": 0.6384868621826172, + "direction": 0.6387812495231628, "dropPoint": { - "x": 254.78802490234375, - "y": 188.97296142578125 + "x": 254.72776794433594, + "y": 189.04888916015625 }, "position": { - "x": 17.948331832885742, - "y": 13.19184398651123 + "x": 16.370861053466797, + "y": 12.032841682434082 }, "predictedTarget": { "x": 309.3502502441406, @@ -1199,17 +1199,17 @@ }, { "aimPoint": { - "x": 63.44322967529297, - "y": 46.99408721923828 + "x": 61.837005615234375, + "y": 45.79832458496094 }, - "direction": 0.6389994621276855, + "direction": 0.6387812495231628, "dropPoint": { - "x": 254.5360870361328, - "y": 188.97413635253906 + "x": 254.47317504882813, + "y": 189.05186462402344 }, "position": { - "x": 18.761058807373047, - "y": 13.79569149017334 + "x": 17.147592544555664, + "y": 12.609682083129883 }, "predictedTarget": { "x": 309.250244140625, @@ -1220,17 +1220,17 @@ }, { "aimPoint": { - "x": 64.25691223144531, - "y": 47.63435363769531 + "x": 62.59685516357422, + "y": 46.43558883666992 }, - "direction": 0.6395049691200256, + "direction": 0.6398150324821472, "dropPoint": { - "x": 254.28692626953125, - "y": 188.97384643554688 + "x": 254.2212677001953, + "y": 189.05328369140625 }, "position": { - "x": 19.591533660888672, - "y": 14.41337776184082 + "x": 17.941776275634766, + "y": 13.200758934020996 }, "predictedTarget": { "x": 309.1502380371094, @@ -1241,17 +1241,17 @@ }, { "aimPoint": { - "x": 65.08839416503906, - "y": 48.28838348388672 + "x": 63.409088134765625, + "y": 47.04010009765625 }, - "direction": 0.6400084495544434, + "direction": 0.6398150324821472, "dropPoint": { - "x": 254.0391387939453, - "y": 188.9729766845703 + "x": 253.9706573486328, + "y": 189.05418395996094 }, "position": { - "x": 20.43974494934082, - "y": 15.04491901397705 + "x": 18.754009246826172, + "y": 13.805269241333008 }, "predictedTarget": { "x": 309.0502624511719, @@ -1262,17 +1262,17 @@ }, { "aimPoint": { - "x": 65.9377670288086, - "y": 48.956024169921875 + "x": 64.20489501953125, + "y": 47.70431137084961 }, - "direction": 0.6405065059661865, + "direction": 0.6408327221870422, "dropPoint": { - "x": 253.794189453125, - "y": 188.9713134765625 + "x": 253.72291564941406, + "y": 189.05422973632813 }, "position": { - "x": 21.305681228637695, - "y": 15.690328598022461 + "x": 19.583663940429688, + "y": 14.424057960510254 }, "predictedTarget": { "x": 308.95025634765625, @@ -1283,17 +1283,17 @@ }, { "aimPoint": { - "x": 66.80494689941406, - "y": 49.637413024902344 + "x": 65.0525894165039, + "y": 48.336551666259766 }, - "direction": 0.6410015821456909, + "direction": 0.6408327221870422, "dropPoint": { - "x": 253.55072021484375, - "y": 188.96876525878906 + "x": 253.47653198242188, + "y": 189.05345153808594 }, "position": { - "x": 22.189332962036133, - "y": 16.34962272644043 + "x": 20.431354522705078, + "y": 15.05629825592041 }, "predictedTarget": { "x": 308.8502502441406, @@ -1304,17 +1304,17 @@ }, { "aimPoint": { - "x": 67.68942260742188, - "y": 50.33320617675781 + "x": 65.88375091552734, + "y": 49.028533935546875 }, - "direction": 0.6415080428123474, + "direction": 0.6418508291244507, "dropPoint": { - "x": 253.30035400390625, - "y": 188.96424865722656 + "x": 253.22315979003906, + "y": 189.05062866210938 }, "position": { - "x": 23.09067726135254, - "y": 17.0228271484375 + "x": 21.296422958374023, + "y": 15.702871322631836 }, "predictedTarget": { "x": 308.750244140625, @@ -1325,17 +1325,17 @@ }, { "aimPoint": { - "x": 68.59172058105469, - "y": 51.042728424072266 + "x": 66.76683807373047, + "y": 49.68857955932617 }, - "direction": 0.6420102119445801, + "direction": 0.6418508291244507, "dropPoint": { - "x": 253.05227661132813, - "y": 188.9589080810547 + "x": 252.97201538085938, + "y": 189.0470428466797 }, "position": { - "x": 24.009702682495117, - "y": 17.709957122802734 + "x": 22.179513931274414, + "y": 16.3629150390625 }, "predictedTarget": { "x": 308.6502380371094, @@ -1346,17 +1346,17 @@ }, { "aimPoint": { - "x": 69.5118637084961, - "y": 51.76591873168945 + "x": 67.63340759277344, + "y": 50.40826416015625 }, - "direction": 0.64250648021698, + "direction": 0.6428661346435547, "dropPoint": { - "x": 252.8071746826172, - "y": 188.9527587890625 + "x": 252.72393798828125, + "y": 189.0426025390625 }, "position": { - "x": 24.946401596069336, - "y": 18.411026000976563 + "x": 23.07994270324707, + "y": 17.037343978881836 }, "predictedTarget": { "x": 308.5502624511719, @@ -1367,17 +1367,17 @@ }, { "aimPoint": { - "x": 70.44977569580078, - "y": 52.50291442871094 + "x": 68.55184936523438, + "y": 51.0961799621582 }, - "direction": 0.6429995894432068, + "direction": 0.6428661346435547, "dropPoint": { - "x": 252.56375122070313, - "y": 188.9457550048828 + "x": 252.47732543945313, + "y": 189.037353515625 }, "position": { - "x": 25.900760650634766, - "y": 19.126047134399414 + "x": 23.998380661010742, + "y": 17.725261688232422 }, "predictedTarget": { "x": 308.45025634765625, @@ -1388,17 +1388,17 @@ }, { "aimPoint": { - "x": 71.40547180175781, - "y": 53.25365447998047 + "x": 69.48829650878906, + "y": 51.797584533691406 }, - "direction": 0.6434880495071411, + "direction": 0.6428661346435547, "dropPoint": { - "x": 252.32272338867188, - "y": 188.93789672851563 + "x": 252.23313903808594, + "y": 189.03115844726563 }, "position": { - "x": 26.872770309448242, - "y": 19.85503387451172 + "x": 24.934825897216797, + "y": 18.426668167114258 }, "predictedTarget": { "x": 308.3502502441406, @@ -1409,17 +1409,17 @@ }, { "aimPoint": { - "x": 72.37896728515625, - "y": 54.018150329589844 + "x": 70.39176940917969, + "y": 52.58043670654297 }, - "direction": 0.6439716815948486, + "direction": 0.6443601846694946, "dropPoint": { - "x": 252.08416748046875, - "y": 188.92922973632813 + "x": 251.9914093017578, + "y": 189.02407836914063 }, "position": { - "x": 27.8624210357666, - "y": 20.597999572753906 + "x": 25.88821029663086, + "y": 19.142988204956055 }, "predictedTarget": { "x": 308.250244140625, @@ -1430,17 +1430,17 @@ }, { "aimPoint": { - "x": 73.3702392578125, - "y": 54.79642868041992 + "x": 71.36314392089844, + "y": 53.310272216796875 }, - "direction": 0.6444506049156189, + "direction": 0.6443601846694946, "dropPoint": { - "x": 251.84805297851563, - "y": 188.91973876953125 + "x": 251.75198364257813, + "y": 189.0163116455078 }, "position": { - "x": 28.86970329284668, - "y": 21.354957580566406 + "x": 26.85958480834961, + "y": 19.87282371520996 }, "predictedTarget": { "x": 308.1502380371094, @@ -1451,17 +1451,17 @@ }, { "aimPoint": { - "x": 74.37934112548828, - "y": 55.58840560913086 + "x": 72.35250854492188, + "y": 54.053619384765625 }, - "direction": 0.6449230313301086, + "direction": 0.6443601846694946, "dropPoint": { - "x": 251.61520385742188, - "y": 188.90948486328125 + "x": 251.51577758789063, + "y": 189.0077362060547 }, "position": { - "x": 29.894609451293945, - "y": 22.12591552734375 + "x": 27.848947525024414, + "y": 20.616174697875977 }, "predictedTarget": { "x": 308.0502624511719, @@ -1472,17 +1472,17 @@ }, { "aimPoint": { - "x": 75.40616607666016, - "y": 56.394229888916016 + "x": 73.31021881103516, + "y": 54.8764533996582 }, - "direction": 0.6453918814659119, + "direction": 0.6458104252815247, "dropPoint": { - "x": 251.3841552734375, - "y": 188.89834594726563 + "x": 251.28146362304688, + "y": 188.9981689453125 }, "position": { - "x": 30.9371280670166, - "y": 22.910888671875 + "x": 28.855199813842773, + "y": 21.374500274658203 }, "predictedTarget": { "x": 307.95025634765625, @@ -1493,17 +1493,17 @@ }, { "aimPoint": { - "x": 76.45075988769531, - "y": 57.213844299316406 + "x": 74.33444213867188, + "y": 55.64832305908203 }, - "direction": 0.6458555459976196, + "direction": 0.6458104252815247, "dropPoint": { - "x": 251.15573120117188, - "y": 188.88641357421875 + "x": 251.04954528808594, + "y": 188.9879608154297 }, "position": { - "x": 31.997249603271484, - "y": 23.70988655090332 + "x": 29.87942123413086, + "y": 22.1463680267334 }, "predictedTarget": { "x": 307.8502502441406, @@ -1514,17 +1514,17 @@ }, { "aimPoint": { - "x": 77.54798889160156, - "y": 58.00098419189453 + "x": 75.37663269042969, + "y": 56.43373107910156 }, - "direction": 0.6452978253364563, + "direction": 0.6458104252815247, "dropPoint": { - "x": 251.12982177734375, - "y": 188.67532348632813 + "x": 251.02188110351563, + "y": 188.77671813964844 }, "position": { - "x": 33.0757942199707, - "y": 24.521825790405273 + "x": 30.92160987854004, + "y": 22.931777954101563 }, "predictedTarget": { "x": 307.750244140625, @@ -1535,17 +1535,17 @@ }, { "aimPoint": { - "x": 78.66375732421875, - "y": 58.800865173339844 + "x": 76.4367904663086, + "y": 57.23268127441406 }, - "direction": 0.6447363495826721, + "direction": 0.6458104252815247, "dropPoint": { - "x": 251.1048583984375, - "y": 188.46482849121094 + "x": 250.9951171875, + "y": 188.5660858154297 }, "position": { - "x": 34.17277526855469, - "y": 25.346681594848633 + "x": 31.981767654418945, + "y": 23.730728149414063 }, "predictedTarget": { "x": 307.6502380371094, @@ -1556,17 +1556,17 @@ }, { "aimPoint": { - "x": 79.79802703857422, - "y": 59.613548278808594 + "x": 77.55549621582031, + "y": 57.991249084472656 }, - "direction": 0.6441730856895447, + "direction": 0.6446267366409302, "dropPoint": { - "x": 251.0808563232422, - "y": 188.25559997558594 + "x": 250.96922302246094, + "y": 188.35679626464844 }, "position": { - "x": 35.288211822509766, - "y": 26.184431076049805 + "x": 33.060855865478516, + "y": 24.54194450378418 }, "predictedTarget": { "x": 307.5452880859375, @@ -1577,17 +1577,17 @@ }, { "aimPoint": { - "x": 80.95085144042969, - "y": 60.43897247314453 + "x": 78.65257263183594, + "y": 58.81598663330078 }, - "direction": 0.6436070203781128, + "direction": 0.6446267366409302, "dropPoint": { - "x": 251.057861328125, - "y": 188.04737854003906 + "x": 250.94442749023438, + "y": 188.14833068847656 }, "position": { - "x": 36.422122955322266, - "y": 27.035051345825195 + "x": 34.157928466796875, + "y": 25.366680145263672 }, "predictedTarget": { "x": 307.4352722167969, @@ -1598,17 +1598,17 @@ }, { "aimPoint": { - "x": 82.12224578857422, - "y": 61.27710723876953 + "x": 79.80596160888672, + "y": 59.60319519042969 }, - "direction": 0.643038272857666, + "direction": 0.6435078978538513, "dropPoint": { - "x": 251.03582763671875, - "y": 187.84019470214844 + "x": 250.9204864501953, + "y": 187.94091796875 }, "position": { - "x": 37.57452392578125, - "y": 27.89851951599121 + "x": 35.273921966552734, + "y": 26.20368766784668 }, "predictedTarget": { "x": 307.3252868652344, @@ -1619,17 +1619,17 @@ }, { "aimPoint": { - "x": 83.31224822998047, - "y": 62.127899169921875 + "x": 80.93995666503906, + "y": 60.45370101928711 }, - "direction": 0.6424660682678223, + "direction": 0.6435078978538513, "dropPoint": { - "x": 251.01473999023438, - "y": 187.63375854492188 + "x": 250.89759826660156, + "y": 187.73411560058594 }, "position": { - "x": 38.74543380737305, - "y": 28.774808883666992 + "x": 36.40791702270508, + "y": 27.054195404052734 }, "predictedTarget": { "x": 307.21527099609375, @@ -1640,17 +1640,17 @@ }, { "aimPoint": { - "x": 84.52082824707031, - "y": 62.99139404296875 + "x": 82.13065338134766, + "y": 61.266048431396484 }, - "direction": 0.6418919563293457, + "direction": 0.6423776149749756, "dropPoint": { - "x": 250.99472045898438, - "y": 187.42877197265625 + "x": 250.8756561279297, + "y": 187.52882385253906 }, "position": { - "x": 39.93486785888672, - "y": 29.663896560668945 + "x": 37.56088638305664, + "y": 27.916900634765625 }, "predictedTarget": { "x": 307.10528564453125, @@ -1661,17 +1661,17 @@ }, { "aimPoint": { - "x": 85.74201965332031, - "y": 63.86302947998047 + "x": 83.3016357421875, + "y": 62.142234802246094 }, - "direction": 0.6413147449493408, + "direction": 0.6423776149749756, "dropPoint": { - "x": 250.97555541992188, - "y": 187.22463989257813 + "x": 250.854736328125, + "y": 187.32418823242188 }, "position": { - "x": 41.13683319091797, - "y": 30.56127166748047 + "x": 38.73187255859375, + "y": 28.793087005615234 }, "predictedTarget": { "x": 306.9952697753906, @@ -1682,38 +1682,38 @@ }, { "aimPoint": { - "x": 86.96369934082031, - "y": 64.73397827148438 + "x": 84.52963256835938, + "y": 62.97972869873047 }, - "direction": 0.6407380700111389, + "direction": 0.6412379145622253, "dropPoint": { - "x": 250.95718383789063, - "y": 187.02255249023438 + "x": 250.83474731445313, + "y": 187.1214599609375 }, "position": { - "x": 42.33931350708008, - "y": 31.45795249938965 + "x": 39.9218864440918, + "y": 29.681396484375 }, "predictedTarget": { "x": 306.8852844238281, "y": 208.8599090576172 }, - "state": 4, + "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 88.18586730957031, - "y": 65.604248046875 + "x": 85.73165893554688, + "y": 63.877010345458984 }, - "direction": 0.6401617527008057, + "direction": 0.6412379145622253, "dropPoint": { - "x": 250.9387969970703, - "y": 186.8218536376953 + "x": 250.81576538085938, + "y": 186.91917419433594 }, "position": { - "x": 43.54231262207031, - "y": 32.353939056396484 + "x": 41.12392044067383, + "y": 30.578678131103516 }, "predictedTarget": { "x": 306.7752685546875, @@ -1724,17 +1724,17 @@ }, { "aimPoint": { - "x": 89.3738784790039, - "y": 66.52033996582031 + "x": 86.93370056152344, + "y": 64.7742919921875 }, - "direction": 0.6406004428863525, + "direction": 0.6412379145622253, "dropPoint": { - "x": 250.721435546875, - "y": 186.80133056640625 + "x": 250.59634399414063, + "y": 186.8988037109375 }, "position": { - "x": 44.74491882324219, - "y": 33.25045394897461 + "x": 42.32595443725586, + "y": 31.47595977783203 }, "predictedTarget": { "x": 306.665283203125, @@ -1745,17 +1745,17 @@ }, { "aimPoint": { - "x": 90.56143188476563, - "y": 67.4370346069336 + "x": 88.13572692871094, + "y": 65.67156982421875 }, - "direction": 0.6410408020019531, + "direction": 0.6412379145622253, "dropPoint": { - "x": 250.50473022460938, - "y": 186.78077697753906 + "x": 250.3776397705078, + "y": 186.87826538085938 }, "position": { - "x": 45.94712829589844, - "y": 34.147499084472656 + "x": 43.52798843383789, + "y": 32.37324142456055 }, "predictedTarget": { "x": 306.5552673339844, @@ -1766,17 +1766,17 @@ }, { "aimPoint": { - "x": 91.74873352050781, - "y": 68.35406494140625 + "x": 89.3377685546875, + "y": 66.56885528564453 }, - "direction": 0.641477108001709, + "direction": 0.6412379145622253, "dropPoint": { - "x": 250.29135131835938, - "y": 186.76040649414063 + "x": 250.16229248046875, + "y": 186.8578338623047 }, "position": { - "x": 47.148948669433594, - "y": 35.045066833496094 + "x": 44.73002243041992, + "y": 33.27052307128906 }, "predictedTarget": { "x": 306.4452819824219, @@ -1787,17 +1787,17 @@ }, { "aimPoint": { - "x": 92.9356918334961, - "y": 69.27151489257813 + "x": 90.4994888305664, + "y": 67.52008056640625 }, - "direction": 0.6419112086296082, + "direction": 0.6424159407615662, "dropPoint": { - "x": 250.07992553710938, - "y": 186.73977661132813 + "x": 249.9490203857422, + "y": 186.8370819091797 }, "position": { - "x": 48.350379943847656, - "y": 35.94315719604492 + "x": 45.930999755859375, + "y": 34.169219970703125 }, "predictedTarget": { "x": 306.33526611328125, @@ -1808,17 +1808,17 @@ }, { "aimPoint": { - "x": 94.12223052978516, - "y": 70.18952178955078 + "x": 91.70046997070313, + "y": 68.41877746582031 }, - "direction": 0.6423462629318237, + "direction": 0.6424159407615662, "dropPoint": { - "x": 249.869873046875, - "y": 186.71946716308594 + "x": 249.7369842529297, + "y": 186.81678771972656 }, "position": { - "x": 49.55141830444336, - "y": 36.84177017211914 + "x": 47.13197708129883, + "y": 35.06791687011719 }, "predictedTarget": { "x": 306.22528076171875, @@ -1829,17 +1829,17 @@ }, { "aimPoint": { - "x": 95.30845642089844, - "y": 71.10792541503906 + "x": 92.90144348144531, + "y": 69.31747436523438 }, - "direction": 0.6427786946296692, + "direction": 0.6424159407615662, "dropPoint": { - "x": 249.66246032714844, - "y": 186.6992950439453 + "x": 249.5276336669922, + "y": 186.7965087890625 }, "position": { - "x": 50.75206756591797, - "y": 37.740901947021484 + "x": 48.33295440673828, + "y": 35.96661376953125 }, "predictedTarget": { "x": 306.1152648925781, @@ -1850,17 +1850,17 @@ }, { "aimPoint": { - "x": 96.49424743652344, - "y": 72.02688598632813 + "x": 94.05760192871094, + "y": 70.27597045898438 }, - "direction": 0.6432120203971863, + "direction": 0.64372318983078, "dropPoint": { - "x": 249.4564208984375, - "y": 186.67942810058594 + "x": 249.31976318359375, + "y": 186.77647399902344 }, "position": { - "x": 51.952327728271484, - "y": 38.64055633544922 + "x": 49.532752990722656, + "y": 36.866878509521484 }, "predictedTarget": { "x": 306.0052795410156, @@ -1871,17 +1871,17 @@ }, { "aimPoint": { - "x": 97.67972564697266, - "y": 72.94625091552734 + "x": 95.25740051269531, + "y": 71.17623901367188 }, - "direction": 0.6436430811882019, + "direction": 0.64372318983078, "dropPoint": { - "x": 249.25233459472656, - "y": 186.65933227539063 + "x": 249.11370849609375, + "y": 186.75637817382813 }, "position": { - "x": 53.152198791503906, - "y": 39.54072570800781 + "x": 50.73255157470703, + "y": 37.76714324951172 }, "predictedTarget": { "x": 305.895263671875, @@ -1892,17 +1892,17 @@ }, { "aimPoint": { - "x": 98.86488342285156, - "y": 73.86602020263672 + "x": 96.45719909667969, + "y": 72.07649993896484 }, - "direction": 0.6440717577934265, + "direction": 0.64372318983078, "dropPoint": { - "x": 249.05023193359375, - "y": 186.63900756835938 + "x": 248.90966796875, + "y": 186.7359619140625 }, "position": { - "x": 54.3516845703125, - "y": 40.441410064697266 + "x": 51.932350158691406, + "y": 38.66740798950195 }, "predictedTarget": { "x": 305.7852783203125, @@ -1913,17 +1913,17 @@ }, { "aimPoint": { - "x": 100.04971313476563, - "y": 74.78621673583984 + "x": 97.61259460449219, + "y": 73.03587341308594 }, - "direction": 0.6444987058639526, + "direction": 0.6450164318084717, "dropPoint": { - "x": 248.8507537841797, - "y": 186.61911010742188 + "x": 248.7083740234375, + "y": 186.7158660888672 }, "position": { - "x": 55.550785064697266, - "y": 41.34260559082031 + "x": 53.130985260009766, + "y": 39.5692253112793 }, "predictedTarget": { "x": 305.6752624511719, @@ -1934,17 +1934,17 @@ }, { "aimPoint": { - "x": 101.254150390625, - "y": 75.68031311035156 + "x": 98.81123352050781, + "y": 73.93768310546875 }, - "direction": 0.6443434357643127, + "direction": 0.6450164318084717, "dropPoint": { - "x": 248.6236572265625, - "y": 186.4015350341797 + "x": 248.47927856445313, + "y": 186.49627685546875 }, "position": { - "x": 56.75002670288086, - "y": 42.243614196777344 + "x": 54.329620361328125, + "y": 40.47104263305664 }, "predictedTarget": { "x": 305.5652770996094, @@ -1955,17 +1955,17 @@ }, { "aimPoint": { - "x": 102.45875549316406, - "y": 76.57418823242188 + "x": 100.0098648071289, + "y": 74.83950805664063 }, - "direction": 0.6441872119903564, + "direction": 0.6450164318084717, "dropPoint": { - "x": 248.39920043945313, - "y": 186.18606567382813 + "x": 248.2528076171875, + "y": 186.27877807617188 }, "position": { - "x": 57.94940948486328, - "y": 43.14443588256836 + "x": 55.528255462646484, + "y": 41.372859954833984 }, "predictedTarget": { "x": 305.45526123046875, @@ -1976,17 +1976,17 @@ }, { "aimPoint": { - "x": 103.66348266601563, - "y": 77.4678955078125 + "x": 101.20849609375, + "y": 75.74131774902344 }, - "direction": 0.6440315842628479, + "direction": 0.6450164318084717, "dropPoint": { - "x": 248.17617797851563, - "y": 185.97225952148438 + "x": 248.02774047851563, + "y": 186.06301879882813 }, "position": { - "x": 59.14893341064453, - "y": 44.04507064819336 + "x": 56.726890563964844, + "y": 42.27467727661133 }, "predictedTarget": { "x": 305.34527587890625, @@ -1997,17 +1997,17 @@ }, { "aimPoint": { - "x": 104.86834716796875, - "y": 78.36140441894531 + "x": 102.40713500976563, + "y": 76.64314270019531 }, - "direction": 0.6438758969306946, + "direction": 0.6450164318084717, "dropPoint": { - "x": 247.955810546875, - "y": 185.76083374023438 + "x": 247.80532836914063, + "y": 185.84967041015625 }, "position": { - "x": 60.348594665527344, - "y": 44.945518493652344 + "x": 57.9255256652832, + "y": 43.17649459838867 }, "predictedTarget": { "x": 305.2352600097656, @@ -2018,17 +2018,17 @@ }, { "aimPoint": { - "x": 106.0732421875, - "y": 79.25487518310547 + "x": 103.60577392578125, + "y": 77.54495239257813 }, - "direction": 0.64372318983078, + "direction": 0.6450164318084717, "dropPoint": { - "x": 247.73626708984375, - "y": 185.55130004882813 + "x": 247.58370971679688, + "y": 185.63827514648438 }, "position": { - "x": 61.54839324951172, - "y": 45.84578323364258 + "x": 59.12416076660156, + "y": 44.078311920166016 }, "predictedTarget": { "x": 305.125244140625, @@ -2039,17 +2039,17 @@ }, { "aimPoint": { - "x": 107.27835083007813, - "y": 80.1480712890625 + "x": 104.80440521240234, + "y": 78.44677734375 }, - "direction": 0.6435685157775879, + "direction": 0.6450164318084717, "dropPoint": { - "x": 247.5194091796875, - "y": 185.34361267089844 + "x": 247.36471557617188, + "y": 185.42872619628906 }, "position": { - "x": 62.74833297729492, - "y": 46.74586486816406 + "x": 60.32279586791992, + "y": 44.98012924194336 }, "predictedTarget": { "x": 305.0152587890625, @@ -2060,17 +2060,17 @@ }, { "aimPoint": { - "x": 108.48360443115234, - "y": 81.04106140136719 + "x": 106.04069519042969, + "y": 79.29847717285156 }, - "direction": 0.6434135437011719, + "direction": 0.643919825553894, "dropPoint": { - "x": 247.3052215576172, - "y": 185.13827514648438 + "x": 247.1483612060547, + "y": 185.22157287597656 }, "position": { - "x": 63.94841003417969, - "y": 47.64575958251953 + "x": 61.52241897583008, + "y": 45.88063049316406 }, "predictedTarget": { "x": 304.9052429199219, @@ -2081,17 +2081,17 @@ }, { "aimPoint": { - "x": 109.68896484375, - "y": 81.93391418457031 + "x": 107.24032592773438, + "y": 80.198974609375 }, - "direction": 0.6432594656944275, + "direction": 0.643919825553894, "dropPoint": { - "x": 247.09243774414063, - "y": 184.93463134765625 + "x": 246.9336395263672, + "y": 185.01588439941406 }, "position": { - "x": 65.14862823486328, - "y": 48.54547119140625 + "x": 62.722042083740234, + "y": 46.781131744384766 }, "predictedTarget": { "x": 304.7952575683594, @@ -2102,17 +2102,17 @@ }, { "aimPoint": { - "x": 110.89447021484375, - "y": 82.8265609741211 + "x": 108.43994140625, + "y": 81.09947967529297 }, - "direction": 0.6431050896644592, + "direction": 0.643919825553894, "dropPoint": { - "x": 246.88235473632813, - "y": 184.73333740234375 + "x": 246.72154235839844, + "y": 184.81260681152344 }, "position": { - "x": 66.34898376464844, - "y": 49.44499588012695 + "x": 63.92166519165039, + "y": 47.68163299560547 }, "predictedTarget": { "x": 304.68524169921875, @@ -2123,17 +2123,17 @@ }, { "aimPoint": { - "x": 112.10006713867188, - "y": 83.71910095214844 + "x": 109.63956451416016, + "y": 81.99998474121094 }, - "direction": 0.6429525017738342, + "direction": 0.643919825553894, "dropPoint": { - "x": 246.6737060546875, - "y": 184.5340118408203 + "x": 246.51084899902344, + "y": 184.611328125 }, "position": { - "x": 67.54947662353516, - "y": 50.344337463378906 + "x": 65.12128448486328, + "y": 48.58213424682617 }, "predictedTarget": { "x": 304.57525634765625, @@ -2144,17 +2144,17 @@ }, { "aimPoint": { - "x": 113.28520202636719, - "y": 84.63893127441406 + "x": 110.83918762207031, + "y": 82.90048217773438 }, - "direction": 0.6434003114700317, + "direction": 0.643919825553894, "dropPoint": { - "x": 246.47802734375, - "y": 184.5125732421875 + "x": 246.31307983398438, + "y": 184.5900115966797 }, "position": { - "x": 68.74956512451172, - "y": 51.24421691894531 + "x": 66.32090759277344, + "y": 49.482635498046875 }, "predictedTarget": { "x": 304.4652404785156, @@ -2165,17 +2165,17 @@ }, { "aimPoint": { - "x": 114.46997833251953, - "y": 85.5592269897461 + "x": 112.03881072998047, + "y": 83.80097961425781 }, - "direction": 0.6438468098640442, + "direction": 0.643919825553894, "dropPoint": { - "x": 246.28433227539063, - "y": 184.4912109375 + "x": 246.11740112304688, + "y": 184.56866455078125 }, "position": { - "x": 69.94925689697266, - "y": 52.144630432128906 + "x": 67.5205307006836, + "y": 50.38313674926758 }, "predictedTarget": { "x": 304.3552551269531, @@ -2186,17 +2186,17 @@ }, { "aimPoint": { - "x": 115.65438842773438, - "y": 86.47998046875 + "x": 113.23843383789063, + "y": 84.70148468017578 }, - "direction": 0.6442917585372925, + "direction": 0.643919825553894, "dropPoint": { - "x": 246.0926513671875, - "y": 184.46990966796875 + "x": 245.92379760742188, + "y": 184.54727172851563 }, "position": { - "x": 71.14854431152344, - "y": 53.04557800292969 + "x": 68.72015380859375, + "y": 51.28363800048828 }, "predictedTarget": { "x": 304.2402648925781, @@ -2207,17 +2207,17 @@ }, { "aimPoint": { - "x": 116.83854675292969, - "y": 87.40106201171875 + "x": 114.39262390136719, + "y": 85.66242980957031 }, - "direction": 0.6447322964668274, + "direction": 0.6452425718307495, "dropPoint": { - "x": 245.9041748046875, - "y": 184.44879150390625 + "x": 245.73350524902344, + "y": 184.52593994140625 }, "position": { - "x": 72.3474349975586, - "y": 53.94705581665039 + "x": 69.91858673095703, + "y": 52.185726165771484 }, "predictedTarget": { "x": 304.1202697753906, @@ -2228,17 +2228,17 @@ }, { "aimPoint": { - "x": 118.02224731445313, - "y": 88.32272338867188 + "x": 115.59105682373047, + "y": 86.56451416015625 }, - "direction": 0.6451742649078369, + "direction": 0.6452425718307495, "dropPoint": { - "x": 245.71649169921875, - "y": 184.42764282226563 + "x": 245.54388427734375, + "y": 184.5048370361328 }, "position": { - "x": 73.54592895507813, - "y": 54.849063873291016 + "x": 71.11701965332031, + "y": 53.08781433105469 }, "predictedTarget": { "x": 304.0002746582031, @@ -2249,17 +2249,17 @@ }, { "aimPoint": { - "x": 119.20561218261719, - "y": 89.24484252929688 + "x": 116.78948974609375, + "y": 87.46660614013672 }, - "direction": 0.6456144452095032, + "direction": 0.6452425718307495, "dropPoint": { - "x": 245.53089904785156, - "y": 184.40660095214844 + "x": 245.35635375976563, + "y": 184.48367309570313 }, "position": { - "x": 74.74402618408203, - "y": 55.7515983581543 + "x": 72.3154525756836, + "y": 53.98990249633789 }, "predictedTarget": { "x": 303.8802795410156, @@ -2270,17 +2270,17 @@ }, { "aimPoint": { - "x": 120.38861846923828, - "y": 90.16739654541016 + "x": 117.94223022460938, + "y": 88.4293212890625 }, - "direction": 0.6460530757904053, + "direction": 0.6465707421302795, "dropPoint": { - "x": 245.34725952148438, - "y": 184.3856201171875 + "x": 245.1708984375, + "y": 184.46246337890625 }, "position": { - "x": 75.94172668457031, - "y": 56.654659271240234 + "x": 73.51268768310547, + "y": 54.89358139038086 }, "predictedTarget": { "x": 303.7602844238281, @@ -2291,17 +2291,17 @@ }, { "aimPoint": { - "x": 121.57127380371094, - "y": 91.09040069580078 + "x": 119.13946533203125, + "y": 89.3330078125 }, - "direction": 0.6464900970458984, + "direction": 0.6465707421302795, "dropPoint": { - "x": 245.1656494140625, - "y": 184.36471557617188 + "x": 244.98727416992188, + "y": 184.4415740966797 }, "position": { - "x": 77.13903045654297, - "y": 57.55824279785156 + "x": 74.70992279052734, + "y": 55.79726028442383 }, "predictedTarget": { "x": 303.6402893066406, @@ -2312,17 +2312,17 @@ }, { "aimPoint": { - "x": 122.75363159179688, - "y": 92.01377868652344 + "x": 120.33670043945313, + "y": 90.23667907714844 }, - "direction": 0.6469239592552185, + "direction": 0.6465707421302795, "dropPoint": { - "x": 244.98663330078125, - "y": 184.34393310546875 + "x": 244.80636596679688, + "y": 184.4207000732422 }, "position": { - "x": 78.33594512939453, - "y": 58.462345123291016 + "x": 75.90715789794922, + "y": 56.7009391784668 }, "predictedTarget": { "x": 303.5202941894531, @@ -2333,17 +2333,17 @@ }, { "aimPoint": { - "x": 123.93560028076172, - "y": 92.93765258789063 + "x": 121.48870086669922, + "y": 91.2001953125 }, - "direction": 0.6473575234413147, + "direction": 0.6478827595710754, "dropPoint": { - "x": 244.80905151367188, - "y": 184.32321166992188 + "x": 244.62698364257813, + "y": 184.3997344970703 }, "position": { - "x": 79.53246307373047, - "y": 59.366966247558594 + "x": 77.10320281982422, + "y": 57.6061897277832 }, "predictedTarget": { "x": 303.4002990722656, @@ -2354,17 +2354,17 @@ }, { "aimPoint": { - "x": 125.15379333496094, - "y": 93.8135986328125 + "x": 122.68474578857422, + "y": 92.1054458618164 }, - "direction": 0.6467287540435791, + "direction": 0.6478827595710754, "dropPoint": { - "x": 244.79144287109375, - "y": 184.1466522216797 + "x": 244.60940551757813, + "y": 184.2211456298828 }, "position": { - "x": 80.72955322265625, - "y": 60.270835876464844 + "x": 78.29924774169922, + "y": 58.51144027709961 }, "predictedTarget": { "x": 303.2802734375, @@ -2375,17 +2375,17 @@ }, { "aimPoint": { - "x": 126.37249755859375, - "y": 94.6888198852539 + "x": 123.92414855957031, + "y": 92.95333862304688 }, - "direction": 0.6461009383201599, + "direction": 0.6466249227523804, "dropPoint": { - "x": 244.77394104003906, - "y": 183.97181701660156 + "x": 244.59176635742188, + "y": 184.04440307617188 }, "position": { - "x": 81.92720794677734, - "y": 61.173954010009766 + "x": 79.49642944335938, + "y": 59.415184020996094 }, "predictedTarget": { "x": 303.1602783203125, @@ -2396,17 +2396,17 @@ }, { "aimPoint": { - "x": 127.59163665771484, - "y": 95.56341552734375 + "x": 125.12133026123047, + "y": 93.8570785522461 }, - "direction": 0.6454763412475586, + "direction": 0.6466249227523804, "dropPoint": { - "x": 244.75653076171875, - "y": 183.79922485351563 + "x": 244.57437133789063, + "y": 183.8697509765625 }, "position": { - "x": 83.12542724609375, - "y": 62.07632064819336 + "x": 80.69361114501953, + "y": 60.31892776489258 }, "predictedTarget": { "x": 303.0452575683594, @@ -2417,17 +2417,17 @@ }, { "aimPoint": { - "x": 128.81126403808594, - "y": 96.4373550415039 + "x": 126.36148071289063, + "y": 94.70382690429688 }, - "direction": 0.6448538303375244, + "direction": 0.6453762650489807, "dropPoint": { - "x": 244.73922729492188, - "y": 183.6286163330078 + "x": 244.5570068359375, + "y": 183.697265625 }, "position": { - "x": 84.32421112060547, - "y": 62.977943420410156 + "x": 81.89192199707031, + "y": 61.22117614746094 }, "predictedTarget": { "x": 302.9352722167969, @@ -2438,17 +2438,17 @@ }, { "aimPoint": { - "x": 130.03134155273438, - "y": 97.31063842773438 + "x": 127.55979919433594, + "y": 95.60607147216797 }, - "direction": 0.644233763217926, + "direction": 0.6453762650489807, "dropPoint": { - "x": 244.72201538085938, - "y": 183.4600067138672 + "x": 244.539794921875, + "y": 183.52658081054688 }, "position": { - "x": 85.52355194091797, - "y": 63.878822326660156 + "x": 83.0902328491211, + "y": 62.1234245300293 }, "predictedTarget": { "x": 302.82525634765625, @@ -2459,17 +2459,17 @@ }, { "aimPoint": { - "x": 131.25192260742188, - "y": 98.1832275390625 + "x": 128.80072021484375, + "y": 96.45164489746094 }, - "direction": 0.6436148285865784, + "direction": 0.6441357731819153, "dropPoint": { - "x": 244.70489501953125, - "y": 183.29310607910156 + "x": 244.52252197265625, + "y": 183.35780334472656 }, "position": { - "x": 86.72344970703125, - "y": 64.77896118164063 + "x": 84.28966522216797, + "y": 63.02418518066406 }, "predictedTarget": { "x": 302.71527099609375, @@ -2480,17 +2480,17 @@ }, { "aimPoint": { - "x": 132.47293090820313, - "y": 99.05520629882813 + "x": 130.00015258789063, + "y": 97.35240173339844 }, - "direction": 0.6429991722106934, + "direction": 0.6441357731819153, "dropPoint": { - "x": 244.68788146972656, - "y": 183.12844848632813 + "x": 244.50552368164063, + "y": 183.19110107421875 }, "position": { - "x": 87.92390441894531, - "y": 65.67835998535156 + "x": 85.48909759521484, + "y": 63.92494583129883 }, "predictedTarget": { "x": 302.6052551269531, @@ -2501,17 +2501,17 @@ }, { "aimPoint": { - "x": 133.69442749023438, - "y": 99.92649841308594 + "x": 131.2418212890625, + "y": 98.19683837890625 }, - "direction": 0.642384946346283, + "direction": 0.6429042816162109, "dropPoint": { - "x": 244.67092895507813, - "y": 182.96548461914063 + "x": 244.48849487304688, + "y": 183.02627563476563 }, "position": { - "x": 89.12490844726563, - "y": 66.57701873779297 + "x": 86.68963623046875, + "y": 64.82422637939453 }, "predictedTarget": { "x": 302.4952697753906, @@ -2522,17 +2522,17 @@ }, { "aimPoint": { - "x": 134.91632080078125, - "y": 100.79722595214844 + "x": 132.44236755371094, + "y": 99.09613037109375 }, - "direction": 0.6417749524116516, + "direction": 0.6429042816162109, "dropPoint": { - "x": 244.65415954589844, - "y": 182.80502319335938 + "x": 244.4717254638672, + "y": 182.86375427246094 }, "position": { - "x": 90.32646179199219, - "y": 67.47494506835938 + "x": 87.89017486572266, + "y": 65.7235107421875 }, "predictedTarget": { "x": 302.38525390625, @@ -2543,17 +2543,17 @@ }, { "aimPoint": { - "x": 136.13870239257813, - "y": 101.66725158691406 + "x": 133.68472290039063, + "y": 99.93951416015625 }, - "direction": 0.6411656141281128, + "direction": 0.6416829824447632, "dropPoint": { - "x": 244.637451171875, - "y": 182.64605712890625 + "x": 244.45486450195313, + "y": 182.70286560058594 }, "position": { - "x": 91.52855682373047, - "y": 68.37213897705078 + "x": 89.09181213378906, + "y": 66.62133026123047 }, "predictedTarget": { "x": 302.2752685546875, @@ -2564,17 +2564,17 @@ }, { "aimPoint": { - "x": 137.3253173828125, - "y": 102.58517456054688 + "x": 134.88636779785156, + "y": 100.83732604980469 }, - "direction": 0.6416184306144714, + "direction": 0.6416829824447632, "dropPoint": { - "x": 244.4637451171875, - "y": 182.624267578125 + "x": 244.27920532226563, + "y": 182.68112182617188 }, "position": { - "x": 92.7302474975586, - "y": 69.2698745727539 + "x": 90.29344940185547, + "y": 67.51914978027344 }, "predictedTarget": { "x": 302.1652526855469, @@ -2585,17 +2585,17 @@ }, { "aimPoint": { - "x": 138.51162719726563, - "y": 103.50350952148438 + "x": 136.0880126953125, + "y": 101.73515319824219 }, - "direction": 0.642068088054657, + "direction": 0.6416829824447632, "dropPoint": { - "x": 244.29263305664063, - "y": 182.6026611328125 + "x": 244.106201171875, + "y": 182.65939331054688 }, "position": { - "x": 93.93153381347656, - "y": 70.16815185546875 + "x": 91.49508666992188, + "y": 68.4169692993164 }, "predictedTarget": { "x": 302.0552673339844, @@ -2606,17 +2606,17 @@ }, { "aimPoint": { - "x": 139.69754028320313, - "y": 104.42230987548828 + "x": 137.2431182861328, + "y": 102.69515991210938 }, - "direction": 0.6425164341926575, + "direction": 0.6430416107177734, "dropPoint": { - "x": 244.1229705810547, - "y": 182.58082580566406 + "x": 243.9347686767578, + "y": 182.6373291015625 }, "position": { - "x": 95.13241577148438, - "y": 71.06697082519531 + "x": 92.69550323486328, + "y": 69.31642150878906 }, "predictedTarget": { "x": 301.9402770996094, @@ -2627,17 +2627,17 @@ }, { "aimPoint": { - "x": 140.88311767578125, - "y": 105.34158325195313 + "x": 138.4435272216797, + "y": 103.5946044921875 }, - "direction": 0.6429634690284729, + "direction": 0.6430416107177734, "dropPoint": { - "x": 243.9559326171875, - "y": 182.55963134765625 + "x": 243.76571655273438, + "y": 182.6161346435547 }, "position": { - "x": 96.33290100097656, - "y": 71.96632385253906 + "x": 93.89591979980469, + "y": 70.21587371826172 }, "predictedTarget": { "x": 301.8202819824219, @@ -2648,17 +2648,17 @@ }, { "aimPoint": { - "x": 142.0683135986328, - "y": 106.2613296508789 + "x": 139.64395141601563, + "y": 104.49406433105469 }, - "direction": 0.6434094309806824, + "direction": 0.6430416107177734, "dropPoint": { - "x": 243.7898406982422, - "y": 182.53790283203125 + "x": 243.59771728515625, + "y": 182.59429931640625 }, "position": { - "x": 97.5329818725586, - "y": 72.8662109375 + "x": 95.0963363647461, + "y": 71.11532592773438 }, "predictedTarget": { "x": 301.7002868652344, @@ -2669,17 +2669,17 @@ }, { "aimPoint": { - "x": 143.25318908691406, - "y": 107.18148803710938 + "x": 140.7982177734375, + "y": 105.45499420166016 }, - "direction": 0.6438527703285217, + "direction": 0.6443862915039063, "dropPoint": { - "x": 243.6268310546875, - "y": 182.5168914794922 + "x": 243.43292236328125, + "y": 182.57305908203125 }, "position": { - "x": 98.732666015625, - "y": 73.76663208007813 + "x": 96.29553985595703, + "y": 72.01638793945313 }, "predictedTarget": { "x": 301.58026123046875, @@ -2690,17 +2690,17 @@ }, { "aimPoint": { - "x": 144.437744140625, - "y": 108.10206604003906 + "x": 141.9974365234375, + "y": 106.3560562133789 }, - "direction": 0.6442936658859253, + "direction": 0.6443862915039063, "dropPoint": { - "x": 243.4652862548828, - "y": 182.4954376220703 + "x": 243.26937866210938, + "y": 182.55160522460938 }, "position": { - "x": 99.93195343017578, - "y": 74.6675796508789 + "x": 97.49474334716797, + "y": 72.91744995117188 }, "predictedTarget": { "x": 301.46026611328125, @@ -2711,17 +2711,17 @@ }, { "aimPoint": { - "x": 145.62193298339844, - "y": 109.02308654785156 + "x": 143.19662475585938, + "y": 107.25711822509766 }, - "direction": 0.6447329521179199, + "direction": 0.6443862915039063, "dropPoint": { - "x": 243.30633544921875, - "y": 182.47459411621094 + "x": 243.1085205078125, + "y": 182.5306396484375 }, "position": { - "x": 101.13084411621094, - "y": 75.56905364990234 + "x": 98.6939468383789, + "y": 73.81851196289063 }, "predictedTarget": { "x": 301.34027099609375, @@ -2732,17 +2732,17 @@ }, { "aimPoint": { - "x": 146.80581665039063, - "y": 109.94453430175781 + "x": 144.3502655029297, + "y": 108.21873474121094 }, - "direction": 0.6451699733734131, + "direction": 0.6457120180130005, "dropPoint": { - "x": 243.1488037109375, - "y": 182.45330810546875 + "x": 242.94918823242188, + "y": 182.5091094970703 }, "position": { - "x": 102.32933807373047, - "y": 76.47105407714844 + "x": 99.89195251464844, + "y": 74.72116088867188 }, "predictedTarget": { "x": 301.22027587890625, @@ -2753,17 +2753,17 @@ }, { "aimPoint": { - "x": 147.98931884765625, - "y": 110.86643981933594 + "x": 145.54827880859375, + "y": 109.12138366699219 }, - "direction": 0.6456058025360107, + "direction": 0.6457120180130005, "dropPoint": { - "x": 242.99334716796875, - "y": 182.432373046875 + "x": 242.79176330566406, + "y": 182.48818969726563 }, "position": { - "x": 103.5274429321289, - "y": 77.37358093261719 + "x": 101.08995819091797, + "y": 75.62380981445313 }, "predictedTarget": { "x": 301.10028076171875, @@ -2774,17 +2774,17 @@ }, { "aimPoint": { - "x": 149.20982360839844, - "y": 111.73920440673828 + "x": 146.74627685546875, + "y": 110.02403259277344 }, - "direction": 0.6449543237686157, + "direction": 0.6457120180130005, "dropPoint": { - "x": 242.9764404296875, - "y": 182.27731323242188 + "x": 242.77496337890625, + "y": 182.33091735839844 }, "position": { - "x": 104.72613525390625, - "y": 78.27532196044922 + "x": 102.2879638671875, + "y": 76.52645874023438 }, "predictedTarget": { "x": 300.9802551269531, @@ -2795,17 +2795,17 @@ }, { "aimPoint": { - "x": 150.43077087402344, - "y": 112.611328125 + "x": 147.9442901611328, + "y": 110.92668151855469 }, - "direction": 0.6443063020706177, + "direction": 0.6457120180130005, "dropPoint": { - "x": 242.95962524414063, - "y": 182.12445068359375 + "x": 242.75816345214844, + "y": 182.17605590820313 }, "position": { - "x": 105.92540740966797, - "y": 79.17628479003906 + "x": 103.48596954345703, + "y": 77.42910766601563 }, "predictedTarget": { "x": 300.8602600097656, @@ -2816,17 +2816,17 @@ }, { "aimPoint": { - "x": 151.65220642089844, - "y": 113.48278045654297 + "x": 149.19415283203125, + "y": 111.76039123535156 }, - "direction": 0.6436606049537659, + "direction": 0.6442028880119324, "dropPoint": { - "x": 242.94296264648438, - "y": 181.97360229492188 + "x": 242.74130249023438, + "y": 182.0233917236328 }, "position": { - "x": 107.1252670288086, - "y": 80.07647705078125 + "x": 104.68534088134766, + "y": 78.32994842529297 }, "predictedTarget": { "x": 300.7402648925781, @@ -2837,17 +2837,17 @@ }, { "aimPoint": { - "x": 152.87411499023438, - "y": 114.35356140136719 + "x": 150.39352416992188, + "y": 112.66123962402344 }, - "direction": 0.6430174708366394, + "direction": 0.6442028880119324, "dropPoint": { - "x": 242.9263916015625, - "y": 181.82473754882813 + "x": 242.72476196289063, + "y": 181.8724365234375 }, "position": { - "x": 108.32569885253906, - "y": 80.97589874267578 + "x": 105.88471221923828, + "y": 79.23078918457031 }, "predictedTarget": { "x": 300.6202697753906, @@ -2858,17 +2858,17 @@ }, { "aimPoint": { - "x": 154.09649658203125, - "y": 115.22366333007813 + "x": 151.63699340820313, + "y": 113.5032958984375 }, - "direction": 0.6423768401145935, + "direction": 0.6429175138473511, "dropPoint": { - "x": 242.90994262695313, - "y": 181.6778564453125 + "x": 242.70819091796875, + "y": 181.72369384765625 }, "position": { - "x": 109.5267105102539, - "y": 81.87454986572266 + "x": 107.08523559570313, + "y": 80.13008880615234 }, "predictedTarget": { "x": 300.5002746582031, @@ -2879,17 +2879,17 @@ }, { "aimPoint": { - "x": 155.31939697265625, - "y": 116.09305572509766 + "x": 152.83750915527344, + "y": 114.40259552001953 }, - "direction": 0.6417378187179565, + "direction": 0.6429175138473511, "dropPoint": { - "x": 242.8935546875, - "y": 181.53273010253906 + "x": 242.69183349609375, + "y": 181.57652282714844 }, "position": { - "x": 110.7282943725586, - "y": 82.77243041992188 + "x": 108.28575897216797, + "y": 81.02938842773438 }, "predictedTarget": { "x": 300.3802795410156, @@ -2900,17 +2900,17 @@ }, { "aimPoint": { - "x": 156.54269409179688, - "y": 116.96184539794922 + "x": 154.0817413330078, + "y": 115.24348449707031 }, - "direction": 0.6411026120185852, + "direction": 0.6416414380073547, "dropPoint": { - "x": 242.8773193359375, - "y": 181.38983154296875 + "x": 242.67550659179688, + "y": 181.43173217773438 }, "position": { - "x": 111.93045043945313, - "y": 83.66954803466797 + "x": 109.48743438720703, + "y": 81.92715454101563 }, "predictedTarget": { "x": 300.26025390625, @@ -2921,17 +2921,17 @@ }, { "aimPoint": { - "x": 157.76651000976563, - "y": 117.82992553710938 + "x": 155.28341674804688, + "y": 116.14125061035156 }, - "direction": 0.6404690742492676, + "direction": 0.6416414380073547, "dropPoint": { - "x": 242.8611602783203, - "y": 181.24868774414063 + "x": 242.65936279296875, + "y": 181.28851318359375 }, "position": { - "x": 113.13317108154297, - "y": 84.56590270996094 + "x": 110.6891098022461, + "y": 82.82492065429688 }, "predictedTarget": { "x": 300.1402587890625, @@ -2942,17 +2942,17 @@ }, { "aimPoint": { - "x": 158.99073791503906, - "y": 118.69740295410156 + "x": 156.52833557128906, + "y": 116.98104858398438 }, - "direction": 0.6398390531539917, + "direction": 0.6403761506080627, "dropPoint": { - "x": 242.84515380859375, - "y": 181.10971069335938 + "x": 242.64321899414063, + "y": 181.147705078125 }, "position": { - "x": 114.33645629882813, - "y": 85.46150207519531 + "x": 111.89191436767578, + "y": 83.7211685180664 }, "predictedTarget": { "x": 300.020263671875, @@ -2963,17 +2963,17 @@ }, { "aimPoint": { - "x": 160.21542358398438, - "y": 119.56423950195313 + "x": 157.73114013671875, + "y": 117.87728881835938 }, - "direction": 0.6392119526863098, + "direction": 0.6403761506080627, "dropPoint": { - "x": 242.82928466796875, - "y": 180.97274780273438 + "x": 242.62734985351563, + "y": 181.00865173339844 }, "position": { - "x": 115.5403060913086, - "y": 86.3563461303711 + "x": 113.09471893310547, + "y": 84.61741638183594 }, "predictedTarget": { "x": 299.9002685546875, @@ -2984,17 +2984,17 @@ }, { "aimPoint": { - "x": 161.41995239257813, - "y": 120.45814514160156 + "x": 158.93394470214844, + "y": 118.77354431152344 }, - "direction": 0.6391916275024414, + "direction": 0.6403761506080627, "dropPoint": { - "x": 242.83395385742188, - "y": 180.97219848632813 + "x": 242.63186645507813, + "y": 181.00830078125 }, "position": { - "x": 116.74417114257813, - "y": 87.25116729736328 + "x": 114.29752349853516, + "y": 85.51366424560547 }, "predictedTarget": { "x": 299.7802734375, @@ -3005,17 +3005,17 @@ }, { "aimPoint": { - "x": 162.62452697753906, - "y": 121.35203552246094 + "x": 160.13674926757813, + "y": 119.66978454589844 }, - "direction": 0.6391711831092834, + "direction": 0.6403761506080627, "dropPoint": { - "x": 242.83860778808594, - "y": 180.97166442871094 + "x": 242.63638305664063, + "y": 181.00796508789063 }, "position": { - "x": 117.94805908203125, - "y": 88.14596557617188 + "x": 115.50032806396484, + "y": 86.409912109375 }, "predictedTarget": { "x": 299.6602783203125, @@ -3026,17 +3026,17 @@ }, { "aimPoint": { - "x": 163.82911682128906, - "y": 122.24588012695313 + "x": 161.3395538330078, + "y": 120.5660400390625 }, - "direction": 0.6391505002975464, + "direction": 0.6403761506080627, "dropPoint": { - "x": 242.84329223632813, - "y": 180.97113037109375 + "x": 242.64089965820313, + "y": 181.00762939453125 }, "position": { - "x": 119.15196228027344, - "y": 89.04073333740234 + "x": 116.70313262939453, + "y": 87.30615997314453 }, "predictedTarget": { "x": 299.540283203125, @@ -3047,17 +3047,17 @@ }, { "aimPoint": { - "x": 165.03372192382813, - "y": 123.13970184326172 + "x": 162.5423583984375, + "y": 121.4622802734375 }, - "direction": 0.6391298770904541, + "direction": 0.6403761506080627, "dropPoint": { - "x": 242.84791564941406, - "y": 180.97059631347656 + "x": 242.6453857421875, + "y": 181.00729370117188 }, "position": { - "x": 120.35588836669922, - "y": 89.93547821044922 + "x": 117.90593719482422, + "y": 88.20240783691406 }, "predictedTarget": { "x": 299.4202575683594, @@ -3068,17 +3068,17 @@ }, { "aimPoint": { - "x": 166.23837280273438, - "y": 124.03348541259766 + "x": 163.7451629638672, + "y": 122.35853576660156 }, - "direction": 0.6391088366508484, + "direction": 0.6403761506080627, "dropPoint": { - "x": 242.85260009765625, - "y": 180.97007751464844 + "x": 242.64984130859375, + "y": 181.00698852539063 }, "position": { - "x": 121.55982971191406, - "y": 90.8302001953125 + "x": 119.1087417602539, + "y": 89.0986557006836 }, "predictedTarget": { "x": 299.3002624511719, @@ -3089,17 +3089,17 @@ }, { "aimPoint": { - "x": 167.44302368164063, - "y": 124.92724609375 + "x": 164.94796752929688, + "y": 123.25477600097656 }, - "direction": 0.6390878558158875, + "direction": 0.6403761506080627, "dropPoint": { - "x": 242.85720825195313, - "y": 180.9695587158203 + "x": 242.65432739257813, + "y": 181.0067138671875 }, "position": { - "x": 122.76378631591797, - "y": 91.72489929199219 + "x": 120.3115463256836, + "y": 89.99490356445313 }, "predictedTarget": { "x": 299.1802673339844, @@ -3110,17 +3110,17 @@ }, { "aimPoint": { - "x": 168.647705078125, - "y": 125.82096862792969 + "x": 166.15077209472656, + "y": 124.15103149414063 }, - "direction": 0.6390665769577026, + "direction": 0.6403761506080627, "dropPoint": { - "x": 242.86184692382813, - "y": 180.9690399169922 + "x": 242.6587677001953, + "y": 181.0064239501953 }, "position": { - "x": 123.96776580810547, - "y": 92.61956787109375 + "x": 121.51435089111328, + "y": 90.89115142822266 }, "predictedTarget": { "x": 299.0602722167969, @@ -3131,17 +3131,17 @@ }, { "aimPoint": { - "x": 169.8524169921875, - "y": 126.71464538574219 + "x": 167.35357666015625, + "y": 125.04727172851563 }, - "direction": 0.6390451788902283, + "direction": 0.6403761506080627, "dropPoint": { - "x": 242.86647033691406, - "y": 180.96853637695313 + "x": 242.6632080078125, + "y": 181.00619506835938 }, "position": { - "x": 125.17176055908203, - "y": 93.51421356201172 + "x": 122.71715545654297, + "y": 91.78739929199219 }, "predictedTarget": { "x": 298.9402770996094, @@ -3152,17 +3152,17 @@ }, { "aimPoint": { - "x": 171.05714416503906, - "y": 127.60830688476563 + "x": 168.55638122558594, + "y": 125.94352722167969 }, - "direction": 0.6390236020088196, + "direction": 0.6403761506080627, "dropPoint": { - "x": 242.87112426757813, - "y": 180.96804809570313 + "x": 242.6676483154297, + "y": 181.0059356689453 }, "position": { - "x": 126.37577819824219, - "y": 94.40882873535156 + "x": 123.91996002197266, + "y": 92.68364715576172 }, "predictedTarget": { "x": 298.82025146484375, @@ -3173,17 +3173,17 @@ }, { "aimPoint": { - "x": 172.26190185546875, - "y": 128.50192260742188 + "x": 169.75918579101563, + "y": 126.83976745605469 }, - "direction": 0.6390019655227661, + "direction": 0.6403761506080627, "dropPoint": { - "x": 242.875732421875, - "y": 180.96755981445313 + "x": 242.67205810546875, + "y": 181.00572204589844 }, "position": { - "x": 127.57981872558594, - "y": 95.30342102050781 + "x": 125.12276458740234, + "y": 93.57989501953125 }, "predictedTarget": { "x": 298.70025634765625, @@ -3194,17 +3194,17 @@ }, { "aimPoint": { - "x": 173.47238159179688, - "y": 129.38784790039063 + "x": 170.99887084960938, + "y": 127.68647766113281 }, - "direction": 0.6388130187988281, + "direction": 0.6392958164215088, "dropPoint": { - "x": 242.7135009765625, - "y": 180.81326293945313 + "x": 242.50762939453125, + "y": 180.8496551513672 }, "position": { - "x": 128.78402709960938, - "y": 96.19778442382813 + "x": 126.3265380859375, + "y": 94.47483825683594 }, "predictedTarget": { "x": 298.58026123046875, @@ -3215,17 +3215,17 @@ }, { "aimPoint": { - "x": 174.68304443359375, - "y": 130.27352905273438 + "x": 172.20263671875, + "y": 128.5814208984375 }, - "direction": 0.638623833656311, + "direction": 0.6392958164215088, "dropPoint": { - "x": 242.55384826660156, - "y": 180.66128540039063 + "x": 242.34600830078125, + "y": 180.6956329345703 }, "position": { - "x": 129.9884033203125, - "y": 97.0919189453125 + "x": 127.53031158447266, + "y": 95.36978149414063 }, "predictedTarget": { "x": 298.46026611328125, @@ -3236,17 +3236,17 @@ }, { "aimPoint": { - "x": 175.89382934570313, - "y": 131.15902709960938 + "x": 173.4064178466797, + "y": 129.4763641357422 }, - "direction": 0.6384354829788208, + "direction": 0.6392958164215088, "dropPoint": { - "x": 242.39581298828125, - "y": 180.51112365722656 + "x": 242.18594360351563, + "y": 180.54348754882813 }, "position": { - "x": 131.1929473876953, - "y": 97.98583221435547 + "x": 128.7340850830078, + "y": 96.26472473144531 }, "predictedTarget": { "x": 298.34027099609375, @@ -3257,17 +3257,17 @@ }, { "aimPoint": { - "x": 177.10479736328125, - "y": 132.04428100585938 + "x": 174.61019897460938, + "y": 130.37130737304688 }, - "direction": 0.6382470726966858, + "direction": 0.6392958164215088, "dropPoint": { - "x": 242.24038696289063, - "y": 180.36334228515625 + "x": 242.02847290039063, + "y": 180.39376831054688 }, "position": { - "x": 132.3976593017578, - "y": 98.8795166015625 + "x": 129.9378662109375, + "y": 97.15966796875 }, "predictedTarget": { "x": 298.2202453613281, @@ -3278,17 +3278,17 @@ }, { "aimPoint": { - "x": 178.3158721923828, - "y": 132.92938232421875 + "x": 175.81398010253906, + "y": 131.26625061035156 }, - "direction": 0.6380603313446045, + "direction": 0.6392958164215088, "dropPoint": { - "x": 242.0866241455078, - "y": 180.217529296875 + "x": 241.87258911132813, + "y": 180.24610900878906 }, "position": { - "x": 133.6025390625, - "y": 99.7729721069336 + "x": 131.1416473388672, + "y": 98.05461120605469 }, "predictedTarget": { "x": 298.1002502441406, @@ -3299,17 +3299,17 @@ }, { "aimPoint": { - "x": 179.52708435058594, - "y": 133.81430053710938 + "x": 177.01776123046875, + "y": 132.16119384765625 }, - "direction": 0.6378740668296814, + "direction": 0.6392958164215088, "dropPoint": { - "x": 241.93499755859375, - "y": 180.07382202148438 + "x": 241.71878051757813, + "y": 180.10061645507813 }, "position": { - "x": 134.80758666992188, - "y": 100.66620635986328 + "x": 132.34542846679688, + "y": 98.94955444335938 }, "predictedTarget": { "x": 297.9802551269531, @@ -3320,17 +3320,17 @@ }, { "aimPoint": { - "x": 180.73849487304688, - "y": 134.69894409179688 + "x": 178.26039123535156, + "y": 133.0037841796875 }, - "direction": 0.6376872658729553, + "direction": 0.6381552219390869, "dropPoint": { - "x": 241.78541564941406, - "y": 179.93199157714844 + "x": 241.5670166015625, + "y": 179.95706176757813 }, "position": { - "x": 136.01280212402344, - "y": 101.55921173095703 + "x": 133.5502166748047, + "y": 99.84312438964844 }, "predictedTarget": { "x": 297.8602600097656, @@ -3341,17 +3341,17 @@ }, { "aimPoint": { - "x": 181.9500732421875, - "y": 135.5833740234375 + "x": 179.46517944335938, + "y": 133.89735412597656 }, - "direction": 0.6375004649162292, + "direction": 0.6381552219390869, "dropPoint": { - "x": 241.638427734375, - "y": 179.79251098632813 + "x": 241.41802978515625, + "y": 179.81549072265625 }, "position": { - "x": 137.2181854248047, - "y": 102.45199584960938 + "x": 134.7550048828125, + "y": 100.7366943359375 }, "predictedTarget": { "x": 297.7402648925781, @@ -3362,17 +3362,17 @@ }, { "aimPoint": { - "x": 183.1617431640625, - "y": 136.46766662597656 + "x": 180.6699676513672, + "y": 134.79092407226563 }, - "direction": 0.6373155117034912, + "direction": 0.6381552219390869, "dropPoint": { - "x": 241.49313354492188, - "y": 179.655029296875 + "x": 241.2707061767578, + "y": 179.67605590820313 }, "position": { - "x": 138.42373657226563, - "y": 103.34455871582031 + "x": 135.9597930908203, + "y": 101.63026428222656 }, "predictedTarget": { "x": 297.6202697753906, @@ -3383,17 +3383,17 @@ }, { "aimPoint": { - "x": 184.37364196777344, - "y": 137.35162353515625 + "x": 181.874755859375, + "y": 135.6844940185547 }, - "direction": 0.6371285319328308, + "direction": 0.6381552219390869, "dropPoint": { - "x": 241.350341796875, - "y": 179.51951599121094 + "x": 241.12583923339844, + "y": 179.53860473632813 }, "position": { - "x": 139.6294403076172, - "y": 104.23689270019531 + "x": 137.16458129882813, + "y": 102.52383422851563 }, "predictedTarget": { "x": 297.5002746582031, @@ -3404,17 +3404,17 @@ }, { "aimPoint": { - "x": 185.61962890625, - "y": 138.18948364257813 + "x": 183.13897705078125, + "y": 136.49781799316406 }, - "direction": 0.6359432935714722, + "direction": 0.6364085674285889, "dropPoint": { - "x": 241.4688720703125, - "y": 179.42059326171875 + "x": 241.24627685546875, + "y": 179.437744140625 }, "position": { - "x": 140.83621215820313, - "y": 105.12779998779297 + "x": 138.37094116210938, + "y": 103.41529846191406 }, "predictedTarget": { "x": 297.3802795410156, @@ -3425,17 +3425,17 @@ }, { "aimPoint": { - "x": 186.86627197265625, - "y": 139.02630615234375 + "x": 184.3851318359375, + "y": 137.33534240722656 }, - "direction": 0.6347677707672119, + "direction": 0.6352359056472778, "dropPoint": { - "x": 241.585205078125, - "y": 179.3236541748047 + "x": 241.36471557617188, + "y": 179.33868408203125 }, "position": { - "x": 142.0440216064453, - "y": 106.01728820800781 + "x": 139.57833862304688, + "y": 104.30535125732422 }, "predictedTarget": { "x": 297.2602844238281, @@ -3446,17 +3446,17 @@ }, { "aimPoint": { - "x": 188.1137237548828, - "y": 139.86190795898438 + "x": 185.63211059570313, + "y": 138.17166137695313 }, - "direction": 0.6335975527763367, + "direction": 0.6340684294700623, "dropPoint": { - "x": 241.70016479492188, - "y": 179.22860717773438 + "x": 241.48171997070313, + "y": 179.24148559570313 }, "position": { - "x": 143.25286865234375, - "y": 106.90535736083984 + "x": 140.78677368164063, + "y": 105.1939926147461 }, "predictedTarget": { "x": 297.1402587890625, @@ -3467,17 +3467,17 @@ }, { "aimPoint": { - "x": 189.36187744140625, - "y": 140.69639587402344 + "x": 186.87979125976563, + "y": 139.00686645507813 }, - "direction": 0.6324352025985718, + "direction": 0.632908821105957, "dropPoint": { - "x": 241.8128662109375, - "y": 179.13516235351563 + "x": 241.59646606445313, + "y": 179.14590454101563 }, "position": { - "x": 144.46275329589844, - "y": 107.79202270507813 + "x": 141.99624633789063, + "y": 106.08123016357422 }, "predictedTarget": { "x": 297.020263671875, @@ -3488,17 +3488,17 @@ }, { "aimPoint": { - "x": 190.61082458496094, - "y": 141.5297088623047 + "x": 188.12826538085938, + "y": 139.8408660888672 }, - "direction": 0.631278395652771, + "direction": 0.6317543387413025, "dropPoint": { - "x": 241.924560546875, - "y": 179.0438690185547 + "x": 241.71026611328125, + "y": 179.05245971679688 }, "position": { - "x": 145.6736602783203, - "y": 108.67729187011719 + "x": 143.2067413330078, + "y": 106.96707153320313 }, "predictedTarget": { "x": 296.9002685546875, @@ -3509,17 +3509,17 @@ }, { "aimPoint": { - "x": 191.8604278564453, - "y": 142.3619842529297 + "x": 189.37738037109375, + "y": 140.6738739013672 }, - "direction": 0.6301305890083313, + "direction": 0.6306094527244568, "dropPoint": { - "x": 242.03367614746094, - "y": 178.95407104492188 + "x": 241.82139587402344, + "y": 178.96055603027344 }, "position": { - "x": 146.88558959960938, - "y": 109.56116485595703 + "x": 144.41824340820313, + "y": 107.85152435302734 }, "predictedTarget": { "x": 296.7802734375, @@ -3530,17 +3530,17 @@ }, { "aimPoint": { - "x": 193.11074829101563, - "y": 143.1931610107422 + "x": 190.62721252441406, + "y": 141.50575256347656 }, - "direction": 0.6289900541305542, + "direction": 0.6294711828231812, "dropPoint": { - "x": 242.14138793945313, - "y": 178.8663330078125 + "x": 241.93118286132813, + "y": 178.87069702148438 }, "position": { - "x": 148.09852600097656, - "y": 110.44365692138672 + "x": 145.63075256347656, + "y": 108.73460388183594 }, "predictedTarget": { "x": 296.6602783203125, @@ -3551,17 +3551,17 @@ }, { "aimPoint": { - "x": 194.3616943359375, - "y": 144.02333068847656 + "x": 191.877685546875, + "y": 142.33663940429688 }, - "direction": 0.6278588175773621, + "direction": 0.6283420920372009, "dropPoint": { - "x": 242.24691772460938, - "y": 178.78036499023438 + "x": 242.03875732421875, + "y": 178.7825927734375 }, "position": { - "x": 149.3124542236328, - "y": 111.32477569580078 + "x": 146.84425354003906, + "y": 109.6163101196289 }, "predictedTarget": { "x": 296.5402526855469, @@ -3572,17 +3572,17 @@ }, { "aimPoint": { - "x": 195.6133575439453, - "y": 144.85240173339844 + "x": 193.12887573242188, + "y": 143.16641235351563 }, - "direction": 0.6267342567443848, + "direction": 0.6272199153900146, "dropPoint": { - "x": 242.35064697265625, - "y": 178.69602966308594 + "x": 242.14447021484375, + "y": 178.69613647460938 }, "position": { - "x": 150.52737426757813, - "y": 112.20452880859375 + "x": 148.05874633789063, + "y": 110.49665069580078 }, "predictedTarget": { "x": 296.4202575683594, @@ -3593,17 +3593,17 @@ }, { "aimPoint": { - "x": 196.86569213867188, - "y": 145.680419921875 + "x": 194.3807373046875, + "y": 143.99513244628906 }, - "direction": 0.6256172060966492, + "direction": 0.6261048316955566, "dropPoint": { - "x": 242.4529571533203, - "y": 178.61370849609375 + "x": 242.24884033203125, + "y": 178.6116943359375 }, "position": { - "x": 151.74327087402344, - "y": 113.08292388916016 + "x": 149.2742156982422, + "y": 111.37564086914063 }, "predictedTarget": { "x": 296.3002624511719, @@ -3614,17 +3614,17 @@ }, { "aimPoint": { - "x": 198.06602478027344, - "y": 146.5803680419922 + "x": 195.59620666503906, + "y": 144.87411499023438 }, - "direction": 0.6260824799537659, + "direction": 0.6261048316955566, "dropPoint": { - "x": 242.3345489501953, - "y": 178.59234619140625 + "x": 242.12844848632813, + "y": 178.59039306640625 }, "position": { - "x": 152.95877075195313, - "y": 113.96188354492188 + "x": 150.48968505859375, + "y": 112.25463104248047 }, "predictedTarget": { "x": 296.1802673339844, @@ -3635,17 +3635,17 @@ }, { "aimPoint": { - "x": 199.26597595214844, - "y": 147.48080444335938 + "x": 196.81167602539063, + "y": 145.75311279296875 }, - "direction": 0.6265462636947632, + "direction": 0.6261048316955566, "dropPoint": { - "x": 242.21737670898438, - "y": 178.5706787109375 + "x": 242.00941467285156, + "y": 178.5685577392578 }, "position": { - "x": 154.17385864257813, - "y": 114.8414077758789 + "x": 151.7051544189453, + "y": 113.13362121582031 }, "predictedTarget": { "x": 296.06024169921875, @@ -3656,17 +3656,17 @@ }, { "aimPoint": { - "x": 200.46566772460938, - "y": 148.38157653808594 + "x": 197.98025512695313, + "y": 146.69686889648438 }, - "direction": 0.6270051598548889, + "direction": 0.6275036931037903, "dropPoint": { - "x": 242.10302734375, - "y": 178.54940795898438 + "x": 241.893310546875, + "y": 178.54693603515625 }, "position": { - "x": 155.38853454589844, - "y": 115.72148895263672 + "x": 152.91940307617188, + "y": 114.01431274414063 }, "predictedTarget": { "x": 295.9452209472656, @@ -3677,17 +3677,17 @@ }, { "aimPoint": { - "x": 201.6649627685547, - "y": 149.28289794921875 + "x": 199.1945037841797, + "y": 147.5775604248047 }, - "direction": 0.6274639368057251, + "direction": 0.6275036931037903, "dropPoint": { - "x": 241.9903564453125, - "y": 178.52838134765625 + "x": 241.77865600585938, + "y": 178.52593994140625 }, "position": { - "x": 156.60281372070313, - "y": 116.60212707519531 + "x": 154.13365173339844, + "y": 114.89500427246094 }, "predictedTarget": { "x": 295.8352355957031, @@ -3698,17 +3698,17 @@ }, { "aimPoint": { - "x": 202.8640594482422, - "y": 150.18446350097656 + "x": 200.40875244140625, + "y": 148.458251953125 }, - "direction": 0.6279162168502808, + "direction": 0.6275036931037903, "dropPoint": { - "x": 241.8800048828125, - "y": 178.50723266601563 + "x": 241.66644287109375, + "y": 178.50462341308594 }, "position": { - "x": 157.8166961669922, - "y": 117.48331451416016 + "x": 155.347900390625, + "y": 115.77569580078125 }, "predictedTarget": { "x": 295.7252197265625, @@ -3719,17 +3719,17 @@ }, { "aimPoint": { - "x": 204.06272888183594, - "y": 151.0865936279297 + "x": 201.5767822265625, + "y": 149.40255737304688 }, - "direction": 0.6283690929412842, + "direction": 0.628879189491272, "dropPoint": { - "x": 241.7714080810547, - "y": 178.48646545410156 + "x": 241.5561065673828, + "y": 178.48350524902344 }, "position": { - "x": 159.03018188476563, - "y": 118.36505126953125 + "x": 156.56092834472656, + "y": 116.65805053710938 }, "predictedTarget": { "x": 295.615234375, @@ -3740,17 +3740,17 @@ }, { "aimPoint": { - "x": 205.26112365722656, - "y": 151.9890899658203 + "x": 202.78981018066406, + "y": 150.284912109375 }, - "direction": 0.6288180351257324, + "direction": 0.628879189491272, "dropPoint": { - "x": 241.66476440429688, - "y": 178.46568298339844 + "x": 241.44747924804688, + "y": 178.46273803710938 }, "position": { - "x": 160.24327087402344, - "y": 119.2473373413086 + "x": 157.77395629882813, + "y": 117.5404052734375 }, "predictedTarget": { "x": 295.5052185058594, @@ -3761,17 +3761,17 @@ }, { "aimPoint": { - "x": 206.45925903320313, - "y": 152.89193725585938 + "x": 204.00283813476563, + "y": 151.16726684570313 }, - "direction": 0.6292628049850464, + "direction": 0.628879189491272, "dropPoint": { - "x": 241.5601348876953, - "y": 178.4449005126953 + "x": 241.34097290039063, + "y": 178.44178771972656 }, "position": { - "x": 161.45596313476563, - "y": 120.13015747070313 + "x": 158.9869842529297, + "y": 118.42276000976563 }, "predictedTarget": { "x": 295.3952331542969, @@ -3782,17 +3782,17 @@ }, { "aimPoint": { - "x": 207.65704345703125, - "y": 153.79519653320313 + "x": 205.1704864501953, + "y": 152.11192321777344 }, - "direction": 0.6297051310539246, + "direction": 0.6302273273468018, "dropPoint": { - "x": 241.45791625976563, - "y": 178.4246368408203 + "x": 241.23707580566406, + "y": 178.42115783691406 }, "position": { - "x": 162.6682586669922, - "y": 121.01351928710938 + "x": 160.19882202148438, + "y": 119.30675506591797 }, "predictedTarget": { "x": 295.28521728515625, @@ -3803,17 +3803,17 @@ }, { "aimPoint": { - "x": 208.85455322265625, - "y": 154.6988525390625 + "x": 206.38232421875, + "y": 152.99591064453125 }, - "direction": 0.6301445364952087, + "direction": 0.6302273273468018, "dropPoint": { - "x": 241.3573455810547, - "y": 178.40431213378906 + "x": 241.13449096679688, + "y": 178.4008331298828 }, "position": { - "x": 163.8801727294922, - "y": 121.89741516113281 + "x": 161.41065979003906, + "y": 120.19075012207031 }, "predictedTarget": { "x": 295.17523193359375, @@ -3824,17 +3824,17 @@ }, { "aimPoint": { - "x": 210.09083557128906, - "y": 155.54931640625 + "x": 207.5941619873047, + "y": 153.87991333007813 }, - "direction": 0.6294208765029907, + "direction": 0.6302273273468018, "dropPoint": { - "x": 241.341064453125, - "y": 178.30661010742188 + "x": 241.11843872070313, + "y": 178.30079650878906 }, "position": { - "x": 165.0927276611328, - "y": 122.78043365478516 + "x": 162.62249755859375, + "y": 121.07474517822266 }, "predictedTarget": { "x": 295.0652160644531, @@ -3845,17 +3845,17 @@ }, { "aimPoint": { - "x": 211.3275604248047, - "y": 156.39910888671875 + "x": 208.80599975585938, + "y": 154.76390075683594 }, - "direction": 0.6287020444869995, + "direction": 0.6302273273468018, "dropPoint": { - "x": 241.32492065429688, - "y": 178.21104431152344 + "x": 241.10227966308594, + "y": 178.20318603515625 }, "position": { - "x": 166.305908203125, - "y": 123.6625747680664 + "x": 163.83433532714844, + "y": 121.958740234375 }, "predictedTarget": { "x": 294.9552307128906, @@ -3866,17 +3866,17 @@ }, { "aimPoint": { - "x": 212.56478881835938, - "y": 157.24815368652344 + "x": 210.07566833496094, + "y": 155.56849670410156 }, - "direction": 0.6279865503311157, + "direction": 0.6285091638565063, "dropPoint": { - "x": 241.3089599609375, - "y": 178.11744689941406 + "x": 241.0860595703125, + "y": 178.10791015625 }, "position": { - "x": 167.5197296142578, - "y": 124.5438461303711 + "x": 165.04769897460938, + "y": 122.84065246582031 }, "predictedTarget": { "x": 294.84521484375, @@ -3887,17 +3887,17 @@ }, { "aimPoint": { - "x": 213.8025360107422, - "y": 158.09646606445313 + "x": 211.28903198242188, + "y": 156.45040893554688 }, - "direction": 0.6272739171981812, + "direction": 0.6285091638565063, "dropPoint": { - "x": 241.29312133789063, - "y": 178.02569580078125 + "x": 241.07028198242188, + "y": 178.01400756835938 }, "position": { - "x": 168.7341766357422, - "y": 125.42425537109375 + "x": 166.2610626220703, + "y": 123.72256469726563 }, "predictedTarget": { "x": 294.7352294921875, @@ -3908,17 +3908,17 @@ }, { "aimPoint": { - "x": 215.0407257080078, - "y": 158.944091796875 + "x": 212.55014038085938, + "y": 157.2665252685547 }, - "direction": 0.6265660524368286, + "direction": 0.6270869970321655, "dropPoint": { - "x": 241.27745056152344, - "y": 177.93603515625 + "x": 241.05447387695313, + "y": 177.92254638671875 }, "position": { - "x": 169.94924926757813, - "y": 126.30380249023438 + "x": 167.47567749023438, + "y": 124.60274505615234 }, "predictedTarget": { "x": 294.6252136230469, @@ -3929,17 +3929,17 @@ }, { "aimPoint": { - "x": 216.27944946289063, - "y": 159.79092407226563 + "x": 213.76475524902344, + "y": 158.14669799804688 }, - "direction": 0.6258596777915955, + "direction": 0.6270869970321655, "dropPoint": { - "x": 241.26222229003906, - "y": 177.84828186035156 + "x": 241.039306640625, + "y": 177.83265686035156 }, "position": { - "x": 171.16493225097656, - "y": 127.1824951171875 + "x": 168.69029235839844, + "y": 125.48292541503906 }, "predictedTarget": { "x": 294.5152282714844, @@ -3950,17 +3950,17 @@ }, { "aimPoint": { - "x": 217.51858520507813, - "y": 160.63717651367188 + "x": 215.02655029296875, + "y": 158.961669921875 }, - "direction": 0.6251595616340637, + "direction": 0.6256789565086365, "dropPoint": { - "x": 241.24688720703125, - "y": 177.76254272460938 + "x": 241.02377319335938, + "y": 177.7451171875 }, "position": { - "x": 172.38124084472656, - "y": 128.06033325195313 + "x": 169.90614318847656, + "y": 126.36139678955078 }, "predictedTarget": { "x": 294.40521240234375, @@ -3971,17 +3971,17 @@ }, { "aimPoint": { - "x": 218.75814819335938, - "y": 161.48275756835938 + "x": 216.24240112304688, + "y": 159.84014892578125 }, - "direction": 0.6244639158248901, + "direction": 0.6256789565086365, "dropPoint": { - "x": 241.231689453125, - "y": 177.6787567138672 + "x": 241.0086669921875, + "y": 177.65921020507813 }, "position": { - "x": 173.59815979003906, - "y": 128.9373321533203 + "x": 171.1219940185547, + "y": 127.2398681640625 }, "predictedTarget": { "x": 294.29522705078125, @@ -3992,17 +3992,17 @@ }, { "aimPoint": { - "x": 219.99819946289063, - "y": 162.32762145996094 + "x": 217.5047607421875, + "y": 160.65415954589844 }, - "direction": 0.6237713694572449, + "direction": 0.6242883801460266, "dropPoint": { - "x": 241.21664428710938, - "y": 177.5968017578125 + "x": 240.993408203125, + "y": 177.575439453125 }, "position": { - "x": 174.81568908691406, - "y": 129.8134765625 + "x": 172.3390655517578, + "y": 128.1166534423828 }, "predictedTarget": { "x": 294.1852111816406, @@ -4013,17 +4013,17 @@ }, { "aimPoint": { - "x": 221.23866271972656, - "y": 163.17189025878906 + "x": 218.72183227539063, + "y": 161.53094482421875 }, - "direction": 0.6230842471122742, + "direction": 0.6242883801460266, "dropPoint": { - "x": 241.20179748535156, - "y": 177.51690673828125 + "x": 240.97862243652344, + "y": 177.49343872070313 }, "position": { - "x": 176.0338134765625, - "y": 130.6887969970703 + "x": 173.55613708496094, + "y": 128.99343872070313 }, "predictedTarget": { "x": 294.0752258300781, @@ -4034,17 +4034,17 @@ }, { "aimPoint": { - "x": 222.4816436767578, - "y": 164.01258850097656 + "x": 219.9867706298828, + "y": 162.3411865234375 }, - "direction": 0.6223388910293579, + "direction": 0.6228545308113098, "dropPoint": { - "x": 241.18548583984375, - "y": 177.4315948486328 + "x": 240.962158203125, + "y": 177.40628051757813 }, "position": { - "x": 177.25259399414063, - "y": 131.56320190429688 + "x": 174.7744598388672, + "y": 129.86846923828125 }, "predictedTarget": { "x": 293.9652099609375, @@ -4055,17 +4055,17 @@ }, { "aimPoint": { - "x": 223.72506713867188, - "y": 164.8526153564453 + "x": 221.20509338378906, + "y": 163.21621704101563 }, - "direction": 0.6215988397598267, + "direction": 0.6228545308113098, "dropPoint": { - "x": 241.16937255859375, - "y": 177.34841918945313 + "x": 240.94618225097656, + "y": 177.3209228515625 }, "position": { - "x": 178.47201538085938, - "y": 132.43670654296875 + "x": 175.99278259277344, + "y": 130.74349975585938 }, "predictedTarget": { "x": 293.855224609375, @@ -4076,17 +4076,17 @@ }, { "aimPoint": { - "x": 224.968994140625, - "y": 165.69187927246094 + "x": 222.47265625, + "y": 164.0225830078125 }, - "direction": 0.6208621859550476, + "direction": 0.6213767528533936, "dropPoint": { - "x": 241.1534423828125, - "y": 177.26718139648438 + "x": 240.93006896972656, + "y": 177.2379150390625 }, "position": { - "x": 179.69207763671875, - "y": 133.30931091308594 + "x": 177.21240234375, + "y": 131.61672973632813 }, "predictedTarget": { "x": 293.7452087402344, @@ -4097,17 +4097,17 @@ }, { "aimPoint": { - "x": 226.21343994140625, - "y": 166.53036499023438 + "x": 223.6922607421875, + "y": 164.89581298828125 }, - "direction": 0.6201287508010864, + "direction": 0.6213767528533936, "dropPoint": { - "x": 241.1376495361328, - "y": 177.18780517578125 + "x": 240.91433715820313, + "y": 177.15635681152344 }, "position": { - "x": 180.91278076171875, - "y": 134.18101501464844 + "x": 178.43202209472656, + "y": 132.48995971679688 }, "predictedTarget": { "x": 293.6352233886719, @@ -4118,17 +4118,17 @@ }, { "aimPoint": { - "x": 227.458251953125, - "y": 167.36827087402344 + "x": 224.96044921875, + "y": 165.70111083984375 }, - "direction": 0.6194024682044983, + "direction": 0.6199157238006592, "dropPoint": { - "x": 241.12173461914063, - "y": 177.11044311523438 + "x": 240.89822387695313, + "y": 177.0771942138672 }, "position": { - "x": 182.13412475585938, - "y": 135.0518341064453 + "x": 179.6529083251953, + "y": 133.3614044189453 }, "predictedTarget": { "x": 293.52520751953125, @@ -4139,17 +4139,17 @@ }, { "aimPoint": { - "x": 228.70364379882813, - "y": 168.20535278320313 + "x": 226.18133544921875, + "y": 166.5725555419922 }, - "direction": 0.6186779141426086, + "direction": 0.6199157238006592, "dropPoint": { - "x": 241.1062469482422, - "y": 177.03497314453125 + "x": 240.88284301757813, + "y": 176.9995574951172 }, "position": { - "x": 183.35609436035156, - "y": 135.92176818847656 + "x": 180.87379455566406, + "y": 134.23284912109375 }, "predictedTarget": { "x": 293.41522216796875, @@ -4160,17 +4160,17 @@ }, { "aimPoint": { - "x": 229.94943237304688, - "y": 169.0417938232422 + "x": 227.45021057128906, + "y": 167.37667846679688 }, - "direction": 0.617958664894104, + "direction": 0.6184696555137634, "dropPoint": { - "x": 241.0909881591797, - "y": 176.96156311035156 + "x": 240.8673858642578, + "y": 176.9243621826172 }, "position": { - "x": 184.5786895751953, - "y": 136.79083251953125 + "x": 182.095947265625, + "y": 135.1025390625 }, "predictedTarget": { "x": 293.30523681640625, @@ -4181,17 +4181,17 @@ }, { "aimPoint": { - "x": 231.19569396972656, - "y": 169.87754821777344 + "x": 228.67236328125, + "y": 168.24636840820313 }, - "direction": 0.6172440052032471, + "direction": 0.6184696555137634, "dropPoint": { - "x": 241.07591247558594, - "y": 176.89010620117188 + "x": 240.85240173339844, + "y": 176.85076904296875 }, "position": { - "x": 185.80191040039063, - "y": 137.6590118408203 + "x": 183.31809997558594, + "y": 135.97222900390625 }, "predictedTarget": { "x": 293.1952209472656, @@ -4202,17 +4202,17 @@ }, { "aimPoint": { - "x": 232.44241333007813, - "y": 170.71258544921875 + "x": 229.9417724609375, + "y": 169.04953002929688 }, - "direction": 0.6165332198143005, + "direction": 0.6170419454574585, "dropPoint": { - "x": 241.0609588623047, - "y": 176.82044982910156 + "x": 240.83724975585938, + "y": 176.7793426513672 }, "position": { - "x": 187.02574157714844, - "y": 138.5263214111328 + "x": 184.54148864746094, + "y": 136.8401641845703 }, "predictedTarget": { "x": 293.0852355957031, @@ -4223,17 +4223,17 @@ }, { "aimPoint": { - "x": 233.6895294189453, - "y": 171.54702758789063 + "x": 231.1651611328125, + "y": 169.91746520996094 }, - "direction": 0.6158285140991211, + "direction": 0.6170419454574585, "dropPoint": { - "x": 241.0462188720703, - "y": 176.75283813476563 + "x": 240.82260131835938, + "y": 176.70957946777344 }, "position": { - "x": 188.25018310546875, - "y": 139.3927764892578 + "x": 185.76487731933594, + "y": 137.70809936523438 }, "predictedTarget": { "x": 292.9752197265625, @@ -4244,17 +4244,17 @@ }, { "aimPoint": { - "x": 234.91514587402344, - "y": 172.41180419921875 + "x": 232.3885498046875, + "y": 170.785400390625 }, - "direction": 0.6157928109169006, + "direction": 0.6170419454574585, "dropPoint": { - "x": 241.053466796875, - "y": 176.75514221191406 + "x": 240.82955932617188, + "y": 176.7122344970703 }, "position": { - "x": 189.4746551513672, - "y": 140.25918579101563 + "x": 186.98826599121094, + "y": 138.57603454589844 }, "predictedTarget": { "x": 292.865234375, @@ -4265,17 +4265,17 @@ }, { "aimPoint": { - "x": 236.14080810546875, - "y": 173.2765350341797 + "x": 233.6119384765625, + "y": 171.65333557128906 }, - "direction": 0.6157568693161011, + "direction": 0.6170419454574585, "dropPoint": { - "x": 241.06069946289063, - "y": 176.75747680664063 + "x": 240.83653259277344, + "y": 176.71495056152344 }, "position": { - "x": 190.69915771484375, - "y": 141.12554931640625 + "x": 188.21165466308594, + "y": 139.4439697265625 }, "predictedTarget": { "x": 292.7552185058594, @@ -4286,17 +4286,17 @@ }, { "aimPoint": { - "x": 237.3665008544922, - "y": 174.14120483398438 + "x": 234.8353271484375, + "y": 172.52127075195313 }, - "direction": 0.6157205700874329, + "direction": 0.6170419454574585, "dropPoint": { - "x": 241.0679168701172, - "y": 176.7598419189453 + "x": 240.8434600830078, + "y": 176.7177276611328 }, "position": { - "x": 191.92369079589844, - "y": 141.9918670654297 + "x": 189.43504333496094, + "y": 140.31190490722656 }, "predictedTarget": { "x": 292.65020751953125, @@ -4307,17 +4307,17 @@ }, { "aimPoint": { - "x": 238.59222412109375, - "y": 175.005859375 + "x": 236.0587158203125, + "y": 173.3892059326172 }, - "direction": 0.6156848669052124, + "direction": 0.6170419454574585, "dropPoint": { - "x": 241.07513427734375, - "y": 176.76231384277344 + "x": 240.85035705566406, + "y": 176.72064208984375 }, "position": { - "x": 193.14825439453125, - "y": 142.85813903808594 + "x": 190.65843200683594, + "y": 141.17984008789063 }, "predictedTarget": { "x": 292.5502014160156, @@ -4328,17 +4328,17 @@ }, { "aimPoint": { - "x": 239.818115234375, - "y": 175.87026977539063 + "x": 237.2821044921875, + "y": 174.25714111328125 }, - "direction": 0.6156448125839233, + "direction": 0.6170419454574585, "dropPoint": { - "x": 241.08255004882813, - "y": 176.76467895507813 + "x": 240.85743713378906, + "y": 176.72348022460938 }, "position": { - "x": 194.37286376953125, - "y": 143.724365234375 + "x": 191.88182067871094, + "y": 142.0477752685547 }, "predictedTarget": { "x": 292.4502258300781, @@ -4349,17 +4349,17 @@ }, { "aimPoint": { - "x": 241.04393005371094, - "y": 176.73477172851563 + "x": 238.5054931640625, + "y": 175.1250762939453 }, - "direction": 0.6156080961227417, + "direction": 0.6170419454574585, "dropPoint": { - "x": 241.08973693847656, - "y": 176.76718139648438 + "x": 240.8642578125, + "y": 176.7264862060547 }, "position": { - "x": 195.59750366210938, - "y": 144.59054565429688 + "x": 193.10520935058594, + "y": 142.91571044921875 }, "predictedTarget": { "x": 292.3502197265625, @@ -4370,17 +4370,17 @@ }, { "aimPoint": { - "x": 242.26983642578125, - "y": 177.59918212890625 + "x": 239.76290893554688, + "y": 175.9450225830078 }, - "direction": 0.6155698299407959, + "direction": 0.6160130500793457, "dropPoint": { - "x": 241.09689331054688, - "y": 176.76962280273438 + "x": 240.87103271484375, + "y": 176.72947692871094 }, "position": { - "x": 196.82217407226563, - "y": 145.45668029785156 + "x": 194.32949829101563, + "y": 143.7823944091797 }, "predictedTarget": { "x": 292.2502136230469, @@ -4391,17 +4391,17 @@ }, { "aimPoint": { - "x": 243.49581909179688, - "y": 178.4634552001953 + "x": 240.98719787597656, + "y": 176.81170654296875 }, - "direction": 0.6155300140380859, + "direction": 0.6160130500793457, "dropPoint": { - "x": 241.10400390625, - "y": 176.77200317382813 + "x": 240.87814331054688, + "y": 176.73178100585938 }, "position": { - "x": 198.046875, - "y": 146.32276916503906 + "x": 195.5537872314453, + "y": 144.64907836914063 }, "predictedTarget": { "x": 292.15020751953125, @@ -4412,17 +4412,17 @@ }, { "aimPoint": { - "x": 244.72178649902344, - "y": 179.32774353027344 + "x": 242.21148681640625, + "y": 177.6783905029297 }, - "direction": 0.6154914498329163, + "direction": 0.6160130500793457, "dropPoint": { - "x": 241.11114501953125, - "y": 176.77456665039063 + "x": 240.88528442382813, + "y": 176.73435974121094 }, "position": { - "x": 199.2716064453125, - "y": 147.18881225585938 + "x": 196.778076171875, + "y": 145.51576232910156 }, "predictedTarget": { "x": 292.0502014160156, @@ -4433,17 +4433,17 @@ }, { "aimPoint": { - "x": 245.9478759765625, - "y": 180.19186401367188 + "x": 243.43577575683594, + "y": 178.54507446289063 }, - "direction": 0.6154505014419556, + "direction": 0.6160130500793457, "dropPoint": { - "x": 241.1182098388672, - "y": 176.77699279785156 + "x": 240.89236450195313, + "y": 176.73678588867188 }, "position": { - "x": 200.4963836669922, - "y": 148.05479431152344 + "x": 198.0023651123047, + "y": 146.3824462890625 }, "predictedTarget": { "x": 291.9501953125, @@ -4454,17 +4454,17 @@ }, { "aimPoint": { - "x": 247.1988525390625, - "y": 181.02076721191406 + "x": 244.66006469726563, + "y": 179.41175842285156 }, - "direction": 0.6146560907363892, + "direction": 0.6160130500793457, "dropPoint": { - "x": 241.10104370117188, - "y": 176.71649169921875 + "x": 240.87533569335938, + "y": 176.67408752441406 }, "position": { - "x": 201.7218475341797, - "y": 148.91981506347656 + "x": 199.22665405273438, + "y": 147.24913024902344 }, "predictedTarget": { "x": 291.8502197265625, @@ -4475,17 +4475,17 @@ }, { "aimPoint": { - "x": 248.45040893554688, - "y": 181.8487548828125 + "x": 245.94068908691406, + "y": 180.19869995117188 }, - "direction": 0.6138636469841003, + "direction": 0.6143049597740173, "dropPoint": { - "x": 241.08401489257813, - "y": 176.6577606201172 + "x": 240.8580322265625, + "y": 176.61366271972656 }, "position": { - "x": 202.94798278808594, - "y": 149.7838592529297 + "x": 200.45240783691406, + "y": 148.1137237548828 }, "predictedTarget": { "x": 291.7502136230469, @@ -4496,17 +4496,17 @@ }, { "aimPoint": { - "x": 249.70248413085938, - "y": 182.67601013183594 + "x": 247.16644287109375, + "y": 181.06329345703125 }, - "direction": 0.6130762100219727, + "direction": 0.6143049597740173, "dropPoint": { - "x": 241.06716918945313, - "y": 176.6009979248047 + "x": 240.8413543701172, + "y": 176.55462646484375 }, "position": { - "x": 204.1748046875, - "y": 150.64694213867188 + "x": 201.67816162109375, + "y": 148.9783172607422 }, "predictedTarget": { "x": 291.65020751953125, @@ -4517,17 +4517,17 @@ }, { "aimPoint": { - "x": 250.95494079589844, - "y": 183.50259399414063 + "x": 248.4438018798828, + "y": 181.85458374023438 }, - "direction": 0.6122961044311523, + "direction": 0.6127370595932007, "dropPoint": { - "x": 241.05032348632813, - "y": 176.54617309570313 + "x": 240.8242950439453, + "y": 176.49807739257813 }, "position": { - "x": 205.4022979736328, - "y": 151.50906372070313 + "x": 202.9052734375, + "y": 149.84097290039063 }, "predictedTarget": { "x": 291.5502014160156, @@ -4538,17 +4538,17 @@ }, { "aimPoint": { - "x": 252.2079315185547, - "y": 184.32839965820313 + "x": 249.67091369628906, + "y": 182.71725463867188 }, - "direction": 0.6115196347236633, + "direction": 0.6127370595932007, "dropPoint": { - "x": 241.03390502929688, - "y": 176.49334716796875 + "x": 240.80801391601563, + "y": 176.44297790527344 }, "position": { - "x": 206.63046264648438, - "y": 152.3702392578125 + "x": 204.13238525390625, + "y": 150.70362854003906 }, "predictedTarget": { "x": 291.4501953125, @@ -4559,17 +4559,17 @@ }, { "aimPoint": { - "x": 253.46145629882813, - "y": 185.15338134765625 + "x": 250.9489288330078, + "y": 183.5074005126953 }, - "direction": 0.6107469201087952, + "direction": 0.6111873388290405, "dropPoint": { - "x": 241.01763916015625, - "y": 176.4423370361328 + "x": 240.79153442382813, + "y": 176.39024353027344 }, "position": { - "x": 207.8592987060547, - "y": 153.23045349121094 + "x": 205.36083984375, + "y": 151.56439208984375 }, "predictedTarget": { "x": 291.3502197265625, @@ -4580,17 +4580,17 @@ }, { "aimPoint": { - "x": 254.71543884277344, - "y": 185.97763061523438 + "x": 252.17738342285156, + "y": 184.3681640625 }, - "direction": 0.6099790930747986, + "direction": 0.6111873388290405, "dropPoint": { - "x": 241.00180053710938, - "y": 176.39334106445313 + "x": 240.7758331298828, + "y": 176.3389892578125 }, "position": { - "x": 209.0887908935547, - "y": 154.0897216796875 + "x": 206.58929443359375, + "y": 152.42515563964844 }, "predictedTarget": { "x": 291.2502136230469, @@ -4601,17 +4601,17 @@ }, { "aimPoint": { - "x": 255.96978759765625, - "y": 186.8013153076172 + "x": 253.45591735839844, + "y": 185.1573486328125 }, - "direction": 0.609220027923584, + "direction": 0.60965895652771, "dropPoint": { - "x": 240.9860382080078, - "y": 176.34629821777344 + "x": 240.7598419189453, + "y": 176.29025268554688 }, "position": { - "x": 210.31893920898438, - "y": 154.94805908203125 + "x": 207.81906127929688, + "y": 153.28404235839844 }, "predictedTarget": { "x": 291.15020751953125, @@ -4622,17 +4622,17 @@ }, { "aimPoint": { - "x": 257.22454833984375, - "y": 187.62435913085938 + "x": 254.68568420410156, + "y": 186.0162353515625 }, - "direction": 0.6084669232368469, + "direction": 0.60965895652771, "dropPoint": { - "x": 240.97019958496094, - "y": 176.30093383789063 + "x": 240.744140625, + "y": 176.24264526367188 }, "position": { - "x": 211.5497283935547, - "y": 155.80548095703125 + "x": 209.048828125, + "y": 154.14292907714844 }, "predictedTarget": { "x": 291.0502014160156, @@ -4643,17 +4643,17 @@ }, { "aimPoint": { - "x": 258.4797668457031, - "y": 188.44667053222656 + "x": 255.964599609375, + "y": 186.80459594726563 }, - "direction": 0.6077189445495605, + "direction": 0.6081554889678955, "dropPoint": { - "x": 240.954833984375, - "y": 176.25758361816406 + "x": 240.72854614257813, + "y": 176.19761657714844 }, "position": { - "x": 212.78115844726563, - "y": 156.66197204589844 + "x": 210.27987670898438, + "y": 154.9999542236328 }, "predictedTarget": { "x": 290.9501953125, @@ -4664,17 +4664,17 @@ }, { "aimPoint": { - "x": 259.7305603027344, - "y": 189.27529907226563 + "x": 257.1956481933594, + "y": 187.66162109375 }, - "direction": 0.6071252822875977, + "direction": 0.6081554889678955, "dropPoint": { - "x": 241.03173828125, - "y": 176.28619384765625 + "x": 240.80758666992188, + "y": 176.22598266601563 }, "position": { - "x": 214.01309204101563, - "y": 157.51773071289063 + "x": 211.51092529296875, + "y": 155.8569793701172 }, "predictedTarget": { "x": 290.8502197265625, @@ -4685,17 +4685,17 @@ }, { "aimPoint": { - "x": 260.98162841796875, - "y": 190.10350036621094 + "x": 258.4652404785156, + "y": 188.4632568359375 }, - "direction": 0.6065384745597839, + "direction": 0.6069750785827637, "dropPoint": { - "x": 241.10643005371094, - "y": 176.31451416015625 + "x": 240.88412475585938, + "y": 176.25448608398438 }, "position": { - "x": 215.2455291748047, - "y": 158.37277221679688 + "x": 212.7429962158203, + "y": 156.71255493164063 }, "predictedTarget": { "x": 290.7502136230469, @@ -4706,17 +4706,17 @@ }, { "aimPoint": { - "x": 262.233154296875, - "y": 190.9310302734375 + "x": 259.6972961425781, + "y": 189.31883239746094 }, - "direction": 0.6059526205062866, + "direction": 0.6069750785827637, "dropPoint": { - "x": 241.1795654296875, - "y": 176.34275817871094 + "x": 240.9593963623047, + "y": 176.28250122070313 }, "position": { - "x": 216.4784698486328, - "y": 159.2270965576172 + "x": 213.97506713867188, + "y": 157.56813049316406 }, "predictedTarget": { "x": 290.6551818847656, @@ -4727,17 +4727,17 @@ }, { "aimPoint": { - "x": 263.4848937988281, - "y": 191.75819396972656 + "x": 260.9672546386719, + "y": 190.11978149414063 }, - "direction": 0.6053746938705444, + "direction": 0.6058120727539063, "dropPoint": { - "x": 241.2502899169922, - "y": 176.37059020996094 + "x": 241.031982421875, + "y": 176.310546875 }, "position": { - "x": 217.71189880371094, - "y": 160.08070373535156 + "x": 215.2081298828125, + "y": 158.42227172851563 }, "predictedTarget": { "x": 290.565185546875, @@ -4748,17 +4748,17 @@ }, { "aimPoint": { - "x": 264.7369689941406, - "y": 192.58480834960938 + "x": 262.2003173828125, + "y": 190.97390747070313 }, - "direction": 0.604800820350647, + "direction": 0.6058120727539063, "dropPoint": { - "x": 241.31930541992188, - "y": 176.39833068847656 + "x": 241.10311889648438, + "y": 176.33802795410156 }, "position": { - "x": 218.94581604003906, - "y": 160.93359375 + "x": 216.44119262695313, + "y": 159.2764129638672 }, "predictedTarget": { "x": 290.4751892089844, @@ -4769,17 +4769,17 @@ }, { "aimPoint": { - "x": 265.9892578125, - "y": 193.41111755371094 + "x": 263.4704284667969, + "y": 191.77450561523438 }, - "direction": 0.6042355895042419, + "direction": 0.6046729683876038, "dropPoint": { - "x": 241.38619995117188, - "y": 176.4258270263672 + "x": 241.1718292236328, + "y": 176.36575317382813 }, "position": { - "x": 220.1802215576172, - "y": 161.78579711914063 + "x": 217.67523193359375, + "y": 160.129150390625 }, "predictedTarget": { "x": 290.3851623535156, @@ -4790,17 +4790,17 @@ }, { "aimPoint": { - "x": 267.241943359375, - "y": 194.23683166503906 + "x": 264.7044677734375, + "y": 192.6272430419922 }, - "direction": 0.6036728024482727, + "direction": 0.6046729683876038, "dropPoint": { - "x": 241.45126342773438, - "y": 176.4530792236328 + "x": 241.23907470703125, + "y": 176.39279174804688 }, "position": { - "x": 221.41510009765625, - "y": 162.63729858398438 + "x": 218.90927124023438, + "y": 160.9818878173828 }, "predictedTarget": { "x": 290.295166015625, @@ -4811,17 +4811,17 @@ }, { "aimPoint": { - "x": 268.49493408203125, - "y": 195.06207275390625 + "x": 265.97491455078125, + "y": 193.42721557617188 }, - "direction": 0.603114664554596, + "direction": 0.6035513877868652, "dropPoint": { - "x": 241.5143585205078, - "y": 176.48004150390625 + "x": 241.30397033691406, + "y": 176.4199676513672 }, "position": { - "x": 222.6504669189453, - "y": 163.4881134033203 + "x": 220.14425659179688, + "y": 161.83323669433594 }, "predictedTarget": { "x": 290.2051696777344, @@ -4832,17 +4832,17 @@ }, { "aimPoint": { - "x": 269.7481689453125, - "y": 195.88690185546875 + "x": 267.20989990234375, + "y": 194.278564453125 }, - "direction": 0.6025630235671997, + "direction": 0.6035513877868652, "dropPoint": { - "x": 241.57554626464844, - "y": 176.5067901611328 + "x": 241.36727905273438, + "y": 176.44650268554688 }, "position": { - "x": 223.88629150390625, - "y": 164.33824157714844 + "x": 221.37924194335938, + "y": 162.68458557128906 }, "predictedTarget": { "x": 290.11517333984375, @@ -4853,17 +4853,17 @@ }, { "aimPoint": { - "x": 271.0015869140625, - "y": 196.71142578125 + "x": 268.48040771484375, + "y": 195.0783233642578 }, - "direction": 0.6020195484161377, + "direction": 0.6024555563926697, "dropPoint": { - "x": 241.6345977783203, - "y": 176.533203125 + "x": 241.4281463623047, + "y": 176.47317504882813 }, "position": { - "x": 225.12258911132813, - "y": 165.1876983642578 + "x": 222.6151580810547, + "y": 163.5345916748047 }, "predictedTarget": { "x": 290.0251770019531, @@ -4874,17 +4874,17 @@ }, { "aimPoint": { - "x": 272.26605224609375, - "y": 197.51986694335938 + "x": 269.7163391113281, + "y": 195.92832946777344 }, - "direction": 0.6011489629745483, + "direction": 0.6024555563926697, "dropPoint": { - "x": 241.6147003173828, - "y": 176.49839782714844 + "x": 241.40853881835938, + "y": 176.43588256835938 }, "position": { - "x": 226.359619140625, - "y": 166.0360870361328 + "x": 223.85107421875, + "y": 164.3845977783203 }, "predictedTarget": { "x": 289.9351501464844, @@ -4895,17 +4895,17 @@ }, { "aimPoint": { - "x": 273.5310363769531, - "y": 198.32748413085938 + "x": 271.00830078125, + "y": 196.6967010498047 }, - "direction": 0.6002844572067261, + "direction": 0.6007235646247864, "dropPoint": { - "x": 241.5950164794922, - "y": 176.46554565429688 + "x": 241.3886260986328, + "y": 176.4013214111328 }, "position": { - "x": 227.59738159179688, - "y": 166.88340759277344 + "x": 225.08847045898438, + "y": 165.23245239257813 }, "predictedTarget": { "x": 289.84515380859375, @@ -4916,17 +4916,17 @@ }, { "aimPoint": { - "x": 274.7965087890625, - "y": 199.13424682617188 + "x": 272.2456970214844, + "y": 197.5445556640625 }, - "direction": 0.5994250178337097, + "direction": 0.6007235646247864, "dropPoint": { - "x": 241.5755615234375, - "y": 176.43460083007813 + "x": 241.36947631835938, + "y": 176.36790466308594 }, "position": { - "x": 228.83587646484375, - "y": 167.7296600341797 + "x": 226.32586669921875, + "y": 166.08030700683594 }, "predictedTarget": { "x": 289.7551574707031, @@ -4937,17 +4937,17 @@ }, { "aimPoint": { - "x": 276.0625, - "y": 199.94027709960938 + "x": 273.5382080078125, + "y": 198.31182861328125 }, - "direction": 0.5985727906227112, + "direction": 0.5990157127380371, "dropPoint": { - "x": 241.55630493164063, - "y": 176.40554809570313 + "x": 241.3499755859375, + "y": 176.337158203125 }, "position": { - "x": 230.07508850097656, - "y": 168.57485961914063 + "x": 227.564697265625, + "y": 166.92605590820313 }, "predictedTarget": { "x": 289.6651611328125, @@ -4958,17 +4958,17 @@ }, { "aimPoint": { - "x": 277.3289489746094, - "y": 200.74546813964844 + "x": 274.77703857421875, + "y": 199.15757751464844 }, - "direction": 0.5977261066436768, + "direction": 0.5990157127380371, "dropPoint": { - "x": 241.53729248046875, - "y": 176.3783721923828 + "x": 241.33126831054688, + "y": 176.30751037597656 }, "position": { - "x": 231.3150177001953, - "y": 169.41900634765625 + "x": 228.80352783203125, + "y": 167.7718048095703 }, "predictedTarget": { "x": 289.5751647949219, @@ -4979,17 +4979,17 @@ }, { "aimPoint": { - "x": 278.59588623046875, - "y": 201.54991149902344 + "x": 276.07012939453125, + "y": 199.92372131347656 }, - "direction": 0.5968859195709229, + "direction": 0.5973304510116577, "dropPoint": { - "x": 241.5185089111328, - "y": 176.35304260253906 + "x": 241.31222534179688, + "y": 176.28053283691406 }, "position": { - "x": 232.55564880371094, - "y": 170.26211547851563 + "x": 230.04379272460938, + "y": 168.61546325683594 }, "predictedTarget": { "x": 289.48516845703125, @@ -5000,17 +5000,17 @@ }, { "aimPoint": { - "x": 279.86334228515625, - "y": 202.35350036621094 + "x": 277.3103942871094, + "y": 200.7673797607422 }, - "direction": 0.5960504412651062, + "direction": 0.5973304510116577, "dropPoint": { - "x": 241.49998474121094, - "y": 176.3295440673828 + "x": 241.29397583007813, + "y": 176.25454711914063 }, "position": { - "x": 233.79698181152344, - "y": 171.10418701171875 + "x": 231.2840576171875, + "y": 169.45912170410156 }, "predictedTarget": { "x": 289.3951721191406, @@ -5021,17 +5021,17 @@ }, { "aimPoint": { - "x": 281.13116455078125, - "y": 203.15650939941406 + "x": 278.60394287109375, + "y": 201.53253173828125 }, - "direction": 0.5952247977256775, + "direction": 0.5956707000732422, "dropPoint": { - "x": 241.48170471191406, - "y": 176.30789184570313 + "x": 241.2754364013672, + "y": 176.2312774658203 }, "position": { - "x": 235.0390167236328, - "y": 171.9452362060547 + "x": 232.5257110595703, + "y": 170.30072021484375 }, "predictedTarget": { "x": 289.3051452636719, @@ -5042,17 +5042,17 @@ }, { "aimPoint": { - "x": 282.3994140625, - "y": 203.9588165283203 + "x": 279.8455810546875, + "y": 202.3741455078125 }, - "direction": 0.59440678358078, + "direction": 0.5956707000732422, "dropPoint": { - "x": 241.46371459960938, - "y": 176.28805541992188 + "x": 241.25772094726563, + "y": 176.208984375 }, "position": { - "x": 236.28173828125, - "y": 172.78526306152344 + "x": 233.76736450195313, + "y": 171.14231872558594 }, "predictedTarget": { "x": 289.21514892578125, @@ -5063,17 +5063,17 @@ }, { "aimPoint": { - "x": 283.6680908203125, - "y": 204.76040649414063 + "x": 281.139404296875, + "y": 203.13864135742188 }, - "direction": 0.5935952663421631, + "direction": 0.5940425395965576, "dropPoint": { - "x": 241.44601440429688, - "y": 176.26998901367188 + "x": 241.2397003173828, + "y": 176.1893310546875 }, "position": { - "x": 237.525146484375, - "y": 173.62428283691406 + "x": 235.01039123535156, + "y": 171.9818878173828 }, "predictedTarget": { "x": 289.1251525878906, @@ -5084,17 +5084,17 @@ }, { "aimPoint": { - "x": 284.94158935546875, - "y": 205.55474853515625 + "x": 282.3824462890625, + "y": 203.97821044921875 }, - "direction": 0.5926529169082642, + "direction": 0.5940425395965576, "dropPoint": { - "x": 241.42474365234375, - "y": 176.2502899169922 + "x": 241.21890258789063, + "y": 176.16690063476563 }, "position": { - "x": 238.7693328857422, - "y": 174.46212768554688 + "x": 236.25341796875, + "y": 172.8214569091797 }, "predictedTarget": { "x": 289.03515625, @@ -5105,17 +5105,17 @@ }, { "aimPoint": { - "x": 286.21563720703125, - "y": 206.34823608398438 + "x": 283.6851806640625, + "y": 204.72921752929688 }, - "direction": 0.5917176604270935, + "direction": 0.5921738743782043, "dropPoint": { - "x": 241.40347290039063, - "y": 176.23239135742188 + "x": 241.1973876953125, + "y": 176.14730834960938 }, "position": { - "x": 240.01431274414063, - "y": 175.29881286621094 + "x": 237.49801635742188, + "y": 173.65870666503906 }, "predictedTarget": { "x": 288.9451599121094, @@ -5126,17 +5126,17 @@ }, { "aimPoint": { - "x": 287.4902038574219, - "y": 207.140869140625 + "x": 284.9297790527344, + "y": 205.56646728515625 }, - "direction": 0.5907895565032959, + "direction": 0.5921738743782043, "dropPoint": { - "x": 241.3826446533203, - "y": 176.216552734375 + "x": 241.1770477294922, + "y": 176.1287078857422 }, "position": { - "x": 241.26007080078125, - "y": 176.13433837890625 + "x": 238.74261474609375, + "y": 174.49595642089844 }, "predictedTarget": { "x": 288.8651123046875, @@ -5144,7 +5144,49 @@ }, "state": 4, "targetIndex": 0 + }, + { + "aimPoint": { + "x": 286.2332763671875, + "y": 206.31594848632813 + }, + "direction": 0.5903247594833374, + "dropPoint": { + "x": 241.1559600830078, + "y": 176.1129608154297 + }, + "position": { + "x": 239.98875427246094, + "y": 175.33090209960938 + }, + "predictedTarget": { + "x": 288.7951354980469, + "y": 206.69512939453125 + }, + "state": 4, + "targetIndex": 0 + }, + { + "aimPoint": { + "x": 287.47943115234375, + "y": 207.15089416503906 + }, + "direction": 0.5903247594833374, + "dropPoint": { + "x": 241.13604736328125, + "y": 176.09811401367188 + }, + "position": { + "x": 241.23489379882813, + "y": 176.1658477783203 + }, + "predictedTarget": { + "x": 288.7251281738281, + "y": 206.62513732910156 + }, + "state": 4, + "targetIndex": 0 } ], - "totalSteps": 245 + "totalSteps": 247 } \ No newline at end of file From d0b2effff681b28f27eea8666553e72943729790 Mon Sep 17 00:00:00 2001 From: blinker Date: Thu, 11 Jun 2026 20:29:15 +0000 Subject: [PATCH 09/12] [FEATURE] hw09-state-machine: refactore MissionProcessor, extract methods, use this for properties --- .../include/mission_processor.hpp | 5 +- drone_simulation/include/simulation.hpp | 1 + drone_simulation/src/mission_processor.cpp | 260 +++++++++--------- 3 files changed, 135 insertions(+), 131 deletions(-) diff --git a/drone_simulation/include/mission_processor.hpp b/drone_simulation/include/mission_processor.hpp index 2ee105e..80ff1b0 100644 --- a/drone_simulation/include/mission_processor.hpp +++ b/drone_simulation/include/mission_processor.hpp @@ -15,7 +15,6 @@ class MissionProcessor { int currentStep = 1; int prevTargetIndex = -1; float currentTime = 0.0f; - float prevDirToTarget; float ammoFlightTime; float ammoHorizontalFlightDistance; bool hit = false; @@ -30,4 +29,8 @@ class MissionProcessor { auto step() -> SimulationStep; auto reset() -> void; auto changeSolver(std::unique_ptr ballisticSolver) -> void; + + private: + auto evaluateTarget(int targetIndex, float currentTime, Coord& outFireCoord) -> float; + auto getSimulationStep(int targetIndex, const Coord& fireCoord) -> SimulationStep; }; \ No newline at end of file diff --git a/drone_simulation/include/simulation.hpp b/drone_simulation/include/simulation.hpp index f422fff..3dc54da 100644 --- a/drone_simulation/include/simulation.hpp +++ b/drone_simulation/include/simulation.hpp @@ -100,6 +100,7 @@ struct SimulationStep { Coord aimPoint; Coord predictedTarget; DroneMotion droneMotion; + bool hit = false; }; float getDistanceToTarget( diff --git a/drone_simulation/src/mission_processor.cpp b/drone_simulation/src/mission_processor.cpp index 622a5f7..c3fb1c9 100644 --- a/drone_simulation/src/mission_processor.cpp +++ b/drone_simulation/src/mission_processor.cpp @@ -9,36 +9,36 @@ MissionProcessor::MissionProcessor( ): targets(std::move(targetProvider)), ballisticSolver(std::move(solver)) { } -auto MissionProcessor::init(std::unique_ptr configLoader) -> void { +auto MissionProcessor::init(std::unique_ptr configLoader) -> void { configLoader->load(); - droneConfig = configLoader->getConfig(); - ammo = configLoader->getAmmoParams(); - - ammoFlightTime = getAmmoFlightTime(droneConfig, ammo); - ammoHorizontalFlightDistance = getAmmoHorizontalFlightDistance( - droneConfig.attackSpeed, - ammoFlightTime, - ammo + this->droneConfig = configLoader->getConfig(); + this->ammo = configLoader->getAmmoParams(); + + this->ammoFlightTime = getAmmoFlightTime(this->droneConfig, this->ammo); + this->ammoHorizontalFlightDistance = getAmmoHorizontalFlightDistance( + this->droneConfig.attackSpeed, + this->ammoFlightTime, + this->ammo ); - droneContext = { - .directionToTarget = 0.0f, - .prevDirectionToTarget = 0.0f, + this->droneContext = { + .directionToTarget = 0.0f, + .prevDirectionToTarget = 0.0f, .speed = 0.0f, - .direction = droneConfig.initialDir, - .acceleration = droneConfig.attackSpeed * droneConfig.attackSpeed / (2.0f * droneConfig.accelPath), + .direction = this->droneConfig.initialDir, + .acceleration = this->droneConfig.attackSpeed * this->droneConfig.attackSpeed / (2.0f * this->droneConfig.accelPath), .timeToStop = 0.0f, - .position = droneConfig.startPos, - .config = &droneConfig + .position = this->droneConfig.startPos, + .config = &this->droneConfig }; - state = std::make_unique(); + this->state = std::make_unique(); } -auto MissionProcessor::hasNext() -> bool { - return currentStep <= MAX_STEPS && !hit; +auto MissionProcessor::hasNext() -> bool { + return this->currentStep <= this->MAX_STEPS && !this->hit; } -auto MissionProcessor::getCurrentStep() -> int { - return currentStep; +auto MissionProcessor::getCurrentStep() -> int { + return this->currentStep; } auto MissionProcessor::step() -> SimulationStep { @@ -49,151 +49,151 @@ auto MissionProcessor::step() -> SimulationStep { .y = 0 }; - //iteration by targets - for (int i = 0; i < targets->getTargetCount(); ++i) { - Coord target = getInterpolatedCoords(currentTime, droneConfig.arrayTimeStep, targets->getTarget(i)); - - // balistic - float distanceToTarget = getDistanceToTarget(target, droneContext.position); - if (distanceToTarget < 1e-6f) { - std::cout << "Distance to the target " << i << " is near or less then 0\n" << std::endl; - continue; - } - float ratio = getRatio(distanceToTarget, ammoHorizontalFlightDistance); - - Coord fireCoord = getFireCoords(target, droneContext.position, ratio); - float distanceToFire = getDistanceToTarget(fireCoord, droneContext.position); - float droneToFireTime = distanceToFire / droneConfig.attackSpeed; - float totalTimeRough = droneToFireTime + ammoFlightTime; - - Coord predictedTarget = getPredictedTargetCoords( - currentTime, droneConfig.arrayTimeStep, targets->getTarget(i), target, totalTimeRough - ); - - //predicted balistic - float newDistanceToTarget = getDistanceToTarget(predictedTarget, droneContext.position); - if (newDistanceToTarget < 1e-6f) { - std::cout << "Predicted distance to the target " << i << " is near or less then 0\n" << std::endl; - continue; - } - - float newRatio = getRatio(newDistanceToTarget, ammoHorizontalFlightDistance); - Coord newFireCoord = getFireCoords(predictedTarget, droneContext.position, newRatio); - float newDistanceToFire = getDistanceToTarget(newFireCoord, droneContext.position); - float newDroneToFireTime = newDistanceToFire / droneConfig.attackSpeed; - float newTotalTime = newDroneToFireTime + ammoFlightTime; - - if (newRatio < 0) { - newTotalTime += getManeuveringTime( - newDistanceToTarget, - ammoHorizontalFlightDistance, - droneConfig.attackSpeed, - droneContext.acceleration, - droneConfig.angularSpeed - ); - } + for (int i = 0; i < this->targets->getTargetCount(); ++i) { + Coord fireCoord; + float totalTime = this->evaluateTarget(i, this->currentTime, fireCoord); - if (prevTargetIndex != i && prevTargetIndex != -1) { - newTotalTime += droneContext.timeToStop; - } - - if (newTotalTime < bestTotalTime) { - bestTotalTime = newTotalTime; + if (totalTime < bestTotalTime) { + bestTotalTime = totalTime; bestTargetIndex = i; - bestFireCoord = newFireCoord; + bestFireCoord = fireCoord; } } - if (bestTargetIndex < 0) { - std::cout << "No valid target at this step, skipping"<< std::endl; - ++currentStep; - currentTime += droneConfig.simTimeStep; + std::cout << "No valid target at this step, skipping" << std::endl; + ++this->currentStep; + this->currentTime += this->droneConfig.simTimeStep; SimulationStep emptyStep = { .target = -1, .dropPoint = {0, 0}, .aimPoint = {0, 0}, .predictedTarget = {0, 0}, - .droneMotion = { droneContext.speed, droneContext.direction, droneContext.position, STOPPED } + .droneMotion = { this->droneContext.speed, this->droneContext.direction, this->droneContext.position, STOPPED } }; return emptyStep; } - Coord deltaToFire = bestFireCoord - droneContext.position; + Coord deltaToFire = bestFireCoord - this->droneContext.position; Coord dirVec = normalize(deltaToFire); - droneContext.prevDirectionToTarget = prevDirToTarget; - droneContext.directionToTarget = atan2(dirVec.y, dirVec.x); + this->droneContext.prevDirectionToTarget = this->droneContext.directionToTarget; + this->droneContext.directionToTarget = atan2(dirVec.y, dirVec.x); - auto next = state->execute(droneContext); - if (next) state = std::move(next); + auto nextState = this->state->execute(this->droneContext); + if (nextState) this->state = std::move(nextState); - Coord bombLandCoord = getBombLandCoord(droneContext, ammoHorizontalFlightDistance); - Coord targetAtImpact = getInterpolatedCoords( - currentTime + ammoFlightTime, - droneConfig.arrayTimeStep, - targets->getTarget(bestTargetIndex) - ); + SimulationStep simulationStep = this->getSimulationStep(bestTargetIndex, bestFireCoord); + this->hit = simulationStep.hit; - float bombMissDistance = getDistanceToTarget(bombLandCoord, targetAtImpact); - Coord dir = { - .x = std::cos(droneContext.direction), - .y = std::sin(droneContext.direction) - }; + this->prevTargetIndex = bestTargetIndex; + this->currentStep++; + this->currentTime += this->droneConfig.simTimeStep; - Coord aimPoint = droneContext.position + dir * ammoHorizontalFlightDistance; + return simulationStep; +} - SimulationStep simulationStep = { - .target = bestTargetIndex, - .dropPoint = bestFireCoord, - .aimPoint = aimPoint, - .predictedTarget = targetAtImpact, - .droneMotion = { droneContext.speed, droneContext.direction, droneContext.position, state->code() } +auto MissionProcessor::reset() -> void { + this->hit = false; + this->prevTargetIndex = -1; + this->currentStep = 1; + this->currentTime = 0.0f; + + this->droneContext = { + .directionToTarget = 0.0f, + .prevDirectionToTarget = this->droneConfig.initialDir, + .speed = 0.0f, + .direction = this->droneConfig.initialDir, + .acceleration = this->droneContext.acceleration, + .timeToStop = 0.0f, + .position = this->droneConfig.startPos, + .config = &this->droneConfig }; - if (bombMissDistance < droneConfig.hitRadius) { - std::cout << "Drone hit the target. Bomb miss: " << bombMissDistance << std::endl; - - hit = true; + this->state = std::make_unique(); +} + +auto MissionProcessor::changeSolver(std::unique_ptr ballisticSolver) -> void { + this->ballisticSolver = std::move(ballisticSolver); +} + +auto MissionProcessor::evaluateTarget(int targetIndex, float currentTime, Coord& outFireCoord) -> float { + Coord target = getInterpolatedCoords(currentTime, this->droneConfig.arrayTimeStep, this->targets->getTarget(targetIndex)); + + float distanceToTarget = getDistanceToTarget(target, this->droneContext.position); + if (distanceToTarget < 1e-3f) { + std::cout << "Distance to the target " << targetIndex << " is near or less then 0\n" << std::endl; + return INFINITY; } + float ratio = getRatio(distanceToTarget, this->ammoHorizontalFlightDistance); + + Coord fireCoord = getFireCoords(target, this->droneContext.position, ratio); + float distanceToFire = getDistanceToTarget(fireCoord, this->droneContext.position); + float droneToFireTime = distanceToFire / this->droneConfig.attackSpeed; + float totalTimeRough = droneToFireTime + this->ammoFlightTime; - if (bombLandCoord == targetAtImpact) { - std::cout << "Direct hit"<< std::endl; + Coord predictedTarget = getPredictedTargetCoords( + currentTime, this->droneConfig.arrayTimeStep, this->targets->getTarget(targetIndex), target, totalTimeRough + ); - hit = true; + float newDistanceToTarget = getDistanceToTarget(predictedTarget, this->droneContext.position); + if (newDistanceToTarget < 1e-3f) { + std::cout << "Predicted distance to the target " << targetIndex << " is near or less then 0\n" << std::endl; + return INFINITY; } - prevTargetIndex = bestTargetIndex; - prevDirToTarget = droneContext.directionToTarget; + float newRatio = getRatio(newDistanceToTarget, this->ammoHorizontalFlightDistance); + outFireCoord = getFireCoords(predictedTarget, this->droneContext.position, newRatio); + float newDistanceToFire = getDistanceToTarget(outFireCoord, this->droneContext.position); + float newDroneToFireTime = newDistanceToFire / this->droneConfig.attackSpeed; + float totalTime = newDroneToFireTime + this->ammoFlightTime; + + if (newRatio < 0) { + totalTime += getManeuveringTime( + newDistanceToTarget, + this->ammoHorizontalFlightDistance, + this->droneConfig.attackSpeed, + this->droneContext.acceleration, + this->droneConfig.angularSpeed + ); + } - currentStep++; - currentTime += droneConfig.simTimeStep; + if (this->prevTargetIndex != targetIndex && this->prevTargetIndex != -1) { + totalTime += this->droneContext.timeToStop; + } - return simulationStep; + return totalTime; } -auto MissionProcessor::reset() -> void { - hit = false; - prevTargetIndex = -1; - prevDirToTarget = droneConfig.initialDir; - currentStep = 1; - currentTime = 0.0f; +auto MissionProcessor::getSimulationStep(int targetIndex, const Coord& fireCoord) -> SimulationStep { + Coord bombLandCoord = getBombLandCoord(this->droneContext, this->ammoHorizontalFlightDistance); + Coord targetAtImpact = getInterpolatedCoords( + this->currentTime + this->ammoFlightTime, + this->droneConfig.arrayTimeStep, + this->targets->getTarget(targetIndex) + ); - droneContext = { - .directionToTarget = 0.0f, - .prevDirectionToTarget = 0.0f, - .speed = 0.0f, - .direction = droneConfig.initialDir, - .acceleration = droneContext.acceleration, - .timeToStop = 0.0f, - .position = droneConfig.startPos, - .config = &droneConfig + float bombMissDistance = getDistanceToTarget(bombLandCoord, targetAtImpact); + Coord dir = { + .x = std::cos(this->droneContext.direction), + .y = std::sin(this->droneContext.direction) }; + Coord aimPoint = this->droneContext.position + dir * this->ammoHorizontalFlightDistance; - state = std::make_unique(); -} + bool isHit = bombMissDistance < this->droneConfig.hitRadius || bombLandCoord == targetAtImpact; -auto MissionProcessor::changeSolver(std::unique_ptr ballisticSolver) -> void { - this->ballisticSolver = std::move(ballisticSolver); + if (isHit) { + std::cout << (bombLandCoord == targetAtImpact ? "Direct hit" : "Drone hit the target. Bomb miss: ") + << (bombLandCoord == targetAtImpact ? "" : std::to_string(bombMissDistance)) << std::endl; + } + + return { + .target = targetIndex, + .dropPoint = fireCoord, + .aimPoint = aimPoint, + .predictedTarget = targetAtImpact, + .droneMotion = { this->droneContext.speed, this->droneContext.direction, this->droneContext.position, this->state->code() }, + .hit = isHit + }; } From bf9a2eed26c17c1ce95f5a6d031eba43a3e19ce2 Mon Sep 17 00:00:00 2001 From: blinker Date: Fri, 12 Jun 2026 19:45:32 +0000 Subject: [PATCH 10/12] [FEATURE] hw09-state-machine: implemented ballistic_table and table_solver. change ammo params in json file. add ballistic_table.txt --- drone_simulation/CMakeLists.txt | 1 + drone_simulation/data/ammo.json | 14 +- drone_simulation/data/ballistic_table.txt | 3306 +++++++++++++ .../include/config_loaders/factory.hpp | 7 +- .../include/solvers/ballistic_table.hpp | 146 + .../include/solvers/table_solver.hpp | 18 + .../src/config_loaders/factory.cpp | 8 +- drone_simulation/src/main.cpp | 4 +- drone_simulation/src/mission_processor.cpp | 2 +- drone_simulation/src/solvers/table_solver.cpp | 18 + simulation.json | 4364 ++++++++--------- 11 files changed, 5630 insertions(+), 2258 deletions(-) create mode 100644 drone_simulation/data/ballistic_table.txt create mode 100644 drone_simulation/include/solvers/ballistic_table.hpp create mode 100644 drone_simulation/include/solvers/table_solver.hpp create mode 100644 drone_simulation/src/solvers/table_solver.cpp diff --git a/drone_simulation/CMakeLists.txt b/drone_simulation/CMakeLists.txt index 9b48d19..5456da2 100644 --- a/drone_simulation/CMakeLists.txt +++ b/drone_simulation/CMakeLists.txt @@ -4,6 +4,7 @@ project(drone_simulation CXX) add_library(drone_simulation_lib src/simulation.cpp src/solvers/analytical_solver.cpp + src/solvers/table_solver.cpp src/providers/json_target_provider.cpp src/config_loaders/file_config_loader.cpp src/config_loaders/factory.cpp diff --git a/drone_simulation/data/ammo.json b/drone_simulation/data/ammo.json index f1fc59d..a1c485b 100644 --- a/drone_simulation/data/ammo.json +++ b/drone_simulation/data/ammo.json @@ -2,31 +2,31 @@ { "name": "VOG-17", "mass": 0.35, - "drag": 0.07, + "drag": 0.004, "lift": 0 }, { "name": "M67", "mass": 0.6, - "drag": 0.1, + "drag": 0.005, "lift": 0 }, { "name": "RKG-3", "mass": 1.2, - "drag": 0.1, + "drag": 0.007, "lift": 0 }, { "name": "GLIDING-VOG", "mass": 0.45, - "drag": 0.1, - "lift": 1 + "drag": 0.005, + "lift": 0.005 }, { "name": "GLIDING-RKG", "mass": 1.4, - "drag": 0.1, - "lift": 1 + "drag": 0.007, + "lift": 0.005 } ] \ No newline at end of file diff --git a/drone_simulation/data/ballistic_table.txt b/drone_simulation/data/ballistic_table.txt new file mode 100644 index 0000000..57cd781 --- /dev/null +++ b/drone_simulation/data/ballistic_table.txt @@ -0,0 +1,3306 @@ +11 10 5 3 2 +50. 60. 70. 80. 90. 100. 110. 120. 130. 140. 150. +1. 2. 3. 4. 5. 6. 7. 8. 9. 10. +0.35 0.45 0.6 1.2 1.4 +0.004 0.005 0.007 +0. 0.005 +3.5045080212366058 2.8938155146905893 +3.6201084533913095 14.596626942484109 +3.5838661492081623 2.8231231700671886 +3.699868100734687 14.211657158007464 +3.7431679856267204 2.6873984271417486 +3.8586643789492037 13.466257312622519 +3.434299419039064 2.958124778467509 +3.5057865423231194 12.054688393980792 +3.4957122792461197 2.901780310727317 +3.567722186976936 11.823864656286617 +3.6192238760294444 2.792294557180691 +3.691746897656515 11.369252603859444 +3.373217574322246 3.015461112081073 +3.4158069139739107 9.849975552679414 +3.418994857073471 2.9723683150270346 +3.461922419838276 9.715163696317177 +3.5111080873957388 2.887856088525701 +3.5545292376780524 9.447386390106308 +3.2823890485031724 3.103183050768454 +3.29621753747683 6.545379353297966 +3.30499485751573 3.081069618549535 +3.31889350510648 6.502233114091517 +3.350413352446452 3.0372049441187245 +3.3644377383844164 6.416124020523711 +3.2695046818165725 3.1158714772391387 +3.2805028894888673 6.07086025714968 +3.288840417769944 3.096852954496167 +3.299886876792528 6.036553354701744 +3.327671035659814 3.059075667594949 +3.338805489799236 5.96807204860553 +3.5067468293498383 5.765119833790019 +3.653123867982994 17.76421385861027 +3.586569569938885 5.61906406734092 +3.732742337036709 17.268540638041436 +3.746693699828885 5.339306831394281 +3.890940663856774 16.320514058289717 +3.4360937077508926 5.898199667368929 +3.5304393612441345 15.209419498191588 +3.4978971628219844 5.781590873807161 +3.5925651422181604 14.899721243720753 +3.6221220594329635 5.555444578941792 +3.7167670023557733 14.29564316715318 +3.374598078828289 6.017022994352121 +3.4336947181038253 13.000544633644015 +3.4206878814769124 5.927702459199835 +3.4800772460516227 12.810378478128392 +3.513387033888586 5.752797882590855 +3.5731149185388724 12.435418498191614 +3.283105188510465 6.199140404412416 +3.3047769621150334 9.705326236146131 +3.3058819798238988 6.153193962710674 +3.3276326232411995 9.636559059493788 +3.351632673545713 6.062128125438335 +3.373518130528189 9.499795858087904 +3.270121653562058 6.22551536609908 +3.2877982247306563 9.233920429146137 +3.289605745891789 6.185985393143057 +3.3073387590228083 9.17784006080078 +3.328725892580271 6.107520794217627 +3.346558071602352 9.06622021575093 +3.510215374434465 8.602953291674265 +3.690408196440236 20.989123238576802 +3.5907386689712655 8.374805884507674 +3.7698247503260056 20.363895988801147 +3.752081234680552 7.939293651994592 +3.9272871430727956 19.182761795843444 +3.438885002325029 8.81130807406083 +3.5582772525050306 18.411650560707738 +3.5012839003712237 8.628716144956165 +3.6206559178553186 18.010081236681586 +3.626582353375272 8.275596517151532 +3.7451199878875734 17.23398182252289 +3.376753364514925 8.997733267378202 +3.4538756402504416 16.188624500958046 +3.423324006429023 8.857561162642932 +3.500629639883226 15.934427379107984 +3.5169164064616396 8.583684709654335 +3.5942766635544654 15.436473237422963 +3.284229201897865 9.284190746255323 +3.3144080032046093 12.885548146724743 +3.307272536639881 9.211836383874243 +3.337527858403358 12.787584300450991 +3.3535388623825826 9.06859772635649 +3.3839153090577834 12.593285340195392 +3.271090747562447 9.325750609274928 +3.296002720264084 12.41456231822149 +3.2908065076399233 9.26346901180043 +3.3157754345344017 12.33373375217687 +3.330377174853081 9.13996868350277 +3.355440618926201 12.173214136414801 +3.5147251286397743 11.400914259625143 +3.7322073975497823 24.263710644091898 +3.596131535415094 11.08295500018713 +3.811216064816327 23.487156479350194 +3.758980468109193 10.478555366927889 +3.9675558734774237 22.03895382726952 +3.442530875536972 11.692114989184134 +3.589521098200983 21.65594557765714 +3.5056898083124834 11.436877921714666 +3.6521264274385623 21.147285317496895 +3.632338913860988 10.944981871227755 +3.7767700391095365 20.173408054678525 +3.379579895141287 11.953346126741296 +3.4765282702095446 19.41033754798965 +3.426770670035081 11.756867518821256 +3.5237058237476777 19.081851789969924 +3.52150328179288 11.374024161454425 +3.6180362984671737 18.442523252714498 +3.2857122240435808 12.356017937748097 +3.3252060229880938 16.08413781190225 +3.309104465733921 12.254163403156914 +3.3486570988416053 15.95269345631721 +3.356042502975262 12.052815972345435 +3.395671172429519 15.692671139931674 +3.272370472734567 12.414567506076052 +3.3051986583433357 15.611145115724675 +3.2923901082063045 12.326837420338821 +3.3252650905560643 15.501996840586935 +3.3325492979805196 12.153092156043025 +3.3654922945669443 15.285700076845876 +3.520110876563541 14.15506612986139 +3.778698182165511 27.583363725423176 +3.602537178285896 13.73915888734922 +3.8569473173437814 26.63115808652755 +3.7670895848548795 12.952390538378907 +4.011547048316258 24.879483369703127 +3.446906251564902 14.537218597785548 +3.6243381316403775 24.939507197240044 +3.510954734474191 14.202197496083798 +3.687054823867036 24.306573986836625 +3.639160297620886 13.559118298044751 +3.811635499634857 23.106674849454304 +3.3829865966661576 14.88107057394149 +3.501788823033367 22.663963993308453 +3.4309114261029583 14.622359510526586 +3.549390486933331 22.249561593371197 +3.526978640424285 14.119837806970278 +3.644378724011017 21.448425000355716 +3.2875113289101634 15.41303423141529 +3.337241951412992 19.30040194270388 +3.3113232250110465 15.278252387519347 +3.3610749456584323 19.130621189027732 +3.359064939071429 15.012259153786507 +3.408806873994907 18.795667010976715 +3.2739243978569994 15.490580405265744 +3.315446862854939 18.823084833167123 +3.2943103344163474 15.374404769127848 +3.335855499080458 18.68157031413461 +3.3351757854250255 15.14465656527266 +3.376734092809495 18.401754468924086 +3.5262290623025736 16.863029345628213 +3.8300156981287996 30.945280935412768 +3.6097734800378687 16.34097458900805 +3.9070068519614694 29.79076306668333 +3.776152600891512 15.358632851082998 +4.059036182770933 27.697493309725907 +3.451901847277813 17.344442174093786 +3.6628661285193154 28.26122476946717 +3.516939419066485 16.922312577925833 +3.7254885855586974 27.48498576983798 +3.6468475179153597 16.11558305615513 +3.849611095374843 26.028772263765195 +3.386893706576454 17.77904195706544 +3.5297705542316007 25.949221452633687 +3.43564442611278 17.451925728814526 +3.5777454196850815 25.435991419407312 +3.5331957047485356 16.818734566265448 +3.67326956913794 24.45084502372131 +3.289588748448124 18.454114159271715 +3.3505725793875154 22.53448116287608 +3.3138808516154015 18.282759160056422 +3.3748227132754796 22.321006871514196 +3.362537212802299 17.94521514056876 +3.4233323402751052 21.901049987870618 +3.2757204768034254 18.552799966986658 +3.3267955747199993 22.05052590461981 +3.296526531177881 18.404980687873135 +3.3475826558120008 21.87218869490093 +3.338198311721946 18.113123356043182 +3.3891770634133884 21.520389050712545 +3.5329556249676157 19.52347321510996 +3.8862662520406728 34.34771575310235 +3.6176845655775702 18.887231619763345 +3.961353023777712 32.96204431114094 +3.785954779654295 17.696757082965547 +4.109787510611806 30.487913219676322 +3.457422548825947 20.112440992440174 +3.705225841364755 31.621095169218002 +3.5235233998142363 19.595883509716966 +3.767456056970196 30.68069993432647 +3.655230970479857 18.61331674374025 +3.8905788627159343 28.936130728685363 +3.391231384109772 20.646025326073012 +3.5605742634314064 29.26683331864365 +3.440880893040886 20.244237365062475 +3.608819299798506 28.640598656395575 +3.5400277207417203 19.469391720234437 +3.7046641106403255 27.44763430110869 +3.2919112980135177 21.47845014312187 +3.3652462485731958 25.787130065530352 +3.316735249796701 21.266736908225766 +3.389933912156009 25.524137642873676 +3.3663988449095075 20.85052400739873 +3.4392513700393836 25.008331826818445 +3.277730474510072 21.600507693363284 +3.339285351362415 25.294150782006476 +3.2990029880792675 21.417715441943738 +3.3604755172025587 25.074158501014416 +3.3415656377060907 21.057427868063524 +3.4028267413797075 24.64126742291323 +3.5401838140516992 22.135796283961923 +3.9475326034491984 37.78944893432588 +3.626137655493897 21.377629622715578 +4.019920275468374 36.14175474360307 +3.7963172788490613 19.967317165996324 +4.163561095087207 33.2468629860779 +3.4633858049120705 22.840455884301548 +3.7515277022325475 35.01982670502658 +3.53060290922092 22.222282802014146 +3.812972460130008 33.892599403649776 +3.664166877873724 21.05218518944945 +3.93441385744752 31.8261171788374 +3.3959385867751823 23.481233378618228 +3.594294557395917 32.618241269618515 +3.446543660655215 22.99851759739426 +3.642653276273755 31.86353183844659 +3.5473657109141166 22.071228412470557 +3.7385120562034166 30.437424200866122 +3.294449692457209 24.485459985069692 +3.381306408438773 29.05957164983131 +3.3198493552687784 24.22952048546074 +3.406437596821611 28.740779005035712 +3.370596839371626 23.727419517989897 +3.4565645994349232 28.117544195753574 +3.2799295409675446 24.633180340262122 +3.352952134227205 28.555053709212434 +3.3017082206334667 24.41200086560262 +3.3745589018540696 28.288211517252822 +3.3452327650164313 23.976844190872683 +3.417685744958581 27.764519641186478 +3.547821974077613 24.699912963805367 +4.013874989245117 41.26939579383717 +3.635020016548729 23.812470613943702 +4.082621533387855 39.32696402075077 +3.8070920085148012 22.171576814957557 +4.220116661748274 35.97126815458086 +3.4697200706357934 25.528148354047335 +3.801875173921213 38.45854419245037 +3.5380887432869033 24.801387833075367 +3.8620427430908046 37.1199629517378 +3.673533828918087 23.432687948651694 +3.9809870914563383 34.696700066496064 +3.40096203998483 26.28420457406495 +3.6310237207851688 36.00539918098016 +3.4525656989879425 25.714387642262825 +3.6792842073992205 35.10539571640187 +3.5551161946497833 24.624187727489105 +3.7747601332841327 33.41935352892785 +3.2971781360213805 27.47472883893429 +3.398793997093393 32.35339705753316 +3.323190536045166 27.17065282500284 +3.4243605439567384 31.972057390052054 +3.375084836486246 26.575423075174726 +3.4752713250549263 31.229091122785825 +3.282295708457743 27.650436879576738 +3.36782930552637 31.83465437296379 +3.3046144616875304 27.387407586262924 +3.389855396364403 31.51540398500446 +3.349160239438487 26.87089478386639 +3.4337553935375524 30.890614752183936 +3.5557915213387767 27.216105674129118 +4.085329233789193 44.7862947059312 +3.6442362467494807 26.192475320298165 +4.149348917880401 42.51480951562357 +3.8181568868287337 24.311258444313953 +4.279216002578427 38.65861160778006 +3.476363393153908 28.17548668062333 +3.8563659663706424 41.93855988339305 +3.545904319173826 27.33343716452539 +3.914662698791794 40.36223873562271 +3.683229656246209 25.755759012026232 +4.030166882722197 37.54622212661048 +3.406255216916015 29.054718139694113 +3.67085407695035 39.43061789566807 +3.458888855471709 28.39175969625551 +3.718746351485621 38.36707776649961 +3.563199103450531 27.128585713875136 +3.8133533597449003 36.39287514676418 +3.3000738288235274 30.445966983778607 +3.417749112939028 35.67049441970666 +3.3267301031997714 30.08983274169358 +3.44372873137072 35.21937606703246 +3.379822229052759 29.394269563099797 +3.4953706394630073 34.34364328560998 +3.284809534847917 30.652004192485897 +3.383949135538648 35.1346360675346 +3.307697260350026 30.343640605794324 +3.406386656967392 34.757044194891485 +3.3533134032413416 29.739287111624655 +3.451036740078834 34.020269579070956 +3.908348809084388 3.108865081786397 +4.087623979074932 19.972715929308997 +4.0129286034579845 3.0183247434276317 +4.191712242055722 19.29682948275467 +4.22230185029211 2.846535341595973 +4.397566842350057 18.01680837327316 +3.815747100231518 3.1917679584031857 +3.9238400483475946 16.269483849649273 +3.8967504801924164 3.1191063945494863 +4.005430495904181 15.879478376105006 +4.059474550624719 2.979055722018851 +4.168220355215863 15.118964935907846 +3.735169984455348 3.2660574002055056 +3.797854827319173 13.07889362940012 +3.7955571691975973 3.2101919912641126 +3.858755785091927 12.859310538669927 +3.917051109008274 3.101207430440057 +3.980892240525699 12.424723704605197 +3.6154275290534974 3.380289101370381 +3.6346046510064807 8.321271943882834 +3.6452142504186793 3.3514352316479816 +3.6645091427636416 8.255709453478648 +3.705093466793151 3.29431254847308 +3.724594579013718 8.124853533297568 +3.598456616238231 3.396860831333663 +3.6135225261188593 7.639181514464687 +3.62392687171158 3.3720258798386626 +3.6390737965129434 7.587731329460091 +3.675105561113093 3.322774066843759 +3.6903976376306282 7.48501203988716 +3.9107598038365285 6.192814589984866 +4.128129546180026 23.45108217305045 +4.015819836809277 6.006759994845302 +4.231456521404573 22.619800196702336 +4.226021516510759 5.654545164658551 +4.435476739841719 21.066349392940413 +3.8176911501937862 6.363442041173031 +3.953777489316252 19.725786415648475 +3.8991052047110113 6.213878826248435 +4.035354409872738 19.227864493738835 +4.062564553211628 5.926156902114098 +4.197834918000654 18.267127399855625 +3.7366733899889004 6.516563828643661 +3.819392081093939 16.525165452385796 +3.7973938910736336 6.401396929481101 +3.8805162939031814 16.231391817280652 +3.9195039182367633 6.177066951262556 +4.002944176093328 15.654695403687526 +3.616213073292278 6.75243421151873 +3.6447994811828646 11.775222733824421 +3.646185653070788 6.692806596947189 +3.674899026426295 11.676101145189532 +3.70642381938181 6.574858231198056 +3.7353474960114266 11.4790821067385 +3.599134034880724 6.7866954077041415 +3.622200580890714 11.0969037191217 +3.62476595905099 6.735354553693086 +3.64792343630427 11.016998637214206 +3.6762585782693087 6.6336101363388895 +3.6995720965022874 10.858025205468778 +3.9145067919674905 9.239480105544644 +4.173410781869977 26.996030161773476 +4.02029105534928 8.950728824417583 +4.275773302629496 25.985163731150834 +4.231717876748634 8.405907718746347 +4.4776131512331 24.121840713743435 +3.8207257208686296 9.504890765229623 +3.987263354769999 23.238228954042857 +3.902766751303129 9.272214017787578 +4.068834269687722 22.615914972863205 +4.067332702647032 8.825842726182112 +4.230989232566196 21.427548295183186 +3.739029169089512 9.743573174328816 +3.8434661428263137 20.016216208703522 +3.800263672267992 9.564009266531997 +3.904903708960635 19.63745139515347 +3.9233143222912528 9.21501394819729 +4.027767981832495 18.89943752500969 +3.6174509964671384 10.11219181060971 +3.6561634873725355 15.253682229702402 +3.6477143352385113 10.018895575016629 +3.686548303490367 15.116704713458162 +3.708511415931483 9.834567751926159 +3.747529518229783 14.845318901012057 +3.6002024294176396 10.165832534976305 +3.63186834938662 14.575919271757984 +3.626087725120883 10.085460486446639 +3.657844413680754 14.4640055458721 +3.67807048212982 9.926347927044375 +3.7099732776310224 14.241939470037575 +3.9193917628456068 12.241527710250839 +4.223684002771788 30.59740426691235 +4.026088449103636 11.841835305076502 +4.32470653174159 29.379547326051362 +4.23902543268306 11.090799033404062 +4.523751433601403 27.1667158324246 +3.8247013579559246 12.609954447986356 +4.024514834650609 26.799738847175167 +3.9075432490380613 12.286912424383763 +4.105981555840409 26.033978007510953 +4.073500295579001 11.669326039113024 +4.267605289374589 24.587183443155624 +3.7421288729304005 12.942150411557773 +3.8702606315354413 23.54706513260259 +3.8040274895379826 12.692157413910927 +3.9320407189432682 23.070645488700166 +3.928279695270797 12.207615954078797 +4.055367586136677 22.149218930784897 +3.6190904188513553 13.456843635000357 +3.668797981464017 18.754215795340134 +3.649735548637444 13.32638460343704 +3.6995390201787717 18.574248847855937 +3.7112626974989187 13.069015996388602 +3.7611830204980974 18.2187694102002 +3.601618645894879 13.531910432473461 +3.642613522264506 18.074132394798077 +3.6278373752469553 13.41945102278048 +3.668909017481626 17.925951289075684 +3.680462295161089 13.197101203693641 +3.7216417273045965 17.63264894178473 +3.925239234077175 15.194391507611073 +4.2790892266406235 34.24818080311649 +4.032988233461706 14.675080728462124 +4.3782260983981285 32.79323439239293 +4.247626327372278 13.70392396816517 +4.573619764523993 30.189348335330596 +3.8294852131362167 15.674652950106992 +4.065692595364379 30.40601929072115 +3.9132645794698195 15.253470373201996 +4.14685103550682 29.475501786877945 +4.080822159995202 14.451481613427902 +4.307559032234808 27.73695698288964 +3.7458759284938994 16.10900565691275 +3.8999155161984955 27.115034747789316 +3.8085616638534923 15.782017621064895 +3.9620068223478135 26.52667561797914 +3.934220528528495 15.150262357964511 +4.08570868442893 25.397456123412393 +3.6210861139360877 16.78449786720532 +3.68277927234978 22.275708820127605 +3.6521917094441188 16.61298886872555 +3.713929237086624 22.046933800277067 +3.7145943565612227 16.275219944059273 +3.7763287523070024 21.596431593957625 +3.603344351120787 16.88327565464486 +3.654501807724441 21.59059978408365 +3.629966189151337 16.735318955102304 +3.6811685065810447 21.401323179581624 +3.683363711090234 16.44322147305203 +3.7345990478505935 21.027618286617873 +3.9318951667531374 18.09527907976583 +4.339715826297882 37.94316430488797 +4.040795496120281 17.447628690023276 +4.436254051901326 36.21872151137393 +4.257249041795247 16.24281909662586 +4.626926375460785 33.181274310661394 +3.8349599702334713 18.696407692892418 +4.110923933980328 34.05452804552028 +3.919781290177452 18.169112430051822 +4.19146312075943 32.93586369044839 +4.089085677024361 17.169509707059497 +4.350702462633306 30.870307362718812 +3.7501848433368945 19.241912091493752 +3.932546154740056 30.718978819850214 +3.8137568911596937 18.83108357791831 +3.994856608626713 30.002886269570773 +3.94097934747859 18.04014971017948 +4.118736261023241 28.639570076749433 +3.6233978573027863 20.093794602904712 +3.6981689599643763 25.817958710391466 +3.6550316249119583 19.87708885733769 +3.729763041046811 25.53395288940476 +3.7184325653741848 19.451128857593204 +3.792975403573859 24.97648004599785 +3.605345468921928 20.2187307992604 +3.667585829950713 25.125176816235548 +3.632430839622556 20.03162713636777 +3.6946617716810883 24.889481963315927 +3.686712367648728 19.662860329432352 +3.748856186391246 24.42534907393265 +3.939225303186537 20.942607688783383 +4.405613822565727 41.67818211454025 +4.049342134857602 20.1581003719255 +4.498677424293217 39.649874004480395 +4.2676645069374075 18.706871393315748 +4.683373483295972 36.13617269740024 +3.8410225902436816 21.673604597866742 +4.160314422799155 37.743849779545364 +3.926962983847434 21.032243389966514 +4.239815050771396 36.411671320270706 +4.098108314316902 19.82216712557904 +4.396874857203324 33.98234404324404 +3.754980015010811 22.339375225135623 +3.9682535316078287 34.35881492567049 +3.819517005163479 21.83775701585827 +4.030629359322677 33.497725143422976 +3.9484190086207227 20.87570607240398 +4.154383590241057 31.872317921648484 +3.6259899517759853 23.38374483002503 +3.715019665426319 29.381437742744737 +3.6582099117022664 23.117528394646246 +3.7470760715507523 29.03521459815085 +3.722711912462859 22.595334636073705 +3.811124785009546 28.35791015474931 +3.6075916598128264 23.53739447555538 +3.6819100728909184 28.67831277159513 +3.6351928861062093 23.307335779489016 +3.709420126350104 28.390422053834573 +3.6904529257666594 22.85472163062361 +3.76441794274195 27.825072222818914 +3.9471132392037966 23.735644929015645 +4.4767982226879495 45.44952826690014 +4.058484015028822 22.80612358359776 +4.565354960610788 43.081385013224384 +4.278681064316986 21.096693619213227 +4.742665132026967 39.04922794847668 +3.8475828578480384 24.60531626586318 +4.213953890916272 41.47326249774689 +3.9346964673026523 23.84209915781836 +4.291886739351129 39.90029800586018 +4.107734387673601 22.409276869154148 +4.4459089158337655 37.06931203547723 +3.760194773117916 25.400427713010988 +4.0071302770356825 38.03520848800799 +3.8257576541865235 24.80108786789467 +4.069354499343646 37.01038376603931 +3.9564207152441555 23.656224038256532 +4.192577171756838 35.093359372670875 +3.628830590221926 26.65362572329798 +3.7333786287095903 32.96713448700653 +3.661686229986943 26.333483926766057 +3.7658989144799104 32.55115747373037 +3.7273745610895834 25.706893631190294 +3.830774870170644 31.740303488748822 +3.610055983206388 26.838616135220928 +3.6975139940147774 32.2509138384679 +3.6382181101226982 26.561690398742382 +3.7254702611653436 31.90461156014455 +3.694536332982547 26.01790893577716 +3.7812856419288456 31.226545077646133 +3.9554583667004457 26.4742658286521 +4.553249584019849 49.25356102042953 +4.06809806839755 25.392028696086335 +4.636120637985482 46.50841800117637 +4.290139451363941 23.413709183921608 +4.804511679300002 41.91671176973302 +3.854562008951723 27.49111426315316 +4.271919078799495 45.24241219828861 +3.9428837752726325 26.59851068559316 +4.347643616498462 43.39955759081595 +4.117831768792764 24.931397870146764 +4.4976342283594395 40.12823579736331 +3.7657704395272957 28.424490398515005 +4.049264278575017 41.74934232566381 +3.8324050325350263 27.720598524700048 +4.111054708754402 40.540540394670984 +3.96488189546363 26.38161268298664 +4.233239507758765 38.300962561413066 +3.6318915010755894 29.9029146189136 +3.7532901286594202 36.57644351445416 +3.6654247421260955 29.52438054999584 +3.786259324227151 36.082620705052776 +3.7323694757641785 28.785205208773593 +3.8519216857244345 35.12366506556005 +3.6127143918163 30.12191513637958 +3.7144341243432506 35.84424751001923 +3.6414760611887926 29.794150335316054 +3.742836198607223 35.43288123483258 +3.698919196172059 29.151822429772988 +3.799458819207397 34.629910715120936 +3.964173910165963 29.158782310815166 +4.634912241956944 53.08640155923203 +4.078079672274095 27.916637896735867 +4.710785906849352 49.926373655896874 +4.301908009413771 25.6598672953671 +4.868632724008338 44.73570525331599 +3.8618913644070556 30.33093745996967 +4.334274216497257 49.0510601109722 +3.9514402891131195 29.30173820267394 +4.407037872022774 46.9074695129167 +4.128288782280359 27.389596613619133 +4.551879167278277 43.15667664232815 +3.7716553696256327 31.41127422814225 +4.094740749875088 45.502739736952094 +3.8393946328149213 30.59616071209191 +4.155747514128309 44.08817012791144 +3.973714176909244 29.05222348457007 +4.276290577049268 41.49379575186964 +3.6351474801160117 33.131240299790946 +3.774797184805354 40.21108504841036 +3.6693936783488605 32.68983201376275 +3.8081837359252235 39.630750021743644 +3.7376515961152053 31.82992630594246 +3.8745605030803456 38.508305733815526 +3.6155454238517963 33.38694157407758 +3.732705554083098 39.45987351278162 +3.644939693514959 33.004337533159266 +3.7615406302356313 38.97634310948755 +3.703563085965852 32.256085873455525 +3.818936305619468 38.03559613615616 +4.296625019079373 3.293271335258404 +4.5612575105855635 26.30768999722597 +4.42855651399023 3.182216821934386 +4.68990929341998 25.188990530282908 +4.6917802622904095 2.9741783358302945 +4.942627549732541 23.134561042909784 +4.179646490089138 3.395681002962341 +4.335731020465086 21.193727856587167 +4.281979956888662 3.305887028147534 +4.438335353982103 20.570791296192223 +4.487191232717542 3.134335876875431 +4.642079116798669 19.37339959083259 +4.077801573755593 3.487957411912323 +4.166237752607801 16.819016601529768 +4.1541299673135414 3.4185241198787164 +4.243237608760101 16.480030910255397 +4.307611802603276 3.28384516706776 +4.397337088132671 15.812846073344028 +3.9264954869184865 3.6306166287805826 +3.952207414313577 10.337519133403795 +3.9641193061800575 3.594505282722959 +3.990013700728414 10.242429516183005 +4.039785989204787 3.523164301453667 +4.065991439131656 10.05266041742153 +3.905066242342837 3.6513773324305787 +3.9250512426296207 9.410498795319468 +3.9372296199345453 3.6202701878508803 +3.9573406431692937 9.336747021211977 +4.001887364060823 3.5586839731410285 +4.022219793479401 9.189488346364381 +4.299180055690194 6.559520240248411 +4.609782254575881 30.077486746226203 +4.43159949492609 6.332225339586545 +4.736642892261911 28.748065083223125 +4.695644594492346 5.907356566833625 +4.985734162906847 26.341032875851223 +4.181719311164899 6.769442878918336 +4.371244138568331 24.931466268641948 +4.284477275568951 6.585363374436852 +4.473480267277712 24.16573839327129 +4.490433658379738 6.234335672772711 +4.676156260153624 22.710414458071707 +4.079412948296973 6.958865919086213 +4.191558704625648 20.53883839076312 +4.156090937238276 6.8163103812072 +4.268688892220993 20.103842825771167 +4.310209655903305 6.540213866679509 +4.422834250834291 19.25517455898017 +3.9273436443210983 7.252238862953807 +3.9640557386327093 14.060809446094892 +3.9651662834983488 7.177915964294165 +4.00206810656324 13.923399101422934 +4.041214583739266 7.031207509396402 +4.078419455808144 13.650453765342895 +3.9057983756770014 7.294986741352777 +3.9351230583392263 13.138027041566403 +3.9381351360130448 7.230939959368254 +3.967596350015263 13.028483561746569 +4.003127829844909 7.104231371671823 +4.032817330522436 12.810634731155238 +4.303160058685162 9.785129864310884 +4.663561763113921 33.921619680609446 +4.43631487868625 9.434098582472322 +4.7882389345271985 32.35154051028514 +4.7015712990579175 8.780023843880393 +5.0331315136221875 29.55037588172244 +4.184963191098231 10.110055990898282 +4.410662164179316 28.733422637244328 +4.2883696350426685 9.825092826822676 +4.5124587992570895 27.804554143057487 +4.495446488044076 9.283163026964132 +4.713923648874847 26.05909391054723 +4.081944952554306 10.403866670097585 +4.219655360996911 24.310487242631833 +4.1591628995868035 10.182696446480877 +4.296981786107067 23.766341167662866 +4.314254591876748 9.755282020740646 +4.451268589845716 22.713463577925616 +3.928684427547246 10.860095400271206 +3.977166280486536 17.812819381066333 +3.966818929493996 10.744376678628045 +4.015478860063378 17.62803422256553 +4.043462805164146 10.516231308022208 +4.09237883160462 17.2623449518536 +3.9069567364626043 10.926695578632398 +3.9462609631667265 16.89055180090038 +3.9395659809228416 10.826923926445605 +3.9790044006708594 16.741060475756836 +4.005082950467711 10.629744722992353 +4.044729966089375 16.444677953261948 +4.308359167602159 12.96193323759639 +4.722762258387981 37.82718196876783 +4.442439251377028 12.478567042838407 +4.844668976532122 35.98326299550995 +4.709183393605422 11.581513360199862 +5.084519784150298 32.74394274200884 +4.189222716668599 13.410608320584435 +4.4541903076461065 32.59082204143865 +4.293457535427924 13.017050363258042 +4.555353372702086 31.475597279668516 +4.501940793562052 12.271153128641673 +4.755257063864418 29.404420865819958 +4.08528496199541 13.817385160390144 +4.250712578165823 28.12788474000985 +4.1632012790888515 13.511082652449604 +4.328231177684741 27.45932019300212 +4.31953597090209 12.920778862875919 +4.482622568191037 26.176384053113114 +3.9304652374976032 14.451086259247003 +3.9916450530083654 21.590609023905532 +3.969010198094315 14.290112850342625 +4.030330898334061 21.35243365446402 +4.046433557958165 13.973224939243893 +4.107911183354786 20.882707000719847 +3.9084967587189126 14.543806846088152 +3.9585570144994673 20.665542064890833 +3.9414654816381334 14.404925427230907 +3.99164015237632 20.47113700368933 +4.007670834617597 14.130812903828792 +4.057998638327622 20.08679420442106 +4.314593289311213 16.08479865907844 +4.787465986317709 41.7844708431645 +4.449738445558055 15.460066057018551 +4.9058284539343475 39.631006707538816 +4.718150918141123 14.306038276746019 +5.139560392624135 35.90850467988292 +4.194358408782314 16.666588263149766 +4.501974165566619 36.497765470411906 +4.299562477274956 16.15616881545891 +4.602187290916054 35.17050592603495 +4.509660416184819 15.192624441166839 +4.799987867251818 32.73568262134517 +4.089331675366897 17.195664769050456 +4.284870414459436 31.98737291341701 +4.168076262955337 16.797126614294193 +4.362507379081623 31.17726951000329 +4.325865504639117 16.031526579584913 +4.516839858919601 29.63599342253976 +3.9326388713011657 18.023028182534322 +4.007572657336246 25.392649781415052 +3.9716798826241693 17.81249450724931 +4.046684651799673 25.094273285217596 +4.050039519296111 17.398772966547458 +4.125035844333549 24.50784381317646 +3.910378481007197 18.14440959093246 +3.9720809142520923 24.4617018907903 +3.943782760942437 17.962629741241745 +4.005557470777624 24.21675577093361 +4.010817866631688 17.604395343632152 +4.072644756059316 23.73385404426318 +4.321699598469063 19.150560751320775 +4.857695093974208 45.78562578187266 +4.458007140206941 18.375413635669645 +4.971562617170429 43.284986993282764 +4.728190657278289 16.950889529102664 +5.197902856582163 39.03439410813861 +4.200246074169866 19.875045593280998 +4.5541217472395115 40.450148872229896 +4.306526439443518 19.23929840243234 +4.652946405635797 38.88297177512342 +4.518381834098764 18.0444504040082 +4.84792495273516 36.04495343457679 +4.093994615263853 20.536137246103173 +4.322242688918609 35.88689592573789 +4.173672121133249 20.03795502085618 +4.399853989699975 34.91642220678195 +4.3330767736166 19.08435005085733 +4.553842675562211 33.08653491827151 +3.9351629809011572 21.574334560096187 +4.025014548994394 29.218392274029743 +3.9747739894760534 21.309637491441173 +4.064586026755489 28.852298372869424 +4.054202619181402 20.79050319574479 +4.143759423919959 28.135336096057976 +3.9125660741608184 21.727104587064968 +3.9868888958817577 28.278595523905857 +3.946472178536453 21.498361487455167 +4.020797389607336 27.976902606531315 +4.014458185475754 21.04834783202135 +4.088678501932496 27.38385474758361 +4.329535244712697 22.157408327086788 +4.933422152642755 49.82379897682418 +4.467067246280898 21.223047987618894 +5.04168007938442 46.93700490653154 +4.739062727332439 19.515382841231915 +5.259198795388077 42.11442973709318 +4.206775850808865 23.034115832672793 +4.610714301750667 44.44499604445461 +4.31421062830084 22.264611537231826 +4.707590076121611 42.608011804026255 +4.527912114446981 20.825228789349424 +4.898866198670978 39.326212283738975 +4.099193167997394 23.837061748985416 +4.362926884422728 39.82550132689772 +4.179886304053361 23.231717801394495 +4.44029728259132 38.6741838696082 +4.341023899996514 22.077452027125233 +4.593540837086557 36.52373496110398 +3.9379996819794485 25.103839329770985 +4.044026772252479 33.06801409125024 +3.9782442636156374 24.780182615429407 +4.084071943511152 32.62602759150899 +4.058853152509948 24.146770517112582 +4.16408103017694 31.763662153383848 +3.91502737896167 25.290850909814093 +4.003028688518715 32.11642945155017 +3.949492913450399 25.010895741919803 +4.037392922153376 31.751250861322422 +4.018532866176226 24.461151128736695 +4.106103388073143 31.0355920070504 +4.3379756718174205 25.10449016694941 +5.014574421940767 53.89260211386381 +4.476765341739159 24.00253454078868 +5.115960767150345 50.579908803984864 +4.7505658054290425 22.00018229644259 +5.323109897501271 45.143233784614196 +4.21385090755111 26.14271433719897 +4.671811614908573 48.479997040453185 +4.322493864906903 25.23121967869293 +4.766057041030193 46.34148728996411 +4.538085995994649 23.534746686196883 +4.952604993078196 42.57478016051697 +4.104855746011179 27.097298976797802 +4.407009871636436 43.80299976330104 +4.186628237413981 26.37730192129916 +4.483851509566779 42.448751129838925 +4.349579814887432 25.010010619380825 +4.635836854282417 39.944346171474635 +3.941114960929954 28.610681302073804 +4.064659573078912 36.942249885908225 +3.9820474914318176 28.223151564744022 +4.105173746818253 36.41555444634886 +4.063929037015564 27.46646018890997 +4.185995360180586 35.39194636975163 +3.917733624046415 28.834872219165515 +4.020542655345416 35.97590562392116 +3.9528083555173827 28.49933437580822 +4.0553720450507935 35.53998990269578 +4.022989296948752 27.841743433160314 +4.124918976920377 34.68844201752419 +4.346912691614069 27.991645849477145 +5.101035156353174 57.98572516983114 +4.486969896104842 26.714230173922473 +5.194161081301802 54.20725009880993 +4.762532197616514 24.40684701876963 +5.389312398800658 48.11677322918954 +4.221386221529217 29.20032821285695 +4.737454119353828 52.55316346762366 +4.331270741817563 28.13891166583226 +4.8282684813969325 50.079770902397954 +4.548762709735426 26.173616700147527 +5.008934140149667 45.78694401186605 +4.1109189228863565 30.31615654535758 +4.454571223219718 47.81971374996585 +4.193818209256498 29.4741364746727 +4.530521915317156 46.23883809144059 +4.358634268246252 27.881904517917704 +4.6806288973386545 43.3458362015043 +3.944478367104196 32.09423078196513 +4.086959834246699 40.84227173018523 +3.986145010778272 31.637853319908942 +4.127919448551489 40.22140740023779 +4.069375114290699 30.74885319462562 +4.20949463541207 39.019783580287566 +3.9206589389697264 32.358588638434746 +4.039469917112389 39.85811820246798 +3.956385686979039 31.963026410808308 +4.074759677981428 39.343704696199126 +4.027780609774816 31.189405327614836 +4.145122610398154 38.342209320491946 +4.356252575254212 30.819214872336946 +5.192643394105068 62.09667738489361 +4.497568732097182 29.35904869432017 +5.276017996669405 57.81306697981264 +4.7748230334671575 26.737518021418918 +5.457499838983739 51.03204528887613 +4.229307268200338 32.206868446478566 +4.80766309478213 56.662564351701874 +4.340449796027706 30.9879680938694 +4.894129680472645 53.819512387916156 +4.559822934380409 28.743023160206185 +5.067648180045466 48.95969828825686 +4.1173265330468665 33.49327877227826 +4.505684980656787 51.87628301455961 +4.201386170660928 32.52205436463562 +4.580306275275861 50.04347459044055 +4.36809185855169 30.693518190115327 +4.727812498396633 46.72616793971989 +3.9480625661428976 35.55403484589976 +4.110972790235917 44.76960147933402 +3.990502313387137 35.02381686650323 +4.15233525144288 44.0444468052939 +4.075142384423624 33.99353002072068 +4.234569832812026 42.64711131314697 +3.923780076301686 35.86157297697184 +4.05984786075657 43.76447840832543 +3.9601955626878804 35.40151070510793 +4.095579046221573 43.16328723332317 +4.03286502972696 34.503677854130736 +4.166710533066029 41.997015827369815 +4.673732119629226 3.4530151016608976 +5.049539232584255 33.63696183559573 +4.834885143362421 3.3210978099690216 +5.201039426506809 31.869249867019203 +5.155106239550652 3.077303013093649 +5.497447059913667 28.749536642281427 +4.530588937093372 3.5755926575018986 +4.747999032893874 26.849499741640017 +4.655822458688125 3.4680697766641715 +4.872375251253572 25.89649423630904 +4.90638033805947 3.2645823966737053 +5.118011320707646 24.099713332197293 +4.405850288382115 3.6866976221728076 +4.526521989505727 21.081670736849837 +4.499343219737954 3.6030428161809263 +4.620743925972105 20.579489948141887 +4.687165576693484 3.441775367434582 +4.8087762917353585 19.59878178109411 +4.22051994468607 3.859462957416747 +4.254081967152926 12.598895374101671 +4.266592127790016 3.815631800808383 +4.300419595203669 12.465866713351463 +4.3592789051292415 3.729231591712585 +4.393544872247024 12.200480476287487 +4.194285862114022 3.8846883755461246 +4.220129837539757 11.389440356778458 +4.233662952294935 3.8468985200334034 +4.259691654718055 11.287344915552703 +4.312852354248535 3.7722153500056255 +4.33919847784346 11.083501373077327 +4.676408386942586 6.8771510337908115 +5.1065846651255935 37.68109700751374 +4.838051135876946 6.607991808288936 +5.254731449457154 35.63587800013423 +5.159078187516001 6.111583110064739 +5.5451680777171415 32.079219143809716 +4.532773375456567 7.127625550816569 +4.789402597378159 30.85350486661281 +4.658440260221136 6.907894034327297 +4.912854089538677 29.716151003973813 +4.909744130963029 6.492801713029063 +5.156349172261012 27.59720805654695 +4.407557426327994 7.354978211100013 +4.555777070795552 25.05837964682093 +4.501412556818073 7.183767575468734 +4.649972240173506 24.43503528541024 +4.689885144836241 6.854202008666799 +4.837676742587276 23.22894509036776 +4.221425229584399 7.7091378525562115 +4.267605344555467 16.57223559253033 +4.26770762015223 7.619211927939285 +4.314155059260014 16.387293819697263 +4.3607953248323845 7.442098158722161 +4.40765170772895 16.02023596920383 +4.195068089272858 7.76091467989913 +4.231609029931678 15.36725226667 +4.234628969261465 7.683354884162702 +4.271364011713206 15.221378576154843 +4.31417156438044 7.530187066787409 +4.351221774344455 14.931420266058215 +4.680584554387812 10.2576811196785 +5.169313880984121 41.8052222196605 +4.842964480922546 9.84358425234943 +5.31348697104094 39.446842098734514 +5.165176256673213 9.0821875169875 +5.597168621220117 35.4080675654123 +4.536198789762039 10.643872535680485 +4.835059049299893 34.92908048872113 +4.6625276931014366 10.305037592669377 +4.957410486584925 33.58280005763233 +4.914951792845729 9.66664228567783 +5.198475319171212 31.10497016405907 +4.410245833231266 10.995140635213223 +4.5880438936040395 29.093702751696842 +4.504660920970115 10.730548821832834 +4.682243439437657 28.33348556992944 +4.694126935499567 10.222338446662862 +4.86965148768014 26.875696403972317 +4.222859927178192 11.543755349117676 +4.282480901058191 20.578471095289192 +4.269472727419045 11.404287260245988 +4.329339073350974 20.335763799646625 +4.363187213087692 11.129931821251905 +4.423383985546395 19.85605561785317 +4.196308876696229 11.62410955224816 +4.24422776138501 19.373743715230518 +4.236159229967505 11.5037561948792 +4.2842655710630355 19.179306065394048 +4.316255713686457 11.266329583027375 +4.36464185381003 18.794151590794222 +4.686048172301919 13.58569319349137 +5.237819636646127 45.99340115241294 +4.849353964256772 13.017844057126656 +5.377192921594614 43.2833131503818 +5.17301484524348 11.977753985485082 +5.653081002995299 38.71581331047192 +4.540704622250692 14.116733990599815 +4.885152779630951 39.06564920550227 +4.66787883489252 13.65073496815126 +5.00608969212658 37.482813492352776 +4.921706260440702 12.775683282508089 +5.244217781250487 34.60623746879117 +4.413799210909703 14.60101572826436 +4.623505051160422 33.18045427701426 +4.508938971875946 14.23611846184816 +4.717660695328199 32.265286068878744 +4.699673600393109 13.537165590450565 +4.9046587801205765 30.52621354784599 +4.224769935711618 15.359852080836294 +4.298818372556628 24.614175245359558 +4.271818386261256 15.166650495484022 +4.346058447108332 24.306767675395047 +4.366354363386839 14.787173923686337 +4.440781549984434 23.701516236912138 +4.197962427748194 15.4712558956445 +4.258081651190338 23.405965487750795 +4.238195415554204 15.304421776982787 +4.2984739381820765 23.157266662594978 +4.319020370804453 14.97573761852897 +4.379499241518605 22.666184210289753 +4.6926078868303875 16.855547131121103 +5.312103182982508 50.23298573651199 +4.856976951804374 16.124711479240005 +5.445661407084718 47.130706349239915 +5.182254959975293 14.792089555008205 +5.712509824886578 41.98804824524939 +4.546145669736183 17.541209895661122 +4.939805173453007 43.25558448167982 +4.674308094782732 16.939411180516004 +5.058876129091678 41.40601701366585 +4.929742576308229 15.8137625509991 +5.293363524975639 38.08887555547149 +4.418112119519092 18.16841003587037 +4.662297194349358 37.31396343012832 +4.514111554404675 17.69565525871503 +4.756281423737992 36.22370935050143 +4.706329469636074 16.792997058491352 +4.94261822969022 34.17128343243087 +4.227106314709713 19.154965213977786 +4.316701785474545 28.677412950228263 +4.274682080656199 18.90334250276618 +4.364375084813331 28.29746673497208 +4.370205958373554 18.410001596355702 +4.459861470709673 27.552249387798412 +4.199987353307907 19.30019494368338 +4.273243687538506 27.462276366906696 +4.240684752009647 19.08274239890773 +4.3140448760403185 27.15286762531637 +4.3223890113503325 18.65499891688232 +4.395814484093129 26.543812191959127 +4.7000934453070915 20.06374136377688 +5.392097159533051 54.51322502410207 +4.865619644442993 19.16070180576205 +5.518655878685656 50.977165977739226 +5.192604603859601 17.522282544446057 +5.775057893133097 45.214290040942856 +4.552391782708476 20.91400694030914 +4.999095492931612 47.493078920003015 +4.681650183272974 20.167577971960224 +5.11571449516163 45.34442101508327 +4.938828440527271 18.777470845390337 +5.345680167637851 41.543804818653534 +4.42308972454572 21.694433869874416 +4.704529058808039 41.491215026417905 +4.5200573570822975 21.105945388758947 +4.798134710036161 40.20386090641164 +4.713920580816752 19.9863234757471 +4.983427914007613 37.80405260454898 +4.229824841331023 22.927289145653678 +4.336199667559668 32.76728666792146 +4.278007337735609 22.612225010169553 +4.384335910427735 32.30615859727246 +4.374660167673016 21.995737999451208 +4.4806275523485155 31.40525330001218 +4.202346278385919 23.109331827978824 +4.289773089250127 31.54194932513142 +4.243579554548501 22.836812939045785 +4.331020935539747 31.164720955678913 +4.326292661590831 22.30168691300246 +4.413596437308512 30.424536974395334 +4.708354715891608 23.208258410767584 +5.477676375977656 58.824442628826276 +4.875095770571782 22.124093102520476 +5.5959058590203625 54.81270695260358 +5.203815778570509 20.167590895300435 +5.840339676519533 48.38685013059463 +4.559327158240996 24.233028603865453 +5.063070951891199 51.77344684539552 +4.6897591649545864 23.33319720758961 +5.176520691119292 49.29147288257197 +4.9487625730929565 21.66526886039081 +5.400927569348124 44.96408325205119 +4.428646972798589 25.177113336995323 +4.750290981202875 45.71032301364301 +4.52666824415266 24.464904229808603 +4.843230476531731 44.20208224414831 +4.722293675102667 23.11514464133431 +5.026973497535074 41.41929603992597 +4.232885687009276 26.67548554862983 +4.3573707706148666 36.88367083181346 +4.2817433548602795 26.291742688953278 +4.405978393935513 36.331965286571 +4.379643479146347 25.54251204122984 +4.5030755825460025 35.2584935519493 +4.205005431733529 26.897469917476627 +4.307720270206512 35.644941932693925 +4.246836888131049 26.56522869366105 +4.349436272832188 35.192173768067676 +4.330669220170007 25.914068543138026 +4.432846845841756 34.30672085924883 +4.717260214965987 26.2881398659431 +5.568663389379966 63.157517020111946 +4.885244305123327 25.01439695002987 +5.677116358690629 58.62868017923167 +5.215679901956297 22.72872284917528 +5.90798871063697 51.50010085028639 +4.566849205112066 27.497044165398695 +5.131751509930848 56.09264583240812 +4.698507051887562 26.435267634440947 +5.241187942492418 53.241568351151 +4.959372022416832 24.476913841373506 +5.4588645801345965 48.344317239130966 +4.434707931372787 28.615145728723594 +4.799660307385905 49.970168997971086 +4.5338482015064425 27.77126641516701 +4.891564668020985 48.2155524691351 +4.731314673718275 26.17853570547558 +5.073133467462567 45.01294086553337 +4.2362528729676185 30.398557811888697 +4.38026767853874 41.02703181675265 +4.285844347084193 29.940766631736388 +4.429333963019667 40.374622845799564 +4.385090037701072 29.04904520904644 +4.527196446821204 39.11063676846229 +4.207934412607682 30.663709213353673 +4.327129986198721 39.77174087005314 +4.250418006335939 30.26695117642434 +4.369319643580019 39.23512647886992 +4.335462902409953 29.490922160103302 +4.453563094652249 38.18935597108936 +4.726695304678029 29.30319379902419 +5.664831988234559 67.50355022938776 +4.895926769693169 27.831994836340616 +5.761974755984846 62.417436653703284 +5.228022958262762 25.20735196094682 +5.977661423746748 54.5499721593961 +4.574867427496815 30.705462094404048 +5.205131703832796 60.44692430137483 +4.707782079431145 29.473540335115043 +5.309590326039908 57.18971789233107 +4.970509024823244 27.213066288542105 +5.519253218633604 51.68026447519619 +4.4412049190709695 32.00773047042714 +4.852704393388253 54.27013377455462 +4.541512325474122 31.024373574579297 +4.943122213360518 52.24200297935672 +4.74086681248618 29.176348564451853 +5.121782287298018 48.581740738030206 +4.239893996141359 34.09577073743648 +4.404939239742134 45.19830010018509 +4.290269122273011 33.55849229163019 +4.454430248168218 44.43433217022588 +4.390941009365836 32.51450434801963 +4.552978096182867 42.96086391752958 +4.211105721784263 34.40737167842729 +4.348043470618732 43.92325194008115 +4.254287973731771 33.94122092313502 +4.3906963956539276 43.293904326848036 +4.340623726406517 33.031412231725234 +4.475739969413595 42.07190211487484 +4.736560340531015 32.25378555352571 +5.765910009367956 71.85367399836173 +4.907024801206264 30.577882914188503 +5.850156540732119 66.17211647108549 +5.2407006763920325 27.60578030515503 +6.049039154325536 57.53359735098646 +4.583302182635626 33.85816745936055 +5.283180832439727 64.83255890287252 +4.7174869407563325 32.44831515644625 +5.381585085175357 61.131318649324484 +4.9820481509742285 29.875015047983464 +5.581861184939495 54.968556284497176 +4.448077771227765 35.35444794049514 +4.909482100991036 58.6098888956438 +4.549585690152567 34.22402215065331 +4.997878572523095 56.27950762916024 +4.75084872556279 32.10899845881136 +5.172792327390342 52.12304628262677 +4.2437798064524905 37.76659029035518 +4.431432282208308 49.3987756669704 +4.29498070866978 37.144365155246966 +4.4812926060930245 48.51164815260367 +4.397143846941279 35.938396009696895 +4.580406809476543 46.80873390177448 +4.214494504044055 38.12795302032991 +4.3704999506702285 48.10071874569099 +4.258415375415756 37.58749450062663 +4.413589844139106 47.369162181210584 +4.346106910126444 36.53499894558234 +4.499370807200539 45.954167872788446 +5.042612481753301 3.5923887484119437 +5.55966209713504 41.98678809203002 +5.234624259239879 3.439529496231852 +5.7296436030247175 39.30092524941374 +5.614441339985734 3.161001354836032 +6.063445018273508 34.78421616768239 +4.871691120230137 3.7355767879381143 +5.165862159260733 33.259162082989036 +5.021243871616503 3.6099183330222666 +5.311960616833712 31.850525118999116 +5.319637425670498 3.374479799495841 +5.598974896447084 29.259368000614007 +4.7225605844442615 3.866185095474462 +4.882832830848435 25.878372184061078 +4.834347674769884 3.767777951866454 +4.995175007001321 25.158368777618932 +5.0586368488050715 3.5793121224068503 +5.218588852566084 23.766671144287958 +4.500903517105464 4.070531640762237 +4.543760267488788 15.108930743163958 +4.555998498718202 4.0185642280187395 +4.59922191819947 14.92813578178452 +4.666859354733204 3.9163654346547263 +4.710666168315661 14.56770826732679 +4.469538649630857 4.100472620261524 +4.5022692007952525 13.57927755603757 +4.516619086412296 4.055627230001664 +4.549607688308489 13.441846675043193 +4.6113279637816085 3.967166727086067 +4.644748853509312 13.167516594753156 +5.045391113008557 7.15425567494232 +5.625606133148065 46.286473772789236 +5.237890046020143 6.8431327837493034 +5.7900481137673605 43.24565523187864 +5.618492985261896 6.277323998105751 +6.1150889495789 38.20742435652209 +4.873972859495433 7.446112303758144 +5.213479663664344 37.51702836133804 +5.023963832922081 7.1899635778978865 +5.357837500478731 35.87504875380965 +5.323097814545246 6.710866803247254 +5.641297890626531 32.892005961689264 +4.7243532421175525 7.712697052009535 +4.9161862114435655 30.099034784651373 +4.836512041586625 7.5118047744840934 +5.028262383330979 29.228982983862704 +5.061458862756775 7.127622435137217 +5.25082468218436 27.563488632860214 +4.501861359460369 8.130530179667721 +4.558983194566306 19.316794973931437 +4.557176610598458 8.024183005830732 +4.614657018037813 19.073643977547178 +4.668454851581532 7.815217053500032 +4.726455612459774 18.591570997689775 +4.470367129328447 8.191829672565088 +4.515171502204685 17.79158345628619 +4.517640661094812 8.100023295097559 +4.562708959049257 17.601734029313924 +4.612718632706399 7.919061636868084 +4.65820123198007 17.224592027693852 +5.04973294268895 10.669885475941866 +5.697577438689202 50.66897713339635 +5.24296399821203 10.192695602956839 +5.855616108816578 47.23260345628276 +5.624717954290957 9.327376587002481 +6.170947241640462 41.62592195379034 +4.877556536284087 11.118473586346305 +5.265684063380468 41.85287260708051 +5.028216698104986 10.724718906524023 +5.407996648436072 39.94849649711203 +5.328460558274293 9.990133494883656 +5.687459611835674 36.53286762059353 +4.7271813634202715 11.529054945644626 +4.95278516806364 34.38478973034262 +4.839915183706477 11.219574723398326 +5.064580313333964 33.34617929876421 +5.065866372153742 10.628996156005364 +5.286245136211107 31.37697711496819 +4.503382509686748 12.174254474033969 +4.575646129947554 23.561686805223545 +4.559044546660886 12.009840050320681 +4.631629132760244 23.24948396201041 +4.670976145770175 11.687170151176495 +4.743957630725897 22.633326319716883 +4.471684065693054 12.269086833403561 +4.529284698855879 22.03622418791163 +4.5192622681720325 12.127076340187763 +4.57711305546527 21.78851071900912 +4.614919918861467 11.847454365033109 +4.673126495376003 21.298301633309855 +5.055419963392195 14.129698964415267 +5.775570195938042 55.11508419883419 +5.249568551424798 13.477522991913428 +5.926143415484363 51.240497207720544 +5.632724253413689 12.29922395956546 +6.230595709545263 45.01826196733309 +4.882277151134824 14.744431772329792 +5.322629100678156 46.254185097440526 +5.0337911073062935 14.204754161534364 +5.462438721654581 44.055271940555485 +5.335422082263237 13.20120802476918 +5.737241187169714 40.163689383245504 +4.7309254262394465 15.308535532462681 +4.992806560279497 38.7273186837646 +4.844403583055944 14.883205153851387 +5.104216538716912 37.4990602304493 +5.071636384413329 14.073745810046818 +5.324782297608378 35.19292879948919 +4.505411523568309 16.19789436167802 +4.5938617339474686 27.839708336693334 +4.561531454958039 15.970917379616674 +4.650226090836833 27.450557677674656 +4.674320297781258 15.526152266252115 +4.763209439893795 26.685787545436302 +4.473442568613942 16.328920600694623 +4.544707321484448 26.309846928071586 +4.521424118944219 16.132739767021935 +4.59289915585857 25.99781337729891 +4.617845118083539 15.746973578567959 +4.6895640782368515 25.38247428057733 +5.062254677066698 17.527599396919705 +5.859481555947673 59.609018987265124 +5.257454209429687 16.691122744527885 +6.001356657066176 55.25268055239741 +5.642166153156423 15.186338255491854 +6.293594668740433 48.3692438190014 +4.8879845186746325 18.318537957269683 +5.3844018635236655 50.71146851907804 +5.040495447542853 17.624036934912688 +5.521102820268699 48.18341409342723 +5.343710396792351 16.337513557624508 +5.790387578648017 43.77114532835466 +4.735476321869133 19.046536273656393 +5.036380105957116 43.12089576852673 +4.849837410978275 18.497432605225534 +5.147212063549512 41.679676043188984 +5.078566998772577 17.455729286810584 +5.366330435204318 39.00095656401291 +4.507897910088897 20.19871858256391 +4.613716735183193 32.14852449451442 +4.564572754724435 19.90414162027304 +4.6705105047953746 31.67352065789145 +4.67839333005802 19.327956567903176 +4.784225107963174 30.743934557996987 +4.4755999753639255 20.368933486284455 +4.561515066678203 30.610472185504737 +4.5240717442970055 20.114122051920535 +4.610124323803158 30.22682258702704 +4.621415135171362 19.61385434437507 +4.707533096210304 29.472844681211352 +5.070060524365141 20.859782597529385 +5.949134807340454 64.13705547957447 +5.266400202403102 19.829745274008108 +6.080939880415307 59.255575395341296 +5.6527451137730385 17.985640978904673 +6.359513341077132 51.66790404630075 +4.894543290789729 21.8371824637159 +5.451042610671938 55.21706533824221 +5.048158233843317 20.97877336039872 +5.583887201944051 52.32329550429155 +5.353086173860762 19.395396894448307 +5.8466288982624794 47.345223275864875 +4.740735332830583 22.73986518795917 +5.083605829168903 47.56149041765331 +4.856090460360498 22.058727673194646 +5.193578144665138 45.88199362523777 +5.086477858508346 20.771137030030644 +5.410762872848514 42.79320219753345 +4.510795762856551 24.174710037604264 +4.635282070291262 36.48688900601826 +4.568109744450976 23.80713059234159 +4.692529617061295 35.916224184539644 +4.683110099495511 23.089617590846686 +4.807005012682314 34.804196398745084 +4.478117525901765 24.38734104046393 +4.579769615790187 34.93708246984647 +4.527155623658013 24.069096584294222 +4.628832093403087 34.47377865899272 +4.625558198100686 23.445400858414402 +4.727040585991371 33.566428027802004 +5.0786811815916115 24.124045262395093 +6.044291854330868 68.68673139327908 +5.2762135828424785 22.891528879285126 +6.164550512105538 63.237815562013616 +5.664207079695767 20.696343150055508 +6.427942179006728 54.906326753118634 +4.901832470479976 25.298054223115784 +5.522554282278688 59.76444077256277 +5.056627434023422 24.266735009236736 +5.650660386507368 56.46686294432384 +5.36334143240669 22.373200767379398 +5.905691954522837 50.87827331615739 +4.746613455427376 26.386328320178542 +5.134563178694721 52.04621671549102 +4.863049682747277 25.56478766938752 +5.243305259612673 50.10127829910979 +5.095209469491383 24.017786531758702 +5.4579411584494935 46.563580833988624 +4.514063506908594 28.12436317794095 +4.658618578089628 40.85436671541857 +4.572089325883425 27.67813987456314 +4.7163208013137865 40.17738916564327 +4.688393666622191 26.80904929881932 +4.831541077955187 38.86403324293586 +4.480959999962153 28.382794931724018 +4.599523590300031 39.28938229458405 +4.53063092188312 27.99608446849267 +4.649057277138384 38.73769943929649 +4.630209347299749 27.23967509006978 +4.748086103451089 37.66115766468291 +5.087979260218067 27.319332603357136 +6.144661579837696 73.24638553595408 +5.286727100706682 25.87593874939765 +6.251829995614694 67.1897065904853 +5.676338060332687 23.31919059415466 +6.498499162359927 58.07886021168022 +4.909744408411691 28.69978728336521 +5.5989071058594115 64.34769969086639 +5.065769238080356 27.486818889712605 +5.721267748116195 60.60714687910058 +5.374297035236377 25.27065750226946 +5.9673070243157476 54.364391516101335 +4.753030862801816 29.984468210195743 +5.189316089208498 56.572953703338825 +4.870614264676554 29.014205369918443 +5.296368225388282 54.33368294687755 +5.1046217895363455 27.194660625896365 +5.507720427347832 50.307287429983866 +4.517663382149387 32.04654915154942 +4.683780590520658 45.25114437488361 +4.576463393665444 31.515894632458778 +4.7419149601593675 44.456385134788135 +4.6941747919778605 30.484816797164378 +4.857819909385076 42.921657565797986 +4.4840955224722725 32.35427394170847 +4.620823696538416 43.66763483454232 +4.534456956381929 31.893910381335374 +4.670828961026172 43.018189276322886 +4.635309940270503 30.995301729684712 +4.77066448860684 41.75564225146118 +5.097834644119621 30.445424880560555 +6.249906760095835 77.80489043858427 +5.297796599876029 28.783379071063944 +6.342411885467098 71.10288174605598 +5.688959327065734 25.855952708402672 +6.57083251067301 61.18156948742607 +4.918183804793554 32.0417172876252 +5.68004054511642 68.96123927283836 +5.07546644285965 30.638742422151044 +5.7955356883417135 64.73793104616259 +5.385799636838932 28.08847044753578 +6.031212048003808 57.79899899416192 +4.759916081735295 33.53338135852578 +5.247915733172577 61.140063708923606 +4.878694718368583 32.40624084501974 +5.352729171159108 58.575954800476225 +5.114592524633682 30.30158774883558 +5.559952724662382 54.02045839516638 +4.5215612142541906 35.94042922712588 +4.710818353516321 49.67789548812779 +4.581188459027125 35.31947956307129 +4.769338762388507 48.753072822268834 +4.700391322550736 34.11597758204601 +4.885824784588097 46.975837738915665 +4.4874951198779485 36.301003378688506 +4.643712861265388 48.072545748190386 +4.538596872421009 35.76170873021177 +4.694172500859399 47.3153033282347 +4.640807176197426 34.71133296294132 +4.794767648374482 45.84899486568745 +5.108142622873195 33.50271165100861 +6.3596508061003565 82.35152480116909 +5.309298648584484 31.61491960402189 +6.435928480590757 74.97007677493421 +5.701922585656445 28.309065989171756 +6.644621618349742 64.2118441749145 +4.9270665142637355 35.32370551237252 +5.765863937598826 73.59950114067223 +5.085616731205672 33.72282373168372 +5.87327476861706 68.85353235751367 +5.397718875301129 30.828020261340516 +6.097155093953286 61.178542591671196 +4.767205336854856 37.03258725310013 +5.310401742318907 65.74617337091865 +4.887211802233849 35.74065659888136 +5.412339163285445 62.825221197000026 +5.125015226873074 33.33901178911564 +5.614489133709104 57.69993242010654 +4.525726012312202 39.805389432724084 +4.739779725692727 54.13567925760768 +4.586225309004975 39.088258480002025 +4.798616160556264 53.06768652732749 +4.706987513655924 37.70196684405113 +4.91553694036566 51.02575408041819 +4.4911324767498675 40.22240259950035 +4.668231748577706 52.50517660324102 +4.54301736984926 39.59885502691146 +4.719110899638165 51.62944644646137 +4.646653549512475 38.387150425705684 +4.820385727925158 49.94070710893096 +5.40531957176294 3.7146235772942324 +6.097623813952628 51.362718402481356 +5.629617861163018 3.5409711691538406 +6.2784373572920495 47.425102696811386 +6.071158038917842 3.2291340726885 +6.640522345445429 41.15841308508025 +5.205164749537758 3.878673378207228 +5.5937589924678885 40.44384808098184 +5.380319007358236 3.734639141878251 +5.760460672338562 38.42048326531987 +5.72870531791776 3.4675869507391592 +6.086724424104033 34.808994275892445 +5.030258652785904 4.029312226914656 +5.238434367189688 31.2210988042393 +5.161385665494709 3.9157305666107116 +5.369517452130821 30.215908874109434 +5.424062801609332 3.699705498794582 +5.62916828051928 28.29809307073399 +4.770109111385462 4.266537279738735 +4.82383594346378 17.87049898571484 +4.834770135326843 4.206056753268668 +4.888981505816101 17.630570683414764 +4.964891099564678 4.0874088069104255 +5.019838991791197 17.152770586842852 +4.7333047583966685 4.30142336092554 +4.774037233364231 15.982518914911504 +4.788552163934553 4.249181922051259 +4.829630868984269 15.80174062478353 +4.899713017463396 4.146335021901777 +4.941354886374946 15.441052510360361 +5.408184768834356 7.397268199122454 +6.172579658959372 55.89367071289331 +5.632964540021106 7.044526641520346 +6.3450456421589845 51.51659092516331 +6.075268399489758 6.412233194425149 +6.6953467297750215 44.64965420920644 +5.207531584039901 7.730963164020344 +5.647899693392787 44.94417635689913 +5.383125741495747 7.43795749285415 +5.811726950442294 42.63060053206229 +5.732242447632447 6.895602748965816 +6.1326879698349215 38.553765353819614 +5.032128050995383 8.037793545289311 +5.2760610257656495 35.67534658907088 +5.163633725794547 7.806405835849813 +5.40653588204892 34.48707350602949 +5.426971160841319 7.3669458207949035 +5.664642101077935 32.242683800122926 +4.771115615403666 8.521838905744827 +4.8407855259650185 22.300121294274174 +4.8360058275274485 8.398329765984617 +4.906136355327344 21.986513539174137 +4.966558176146588 8.156238521245372 +5.037314144311528 21.365607241199914 +4.734176221524511 8.593113112189979 +4.788380215649777 20.416265945532928 +4.7896250798504285 8.48638975654655 +4.844174611217117 20.173763518174912 +4.901168896653719 8.276439230025067 +4.956239744845796 19.692398648299058 +5.412666707964139 11.031336748101282 +6.253775874696591 60.50674624225321 +5.638168673920587 10.491669023821917 +6.4168134836635025 55.64641991909838 +6.08158685834187 9.526935005268188 +6.7542897838280656 48.13254317516726 +5.211253695033585 11.542909566440748 +5.706937753116001 49.52766172697398 +5.38751914257526 11.093660157006711 +5.867434497599345 46.89030363815246 +5.737728409382623 10.264151490633742 +6.182499608179052 42.30426752575033 +5.035081579129258 12.01423924801792 +5.317164504281887 40.20079452709602 +5.167173175776032 11.658713705821457 +5.44695779200098 38.80790454863507 +5.431518355634367 10.98490208862704 +5.7033852366539985 36.20352222679113 +4.77271684585521 12.759715370564301 +4.859261469250553 26.77085463546818 +4.837968352289288 12.569270410275374 +4.924913624255154 26.37597965246567 +4.96919664170284 12.196434913395496 +5.056582867579011 25.5980175732188 +4.735563958939737 12.869689383714508 +4.804003933897817 24.885970276186647 +4.791331135416341 12.705038280558187 +4.860092192496826 24.575605640614985 +4.903477110769129 12.381476381457015 +4.9726687633162685 23.962097381559353 +5.418542676289974 14.606652812842798 +6.3410854548013456 65.17935795117197 +5.644947576539755 13.871125017142916 +6.493447179954796 59.79125179504734 +6.0897166994015866 12.560832906461867 +6.8168839154215295 51.584842282517926 +5.21616221273173 15.305707365732296 +5.770985274111867 54.179713118040624 +5.393283226746309 14.69172010861936 +5.927533160377962 51.18207801444491 +5.744854417472381 13.561601000196562 +6.235896637705328 46.04098828889923 +5.038996845845236 15.951409123121056 +5.3619123182016075 44.7879523697274 +5.1718468575450744 15.464205954853904 +5.490851925377399 43.166165119685175 +5.43747663241539 14.543289704830684 +5.745302432361167 40.165127480599814 +4.7748561490693096 16.976024921601464 +4.879378681660423 31.278342458918026 +4.840585235553523 16.713870427622826 +4.94540141971665 30.793297589866185 +4.972701105072861 16.20144301769422 +5.077679003847507 29.842080719318783 +4.737420092402399 17.127534765368836 +4.821009289660325 29.387887951428823 +4.7936092187669495 16.900731538494085 +4.87746378906909 29.002415881141303 +4.906548935743679 16.45563462467179 +4.990679707519907 28.24334248905079 +5.4256099661602315 18.116709763908464 +6.434283839602999 69.89263442572603 +5.65304611297038 17.176024755665434 +6.574593986044349 63.93278316528012 +6.099307208989737 15.507123313124602 +6.88265794001302 54.990875935803665 +5.222102588425582 19.013495091310983 +5.840084027373324 58.888814218594085 +5.400221251270594 18.225693084767716 +5.991911806109069 55.49224369072195 +5.753342882403174 16.781017112080747 +6.292586246820628 49.74964413878482 +5.043761468339764 19.84431737004508 +5.410423548100963 49.429986397110575 +5.177510826026082 19.217210676646545 +5.538239533614634 47.552680409736 +5.4446388125741505 18.035558369110625 +5.790262102870538 44.11604279673671 +4.777481628419259 21.167778286235983 +4.9012259715490565 35.81985497443594 +4.843790044065324 20.82855614340211 +4.967662386623867 35.23462465280309 +4.976974774040514 20.16669376883905 +5.100612981033882 34.09214526234501 +4.739700808994218 21.364021593618837 +4.839474198232253 33.9197073392044 +4.796403327048967 21.070307104146096 +4.896347249243509 33.45095599027796 +4.910302912344466 20.49481432625097 +5.010289754963334 32.53132516290766 +5.4336866453229415 21.557431329035296 +6.533073808665931 74.63006032972393 +5.662237858939349 20.402387440451392 +6.659869018405209 68.05617618077467 +6.110055000959019 18.36259055865486 +6.951159551298322 58.33945178491771 +5.228934916466946 22.662371561837688 +5.914224438697813 63.645321545333914 +5.408156432304543 21.691509561761517 +6.060418881097242 59.80963047333835 +5.762948860285796 19.918536381187558 +6.352266255529927 53.419508338118575 +5.049273253641034 23.689487805899386 +5.462785685286159 54.12178791810657 +5.184034560614357 22.913906174813008 +5.589110951897097 51.96027483531375 +5.4528191606078185 21.457629388446414 +5.83811293976286 48.04750631957062 +4.7805458492339055 25.332754158178403 +4.924876102105794 40.39379656804165 +4.847522061811419 24.910711324585264 +4.9917434612490865 39.69736742570399 +4.981929501225888 24.08894847353616 +5.125381196414007 38.34408474823024 +4.742366092297682 25.577181711043174 +4.8594623555081915 38.480121605089664 +4.799662269915258 25.2114248971415 +4.916786620185815 37.919097006322026 +4.914664778219958 24.49606290490104 +5.031503698579355 36.82258503569051 +5.442611147403595 24.926447165626627 +6.637100938218191 79.37674177708988 +5.672324413406562 23.54822950384987 +6.748871835939272 72.14916935271448 +6.121701533543858 21.126407515778684 +7.021966167925618 61.622618343918774 +5.236533648422419 26.24982767598035 +5.993354876361504 68.4407403769167 +5.416931552433497 25.08676947061128 +6.132873806744431 64.12480743625416 +5.773459009239012 22.97240017325301 +6.414636385912537 57.04242478673059 +5.055439655384148 27.484518981662173 +5.519063342413414 58.85940142449951 +5.191300677646432 26.55178735735417 +5.643434410040458 56.38313673576978 +5.461852846436603 24.807156609992084 +5.88869310877802 51.95267353513271 +4.784005647953538 29.46928476733781 +4.950391446588104 44.99941700617678 +4.85172608535728 28.95840928194179 +5.017681332633525 44.17984236352207 +4.987485263861938 27.965916852612395 +5.151971233938768 42.594863443123515 +4.7453794031881165 29.76551912315022 +4.881028174059209 43.068579154567324 +4.803339484409232 29.322337294195115 +4.938816937835925 42.405525699412536 +4.919566966735047 28.45724620755291 +5.054318527180992 41.11463237107193 +5.452241049510178 28.22261600002229 +6.745965668467853 84.11900237685698 +5.68313344159652 26.61297619717585 +6.841197622469988 76.20151522262246 +6.134028809537141 23.799351695462622 +7.094689805813457 64.83483487503561 +5.244786675502179 29.774372530558505 +6.077386504999734 73.26724995064525 +5.426407805633968 28.410278161149584 +6.209074271064757 68.42959748115166 +5.784689244504036 25.942320019537448 +6.479404826413142 60.61216340732492 +5.062177336427664 31.227807132936068 +5.579303005195829 63.63963054977928 +5.199204103924237 30.12931517823964 +5.701161150765 60.816398790945954 +5.4715947819764335 28.083040332434486 +5.941835715154914 55.826108168771036 +4.787821638047968 33.57611247199678 +4.977827552344405 49.63661380818807 +4.856351895879005 32.97023401183038 +5.045505821344933 48.68104558442697 +4.993569748669145 31.796015051859488 +5.180365011666593 46.84224623092923 +4.748707521849586 33.927894056190816 +4.9042199171521 47.685113083192384 +4.80739252172176 33.40173618470954 +4.962467213470825 46.909545134162045 +4.924948241344658 32.37684137712305 +5.078726207680056 45.40569531163265 +5.462451536117142 31.445693598804404 +6.859233936654338 88.84416545374937 +5.69451615153407 29.597052448017934 +6.936445501796758 80.20460706981918 +6.146854611757738 26.383272333703403 +7.168978501871392 67.97238529559664 +5.253594466938471 33.235274588671 +6.1661958585057794 78.11737405773722 +5.436463335686519 31.661723174375414 +6.288801078223178 72.71674761203657 +5.796481755109693 28.829037198825684 +6.546292185922228 64.12397330735504 +5.069411414977458 34.91835129651593 +5.643535555911107 68.45974621730218 +5.20765129142393 33.64567391796485 +5.762228482486566 65.25584031369523 +5.48191797166977 31.285088551159003 +5.9973722418801625 59.66343101795505 +4.791958022498085 37.65229726241779 +5.00723553881365 54.30579034186424 +4.861353909526693 36.94516277819571 +5.075242100041862 53.200487893915636 +5.000117803887793 35.57819603393911 +5.2105407857338735 51.08459363870018 +4.752320121435002 38.0634368749494 +4.9290818299520565 52.33021940588878 +4.811782765940829 37.44865211799642 +4.987762425941428 51.43093247249463 +4.930753227312354 36.25379242491507 +5.1047154815198175 49.69454109035187 +5.473133596151182 34.59609211709822 +6.976447420776252 93.54046255579787 +5.706344971657927 32.501593526767344 +7.034225009395864 84.1512195295729 +6.160027671435566 28.880717630661152 +7.244516078474531 71.03295369854861 +5.262868904383343 36.63237341620287 +6.259626479189064 82.98375993218173 +5.446991521099336 34.8414398545113 +6.371822134936697 76.97971498664457 +5.808702234229715 31.63401277657849 +6.61503367253218 67.57426004254684 +5.0770748530470975 38.5556131676051 +5.711777322190925 73.31726219242083 +5.216559167438322 37.100594696043 +5.826561562425359 69.69767132078147 +5.492711653941011 34.41377169889321 +6.055134835231709 63.461071302628675 +4.796382209369787 41.697146607357816 +5.038663775791195 59.00774895911328 +4.866690855175867 40.8824797171333 +5.106912198169992 57.73807111180867 +5.0070707746943155 39.31182662018656 +5.242474461237735 55.32071135926759 +4.756189548373147 42.171491649456776 +4.955655648130594 57.00476563399894 +4.816475186746907 41.4623812351279 +5.014724898356249 55.969832575824675 +4.936931930986174 40.08740510878043 +5.132273052085095 53.98034395089525 +5.763330753371242 3.822241563728355 +6.667831639668449 61.733966027851324 +6.021154598155061 3.6281357753750147 +6.848316942662843 56.15889011442123 +6.526144081570459 3.284703402152532 +7.227586691400637 47.79480587568346 +5.5326321966744585 4.007236345543238 +6.035597276896144 48.420741508242585 +5.734544711184266 3.8447326613175563 +6.220416698205366 45.58571981667929 +6.134783672500834 3.5466957286958936 +6.582117586258762 40.70166020331399 +5.330671490752402 4.178300792269278 +5.596049401998094 37.12219790816294 +5.4821077410078445 4.049219851640181 +5.746146936207253 35.74962845480973 +5.784905954467674 3.8054936364209797 +6.04222061939877 33.172246939625495 +5.029984881509164 4.449543289325959 +5.096290127561509 20.886139017683405 +5.104728092614175 4.380207686808572 +5.171648870252468 20.574034315515373 +5.255134985041334 4.244539150564389 +5.322939681491013 19.95343179650299 +4.987447173098309 4.489585375205344 +5.03738530794593 18.6012376714887 +5.051302760967626 4.429635677134402 +5.101689546398496 18.36800396908278 +5.179799611679206 4.311856520508971 +5.230891360147082 17.903000257975812 +5.76626917866581 7.611209196162064 +6.751475878399966 66.46319184879806 +6.024566734415567 7.217566234466962 +6.920351132006714 60.36431932687649 +6.5302974649474335 6.522260702441946 +7.284863660905813 51.33309117254839 +5.535073610950787 7.986869864859246 +6.096522143688071 53.15152372075448 +5.737425192272414 7.656854322047576 +6.276966713875185 49.961751643620126 +6.1383816062836924 7.052555586831271 +6.631321128834335 44.53765097384491 +5.332609964708101 8.334700308150675 +5.638131147933513 41.801375350817494 +5.484429677105168 8.07219441765131 +5.787151886167336 40.20813201309286 +5.787887098006908 7.577224333075541 +6.080803708473719 37.247389903680755 +5.031036666525214 8.887186027860542 +5.114995860631194 25.52684913776503 +5.1060169852629755 8.745842627472449 +5.190544733660328 25.128822596907824 +5.256867109675461 8.46950823326494 +5.342102363967641 24.342150104225603 +4.988358786220376 8.968850491873653 +5.053188200670226 23.24545218112275 +5.052423358089595 8.846595292166993 +5.117690335447576 22.940505587563766 +5.181315258419522 8.606584770471342 +5.247211751380543 22.335789402160124 +5.770869646543805 11.349518591324824 +6.841401664537855 71.2699996337065 +6.029876230554922 10.748526681763337 +6.997449217003748 64.60304544821085 +6.536684426517073 9.68967653003647 +7.346154285839723 54.859902103374296 +5.538917057048469 11.924185784889985 +6.162617381770606 57.9690746240628 +5.74193803876167 11.419283958439717 +6.338065373814716 54.38674386585662 +6.143965189076176 10.496938347177933 +6.6843493528801545 48.37664773475804 +5.335676442440857 12.457320783162515 +5.683916985124734 46.55741187507062 +5.488089460845313 12.054871833847573 +5.831716671047779 44.7187433896079 +5.792552047066779 11.297585718217336 +6.122716479564793 41.33790761061643 +5.0327124392059694 13.306311584104446 +5.135313298380732 30.212700827709895 +5.108066915444644 13.088851890488666 +5.211145818000615 29.72022096032479 +5.259612079112473 12.664226350193058 +5.363134031954841 28.75196955724029 +4.989812683785582 13.43203747074018 +5.070340573269568 27.92921006972937 +5.054207863913448 13.243843239333284 +5.135133807336545 27.54568494969599 +5.183721501622094 12.874777890685962 +5.265143287077249 26.788539902032337 +5.776905448588826 15.026458540244246 +6.937348455093762 76.12864656812505 +6.036796200527783 14.20923996020243 +7.079238309231529 68.85016557275453 +6.54490478365576 12.774156754419701 +7.410960158110885 58.352517610419824 +5.543990281096257 15.80985064507518 +6.233941531707707 62.8565741217486 +5.747863322221688 15.121458466337916 +6.403607369422544 58.84136241639069 +6.1512215171242275 13.867730019820746 +6.740900534326966 52.198138771732694 +5.339745937055458 16.538439119903774 +5.733561206811688 51.379592827394006 +5.492926727111958 15.988282983026098 +5.879887629852011 49.2678911581415 +5.798669016276541 14.95575968799342 +6.167835966028221 45.42716444364527 +5.034954441169015 17.702460678483877 +5.1573590049977875 34.93888869432332 +5.110803957649615 17.403855490245796 +5.233539850336074 34.3419977099457 +5.26326229373309 16.821684839581593 +5.386064496133763 33.174262103192554 +4.991760087615983 17.875246521297267 +5.088945234920386 32.64838678790002 +5.05659395902708 17.616649689601303 +5.1541006326170145 32.17821591571383 +5.186927780993488 17.11020717316805 +5.284721546468267 31.253832669543755 +5.7841694816304265 18.63515473913757 +7.038965875315073 81.01755324782346 +6.045066962832963 17.592506968864388 +7.16530024637022 73.08623931423332 +6.554604156618936 15.768671072826729 +7.478789741984909 61.79501892099078 +5.550134917714343 19.637623823259347 +6.310479581509469 67.80035808768253 +5.754999955143221 18.756562999073115 +6.473428665826792 63.31033185127685 +6.159868535235225 17.1576888019216 +6.800649592657966 55.987107281770996 +5.3447031277625605 20.572710308924457 +5.787168274155847 56.2599143451963 +5.498793902581459 19.86637867864728 +5.931663136824198 53.84517871352604 +5.806026411219294 18.54483070952885 +6.216004963323584 49.50274513594105 +5.037709499934332 22.072395723145654 +5.181223317451316 39.70229236911646 +5.114159957000319 21.686992789887675 +5.2577888943785585 38.98981813895119 +5.267718418833221 20.936972777535598 +5.41089997947117 37.60276459140956 +4.994156131945747 22.295627798316893 +5.1090818949175985 37.400343776239836 +5.059524248487111 21.96159197011239 +5.174648987503574 36.834448338008606 +5.190850511209861 21.308454923685154 +5.3059613296833605 35.726331073047504 +5.792475254841489 22.17128655178426 +7.1458412612925155 85.9179752548573 +6.054457488203469 20.894145206216585 +7.25519807120917 77.29567599335732 +6.565475594995803 18.669891155048667 +7.549178787107489 65.17615138345315 +5.557207050001302 23.403335689894316 +6.392161487888628 72.78870084943999 +5.763166634463002 22.320279673865482 +6.547327024358261 67.7810900367231 +6.169656828393702 20.362770274961537 +6.863268063697099 59.73231267761053 +5.350442693959503 24.55639105647111 +5.844809050690886 61.19212085298967 +5.505556643514908 23.68506664724626 +5.987009804078081 58.44229428790286 +5.814433879310289 22.060478755538334 +6.267048362546337 53.55509210670432 +5.04092877517156 26.41369823293965 +5.206980299624625 44.50096566182826 +5.118072383546891 25.935422887292642 +5.283939008066517 43.66064547322745 +5.272889586392046 25.006592807189953 +5.437632409442465 42.03280940927343 +4.996959651033531 26.691035134754568 +5.130815868573495 42.183485840168274 +5.062946014852207 26.276124157770678 +5.19682300984109 41.51188637494119 +5.195413141615683 25.466323848047555 +5.328864797978339 40.20210953844898 +5.801656697292005 25.632333481221124 +7.257518314376817 90.8133053141418 +6.064764935866775 24.112064983046302 +7.348492284596073 81.46580352272244 +6.5772572548812445 21.47695879471887 +7.621699592262601 68.48803663369782 +5.565077116411707 27.10429457629184 +6.478871720689233 77.8110973239937 +5.772201670181302 25.810053627675767 +6.625073820157598 72.24301145895707 +6.180368783106191 23.481128774973364 +6.928434864611584 63.42526994967842 +5.356868895751069 28.486884456085285 +5.906529125646817 66.17111541631688 +5.513093731298323 27.441654170403787 +6.045871191967382 63.05236228409218 +5.823722100250569 25.500211163133017 +6.3207823174391615 57.57670679772608 +5.0445676469514975 30.72454314081139 +5.23469335350861 49.33383805567881 +5.122484097354722 30.14704353267165 +5.312025654165753 48.35238934056825 +5.27869297496642 29.028060779698713 +5.466244611977571 46.46087586054637 +5.000132893384279 31.05982885155563 +5.154202987554796 46.997002718420376 +5.06681110499024 30.55833551021815 +5.220657564387725 46.208884506886434 +5.200545735057375 29.581492214898237 +5.353426038825883 44.67826247089853 +5.8115671142427425 29.017076835522044 +7.373512334349056 95.6886947945008 +6.075812831556012 27.245657171117813 +7.4447515630707155 85.58626650142115 +6.589728192076457 24.19067802686094 +7.695964419413128 71.72530381387804 +5.573629083116144 30.738894324191286 +6.570454901673881 82.85780894703437 +5.781962000916064 29.22460784734036 +6.706422031369202 76.68692150775796 +6.191816369342949 26.512458434919953 +6.995842427591889 67.05957595301793 +5.363895227157081 32.36244862928819 +5.97235331301815 71.1925553160169 +5.5212963127691514 31.1344798684567 +6.108172995073528 67.6695178769316 +5.833741695688345 28.862854491655135 +6.377019770609587 61.56162549358858 +5.048585228144547 35.00354771375841 +5.264418746844329 54.20050909430311 +5.127342936410355 34.32030236289622 +5.342077049102705 53.06366670469896 +5.285053475807184 32.999651071020494 +5.496713460001434 50.884289890396964 +5.003641404444897 35.40075346185254 +5.179292717512281 51.84069190152039 +5.071075437030776 34.80678876991485 +5.246181215362092 50.92444052051582 +5.206184673666982 33.65229573678695 +5.379633853125844 49.1526421191999 +5.822077698309039 32.32525086078479 +7.493323287506775 100.53084022905519 +6.087448609474766 30.295365486244084 +7.5435602344001405 89.64860703715117 +6.602703622319881 26.81296431613797 +7.771625677188163 74.88447251999021 +5.582759683340022 34.30634155559052 +6.666719552234857 87.91956300904278 +5.792321784799408 32.563603376552805 +6.7911117032305865 81.10476561461729 +6.203838221859674 29.457533922896822 +7.065200191569541 70.63043570458522 +5.371443720982456 36.18199052243621 +6.042288013141961 76.25255388988019 +5.530067231506322 34.762657760873566 +6.173826253308208 72.28860771380128 +5.844361678368954 32.14819890604671 +6.4355739524807305 65.50505553895741 +5.052944227022976 39.24967286444546 +5.296207982952735 59.10110023879194 +5.132601389112664 38.45407257234047 +5.374116368101778 57.793630594837275 +5.291903197526838 36.920217047901154 +5.529011894415567 55.301011575456364 +5.007453604297561 39.71284614771102 +5.206130275994029 56.714831582907436 +5.075698780250353 39.020413513385634 +5.273418209772973 55.65804734231536 +5.212272231698671 37.677574385310436 +5.40747356125689 53.62367281472872 +5.833075770360419 35.55728871358807 +7.616447559370635 105.32787207839237 +6.0995413257930915 33.26238323155199 +7.644523625520984 93.64595877535137 +6.616030091283382 29.346458344025606 +7.84837461915647 77.96350352646729 +5.592377293322287 37.8064561020675 +6.767441231085874 92.98736543026365 +5.803170725119829 35.82739173727711 +6.878874645008571 85.48939480200247 +6.216296887267224 32.317886389253495 +7.136236336778097 74.13431770998899 +5.3794443852460745 39.944917191418824 +6.116322205761693 81.34745544230162 +5.539320007045184 38.32589003830735 +6.242729357107683 76.90497409558917 +5.8554676272090935 35.35673937331617 +6.496260752244414 69.40311601400502 +5.057610569264957 43.462149174391776 +5.330109450502598 64.03614263532934 +5.138216284296462 42.54756084270026 +5.408163230753189 62.54184082983559 +5.299180838258865 40.78906018726243 +5.5631102517954885 59.709478931717385 +5.011540602359093 43.99537702559474 +5.234758133144655 61.620084908840724 +5.080644501303565 43.19842823429498 +5.302389846981677 60.40958181935179 +5.218756127049797 41.65656080791109 +5.436928205330621 58.09021345475543 +6.117733282851219 3.917266690553024 +7.272344377466206 73.01726004181084 +6.410152432452938 3.7032047966635884 +7.438409132967252 65.39850700338845 +6.979980672315658 3.3300838918385067 +7.823007786509699 54.62390484534693 +5.855314202416206 4.12314233003184 +6.494818534603608 57.199036636223276 +6.08502604581822 3.9422043824925037 +6.693614567715616 53.31553326115208 +6.538712748629627 3.6140479023239687 +7.085329209544796 46.8885892688004 +5.625116535389927 4.314908246020278 +5.958045254481277 43.59401957678749 +5.797760724738794 4.170091315145701 +6.126997587638933 41.7548469210267 +6.142240038103007 3.8987143274697877 +6.458938972758822 38.366145555977376 +5.281957823410889 4.621164089956368 +5.362685749515917 24.158241095913336 +5.367275359084821 4.542662714307788 +5.448757078353437 23.75909178227979 +5.538939599523756 4.38947373545987 +5.62142753594671 22.966963820837872 +5.2334059006582825 4.666556497733741 +5.29384293731201 21.437264407386913 +5.306291188781292 4.5986115520768855 +5.367291898366743 21.141289201763293 +5.452964708981004 4.465411182937451 +5.514815425283107 20.551807335083694 +6.120733625229811 7.800107084723693 +7.363771504029499 77.90179883170873 +6.4136174124309 7.366586867268958 +7.514875766871318 69.68531604063163 +6.984165410467523 6.612111294794915 +7.882080548127416 58.192836226193 +5.857821046381131 8.217572322035945 +6.562692938218277 62.14606344309579 +6.087969186608091 7.850646335235984 +6.755225063360867 57.83683863537305 +6.542358712377749 7.18617739709498 +7.137336205706043 50.79702134233169 +5.627117390632364 8.60692336611789 +6.004765161091975 48.490495853008376 +5.800147969026029 8.312849382638413 +6.172020818228409 46.38815944000891 +6.145282496904775 7.762513372279675 +6.500471292204906 42.55590012384111 +5.283051913790147 9.229796584779177 +5.383179357936207 29.001003828528393 +5.368613578138575 9.070007992594364 +5.469416044291731 28.502725084614724 +5.540730981388035 8.758453204267198 +5.642277805761205 27.52004005858185 +5.234355171059801 9.322234201104393 +5.311126501790667 26.282596877622037 +5.307456238814441 9.183881823458048 +5.384765112728686 25.90421378904571 +5.454535318425997 8.912851988367386 +5.532573729379241 25.154804062096844 +6.125434306144516 11.63043377609106 +7.461334404681742 82.85602478716123 +6.419011960129264 10.969714757903406 +7.596246655937762 74.00000767727182 +6.990602298993627 9.822567401769914 +7.945068319922741 61.74782458621416 +5.861770967638315 12.26788513902988 +6.635955504887648 67.18154337405156 +6.0925835251889975 11.707540632331698 +6.821436324102464 62.40526554509691 +6.548019408412625 10.695107705377794 +7.193121088767177 54.70571097421526 +5.630285848588737 12.863540704229218 +6.055410030288156 53.468942515494405 +5.803914138347985 12.413542883688024 +6.2207413758675365 51.075333285742246 +6.150046636576242 11.573088959317298 +6.545371062620647 46.75977914534899 +5.2847973449530965 13.818873026494147 +5.405369344819673 33.892881995931816 +5.370744571674035 13.573504184227872 +5.491860737210135 33.2859446209222 +5.543573039141606 13.095670010806836 +5.665067273761558 32.09558743804803 +5.23587114395027 13.960913293357851 +5.329827504036433 31.171019910023894 +5.30931390247871 13.748345944155343 +5.403747996483048 30.702598445162398 +5.457031727750986 13.332377169135029 +5.552006245467909 29.779256579951088 +6.131605278928044 15.397056884827323 +7.564645421982214 87.85167754981019 +6.426045810360992 14.50037278280001 +7.682086922669609 78.31666059997839 +6.998888623828404 12.948339832775288 +8.011452466234347 65.26588616100194 +5.866988734838034 16.264262980435458 +6.714599212976223 72.28631473805486 +6.098645788514618 15.5018427642075 +6.8920861867178855 66.99981947519112 +6.5553786733590655 14.128310761285192 +7.252349015625598 58.593380996303 +5.634494613220261 17.07658575616496 +6.110116700513281 58.517356703422195 +5.808896041940395 16.462722713953415 +6.27318002425294 55.8014735631142 +6.156297317364805 15.319146578652452 +6.593488008206117 50.960115809247256 +5.28713534652727 18.38362957357525 +5.429373400345033 38.828629574915134 +5.37359307814576 18.047416941545382 +5.516177900820054 38.10196899893317 +5.547356144106597 17.39368844225683 +5.689821136190241 36.684295847441334 +5.237904210236015 18.57842221006376 +5.350050254173463 36.09803687852232 +5.3118007601229005 18.286954270208554 +5.424321267549048 35.53065325553972 +5.460361704696021 17.717363075946544 +5.573145913239457 34.41715361417781 +6.139035658400576 19.092772238529356 +7.673244479688792 92.86525674506535 +6.434455590761502 17.951074941957792 +7.7719317547951166 82.61520642209378 +7.008667324799478 15.982212034046883 +8.080729652674188 68.73100958612771 +5.873312625639596 20.200116814214226 +6.79854151777944 77.44449454866194 +6.10595116583122 19.22640448955248 +6.966957904403961 71.60381333670239 +6.564150912097148 17.478280181660377 +7.314668737249082 62.444483126670924 +5.639625717390429 21.240376756216 +6.168970693985904 63.626494594294485 +5.814942897724097 20.45399121456108 +6.329309450512179 60.554975377842915 +6.163819147856678 18.99344374706065 +6.644640251911206 55.14365246005384 +5.2900115717240475 22.920589719516922 +5.4552828859435545 43.80473766105346 +5.377089392028767 22.487610947028738 +5.542428452179862 42.945976842145576 +5.551978653924696 21.647274807762926 +5.716540909220954 41.27930936503431 +5.240408538692114 23.171696490062395 +5.371875878516478 41.06068689272432 +5.314858115473305 22.79603423614375 +5.446543012232274 40.38432173192608 +5.464439722168344 22.063089669961283 +5.596004758696377 39.06264552267906 +6.147535094908765 22.71303992741471 +7.786628517990057 97.87669016888042 +6.444006537331171 21.31746297344212 +7.865311563275988 86.87976038152767 +7.019628846707666 18.9207632067601 +8.152430348965822 72.13197098260216 +5.880595197275327 24.071029940628716 +6.8876429338113425 82.64225908765248 +6.114314501301337 22.876684308986533 +7.045800671052189 76.20350250930863 +6.574083162747147 20.740815915856476 +7.3797316217845 66.2474352922913 +5.645571016185121 25.35091940946861 +6.232021853298409 68.78888144375561 +5.821916973763773 24.383005740219936 +6.389070147334795 65.32641087398954 +6.172417908811205 22.591444499358243 +6.698630340242981 59.30014703089988 +5.293375891577786 27.427144385618448 +5.4831726812310295 48.81890794723317 +5.3811692608757005 26.89102983848275 +5.570657036604912 47.81448889087587 +5.557347224362741 25.852686896139097 +5.74521361743633 45.8754340382516 +5.243341900057141 27.73841741559892 +5.395370955647711 46.05708674632685 +5.318431864650586 27.272841326722304 +5.470457074728126 45.26074357128423 +5.469187134863198 26.36612636218203 +5.620581964191197 43.71135217560334 +6.156933705402778 26.255204789957293 +7.904271936177186 102.86862609495114 +6.454492207444316 24.597354854365673 +7.961766891517092 91.09763498857129 +7.031508930682542 21.763109800102818 +8.226126609022621 75.46101003159873 +5.888703332779323 27.874142477349565 +6.981717376725134 87.86714427509953 +6.123570299035543 26.44998806366126 +7.128341837586086 80.78729981166762 +6.584954423691802 23.913997637185282 +7.447201738305568 69.99356747284287 +5.652231879658775 29.405432809457217 +6.299292334481463 73.99820815617542 +5.829693638547719 28.246899778011805 +6.452379090779812 70.10787016803903 +6.181920467520921 26.110525020831894 +6.755254323698491 63.42155403148902 +5.297182333372542 31.9013162059869 +5.513106743184627 53.86974429026469 +5.38577380372261 31.25540226936437 +5.600897377945634 52.70500560595185 +5.563376484846481 30.007256654063923 +5.775816961561822 50.46867629747148 +5.246665421210226 32.27680557919955 +5.420592397239369 51.08616518987596 +5.322472379238606 31.71530702639751 +5.496097783898949 50.15794010678168 +5.474531831562678 30.623972149873047 +5.64686841460916 48.35995998025649 +6.167081154542768 29.717978813929523 +8.02564277756823 107.82602193765456 +6.465732765286408 27.790111838741215 +8.060857812887619 95.2586887272919 +7.044084477931807 24.510077933920645 +8.301434202723446 78.71293217413321 +5.897517566954884 31.607742167491082 +7.080539117046946 93.10762070050876 +6.133571854236761 29.94496471578599 +7.214295410614764 85.34528286825193 +6.59657353187666 26.99750487049814 +7.516761383141685 73.67641970805302 +5.659518937677654 33.40204485823566 +6.370780933353952 79.24892061730283 +5.838160687702043 32.04389858174588 +6.51913505946691 74.89253280522509 +6.1921738115237215 29.54944606179453 +6.814307273491595 67.50148496262553 +5.301388614631342 36.341600639325804 +5.545141590262412 58.95653970047195 +5.3908490488046015 35.57904430198286 +5.6331755989720484 57.615760341008944 +5.569988773982254 34.109123692740205 +5.808322465475275 55.05593359101162 +5.250343503561487 36.78549255237467 +5.447590542896861 56.14747907574475 +5.32693406287801 36.12186879477308 +5.523492908473927 55.07460051801321 +5.4804080056982185 34.83482724640619 +5.674849481365018 53.00595111806219 +6.177845237642574 33.10107732997137 +8.150215667461424 112.73587664449468 +6.477572585102616 30.89619453558333 +8.162169793319363 99.35485499844057 +7.057168827474399 27.163637821654984 +8.378011742260004 81.88446873308649 +5.9069313197973345 35.27097875971391 +7.183848146420741 98.35282634339292 +6.144189915405821 33.36125182075988 +7.303367968285953 89.86885691553513 +6.608776302022176 29.992141512970854 +7.588113965278852 77.29124264765466 +5.6673514161109955 37.339575641900396 +6.44646539031162 84.53591966941968 +5.847217752209284 35.77305114050231 +6.589222068066022 79.67436824541228 +6.203043569070377 32.90798224097579 +6.875586778747713 71.53483174631026 +5.30595606345608 40.746862244611485 +5.579328640777128 64.07912273671906 +5.39634570370146 39.86072845376745 +5.667512401106513 62.54554176428772 +5.5771136934839864 38.157046564661975 +5.842697507790281 59.63477497064574 +5.254343405085891 41.26342440775531 +5.476411262428532 61.24108154078971 +5.3317751885370575 40.49135802157957 +5.55266563009814 60.009928406113616 +5.486755762144053 38.997431813718606 +5.704506840025958 57.64741163368641 +6.189110155134471 36.40495292261344 +8.277482335107198 117.58704565252047 +6.489877986820286 33.916847480322744 +8.265317373383972 103.37978845292359 +7.070606928094074 29.726506498785838 +8.455558516515719 84.9738102794924 +5.916849874576622 38.863654211223675 +7.2913551170092985 103.59241286762655 +6.155311045338082 36.69921603125459 +7.395263731588171 94.35053042947226 +6.621422786156474 32.89949963496207 +7.660985190408318 80.83463147260777 +5.675656645259875 41.21738065870476 +6.526303470540573 89.85434042142322 +5.856775319618287 39.43403305354064 +6.662511650077173 84.44792154907495 +6.214412217996112 36.1866510847251 +6.938895311773803 75.51749543877871 +5.310849223655625 45.11625636682466 +5.61571582825272 69.23774005366597 +5.402218833332471 44.09958629011608 +5.703924531516546 67.49355990580355 +5.584687519898532 42.150264524909424 +5.8789066689175 64.20328002516308 +5.258635080067552 45.7097985672468 +5.5070974403760395 66.36742209908985 +5.336957631713687 44.8229174575118 +5.583635901476322 64.96352603696022 +5.493520715165611 43.11094816461151 +5.735819680570057 62.28288891815434 +6.469341189282587 4.001359052658909 +7.91009904485809 85.0683046406985 +6.797274348878895 3.7679653223614777 +8.046329579262414 75.02792666162101 +7.4330513787403145 3.367175109980388 +8.424989541435624 61.58739706401936 +6.1741477468859625 4.227922966305487 +6.9743213857897635 66.77457948602802 +6.432593286060053 4.028698699947653 +7.181090434923732 61.56797234545925 +6.941088480435831 3.6714745064195804 +7.596027813955064 53.32117174560066 +5.914620988985444 4.440558426211155 +6.326542497705147 50.6482882242997 +6.109305895139859 4.279848682873698 +6.513656419211567 48.22409567725741 +6.496866790447751 3.9810393130331283 +6.880113867874183 43.854896406637565 +5.527155555573891 4.782692898223981 +5.624289885636283 27.68915861215205 +5.623517903331052 4.694743452434308 +5.721542970586435 27.18610841566152 +5.81736092059786 4.52359959326723 +5.916464082094602 26.190242883556504 +5.472320162731678 4.833614979459694 +5.544640356069935 24.49230561699457 +5.554639069833122 4.757410585226264 +5.6276477078055125 24.122035946075933 +5.720290534572068 4.608351915284816 +5.794286865671174 23.385587127475425 +6.472393834214431 7.967265415611192 +8.007802629968609 90.05767553879518 +6.800781879295104 7.495139286862772 +8.126129888555111 79.36630494855395 +7.437258853473441 6.685547870637214 +8.485308460708215 65.17488454225577 +6.176712036792756 8.426122518424101 +7.0491553933301505 71.9199168442146 +6.43558960906248 8.0226063603557 +7.247409009735025 66.21283493029229 +6.944772260331767 7.300103735811918 +7.650389656664582 57.28554656253579 +5.916678259725789 8.857302910854807 +6.378077179610052 55.75484706266877 +6.111750916218238 8.531367910098764 +6.562698296026829 53.019890786002456 +6.49996084538573 7.926139237833648 +6.924406103959683 48.144400016984605 +5.52828929710159 9.55225381877915 +5.646605195263488 32.72624128451002 +5.624901993073644 9.373464983387244 +5.743987655241229 32.10983631143726 +5.8192064549979055 9.025841289359295 +5.9389998143433615 30.897381834834004 +5.473304876456147 9.65581813529566 +5.563426792140558 29.530703986855208 +5.55584569430094 9.500848001062636 +5.646609347878068 29.06659708405035 +5.721911818945585 9.197941570267925 +5.813484509945946 28.14881295189407 +6.477179192175173 11.87900363781126 +8.111343182428953 95.10701664231667 +6.806244912864917 11.160511165640266 +8.210647489095457 83.72756803272475 +7.443731945620703 9.931177458359437 +8.549459139222728 68.74661631766514 +6.180755439521341 12.578562611571979 +7.129520487568715 77.15315948185884 +6.440290117690235 11.963306799765984 +7.318325656467068 70.90195231942467 +6.950493671756307 10.864058267212128 +7.708468672799834 61.247584325340526 +5.919938956656862 13.23714424530865 +6.433747734253472 60.94781985202958 +6.115611224923088 12.739201792210585 +6.615553627316811 57.87057864685403 +6.5048084793593866 11.816366147548091 +6.972083208527509 52.446484733410905 +5.530100030720422 14.30126827085165 +5.670701134511778 37.816353813331716 +5.627108385744865 14.027177785936601 +5.768296475741417 37.07601032199096 +5.822137209698737 13.494905129820925 +5.9635400173818125 35.628202431436215 +5.474879282564173 14.460142280540062 +5.583698072434016 34.61569878656715 +5.557771792255768 14.222437515887899 +5.6671460119346 34.049320729632704 +5.724491374798538 13.758314985024667 +5.834415790914009 32.934871730796736 +6.483464336762344 15.72495519061965 +8.220233886611815 100.18653521767999 +6.8133704578409935 14.751483747629992 +8.299405468223316 88.08527309640989 +7.452066103059684 13.09069031055371 +8.616910702025855 72.27948960532918 +6.186100099611006 16.674981230798828 +7.2153336686243374 82.45277500743778 +6.44646868945323 15.839323282063859 +7.393622866692594 75.6128908202432 +6.957933980287432 14.350454398045162 +7.769903204127843 65.18544885634394 +5.924273702057205 17.571485663036317 +6.493668914542032 66.21384339021554 +6.120721120262849 16.893458778761858 +6.672214789444535 62.75996298057939 +6.511171666706648 15.639999892407628 +7.022968723613885 56.74257946071134 +5.5325280600074835 19.024679934074705 +5.6966960305729115 42.953814727277724 +5.630060590700676 18.649809309881185 +5.79455462809068 42.077308013655724 +5.826041737548875 17.922953137539707 +5.990104753119884 40.372736214841254 +5.476993009204444 19.24215422469004 +5.605559643603394 39.74242898921783 +5.560352926619015 18.916822958366502 +5.689338054805208 39.06396225058188 +5.727935439212029 18.282473980978015 +5.8571105992716435 37.73517908537336 +6.491035220556679 19.497620369250033 +8.333939753559193 105.27183251189601 +6.821892162943949 18.260321246776133 +8.391911486723693 92.41914210922025 +7.461902319406218 16.156716997767 +8.687153886892986 75.75748627736608 +6.192581388798595 20.70846933364646 +7.306436839353199 87.80069817586076 +6.453917321111893 19.643207703854806 +7.473034550872958 80.32779105861609 +6.966804795941177 17.75155837708788 +7.834321860706734 69.08323042609962 +5.929562138735656 21.854329625714513 +6.557902650185411 71.54236042595211 +6.126926977231235 20.987419362822987 +6.73262642734262 67.6752587888877 +6.518831855440519 19.389505778006985 +7.076857671721326 61.01870219620777 +5.5355179283665 23.718782234373204 +5.724681800815903 48.13472813086526 +5.633687463280326 23.236961304916044 +5.822821353912993 47.10842545319022 +5.830816293267947 22.304446771870243 +6.0186903838782815 45.12355307350237 +5.4795993303774155 23.99858194864126 +5.629093707039654 44.90761415457405 +5.563529207226551 23.580091330901144 +5.713243091147648 44.106064214614285 +5.732156703585509 22.765410972607885 +5.881577831036563 42.543386570834485 +6.49969821309731 23.19226259434858 +8.45190666410784 110.34251437620108 +6.831572243363628 21.682512366000232 +8.487680924071775 96.71333189857756 +7.472929145626756 19.12576087297466 +8.75971792621872 79.16945337351581 +6.200048712703662 24.6743828383573 +7.402615887615609 93.18111884826203 +6.462447584323535 23.37021742525925 +7.556266481693862 85.03198046341785 +6.976850356083947 21.063036433744635 +7.9013614952619236 72.92914317662846 +5.935693561783784 26.081446016503662 +6.6264731178198915 76.92460585422278 +6.134088061074471 25.016509334028278 +6.796701077840081 72.60595956600945 +6.52759155123213 23.060154629985917 +7.133532226876026 65.26403745654243 +5.539018332326785 28.380781887332322 +5.754733678649822 53.35644042551472 +5.637923184274911 27.78537048540979 +5.8531393757926775 52.1654414121934 +5.836365273074264 26.63541205412136 +6.049278651792195 49.874947987451236 +5.482655032935839 28.726939384344718 +5.654367777594464 50.109083701206416 +5.567245235736965 28.20930671368488 +5.7389043109607725 49.172403331028164 +5.737074598697777 27.203472968136158 +5.907813375590606 47.354670298589866 +6.509280196438045 26.806105974784348 +8.57358098965114 115.38141770555163 +6.842201346088131 25.015794804988417 +8.586249811894938 100.9553907119389 +7.484880567451002 21.996917696503587 +8.834177096350537 82.5077531068476 +6.208365843279812 28.56970704811909 +7.503612334857728 98.57980674755039 +6.471890738652227 27.017532983917548 +7.643008692602276 89.71317477072809 +6.987846979408855 24.282904217079544 +7.970676472054642 76.71443920250192 +5.942566719061537 30.249880800662744 +6.6993744968127436 82.35299413748945 +6.142076691639461 28.97770125264692 +6.864327865611367 77.54317029388791 +6.537274398326411 26.649205351296914 +7.1927706437242 69.47009727061624 +5.542982037546719 33.00855395936682 +5.786915725451083 58.61722439117459 +5.642707236061392 32.2926028826903 +5.885540194448063 57.245445225759305 +5.842600974180932 30.91300653877413 +6.081841815517267 54.62246761924125 +5.486120195162238 33.42531127837896 +5.681439530920386 55.34550257466466 +5.571450017447021 32.80224797807597 +5.766355165712086 54.260667248212464 +5.742615011224694 31.593987683389184 +5.935804644547086 52.16531711876744 +6.519627743190933 30.33780050157473 +8.698423988605247 120.37411584447256 +6.853596915745197 28.259504282058238 +8.687182459578203 105.13555824136486 +7.497531918944331 24.771031893862318 +8.91015182290521 85.76734478008784 +6.217410270111274 32.39263205404231 +7.60913195308279 103.98371685053122 +6.48209696863982 30.58373689460796 +7.732944196362073 94.36096996197023 +6.999601027076115 27.410828947554688 +8.041943508551503 80.4326810171395 +5.950089651144731 34.35763924767947 +6.776575240411174 87.82070697518725 +6.150777716033416 32.869115502013095 +6.935378029537762 82.47917746887059 +6.547724309437524 30.155359998518264 +7.254352685122504 73.63016578858704 +5.547365459509233 37.600475590089836 +5.821284258173445 63.91605820181406 +5.6479839774831415 36.75684762586445 +5.920047367890215 62.34628246345918 +5.849443400290487 35.13524186315681 +6.116345793078564 59.36259276303899 +5.489958154839251 38.092219005916114 +5.710359872920336 60.61618226998238 +5.57609654532591 37.35723112879226 +5.795622301744594 59.36923388216671 +5.748710114740864 35.935025627046606 +5.965533347117531 56.9724460408219 +6.530605764151257 33.787044868787845 +8.82592214145656 125.30855861668016 +6.865600852464057 31.41411649297859 +8.790075435654535 109.24624770996002 +7.510695175587094 27.450118827814787 +8.987306990968788 88.94512943841461 +6.227072495658619 36.142255396681904 +7.718851883918115 109.38074997566686 +6.492934113249173 34.06844588931907 +7.825755029147258 98.96649134120338 +7.01194608536871 30.44764000196869 +8.114863879557518 84.07921862728203 +5.958179028520718 38.40345956789156 +6.858020463548179 93.32139636005421 +6.160087890885004 36.68974091511065 +7.009708616739515 87.40714996905525 +6.558804050934874 33.57837962355706 +7.31806304838767 77.7389095066354 +5.552128640682424 42.155317550231295 +5.8578901513757575 69.25246657719725 +5.653702456774405 41.17677997409467 +5.9566786672593794 67.4663720108614 +5.856819855738101 39.30078642949767 +6.152752201924086 64.092512640458 +5.494135079847531 42.72651981295289 +5.741175020559746 65.92094409157987 +5.581141698848473 41.87299217189207 +5.826727517194454 64.49701308971161 +5.75529801278038 40.22523125720152 +5.996977315515082 61.773810576619276 +6.542095810302232 37.154309552431634 +8.955594457341277 130.17479131014255 +6.8780772644319255 34.480921063868614 +8.8945595408443 113.28165280663808 +7.5242141258679105 30.036958436940733 +9.065349136305937 92.03947199450128 +6.237255068496328 39.81836288056347 +7.832427281871246 114.75962124782163 +6.504286053949266 37.472040682728036 +7.921127290347602 103.52215035703978 +7.024740234828668 33.39498223749954 +8.189164017670532 87.65080463091584 +5.966759746298032 42.386648713463686 +6.943633272251609 98.84897280243938 +6.1699150126008835 40.43922870070397 +7.087165060929372 92.32092613411217 +6.570393477333739 36.918802409678435 +7.383693637495204 81.7920931576327 +5.557234832380177 46.67216174522831 +5.896780420389613 74.62639908408106 +5.6598161028703995 45.55145873402355 +5.995447530024214 72.6045678522345 +5.864664392329313 43.40882033093332 +6.191019727779201 68.80995959869739 +5.498619848268347 47.32733961053654 +5.773927969128776 71.26001544691715 +5.5865459609055605 46.348600092225496 +5.859689111259451 69.64332707830143 +5.7623223677743525 44.46369941748129 +6.030111724217048 66.56765196289909 +6.818772082751164 4.075903942127354 +8.576682388043865 97.69093148413661 +7.183004121112221 3.823902057807342 +8.668685598967475 84.93127820465087 +7.885610687089018 3.3975082894291804 +9.031833997685348 68.63944348762458 +6.489863471253687 4.322852450134045 +7.476268540328627 77.12361080312353 +6.777878728168735 4.105587683165958 +7.683122762238294 70.28978601984214 +7.342337308172145 3.7204898734728244 +8.113534401660052 59.95299543021193 +6.199999934261706 4.556427919303697 +6.703473986557139 58.29519176901134 +6.417496547919538 4.379741159528664 +6.90741271766465 55.14647967048535 +6.849392709855746 4.053863547361905 +7.306209798966739 49.612102462238944 +5.76648635400616 4.9351861054815815 +5.882154264989343 31.481276151518372 +5.87434422070223 4.8375323497573115 +5.9910267030483455 30.85530337954039 +6.091241094699569 4.648059497139566 +6.208991104435121 29.619804657850516 +5.705108726941292 4.991803553175709 +5.79078917386365 27.768019095379664 +5.797249226670226 4.907096329173594 +5.883748373355615 27.310539151379754 +5.982643663035394 4.741790014342634 +6.070246952916052 26.402185507119608 +6.821868848993853 8.115440420920232 +8.678745118371822 102.73376053604926 +7.186545819695327 7.606172878088842 +8.750751322061255 89.29650549327238 +7.889834570040719 6.745603223674007 +9.092969569953103 72.23710580304896 +6.492478196730668 8.615059123484972 +7.557851847710254 82.44437949271703 +6.78092017767749 8.17546490859281 +7.753670965961301 75.0357642458373 +7.346050764487133 7.397340774263587 +8.169814471129067 63.959222754278464 +6.202108293077305 9.088185761276925 +6.75998316425681 63.604449353362945 +6.419992713270964 8.730239611605143 +6.960434450096048 60.09227577171472 +6.8525301189271115 8.0708770222231 +7.353047394761798 53.98749014445309 +5.7676573577625945 9.85666786861094 +5.906327088265882 36.70600120446704 +5.875771068747231 9.658375056239976 +6.015279964683782 35.95137204765573 +6.093136176337615 9.273952735104004 +6.233207621604525 34.4716878039955 +5.706126891025476 9.971685519366982 +5.811102046288729 32.99248628831854 +5.798494833493187 9.799618066850181 +5.904214899573328 32.428973331962275 +5.984311732587895 9.464071763384059 +6.090884170684928 31.316670445843076 +6.826725628369566 12.099332813982736 +8.786274618454566 107.82717679059672 +7.192063848650407 11.325298569444477 +8.837354614149223 93.6805940345139 +7.8963337896977945 10.01999471605594 +9.157872216953757 75.81777158524196 +6.496603677009305 12.860006311276097 +7.645016994292425 87.85014069639485 +6.785693758456407 12.190649921251751 +7.828765426436219 79.82239797127815 +7.3518198224831455 11.008252768981132 +8.229745555549911 67.96080017709441 +6.205452521289503 13.581638735542072 +6.820824388196751 69.00375659576734 +6.423936350980526 13.035564975245931 +7.017361983310399 65.09325721736599 +6.857447897144159 12.031549230830434 +7.403269696852642 58.37371390724922 +5.7695294708815075 14.75665724092837 +5.932364547066975 41.98760769905465 +5.878047755682786 14.453107974439991 +6.041473786935735 41.09262506572352 +6.096148096256198 13.865341394560593 +6.2594891224039095 39.34830309428248 +5.707756456578629 14.932844963046337 +5.832966796922278 38.267012917063155 +5.800485110275063 14.669298583519781 +5.926320330379352 37.58818902817844 +5.986968115318691 14.15591001309341 +6.113311004586049 36.255246346921304 +6.8331070870016575 16.015579056422286 +8.898725932729903 112.94089653320691 +7.199263022515529 14.968350158070763 +8.9279948311111 98.05695442068219 +7.9047024661031315 13.207094982705552 +9.226004347542156 79.35830387334279 +6.502059763557074 17.047024588012444 +7.737598742233711 93.31710266428142 +6.7919709510155375 16.139277960091142 +7.908138092367364 84.62608607237908 +7.359323729165014 14.540036876369857 +8.29294526041123 71.93550435395507 +6.20990135868711 18.027794883069237 +6.886085346046582 74.47831513047988 +6.429159527977123 17.28541774924015 +7.078157020686533 70.13196452213946 +6.863905618884061 15.923780082969438 +7.456675813542935 62.75142555757513 +5.7720421320826745 19.629816818671422 +5.960385144478692 47.319982299177916 +5.881096655241184 19.215335486098475 +6.069691284364868 46.271205904820825 +6.1001637461171025 18.41400832168679 +6.28785007122574 44.23904639075458 +5.709946343722144 19.870596222885546 +5.856489676366129 43.58637918871094 +5.80315467689618 19.510487598807174 +5.950144276554512 42.78149472345326 +5.990517610759958 18.809951125180277 +6.137553926661937 41.20877361479227 +6.840796489572329 19.856414673470606 +9.01553061581861 118.05055338313693 +7.207874593046776 18.527374531732722 +9.022167765778114 102.4053770182876 +7.914580186634262 16.299409191312296 +9.296854397919901 82.8427186746734 +6.508679223088344 21.168910842620146 +7.835360576375867 98.82520841758574 +6.799541054402785 20.013631516893792 +7.99147986604193 89.42807310051545 +7.368271894311355 17.984764097760326 +8.35902749812559 75.86719835156151 +6.215332287972664 22.420360527840714 +6.955799455312517 80.01618285630067 +6.4355061482467475 21.47278131160203 +7.142734435366851 75.19447932420901 +6.871682054934059 19.739773716936547 +7.513039733748118 67.10603501008096 +5.775138878945725 24.472218101612764 +5.990480907050898 52.69884162858956 +5.884845290497759 23.940407494477657 +6.099989519540803 51.4813312495577 +6.105077464241552 22.914126976411684 +6.318281282340348 49.13593182004392 +5.712648984277304 24.781466757070568 +5.881753642924818 48.94698757306254 +5.8064425475576895 24.31904072805 +5.9757435244048756 48.00403630786654 +5.994871271623852 23.42091393904944 +6.16361837782779 46.17041867434382 +6.84959742867527 23.616926829001006 +9.136122976528075 123.13621328729462 +7.217658343178286 21.997727245737916 +9.119386550094097 106.71024778667957 +7.925654132785175 19.29337850996729 +9.369952461769453 86.2599421690137 +6.51630876326126 25.22081212899268 +7.9380147205376375 104.35693591342566 +6.808212847401018 23.80878706687248 +8.078460707270791 94.21303410175739 +7.378406352962258 21.337985860087418 +8.427619392309236 79.74399412588339 +6.221632286566955 26.75488403284786 +7.029960470272956 85.60724137021451 +6.442832761687847 25.592867252454212 +7.210977699977846 80.2692746679577 +6.880576949637971 23.474628226255884 +7.5721256073222944 71.42626049748831 +5.778767265566222 29.280890010028187 +6.022726978143321 58.12117351888792 +5.889226388052133 28.62486205033027 +6.132408803332824 56.71863801741087 +6.110791573705095 27.361504016401586 +6.350758884733018 54.03275902070586 +5.715820254983218 29.662808065399062 +5.908826843347405 54.346379526406444 +5.810292076963603 29.091837497097423 +6.003160268804752 53.25222898091313 +5.9999467516993885 27.984933396118933 +6.191496675222769 51.13492483907013 +6.859334046901053 27.29423147458791 +9.25995667257333 128.1815057064513 +7.228402573033436 25.37707623760127 +9.219192514834129 110.95945643164774 +7.937657020965501 22.188081795757956 +9.444875896723287 89.60244288339123 +6.524809360311944 29.199571143985107 +8.045235237309345 109.89664264095241 +6.81781482562251 27.521812513158462 +8.16874192800137 98.96825590144219 +7.389501313372228 24.597662917352338 +8.498369683526306 83.55713832876428 +6.228697724621718 31.028248529941802 +7.108530113894767 91.24257899137926 +6.451009006481013 29.642499293938478 +7.282747616273572 85.34654080422771 +6.890411228758356 27.12549770948241 +7.6336964370430795 75.7032694913787 +5.7828789189439425 34.05356451285903 +6.05718708278474 63.58491301665542 +5.894177909676216 33.26610872363313 +6.1669779453790845 61.97980247052269 +6.11721623901858 31.753131689460048 +6.385249425420688 58.92462892585316 +5.719419260154529 34.51257273801457 +5.937767419155777 59.78295373183006 +5.814651039674701 33.82650914243226 +6.03242676048691 58.52342589230909 +6.0056680921225505 32.49917365643083 +6.221172512904825 56.098188315425126 +6.869850296002213 30.88692317439377 +9.386515609988763 133.1730308124488 +7.239922535799304 28.66473519223123 +9.321161028149096 115.14365643303826 +7.950363051850017 24.984378596617912 +9.521249673944455 92.86530064864371 +6.5340558303718055 33.10328824964847 +8.156668235561785 115.43019029344254 +6.8281945242670075 31.151230752246192 +8.261984719166676 103.6831053323044 +7.401361187017338 27.763452103249872 +8.57095287430663 87.3002625878398 +6.236434279813474 35.23834388836563 +7.191442450199408 96.9140817281236 +6.4599170868975735 33.61970078097418 +7.357888124724143 90.41775503682076 +6.901026209526999 30.691031893844336 +7.69751934822058 79.93010738725832 +5.787429024049216 38.7885038978599 +6.093916890375162 69.08871477136385 +5.8996426615227415 37.86221428828526 +6.203717486734554 67.26227887590858 +6.1242693220517275 36.086900174990205 +6.421713008007998 63.80761876923849 +5.723408332730527 39.32917491964065 +5.96862654769711 65.25577138193671 +5.819471093163006 38.52125401651493 +6.0635682088534795 63.81569130810471 +6.011965597649137 36.961581124905834 +6.252623732262991 61.05697265214148 +6.881008641810265 34.39468598935801 +9.515320631375374 138.09990836319218 +7.252058138814728 31.861193204929226 +9.424903800321994 119.25571255584389 +7.963583214824822 27.684321438259737 +9.598744097177024 96.04554147577457 +6.543936101318581 36.93101308414 +8.271940420339668 120.9447169831038 +6.839217302584333 34.696640053743124 +8.35785595944015 108.34865788584015 +7.413817807473528 30.836204926214034 +8.645070757582017 90.9688407359856 +6.2447563044038565 39.383831222569064 +7.278606511767388 102.61414381423103 +6.469451212830693 37.523404994943554 +7.436230252767525 95.47538227052206 +6.912282241421659 34.170979983253595 +7.763368871934121 84.10129420291871 +5.792376421029868 43.484387713923226 +6.132966284216759 74.63178933699089 +5.90556814322713 42.411760110317694 +6.242641831221388 72.56411178372423 +6.131876021116344 40.361392252975364 +6.4601053376958655 68.67855063831658 +5.727752616347529 44.11138479290756 +6.001450500080353 70.76441541325549 +5.8247078206459495 43.17471551192747 +6.0966047277008695 69.12763777591978 +6.0187755193221975 41.37070859833498 +6.285824150602574 66.00870567649397 +6.892688392052893 37.81800680214632 +9.645933216235994 142.95341413869465 +7.2646717066719715 34.967779479496265 +9.530069386885387 123.29027953823935 +7.9771604598080605 30.29074199823282 +9.677071578205629 99.1416532685685 +6.554350306925338 40.6825168338049 +8.390666861079128 126.42850672009465 +6.850764759990474 38.15843414812498 +8.456032829617937 112.95742906832864 +7.4267277021859295 33.817611866618485 +8.720452458175483 94.5597879876209 +6.253586475725057 43.46397183451993 +7.369908066210068 108.3354695211715 +6.479516779644679 41.35324079197711 +7.517594982132029 100.51266249954433 +6.924056967607245 37.565899006826726 +7.8310290467489 88.21252714340679 +5.797683148413959 48.140226269278415 +6.174380896879521 80.21377649912382 +5.91190625448385 46.913734646116964 +6.283760683287785 77.88379387862335 +6.139968335147441 44.575731813263054 +6.500379113907963 73.5348224314952 +5.732419982430514 48.858258533246065 +6.036282087396467 76.30888309772806 +5.830320394279175 47.78589088286285 +6.131552668013755 74.45830272801747 +6.026039708698575 45.725586211309235 +6.320744790710411 70.95132905099797 +7.166499288451092 4.142073090859587 +9.265102481702996 110.66723608077035 +7.567697412920115 3.8722615360981636 +9.301713047250376 95.00516227994558 +8.33782803853016 3.4223240862995086 +9.642092311073492 75.74617433098464 +6.803038358551734 4.409007603619208 +8.001816775091902 88.19678682585909 +7.121369048628273 4.174032307935983 +8.1992535509534 79.41794300190767 +7.742766362468542 3.7623579314461923 +8.636965361141595 66.74160040647384 +6.4819096017460724 4.663505297574643 +7.090607474266351 66.54215881833834 +6.722930831695338 4.470823303345824 +7.309279558219274 62.50706375766059 +7.200281127183776 4.118366597954716 +7.737424253590776 55.610380843297776 +6.000693683822239 5.079521034872208 +6.137170192329095 35.53705023704585 +6.120479496277977 4.971930845119692 +6.2580658070398085 34.76677553684624 +6.36126184481861 4.763810827037095 +6.4997835001461155 33.2518749822321 +5.932524657497255 5.1419869613173255 +6.0331373974513784 31.26606278237569 +6.034860107424434 5.048552722695147 +6.136421391289259 30.70699037507293 +6.240728719059953 4.866653657563574 +6.343472009811439 29.599221573250297 +7.169633216600948 8.246963072641893 +9.369559138551592 115.71968848047702 +7.571266472399731 7.702163496479056 +9.38512344647803 99.37895398059513 +8.342063711209846 6.794734336636792 +9.703729337066198 79.34857390201475 +6.805697352441557 8.786527313263322 +8.089664384006618 93.66466498891512 +7.1244486991551 8.311531854294053 +8.273448118333953 84.2426381742825 +7.746503030939467 7.480397207139309 +8.69475960079198 70.77803241288063 +6.484064255697698 9.301543562357782 +7.1522203715098716 72.04598443334285 +6.725472265851035 8.911565932252547 +7.366196040846758 67.58997603808601 +7.203454903588541 8.199072972710589 +7.786573215678005 60.058785063461116 +6.001899781828435 10.144791140944223 +6.163238215914125 40.94360543606153 +6.121946277820355 9.926538157739603 +6.2841504557510595 40.028232834984 +6.3632023173843395 9.50469774860775 +6.525673242563564 38.239969854871994 +5.933574465050085 10.271563962489727 +6.055001573381491 36.67047244267007 +6.036142343788488 10.081957466807292 +6.158409571366394 35.992368826013184 +6.242440107899849 9.713095265508427 +6.365547626329679 34.65681546790168 +7.17455015383191 12.294891936592329 +9.479135319313295 120.81550242698152 +7.576828540740798 11.467755039719629 +9.472922346036952 103.76877942156183 +8.348581703300848 10.09265441768957 +9.769086540111767 82.93318608765013 +6.8098948752906665 13.115416567967156 +8.183043890960116 99.21243552274656 +7.129284159403308 12.393010040146889 +8.352098879218879 89.10402851757347 +7.752309358985038 11.13141449226836 +8.756139945167465 74.80785601116908 +6.487484186795503 13.899970428712527 +7.2183408065351555 77.64253419299327 +6.729489662928856 13.305768849428079 +7.427084913974571 72.72763590811343 +7.2084315247877635 12.222130928776059 +7.839092321029147 64.51617079023508 +6.003829712093032 15.187664042559 +6.191254757921958 46.41082723193424 +6.124288623920555 14.85398875762931 +6.3122501536785505 45.33748570594586 +6.366288598440117 14.209834863264035 +6.553683846485456 43.253688129980375 +5.935256217996095 15.381608954167652 +6.078484425983943 42.128359969853804 +6.038192934679376 15.091572429442085 +6.182099170180582 41.32106112640432 +6.245167588411863 14.5279338110808 +6.389465535565342 39.73963818350563 +7.181012733872813 16.27351447951422 +9.59326677641476 125.92467701277123 +7.584086675268948 15.155818834922346 +9.56459923216978 108.14813378844673 +8.35697518159283 13.302320922728093 +9.837623129185623 86.47688407649207 +6.81544876767024 17.384632263376517 +8.281708305632678 104.81433764098533 +7.135644864267984 16.406253835101857 +8.434894805217763 93.97764294156815 +7.759863013658684 14.701958900114008 +8.820708673794373 78.8085957515861 +6.492036436114129 18.449423946507814 +7.2890241806377185 83.31550431722044 +6.734813126402034 17.642756423674776 +7.491875642240841 77.90137931372755 +7.214968545921615 16.175101262839863 +7.89475847268894 68.96253662514125 +6.006422108142317 20.202531941845336 +6.221338051760357 51.93217207351944 +6.12742785521823 19.747578186889104 +6.342445424163306 50.68614914496861 +6.37040606516053 18.870647434042585 +6.5838237688764725 48.28181198669522 +5.937518176431157 20.467192624362024 +6.103692698140513 47.63415091681678 +6.040945622450815 20.07146489610171 +6.20756869439985 46.68593542136009 +6.24881466524676 19.30347810486343 +6.41524845462156 44.83801182912499 +7.188801955277015 20.174829161190225 +9.711385025387063 131.02345141640026 +7.592770199074986 18.758212796412995 +9.659648525001606 112.49701640986895 +8.366882721634646 16.41613620234869 +9.90882724316716 89.96373179865813 +6.8221895133110015 21.58670125797887 +8.385347239834106 110.44868952392264 +7.1433178253964 20.343303735354095 +8.521492243575938 98.84411394941118 +7.768871677653259 18.183933860987825 +8.888069555139248 82.76398671864524 +6.497596522617691 22.943332688903038 +7.364270421826129 89.0515077286487 +6.741284316925525 21.915237568641764 +7.56045240266752 83.09622299338258 +7.22284248991074 20.04995483976802 +7.953327048838093 73.38279551725483 +6.009619559612319 25.185252332283653 +6.253579799926831 57.50296733380109 +6.131290256946878 24.602415010931313 +6.374790658596158 56.067962511167465 +6.37544730033358 23.481036787121145 +6.616077931408115 53.31581822861734 +5.9403119861904985 25.524648205338096 +6.130709810436756 53.18393265366841 +6.044338389965273 25.017267752718364 +6.23487376548102 52.08174443318374 +6.253290878348022 24.03418661461706 +6.442898077054891 49.94463106036305 +7.197719063083529 23.993765274076527 +9.832939659427325 136.09272320864213 +7.6026369487758965 22.270176711754363 +9.75758842252144 116.8001051919121 +8.37799051978373 19.430490458431724 +9.982230687226444 93.38272658645754 +6.8299614142043525 25.716578525793505 +8.493607825115175 116.09669302263833 +7.152109447431871 24.199073668088776 +8.611534362186605 103.68772976907279 +7.779075661154854 21.572792295317896 +8.957843729496396 86.66210750003732 +6.504049321026269 27.37703697178141 +7.444038250732146 94.83902800035973 +6.748757457659181 26.118226147021907 +7.6326693511098105 88.29969939483722 +7.231850777197515 23.841635419875193 +8.01454671952858 77.7652987913325 +6.013368575435365 30.132682143589356 +6.28805462007011 63.119837736224774 +6.135807202596793 29.414846519689938 +6.4093232912841485 61.47812097694455 +6.381312727644595 28.03660194858521 +6.650416567585694 58.34902740053262 +5.943592671709383 30.55116972639428 +6.159604243928604 58.77495689682996 +6.048313455191952 29.925682350431213 +6.264055257704169 57.50454300670235 +6.258512238874494 28.715992098144064 +6.4724028942080665 55.05381743453956 +7.207585884052028 27.727341930331292 +9.957411295892838 141.1170937909097 +7.613473336968968 25.689317923127845 +9.85796999834827 121.0456302559583 +8.39003037856016 22.344448731044704 +10.057413849894786 96.72641991818212 +6.838623016996434 29.770975745513283 +8.60610896611771 121.74178204661611 +7.161845877869932 27.970530352494166 +8.704663002549378 108.4955895069877 +7.790247516625787 24.86644790887819 +9.029677285871152 90.49424243534385 +6.511289041022429 31.747266842043164 +7.528252838995679 100.66780283427418 +6.757099746994475 30.248408054795895 +7.7083594445094175 93.50117678027829 +7.241812044001049 27.547203497142462 +8.078167858286802 82.10095747398636 +6.017619693939304 35.042414856214094 +6.324825463074243 68.78037357132636 +6.140915237103194 34.182131776083594 +6.446068983190188 66.91288568452559 +6.387910548632161 32.534178521788 +6.686800291175061 63.37610961544048 +5.947318417046172 35.544581309724386 +6.190434326530134 64.40535354156161 +6.052817413853588 34.79419730032717 +6.295143908616101 62.95134891594664 +6.264401078584577 33.34590249569342 +6.503742667671829 60.161085924589365 +7.218244154702733 31.374104168709625 +10.084318893441349 146.08419718436872 +7.6250928562597675 29.014931080428067 +9.960381558393278 125.22460635398241 +8.402775682919566 25.158883030445377 +10.134005542755876 99.98997884568158 +6.848046767808494 33.74791079358061 +8.722452531857016 127.36924524310672 +7.172372399051334 31.656143217812005 +8.800526608348617 113.25704174008122 +7.802190126927757 28.064548741655926 +9.103244761073016 94.25411363644531 +6.519219196175476 36.05180359283138 +7.616810459006525 106.52842302115181 +6.766191054629009 34.303716996832705 +7.787340480408753 98.69142654715408 +7.252565422688825 31.165262171487736 +8.143947572708695 86.38265534628772 +6.022326952653258 39.91260123977614 +6.363946913528104 74.48289711344867 +6.146555718007617 38.902219665624855 +6.485044821010091 72.369316565796 +6.395156668185356 36.971541491231655 +6.725183228960258 68.39275276142095 +5.951450616666412 40.503192544433674 +6.223251219840947 70.0739284725313 +6.05780068561414 39.620896930738446 +6.3281631925302015 68.41991077139664 +6.270885972705895 37.92174557671438 +6.536891191690739 65.26285303808 +7.229554271189959 34.93372314727412 +10.213223216442161 150.98418501968192 +7.637333814823047 32.247517135745696 +10.064449657149213 129.33025838391805 +8.416036712843086 27.875876426393194 +10.211680322686723 103.17051525744768 +6.858118325896707 37.646389379211314 +8.84223254628074 132.96598559829994 +7.183552260712182 35.25549415087842 +8.898785498783663 117.96328860990214 +7.814733950730997 31.167965471095023 +9.178250037502428 97.93732187647169 +6.527752069631152 40.28923588528229 +7.709581536130491 112.41205499477125 +6.775923324907824 38.28303497072192 +7.869419330259032 103.86232332094082 +7.263969226232369 34.695550262866064 +8.211652781749132 90.6048317747542 +6.027448060652269 44.741832170743 +6.405467405922438 80.22629352385458 +6.152674695929106 43.573600939942146 +6.526261419113251 77.84508007780047 +6.402974341880639 41.347192380591196 +6.765515070006527 73.39542581799162 +5.955953447437106 45.42568861501522 +6.258100964153727 75.78001985306011 +6.0632176229919255 44.40433487486765 +6.363131244666489 73.90854041953203 +6.277901453032079 42.44198640149965 +6.571818121992672 70.35622867743038 +7.241393645102208 38.4067007330369 +10.343727768496834 155.80931313835077 +7.650057103646967 35.38843994070083 +10.16983859173614 133.35758419731857 +8.429655814819245 30.498303099989876 +10.290154985670352 106.26659794758851 +6.868735694249435 41.466169469326516 +8.965043126401474 138.52036582179628 +7.195265121897812 38.76898885886508 +8.999115751269951 122.60708886341597 +7.827734298094775 34.178427932156644 +9.254425892840977 101.54093340365834 +6.536808271909618 44.458782049110425 +7.806412999469502 118.31025821941807 +6.78619981741046 42.18597034059276 +7.954395026235261 109.00663070050022 +7.275899235851666 38.13864193025107 +8.28106209311133 94.76317124310944 +6.032943918733476 49.5290482119846 +6.4494307316223525 86.00988079138898 +6.159222643358743 48.19519608789226 +6.5697243439810045 83.33830349339019 +6.411293683695386 45.66020172346611 +6.807742482504549 78.38120636793518 +5.960793832071986 50.31105751734546 +6.295025895792237 81.52338686288314 +6.069026180652642 49.14343860308781 +6.40006218606778 79.41598665913952 +6.28538769085406 46.905593113860355 +6.608490219514957 75.43886254584096 \ No newline at end of file diff --git a/drone_simulation/include/config_loaders/factory.hpp b/drone_simulation/include/config_loaders/factory.hpp index ba39ef8..62c7b2b 100644 --- a/drone_simulation/include/config_loaders/factory.hpp +++ b/drone_simulation/include/config_loaders/factory.hpp @@ -6,10 +6,13 @@ #include "interfaces/target_provider.hpp" #include "interfaces/config_loader.hpp" -enum class SolverType { ANALYTICAL }; +enum class SolverType { + ANALYTICAL, + TABLE +}; enum class ProviderType { JSON }; enum class LoaderType { FILE }; -std::unique_ptr createSolver(SolverType type, const DroneConfig& config); +std::unique_ptr createSolver(SolverType type, const DroneConfig& config, const std::string tablePath = ""); std::unique_ptr createProvider(ProviderType type, const std::string path); std::unique_ptr createLoader(LoaderType type, const std::string c, const std::string a); \ No newline at end of file diff --git a/drone_simulation/include/solvers/ballistic_table.hpp b/drone_simulation/include/solvers/ballistic_table.hpp new file mode 100644 index 0000000..f6a34fd --- /dev/null +++ b/drone_simulation/include/solvers/ballistic_table.hpp @@ -0,0 +1,146 @@ +#pragma once +#include +#include +#include +#include + + +// Результат в кожному вузлі сітки +struct Result { + float t; // час польоту + float hDist; // горизонтальна дистанція +}; + +// Індекс і коефіцієнт для одного виміру +struct Interp { + int lo; // нижній індекс в осі + float frac; // коефіцієнт [0..1] +}; + +struct BallisticTable { + // 5 осей — кожна зі своїм набором вузлів (нерівномірний крок) + std::vector axisZ0; // висота + std::vector axisV0; // швидкість + std::vector axisM; // маса + std::vector axisD; // опір + std::vector axisL; // підйомна сила + + // Плоский масив розміром |Z0| * |V0| * |M| * |D| * |L| + std::vector data; + + // Індекс у плоскому масиві: [iZ0][iV0][iM][iD][iL] + size_t index(int iz, int iv, int im, int id, int il) const { + return ((((size_t)iz * axisV0.size() + iv) + * axisM.size() + im) + * axisD.size() + id) + * axisL.size() + il; + } + + const Result& at(int iz, int iv, int im, int id, int il) const { + return data[index(iz, iv, im, id, il)]; + } + + // Завантаження з текстового файлу + bool load(const std::string path) { + std::ifstream dataFile(path); + if (!dataFile.is_open()) return false; + + int nZ, nV, nM, nD, nL; + dataFile >> nZ >> nV >> nM >> nD >> nL; + + axisZ0.resize(nZ); for (auto& v : axisZ0) dataFile >> v; + axisV0.resize(nV); for (auto& v : axisV0) dataFile >> v; + axisM.resize(nM); for (auto& v : axisM) dataFile >> v; + axisD.resize(nD); for (auto& v : axisD) dataFile >> v; + axisL.resize(nL); for (auto& v : axisL) dataFile >> v; + + size_t total = (size_t)nZ*nV*nM*nD*nL; + data.resize(total); + + // Порядок: Z0 → V0 → m → d → l (зовнішній → внутрішній) + for (size_t i = 0; i < total; i++) + dataFile >> data[i].t >> data[i].hDist; + + return dataFile.good(); + } + + Result lookup( + float Z0, float V0, float mass, float drag, float lift + ) const + { + Interp iz = findInterp(Z0, axisZ0); + Interp iv = findInterp(V0, axisV0); + Interp im = findInterp(mass, axisM); + Interp id = findInterp(drag, axisD); + Interp il = findInterp(lift, axisL); + + // 2^5 = 32 вершини гіперкуба + // Згортаємо: 32 → 16 → 8 → 4 → 2 → 1 + + // l: 32 → 16 + Result v[16]; + for (int a = 0; a < 2; a++) + for (int b = 0; b < 2; b++) + for (int c = 0; c < 2; c++) + for (int e = 0; e < 2; e++) { + auto& lo = at(iz.lo+a, iv.lo+b, + im.lo+c, id.lo+e, il.lo); + auto& hi = at(iz.lo+a, iv.lo+b, + im.lo+c, id.lo+e, il.lo+1); + v[a*8+b*4+c*2+e] = lerp(lo, hi, il.frac); + } + + // d: 16 → 8 + Result w[8]; + for (int a = 0; a < 2; a++) + for (int b = 0; b < 2; b++) + for (int c = 0; c < 2; c++) + w[a*4+b*2+c] = lerp(v[a*8+b*4+c*2], + v[a*8+b*4+c*2+1], + id.frac); + + // m: 8 → 4 + Result u[4]; + for (int a = 0; a < 2; a++) + for (int b = 0; b < 2; b++) + u[a*2+b] = lerp(w[a*4+b*2], + w[a*4+b*2+1], im.frac); + + // V0: 4 → 2 + Result s[2]; + for (int a = 0; a < 2; a++) + s[a] = lerp(u[a*2], u[a*2+1], iv.frac); + + // Z0: 2 → 1 + return lerp(s[0], s[1], iz.frac); + } + + // Лінійна інтерполяція для Result (обидва поля паралельно) + Result lerp(const Result& a, const Result& b, float t) const { + return { + .t = a.t + (b.t - a.t) * t, + .hDist = a.hDist + (b.hDist - a.hDist) * t + }; + } + + Interp findInterp(float val, const std::vector& axis) const { + if (val <= axis.front()){ + + return {0, 0.0f}; + } + if (val >= axis.back()){ + + return {(int)axis.size() - 2, 1.0f}; + } + + auto it = std::lower_bound(axis.begin(), axis.end(), val); + int i = (int)(it - axis.begin()) - 1; + if (i < 0) { + i = 0; + } + float frac = (val - axis[i]) / (axis[i+1] - axis[i]); + + return {i, frac}; + } + +}; diff --git a/drone_simulation/include/solvers/table_solver.hpp b/drone_simulation/include/solvers/table_solver.hpp new file mode 100644 index 0000000..75e19b5 --- /dev/null +++ b/drone_simulation/include/solvers/table_solver.hpp @@ -0,0 +1,18 @@ +#pragma once + +#include "interfaces/ballistic_solver.hpp" +#include "ballistic_table.hpp" + +class TableSolver : public IBallisticSolver { + DroneConfig droneConfig; + BallisticTable table; + + public: + TableSolver(const DroneConfig& config, std::string table_path); + + auto solve( + const Coord& dronePosition, + const Coord& targetPosition, + const AmmoParams& ammo + ) -> Coord override; +}; \ No newline at end of file diff --git a/drone_simulation/src/config_loaders/factory.cpp b/drone_simulation/src/config_loaders/factory.cpp index 23f0f4d..87319fb 100644 --- a/drone_simulation/src/config_loaders/factory.cpp +++ b/drone_simulation/src/config_loaders/factory.cpp @@ -1,15 +1,19 @@ #include "simulation.hpp" #include "config_loaders/factory.hpp" #include "solvers/analytical_solver.hpp" +#include "solvers/table_solver.hpp" #include "providers/json_target_provider.hpp" #include "config_loaders/file_config_loader.hpp" -auto createSolver(SolverType type, const DroneConfig& config) -> std::unique_ptr { +auto createSolver(SolverType type, const DroneConfig& config, const std::string tablePath) -> std::unique_ptr { switch (type) { case SolverType::ANALYTICAL: return std::make_unique(config); + + case SolverType::TABLE: + return std::make_unique(config, tablePath); } - + return nullptr; } diff --git a/drone_simulation/src/main.cpp b/drone_simulation/src/main.cpp index a76de2b..aef1af4 100644 --- a/drone_simulation/src/main.cpp +++ b/drone_simulation/src/main.cpp @@ -33,6 +33,7 @@ using json = nlohmann::json; const std::string configPath = (argc > 1) ? argv[1] : "config.json"; const std::string ammoPath = (argc > 2) ? argv[2] : "ammo.json"; const std::string targetsPath = (argc > 3) ? argv[3] : "targets.json"; + const std::string ballisticTablePath = (argc > 4) ? argv[4] : "ballistic_table.txt"; try { loader = createLoader(LoaderType::FILE, configPath, ammoPath); @@ -41,7 +42,8 @@ using json = nlohmann::json; loader->load(); DroneConfig droneConfig = loader->getConfig(); - ballisticSolver = createSolver(SolverType::ANALYTICAL, droneConfig); + // ballisticSolver = createSolver(SolverType::ANALYTICAL, droneConfig); + ballisticSolver = createSolver(SolverType::TABLE, droneConfig, ballisticTablePath); MissionProcessor missionProcessor(std::move(targets), std::move(ballisticSolver)); missionProcessor.init(std::move(loader)); diff --git a/drone_simulation/src/mission_processor.cpp b/drone_simulation/src/mission_processor.cpp index c3fb1c9..636a890 100644 --- a/drone_simulation/src/mission_processor.cpp +++ b/drone_simulation/src/mission_processor.cpp @@ -72,7 +72,7 @@ auto MissionProcessor::step() -> SimulationStep { .predictedTarget = {0, 0}, .droneMotion = { this->droneContext.speed, this->droneContext.direction, this->droneContext.position, STOPPED } }; - + return emptyStep; } diff --git a/drone_simulation/src/solvers/table_solver.cpp b/drone_simulation/src/solvers/table_solver.cpp new file mode 100644 index 0000000..cf35c99 --- /dev/null +++ b/drone_simulation/src/solvers/table_solver.cpp @@ -0,0 +1,18 @@ +#include "solvers/table_solver.hpp" + + +TableSolver::TableSolver(const DroneConfig& config, std::string path): droneConfig(config) { + this->table.load(path); +} + +auto TableSolver::solve( + const Coord& dronePosition, + const Coord& targetPosition, + const AmmoParams& ammo +) -> Coord { + Result result = this->table.lookup(this->droneConfig.altitude, this->droneConfig.attackSpeed, ammo.mass, ammo.drag, ammo.lift); + float distanceToTarget = getDistanceToTarget(targetPosition, dronePosition); + float ratio = getRatio(distanceToTarget, result.hDist); + + return getFireCoords(targetPosition, dronePosition, ratio); +} \ No newline at end of file diff --git a/simulation.json b/simulation.json index aa86138..96bd1e9 100644 --- a/simulation.json +++ b/simulation.json @@ -23,5170 +23,5044 @@ }, { "aimPoint": { - "x": 55.66533660888672, + "x": 66.57669830322266, "y": 0.0 }, "direction": 0.0, "dropPoint": { - "x": 269.4673156738281, - "y": 189.50930786132813 + "x": 260.41705322265625, + "y": 181.8731689453125 }, "position": { "x": 0.0, "y": 0.0 }, "predictedTarget": { - "x": 313.42510986328125, - "y": 204.42483520507813 + "x": 313.97802734375, + "y": 203.54396057128906 }, "state": 3, "targetIndex": 0 }, { "aimPoint": { - "x": 55.59577178955078, - "y": 2.782107353210449 + "x": 66.49349212646484, + "y": 3.3274481296539307 }, "direction": 0.05000000074505806, "dropPoint": { - "x": 268.9606628417969, - "y": 189.54702758789063 + "x": 259.95257568359375, + "y": 181.90521240234375 }, "position": { "x": 0.0, "y": 0.0 }, "predictedTarget": { - "x": 313.3751220703125, - "y": 204.49484252929688 + "x": 313.9380187988281, + "y": 203.62396240234375 }, "state": 3, "targetIndex": 0 }, { "aimPoint": { - "x": 55.38724136352539, - "y": 5.557260990142822 + "x": 66.24409484863281, + "y": 6.646579742431641 }, "direction": 0.10000000149011612, "dropPoint": { - "x": 268.4532165527344, - "y": 189.5845947265625 + "x": 259.48736572265625, + "y": 181.93711853027344 }, "position": { "x": 0.0, "y": 0.0 }, "predictedTarget": { - "x": 313.3251037597656, - "y": 204.56483459472656 + "x": 313.89801025390625, + "y": 203.70394897460938 }, "state": 3, "targetIndex": 0 }, { "aimPoint": { - "x": 55.04027557373047, - "y": 8.318524360656738 + "x": 65.82911682128906, + "y": 9.949098587036133 }, "direction": 0.15000000596046448, "dropPoint": { - "x": 267.9465637207031, - "y": 189.62217712402344 + "x": 259.02288818359375, + "y": 181.96900939941406 }, "position": { "x": 0.0, "y": 0.0 }, "predictedTarget": { - "x": 313.2701416015625, - "y": 204.6348419189453 + "x": 313.8580017089844, + "y": 203.78395080566406 }, "state": 3, "targetIndex": 0 }, { "aimPoint": { - "x": 54.55573654174805, - "y": 11.058995246887207 + "x": 65.24959564208984, + "y": 13.2267484664917 }, "direction": 0.20000000298023224, "dropPoint": { - "x": 267.43914794921875, - "y": 189.6596221923828 + "x": 258.5577087402344, + "y": 182.00076293945313 }, "position": { "x": 0.0, "y": 0.0 }, "predictedTarget": { - "x": 313.21014404296875, - "y": 204.704833984375 + "x": 313.8180236816406, + "y": 203.86395263671875 }, "state": 3, "targetIndex": 0 }, { "aimPoint": { - "x": 53.934837341308594, - "y": 13.771824836730957 + "x": 64.50698852539063, + "y": 16.471338272094727 }, "direction": 0.25, "dropPoint": { - "x": 266.9325256347656, - "y": 189.69741821289063 + "x": 258.09326171875, + "y": 182.03282165527344 }, "position": { "x": 0.0, "y": 0.0 }, "predictedTarget": { - "x": 313.150146484375, - "y": 204.77484130859375 + "x": 313.77252197265625, + "y": 203.93846130371094 }, "state": 3, "targetIndex": 0 }, { "aimPoint": { - "x": 53.17912673950195, - "y": 16.450231552124023 + "x": 63.6031494140625, + "y": 19.674760818481445 }, "direction": 0.30000001192092896, "dropPoint": { - "x": 266.42584228515625, - "y": 189.73440551757813 + "x": 257.6287841796875, + "y": 182.06417846679688 }, "position": { "x": 0.0, "y": 0.0 }, "predictedTarget": { - "x": 313.09014892578125, - "y": 204.84483337402344 + "x": 313.7225036621094, + "y": 204.00845336914063 }, "state": 3, "targetIndex": 0 }, { "aimPoint": { - "x": 52.290496826171875, - "y": 19.087522506713867 + "x": 62.54033279418945, + "y": 22.82900619506836 }, "direction": 0.3500000238418579, "dropPoint": { - "x": 265.91839599609375, - "y": 189.7716522216797 + "x": 257.1636047363281, + "y": 182.095703125 }, "position": { "x": 0.0, "y": 0.0 }, "predictedTarget": { - "x": 313.0301513671875, - "y": 204.9148406982422 + "x": 313.6725158691406, + "y": 204.07846069335938 }, "state": 3, "targetIndex": 0 }, { "aimPoint": { - "x": 51.27116775512695, - "y": 21.677104949951172 + "x": 61.321197509765625, + "y": 25.926189422607422 }, "direction": 0.40000003576278687, "dropPoint": { - "x": 265.4117431640625, - "y": 189.8088836669922 + "x": 256.69915771484375, + "y": 182.12725830078125 }, "position": { "x": 0.0, "y": 0.0 }, "predictedTarget": { - "x": 312.97015380859375, - "y": 204.98483276367188 + "x": 313.6225280761719, + "y": 204.14846801757813 }, "state": 3, "targetIndex": 0 }, { "aimPoint": { - "x": 50.123687744140625, - "y": 24.212505340576172 + "x": 59.94879150390625, + "y": 28.958572387695313 }, "direction": 0.4500000476837158, "dropPoint": { - "x": 264.904296875, - "y": 189.84600830078125 + "x": 256.2340393066406, + "y": 182.1586456298828 }, "position": { "x": 0.0, "y": 0.0 }, "predictedTarget": { - "x": 312.91015625, - "y": 205.05484008789063 + "x": 313.572509765625, + "y": 204.2184600830078 }, "state": 3, "targetIndex": 0 }, { "aimPoint": { - "x": 48.850929260253906, - "y": 26.68738555908203 + "x": 58.42654800415039, + "y": 31.91857147216797 }, "direction": 0.5000000596046448, "dropPoint": { - "x": 264.39764404296875, - "y": 189.88308715820313 + "x": 255.7695770263672, + "y": 182.19003295898438 }, "position": { "x": 0.0, "y": 0.0 }, "predictedTarget": { - "x": 312.85015869140625, - "y": 205.1248321533203 + "x": 313.52252197265625, + "y": 204.28846740722656 }, "state": 3, "targetIndex": 0 }, { "aimPoint": { - "x": 47.45606231689453, - "y": 29.095565795898438 + "x": 56.758262634277344, + "y": 34.798797607421875 }, "direction": 0.5500000715255737, "dropPoint": { - "x": 264.38397216796875, - "y": 189.9552459716797 + "x": 255.75718688964844, + "y": 182.26031494140625 }, "position": { "x": 0.0, "y": 0.0 }, "predictedTarget": { - "x": 312.7901611328125, - "y": 205.19483947753906 + "x": 313.4725036621094, + "y": 204.35845947265625 }, "state": 3, "targetIndex": 0 }, { "aimPoint": { - "x": 45.94258117675781, - "y": 31.43101692199707 + "x": 54.948116302490234, + "y": 37.592037200927734 }, "direction": 0.6000000834465027, "dropPoint": { - "x": 264.3702392578125, - "y": 190.0273895263672 + "x": 255.7447509765625, + "y": 182.33058166503906 }, "position": { "x": 0.0, "y": 0.0 }, "predictedTarget": { - "x": 312.73016357421875, - "y": 205.26483154296875 + "x": 313.4225158691406, + "y": 204.428466796875 }, "state": 3, "targetIndex": 0 }, { "aimPoint": { - "x": 45.193580627441406, - "y": 32.49877166748047 + "x": 54.2022819519043, + "y": 38.65966033935547 }, - "direction": 0.6234310865402222, + "direction": 0.6195619106292725, "dropPoint": { - "x": 264.3565368652344, - "y": 190.09918212890625 + "x": 255.7322998046875, + "y": 182.40052795410156 }, "position": { "x": 0.0, "y": 0.0 }, "predictedTarget": { - "x": 312.6651916503906, - "y": 205.3348388671875 + "x": 313.3725280761719, + "y": 204.49847412109375 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 45.211849212646484, - "y": 32.51190948486328 + "x": 54.22060012817383, + "y": 38.672725677490234 }, - "direction": 0.6234310865402222, + "direction": 0.6195619106292725, "dropPoint": { - "x": 264.34356689453125, - "y": 190.17138671875 + "x": 255.7205810546875, + "y": 182.4708709716797 }, "position": { - "x": 0.018267303705215454, - "y": 0.013136046007275581 + "x": 0.018317991867661476, + "y": 0.013065268285572529 }, "predictedTarget": { - "x": 312.5951843261719, - "y": 205.4048309326172 + "x": 313.322509765625, + "y": 204.56846618652344 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 45.248382568359375, - "y": 32.53818130493164 + "x": 54.25723648071289, + "y": 38.698856353759766 }, - "direction": 0.6234310865402222, + "direction": 0.6195619106292725, "dropPoint": { - "x": 264.3293151855469, - "y": 190.242431640625 + "x": 255.70762634277344, + "y": 182.54005432128906 }, "position": { - "x": 0.05480191111564636, - "y": 0.039408136159181595 + "x": 0.05495397374033928, + "y": 0.03919580578804016 }, "predictedTarget": { - "x": 312.5251770019531, - "y": 205.47483825683594 + "x": 313.26702880859375, + "y": 204.6384735107422 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 45.303184509277344, - "y": 32.57758712768555 + "x": 54.312191009521484, + "y": 38.73805236816406 }, - "direction": 0.6234310865402222, + "direction": 0.6195619106292725, "dropPoint": { - "x": 264.3160400390625, - "y": 190.31283569335938 + "x": 255.6956024169922, + "y": 182.60861206054688 }, "position": { - "x": 0.10960382223129272, - "y": 0.07881627231836319 + "x": 0.10990794748067856, + "y": 0.07839161157608032 }, "predictedTarget": { - "x": 312.4551696777344, - "y": 205.54483032226563 + "x": 313.20703125, + "y": 204.70846557617188 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 45.37625503540039, - "y": 32.630130767822266 + "x": 54.38546371459961, + "y": 38.790313720703125 }, - "direction": 0.6234310865402222, + "direction": 0.6195619106292725, "dropPoint": { - "x": 264.3037109375, - "y": 190.38185119628906 + "x": 255.68447875976563, + "y": 182.67584228515625 }, "position": { - "x": 0.18267303705215454, - "y": 0.13136045634746552 + "x": 0.18317991495132446, + "y": 0.13065268099308014 }, "predictedTarget": { - "x": 312.3851623535156, - "y": 205.61483764648438 + "x": 313.14703369140625, + "y": 204.77847290039063 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 45.46759033203125, - "y": 32.6958122253418 + "x": 54.47705078125, + "y": 38.85564041137695 }, - "direction": 0.6234310865402222, + "direction": 0.6195619106292725, "dropPoint": { - "x": 264.29083251953125, - "y": 190.4493865966797 + "x": 255.67279052734375, + "y": 182.74163818359375 }, "position": { - "x": 0.2740095555782318, - "y": 0.19704067707061768 + "x": 0.2747698724269867, + "y": 0.1959790140390396 }, "predictedTarget": { - "x": 312.315185546875, - "y": 205.68482971191406 + "x": 313.0870361328125, + "y": 204.8484649658203 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 45.5386848449707, - "y": 32.8281135559082 + "x": 54.5410270690918, + "y": 38.998355865478516 }, - "direction": 0.6246122121810913, + "direction": 0.6207467317581177, "dropPoint": { - "x": 264.2781066894531, - "y": 190.5162353515625 + "x": 255.66127014160156, + "y": 182.8067626953125 }, "position": { - "x": 0.3835202157497406, - "y": 0.27598634362220764 + "x": 0.38458487391471863, + "y": 0.2745007872581482 }, "predictedTarget": { - "x": 312.24517822265625, - "y": 205.7548370361328 + "x": 313.02703857421875, + "y": 204.91847229003906 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 45.666446685791016, - "y": 32.92021560668945 + "x": 54.66914367675781, + "y": 39.089962005615234 }, - "direction": 0.6246122121810913, + "direction": 0.6207467317581177, "dropPoint": { - "x": 264.26568603515625, - "y": 190.58203125 + "x": 255.64996337890625, + "y": 182.87083435058594 }, "position": { - "x": 0.5112826228141785, - "y": 0.36808961629867554 + "x": 0.5127023458480835, + "y": 0.3661095201969147 }, "predictedTarget": { - "x": 312.1751708984375, - "y": 205.8248291015625 + "x": 312.967041015625, + "y": 204.98846435546875 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 45.81245803833008, - "y": 33.02547836303711 + "x": 54.8155632019043, + "y": 39.19466018676758 }, - "direction": 0.6246122121810913, + "direction": 0.6207467317581177, "dropPoint": { - "x": 263.7227783203125, - "y": 190.36619567871094 + "x": 255.1474151611328, + "y": 182.67149353027344 }, "position": { - "x": 0.6572968363761902, - "y": 0.47335052490234375 + "x": 0.6591223478317261, + "y": 0.47080522775650024 }, "predictedTarget": { - "x": 312.10516357421875, - "y": 205.89483642578125 + "x": 312.90704345703125, + "y": 205.0584716796875 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 45.94208526611328, - "y": 33.191890716552734 + "x": 54.940860748291016, + "y": 39.36751937866211 }, - "direction": 0.6256716251373291, + "direction": 0.6217609643936157, "dropPoint": { - "x": 263.1820983886719, - "y": 190.149169921875 + "x": 254.64686584472656, + "y": 182.4710235595703 }, "position": { - "x": 0.8214372396469116, - "y": 0.5919430255889893 + "x": 0.8237252831459045, + "y": 0.5887548923492432 }, "predictedTarget": { - "x": 312.03515625, - "y": 205.96482849121094 + "x": 312.8470458984375, + "y": 205.1284637451172 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 46.12446212768555, - "y": 33.32366180419922 + "x": 55.12375259399414, + "y": 39.498573303222656 }, - "direction": 0.6256716251373291, + "direction": 0.6217609643936157, "dropPoint": { - "x": 262.6406555175781, - "y": 189.93190002441406 + "x": 254.1457061767578, + "y": 182.27029418945313 }, "position": { - "x": 1.0038155317306519, - "y": 0.7237124443054199 + "x": 1.0066174268722534, + "y": 0.7198100686073303 }, "predictedTarget": { - "x": 311.9651794433594, - "y": 206.0298614501953 + "x": 312.78704833984375, + "y": 205.19847106933594 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 46.32508087158203, - "y": 33.46860885620117 + "x": 55.32493209838867, + "y": 39.64273452758789 }, - "direction": 0.6256716251373291, + "direction": 0.6217609643936157, "dropPoint": { - "x": 262.10003662109375, - "y": 189.71307373046875 + "x": 253.64532470703125, + "y": 182.06808471679688 }, "position": { - "x": 1.2044316530227661, - "y": 0.8686587810516357 + "x": 1.2077988386154175, + "y": 0.8639707565307617 }, "predictedTarget": { - "x": 311.8951721191406, - "y": 206.08985900878906 + "x": 312.72705078125, + "y": 205.26846313476563 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 46.50128936767578, - "y": 33.68567657470703 + "x": 55.496463775634766, + "y": 39.86681365966797 }, - "direction": 0.6269723773002625, + "direction": 0.6229912042617798, "dropPoint": { - "x": 261.5611267089844, - "y": 189.493896484375 + "x": 253.14662170410156, + "y": 181.86550903320313 }, "position": { - "x": 1.4230796098709106, - "y": 1.0270665884017944 + "x": 1.427075743675232, + "y": 1.021506905555725 }, "predictedTarget": { - "x": 311.8251647949219, - "y": 206.1498565673828 + "x": 312.66156005859375, + "y": 205.33847045898438 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 46.738155364990234, - "y": 33.85728454589844 + "x": 55.73401641845703, + "y": 40.0374755859375 }, - "direction": 0.6269723773002625, + "direction": 0.6229912042617798, "dropPoint": { - "x": 261.023193359375, - "y": 189.27401733398438 + "x": 252.64886474609375, + "y": 181.6622772216797 }, "position": { - "x": 1.6599482297897339, - "y": 1.1986750364303589 + "x": 1.6646257638931274, + "y": 1.1921709775924683 }, "predictedTarget": { - "x": 311.7551574707031, - "y": 206.20985412597656 + "x": 312.591552734375, + "y": 205.40846252441406 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 46.993247985839844, - "y": 34.04209518432617 + "x": 55.989837646484375, + "y": 40.22126770019531 }, - "direction": 0.6269723773002625, + "direction": 0.6229912042617798, "dropPoint": { - "x": 260.485595703125, - "y": 189.05300903320313 + "x": 252.15147399902344, + "y": 181.45794677734375 }, "position": { - "x": 1.9150375127792358, - "y": 1.383484125137329 + "x": 1.9204487800598145, + "y": 1.3759630918502808 }, "predictedTarget": { - "x": 311.6851501464844, - "y": 206.2698516845703 + "x": 312.52154541015625, + "y": 205.4784698486328 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 47.22430419921875, - "y": 34.298336029052734 + "x": 56.2165412902832, + "y": 40.48406982421875 }, - "direction": 0.6282570362091064, + "direction": 0.6242039799690247, "dropPoint": { - "x": 259.94927978515625, - "y": 188.83209228515625 + "x": 251.65533447265625, + "y": 181.25367736816406 }, "position": { - "x": 2.1880929470062256, - "y": 1.5818448066711426 + "x": 2.194305896759033, + "y": 1.5732154846191406 }, "predictedTarget": { - "x": 311.61517333984375, - "y": 206.32986450195313 + "x": 312.4515380859375, + "y": 205.5484619140625 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 47.51556396484375, - "y": 34.50992202758789 + "x": 56.5086555480957, + "y": 40.69447326660156 }, - "direction": 0.6282570362091064, + "direction": 0.6242039799690247, "dropPoint": { - "x": 259.4156799316406, - "y": 188.61000061035156 + "x": 251.16177368164063, + "y": 181.04835510253906 }, "position": { - "x": 2.4793519973754883, - "y": 1.7934296131134033 + "x": 2.486420154571533, + "y": 1.7836179733276367 }, "predictedTarget": { - "x": 311.545166015625, - "y": 206.38986206054688 + "x": 312.38153076171875, + "y": 205.61846923828125 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 47.82502746582031, - "y": 34.7347297668457 + "x": 56.819026947021484, + "y": 40.918025970458984 }, - "direction": 0.6282570362091064, + "direction": 0.6242039799690247, "dropPoint": { - "x": 258.8819580078125, - "y": 188.38760375976563 + "x": 250.66822814941406, + "y": 180.8426971435547 }, "position": { - "x": 2.7888147830963135, - "y": 2.0182383060455322 + "x": 2.7967915534973145, + "y": 2.0071706771850586 }, "predictedTarget": { - "x": 311.47515869140625, - "y": 206.44985961914063 + "x": 312.3115539550781, + "y": 205.68846130371094 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 48.10036849975586, - "y": 35.044681549072266 + "x": 57.088966369628906, + "y": 41.236087799072266 }, - "direction": 0.6298432946205139, + "direction": 0.6257016658782959, "dropPoint": { - "x": 258.8763427734375, - "y": 188.6739501953125 + "x": 250.66566467285156, + "y": 181.10528564453125 }, "position": { - "x": 3.116103172302246, - "y": 2.2567906379699707 + "x": 3.125065326690674, + "y": 2.2443654537200928 }, "predictedTarget": { - "x": 311.4051513671875, - "y": 206.50985717773438 + "x": 312.2415466308594, + "y": 205.7584686279297 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 48.445838928222656, - "y": 35.296485900878906 + "x": 57.43547821044922, + "y": 41.48645782470703 }, - "direction": 0.6298432946205139, + "direction": 0.6257016658782959, "dropPoint": { - "x": 258.8704833984375, - "y": 188.959228515625 + "x": 250.66287231445313, + "y": 181.36685180664063 }, "position": { - "x": 3.4615743160247803, - "y": 2.5085959434509277 + "x": 3.471576452255249, + "y": 2.4947376251220703 }, "predictedTarget": { - "x": 311.33514404296875, - "y": 206.56985473632813 + "x": 312.1715393066406, + "y": 205.82846069335938 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 48.760841369628906, - "y": 35.6281852722168 + "x": 57.745567321777344, + "y": 41.825538635253906 }, - "direction": 0.6313136219978333, + "direction": 0.6270926594734192, "dropPoint": { - "x": 258.8665466308594, - "y": 189.2424774169922 + "x": 250.66189575195313, + "y": 181.62646484375 }, "position": { - "x": 3.824838161468506, - "y": 2.77418851852417 + "x": 3.8359580039978027, + "y": 2.7587945461273193 }, "predictedTarget": { - "x": 311.26019287109375, - "y": 206.62985229492188 + "x": 312.1015319824219, + "y": 205.89846801757813 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 49.142269134521484, - "y": 35.90705871582031 + "x": 58.128170013427734, + "y": 42.10279846191406 }, - "direction": 0.6313136219978333, + "direction": 0.6270926594734192, "dropPoint": { - "x": 258.8623962402344, - "y": 189.5249481201172 + "x": 250.6606903076172, + "y": 181.88528442382813 }, "position": { - "x": 4.206264972686768, - "y": 3.053060531616211 + "x": 4.2185587882995605, + "y": 3.0360541343688965 }, "predictedTarget": { - "x": 311.18017578125, - "y": 206.6898651123047 + "x": 312.0315246582031, + "y": 205.9684600830078 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 49.49357604980469, - "y": 36.26515197753906 + "x": 58.47478485107422, + "y": 42.467952728271484 }, - "direction": 0.6327688694000244, + "direction": 0.6284686326980591, "dropPoint": { - "x": 258.85797119140625, - "y": 189.80548095703125 + "x": 250.6592559814453, + "y": 182.14222717285156 }, "position": { - "x": 4.605429649353027, - "y": 3.3457934856414795 + "x": 4.618978500366211, + "y": 3.3270678520202637 }, "predictedTarget": { - "x": 311.1001892089844, - "y": 206.74986267089844 + "x": 311.9615478515625, + "y": 206.03297424316406 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 49.910884857177734, - "y": 36.571189880371094 + "x": 58.893402099609375, + "y": 42.772193908691406 }, - "direction": 0.6327688694000244, + "direction": 0.6284686326980591, "dropPoint": { - "x": 258.8547058105469, - "y": 190.08457946777344 + "x": 250.65896606445313, + "y": 182.3977813720703 }, "position": { - "x": 5.022737979888916, - "y": 3.6518325805664063 + "x": 5.037599086761475, + "y": 3.6313095092773438 }, "predictedTarget": { - "x": 311.0201721191406, - "y": 206.8098602294922 + "x": 311.89154052734375, + "y": 206.0929718017578 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 50.298553466796875, - "y": 36.955596923828125 + "x": 59.27662658691406, + "y": 43.163307189941406 }, - "direction": 0.634205162525177, + "direction": 0.6298257112503052, "dropPoint": { - "x": 258.85205078125, - "y": 190.36239624023438 + "x": 250.65914916992188, + "y": 182.65203857421875 }, "position": { - "x": 5.457731246948242, - "y": 3.9718027114868164 + "x": 5.473989486694336, + "y": 3.949371576309204 }, "predictedTarget": { - "x": 310.940185546875, - "y": 206.86985778808594 + "x": 311.821533203125, + "y": 206.15296936035156 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 50.751670837402344, - "y": 37.28889846801758 + "x": 59.731201171875, + "y": 43.49462127685547 }, - "direction": 0.634205162525177, + "direction": 0.6298257112503052, "dropPoint": { - "x": 258.85040283203125, - "y": 190.637939453125 + "x": 250.660400390625, + "y": 182.90420532226563 }, "position": { - "x": 5.910849094390869, - "y": 4.305104732513428 + "x": 5.928562641143799, + "y": 4.280686378479004 }, "predictedTarget": { - "x": 310.8601989746094, - "y": 206.9298553466797 + "x": 311.75152587890625, + "y": 206.2129669189453 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 51.175621032714844, - "y": 37.69972229003906 + "x": 60.150978088378906, + "y": 43.91177749633789 }, - "direction": 0.635622501373291, + "direction": 0.6311637759208679, "dropPoint": { - "x": 258.8479309082031, - "y": 190.9123992919922 + "x": 250.6608428955078, + "y": 183.1551971435547 }, "position": { - "x": 6.3815999031066895, - "y": 4.652406692504883 + "x": 6.400856971740723, + "y": 4.625885963439941 }, "predictedTarget": { - "x": 310.7801818847656, - "y": 206.98985290527344 + "x": 311.6815185546875, + "y": 206.27296447753906 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 51.66447830200195, - "y": 38.06037902832031 + "x": 60.64143753051758, + "y": 44.27025604248047 }, - "direction": 0.635622501373291, + "direction": 0.6311637759208679, "dropPoint": { - "x": 258.8465576171875, - "y": 191.1848907470703 + "x": 250.66229248046875, + "y": 183.40431213378906 }, "position": { - "x": 6.870456218719482, - "y": 5.013066291809082 + "x": 6.891316890716553, + "y": 4.9843621253967285 }, "predictedTarget": { - "x": 310.7001953125, - "y": 207.0498504638672 + "x": 311.6115417480469, + "y": 206.33297729492188 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 52.17144012451172, - "y": 38.43439865112305 + "x": 61.150062561035156, + "y": 44.642005920410156 }, - "direction": 0.635622501373291, + "direction": 0.6311637759208679, "dropPoint": { - "x": 258.5586853027344, - "y": 190.96934509277344 + "x": 250.393798828125, + "y": 183.2076416015625 }, "position": { - "x": 7.377418518066406, - "y": 5.387083530426025 + "x": 7.399941921234131, + "y": 5.356115341186523 }, "predictedTarget": { - "x": 310.62017822265625, - "y": 207.10984802246094 + "x": 311.5415344238281, + "y": 206.39297485351563 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 52.696510314941406, - "y": 38.821773529052734 + "x": 61.67685317993164, + "y": 45.02703857421875 }, - "direction": 0.635622501373291, + "direction": 0.6311637759208679, "dropPoint": { - "x": 258.2712707519531, - "y": 190.7531280517578 + "x": 250.1259002685547, + "y": 183.0103759765625 }, "position": { - "x": 7.902486801147461, - "y": 5.774458885192871 + "x": 7.926732063293457, + "y": 5.741145610809326 }, "predictedTarget": { - "x": 310.5401916503906, - "y": 207.1698455810547 + "x": 311.4715270996094, + "y": 206.45297241210938 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 53.239681243896484, - "y": 39.222503662109375 + "x": 62.22180938720703, + "y": 45.42534637451172 }, - "direction": 0.635622501373291, + "direction": 0.6311637759208679, "dropPoint": { - "x": 257.9853515625, - "y": 190.5374298095703 + "x": 249.85943603515625, + "y": 182.8135986328125 }, "position": { - "x": 8.445660591125488, - "y": 6.175191879272461 + "x": 8.471687316894531, + "y": 6.1394524574279785 }, "predictedTarget": { - "x": 310.4552307128906, - "y": 207.22486877441406 + "x": 311.4015197753906, + "y": 206.51296997070313 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 53.800960540771484, - "y": 39.6365966796875 + "x": 62.78493118286133, + "y": 45.83692932128906 }, - "direction": 0.635622501373291, + "direction": 0.6311637759208679, "dropPoint": { - "x": 257.7007751464844, - "y": 190.32090759277344 + "x": 249.59426879882813, + "y": 182.6160430908203 }, "position": { - "x": 9.006939888000488, - "y": 6.589282512664795 + "x": 9.034808158874512, + "y": 6.551036357879639 }, "predictedTarget": { - "x": 310.365234375, - "y": 207.27487182617188 + "x": 311.3315124511719, + "y": 206.57296752929688 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 54.380348205566406, - "y": 40.06404495239258 + "x": 63.366214752197266, + "y": 46.26179122924805 }, - "direction": 0.635622501373291, + "direction": 0.6311637759208679, "dropPoint": { - "x": 257.4184265136719, - "y": 190.10467529296875 + "x": 249.33126831054688, + "y": 182.4188232421875 }, "position": { - "x": 9.586325645446777, - "y": 7.016730785369873 + "x": 9.616093635559082, + "y": 6.975897312164307 }, "predictedTarget": { - "x": 310.27520751953125, - "y": 207.3248748779297 + "x": 311.25604248046875, + "y": 206.63296508789063 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 54.97783660888672, - "y": 40.504852294921875 + "x": 63.965667724609375, + "y": 46.699928283691406 }, - "direction": 0.635622501373291, + "direction": 0.6311637759208679, "dropPoint": { - "x": 257.1375732421875, - "y": 189.88839721679688 + "x": 249.06976318359375, + "y": 182.2215576171875 }, "position": { - "x": 10.183816909790039, - "y": 7.4575371742248535 + "x": 10.215544700622559, + "y": 7.414035320281982 }, "predictedTarget": { - "x": 310.1852111816406, - "y": 207.3748779296875 + "x": 311.176025390625, + "y": 206.69297790527344 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 55.59343719482422, - "y": 40.959014892578125 + "x": 64.58328247070313, + "y": 47.151344299316406 }, - "direction": 0.635622501373291, + "direction": 0.6311637759208679, "dropPoint": { - "x": 256.8575439453125, - "y": 189.6720733642578 + "x": 248.80906677246094, + "y": 182.0242462158203 }, "position": { - "x": 10.799413681030273, - "y": 7.911701202392578 + "x": 10.833160400390625, + "y": 7.865449905395508 }, "predictedTarget": { - "x": 310.09521484375, - "y": 207.4248809814453 + "x": 311.0960388183594, + "y": 206.7529754638672 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 56.22713851928711, - "y": 41.426536560058594 + "x": 65.21906280517578, + "y": 47.61603546142578 }, - "direction": 0.635622501373291, + "direction": 0.6311637759208679, "dropPoint": { - "x": 256.5790710449219, - "y": 189.4557647705078 + "x": 248.5500030517578, + "y": 181.82699584960938 }, "position": { - "x": 11.433116912841797, - "y": 8.379222869873047 + "x": 11.468941688537598, + "y": 8.330141067504883 }, "predictedTarget": { - "x": 310.0052185058594, - "y": 207.47486877441406 + "x": 311.0160217285156, + "y": 206.81297302246094 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 56.87894821166992, - "y": 41.90741729736328 + "x": 65.87300872802734, + "y": 48.09400177001953 }, - "direction": 0.635622501373291, + "direction": 0.6311637759208679, "dropPoint": { - "x": 256.3022155761719, - "y": 189.2391815185547 + "x": 248.29249572753906, + "y": 181.62954711914063 }, "position": { - "x": 12.084925651550293, - "y": 8.860102653503418 + "x": 12.12288761138916, + "y": 8.808109283447266 }, "predictedTarget": { - "x": 309.91522216796875, - "y": 207.52487182617188 + "x": 310.93603515625, + "y": 206.8729705810547 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 57.54886245727539, - "y": 42.40165328979492 + "x": 66.54512023925781, + "y": 48.58524703979492 }, - "direction": 0.635622501373291, + "direction": 0.6311637759208679, "dropPoint": { - "x": 256.0278015136719, - "y": 189.02313232421875 + "x": 248.03733825683594, + "y": 181.43260192871094 }, "position": { - "x": 12.754839897155762, - "y": 9.354339599609375 + "x": 12.794999122619629, + "y": 9.299354553222656 }, "predictedTarget": { - "x": 309.8252258300781, - "y": 207.5748748779297 + "x": 310.8560485839844, + "y": 206.93296813964844 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 58.201751708984375, - "y": 42.95682144165039 + "x": 67.1938705444336, + "y": 49.146522521972656 }, - "direction": 0.6366688013076782, + "direction": 0.6322066187858582, "dropPoint": { - "x": 255.7638702392578, - "y": 189.03005981445313 + "x": 247.79469299316406, + "y": 181.43658447265625 }, "position": { - "x": 13.442328453063965, - "y": 9.862654685974121 + "x": 13.484749794006348, + "y": 9.804596900939941 }, "predictedTarget": { - "x": 309.7352294921875, - "y": 207.6248779296875 + "x": 310.7760314941406, + "y": 206.9929656982422 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 58.90733337402344, - "y": 43.478511810302734 + "x": 67.90177154541016, + "y": 49.665061950683594 }, - "direction": 0.6366688013076782, + "direction": 0.6322066187858582, "dropPoint": { - "x": 255.5023956298828, - "y": 189.03622436523438 + "x": 247.55441284179688, + "y": 181.43978881835938 }, "position": { - "x": 14.147909164428711, - "y": 10.384346008300781 + "x": 14.192651748657227, + "y": 10.323134422302246 }, "predictedTarget": { - "x": 309.6452331542969, - "y": 207.6748809814453 + "x": 310.696044921875, + "y": 207.05296325683594 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 59.59522247314453, - "y": 44.061920166015625 + "x": 68.62782287597656, + "y": 50.196895599365234 }, - "direction": 0.6377320885658264, + "direction": 0.6322066187858582, "dropPoint": { - "x": 255.24205017089844, - "y": 189.04104614257813 + "x": 247.31524658203125, + "y": 181.44174194335938 }, "position": { - "x": 14.871012687683105, - "y": 10.920183181762695 + "x": 14.918704986572266, + "y": 10.854968070983887 }, "predictedTarget": { - "x": 309.5502624511719, - "y": 207.72486877441406 + "x": 310.61602783203125, + "y": 207.1129608154297 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 60.336402893066406, - "y": 44.61115646362305 + "x": 69.3126220703125, + "y": 50.822998046875 }, - "direction": 0.6377320885658264, + "direction": 0.6336945295333862, "dropPoint": { - "x": 254.98434448242188, - "y": 189.04580688476563 + "x": 247.07870483398438, + "y": 181.44349670410156 }, "position": { - "x": 15.61219310760498, - "y": 11.469416618347168 + "x": 15.662096977233887, + "y": 11.401204109191895 }, "predictedTarget": { - "x": 309.45025634765625, - "y": 207.77487182617188 + "x": 310.5360412597656, + "y": 207.17295837402344 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 61.060272216796875, - "y": 45.22148513793945 + "x": 70.07414245605469, + "y": 51.3825569152832 }, - "direction": 0.6387812495231628, + "direction": 0.6336945295333862, "dropPoint": { - "x": 254.72776794433594, - "y": 189.04888916015625 + "x": 246.8432159423828, + "y": 181.44384765625 }, "position": { - "x": 16.370861053466797, - "y": 12.032841682434082 + "x": 16.423620223999023, + "y": 11.960762977600098 }, "predictedTarget": { - "x": 309.3502502441406, - "y": 207.8248748779297 + "x": 310.4505615234375, + "y": 207.2274627685547 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 61.837005615234375, - "y": 45.79832458496094 + "x": 70.85379791259766, + "y": 51.955440521240234 }, - "direction": 0.6387812495231628, + "direction": 0.6336945295333862, "dropPoint": { - "x": 254.47317504882813, - "y": 189.05186462402344 + "x": 246.6097869873047, + "y": 181.44395446777344 }, "position": { - "x": 17.147592544555664, - "y": 12.609682083129883 + "x": 17.203275680541992, + "y": 12.533644676208496 }, "predictedTarget": { - "x": 309.250244140625, - "y": 207.8748779296875 + "x": 310.3605651855469, + "y": 207.2774658203125 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 62.59685516357422, - "y": 46.43558883666992 + "x": 71.59341430664063, + "y": 52.620697021484375 }, - "direction": 0.6398150324821472, + "direction": 0.6351472735404968, "dropPoint": { - "x": 254.2212677001953, - "y": 189.05328369140625 + "x": 246.3789825439453, + "y": 181.44259643554688 }, "position": { - "x": 17.941776275634766, - "y": 13.200758934020996 + "x": 18.00020980834961, + "y": 13.121007919311523 }, "predictedTarget": { - "x": 309.1502380371094, - "y": 207.9248809814453 + "x": 310.2705383300781, + "y": 207.3274688720703 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 63.409088134765625, - "y": 47.04010009765625 + "x": 72.40845489501953, + "y": 53.221412658691406 }, - "direction": 0.6398150324821472, + "direction": 0.6351472735404968, "dropPoint": { - "x": 253.9706573486328, - "y": 189.05418395996094 + "x": 246.14944458007813, + "y": 181.4408416748047 }, "position": { - "x": 18.754009246826172, - "y": 13.805269241333008 + "x": 18.815256118774414, + "y": 13.721720695495605 }, "predictedTarget": { - "x": 309.0502624511719, - "y": 207.97486877441406 + "x": 310.1805419921875, + "y": 207.37747192382813 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 64.20489501953125, - "y": 47.70431137084961 + "x": 73.24161529541016, + "y": 53.835472106933594 }, - "direction": 0.6408327221870422, + "direction": 0.6351472735404968, "dropPoint": { - "x": 253.72291564941406, - "y": 189.05422973632813 + "x": 245.92266845703125, + "y": 181.43824768066406 }, "position": { - "x": 19.583663940429688, - "y": 14.424057960510254 + "x": 19.648414611816406, + "y": 14.335782051086426 }, "predictedTarget": { - "x": 308.95025634765625, - "y": 208.02487182617188 + "x": 310.0905456542969, + "y": 207.42747497558594 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 65.0525894165039, - "y": 48.336551666259766 + "x": 74.0360107421875, + "y": 54.53994369506836 }, - "direction": 0.6408327221870422, + "direction": 0.6365633606910706, "dropPoint": { - "x": 253.47653198242188, - "y": 189.05345153808594 + "x": 245.69735717773438, + "y": 181.43472290039063 }, "position": { - "x": 20.431354522705078, - "y": 15.05629825592041 + "x": 20.498796463012695, + "y": 14.964397430419922 }, "predictedTarget": { - "x": 308.8502502441406, - "y": 208.0748748779297 + "x": 310.00054931640625, + "y": 207.4774627685547 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 65.88375091552734, - "y": 49.028533935546875 + "x": 74.90447998046875, + "y": 55.18193435668945 }, - "direction": 0.6418508291244507, + "direction": 0.6365633606910706, "dropPoint": { - "x": 253.22315979003906, - "y": 189.05062866210938 + "x": 245.4650421142578, + "y": 181.42930603027344 }, "position": { - "x": 21.296422958374023, - "y": 15.702871322631836 + "x": 21.367271423339844, + "y": 15.606388092041016 }, "predictedTarget": { - "x": 308.750244140625, - "y": 208.1248779296875 + "x": 309.9105529785156, + "y": 207.5274658203125 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 66.76683807373047, - "y": 49.68857955932617 + "x": 75.79105377197266, + "y": 55.83729934692383 }, - "direction": 0.6418508291244507, + "direction": 0.6365633606910706, "dropPoint": { - "x": 252.97201538085938, - "y": 189.0470428466797 + "x": 245.23495483398438, + "y": 181.4230194091797 }, "position": { - "x": 22.179513931274414, - "y": 16.3629150390625 + "x": 22.25383949279785, + "y": 16.26175308227539 }, "predictedTarget": { - "x": 308.6502380371094, - "y": 208.1748809814453 + "x": 309.820556640625, + "y": 207.5774688720703 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 67.63340759277344, - "y": 50.40826416015625 + "x": 76.63836669921875, + "y": 56.58350372314453 }, - "direction": 0.6428661346435547, + "direction": 0.637986958026886, "dropPoint": { - "x": 252.72393798828125, - "y": 189.0426025390625 + "x": 245.00782775878906, + "y": 181.41590881347656 }, "position": { - "x": 23.07994270324707, - "y": 17.037343978881836 + "x": 23.157548904418945, + "y": 16.931779861450195 }, "predictedTarget": { - "x": 308.5502624511719, - "y": 208.2198944091797 + "x": 309.7305603027344, + "y": 207.62747192382813 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 68.55184936523438, - "y": 51.0961799621582 + "x": 77.56015014648438, + "y": 57.266929626464844 }, - "direction": 0.6428661346435547, + "direction": 0.637986958026886, "dropPoint": { - "x": 252.47732543945313, - "y": 189.037353515625 + "x": 244.7821807861328, + "y": 181.40811157226563 }, "position": { - "x": 23.998380661010742, - "y": 17.725261688232422 + "x": 24.07933235168457, + "y": 17.61520767211914 }, "predictedTarget": { - "x": 308.45025634765625, - "y": 208.25990295410156 + "x": 309.64056396484375, + "y": 207.67747497558594 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 69.48829650878906, - "y": 51.797584533691406 + "x": 78.50000762939453, + "y": 57.96376037597656 }, - "direction": 0.6428661346435547, + "direction": 0.637986958026886, "dropPoint": { - "x": 252.23313903808594, - "y": 189.03115844726563 + "x": 244.55892944335938, + "y": 181.39944458007813 }, "position": { - "x": 24.934825897216797, - "y": 18.426668167114258 + "x": 25.019189834594727, + "y": 18.312036514282227 }, "predictedTarget": { - "x": 308.3502502441406, - "y": 208.29989624023438 + "x": 309.5450744628906, + "y": 207.7274627685547 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 70.39176940917969, - "y": 52.58043670654297 + "x": 79.40205383300781, + "y": 58.749244689941406 }, - "direction": 0.6443601846694946, + "direction": 0.6393700838088989, "dropPoint": { - "x": 251.9914093017578, - "y": 189.02407836914063 + "x": 244.3380889892578, + "y": 181.3899383544922 }, "position": { - "x": 25.88821029663086, - "y": 19.142988204956055 + "x": 25.976137161254883, + "y": 19.023590087890625 }, "predictedTarget": { - "x": 308.250244140625, - "y": 208.33990478515625 + "x": 309.445068359375, + "y": 207.7774658203125 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 71.36314392089844, - "y": 53.310272216796875 + "x": 80.37705993652344, + "y": 59.47422409057617 }, - "direction": 0.6443601846694946, + "direction": 0.6393700838088989, "dropPoint": { - "x": 251.75198364257813, - "y": 189.0163116455078 + "x": 244.11952209472656, + "y": 181.3798065185547 }, "position": { - "x": 26.85958480834961, - "y": 19.87282371520996 + "x": 26.951141357421875, + "y": 19.74856948852539 }, "predictedTarget": { - "x": 308.1502380371094, - "y": 208.37989807128906 + "x": 309.3450622558594, + "y": 207.8274688720703 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 72.35250854492188, - "y": 54.053619384765625 + "x": 81.3701171875, + "y": 60.21262741088867 }, - "direction": 0.6443601846694946, + "direction": 0.6393700838088989, "dropPoint": { - "x": 251.51577758789063, - "y": 189.0077362060547 + "x": 243.90408325195313, + "y": 181.36888122558594 }, "position": { - "x": 27.848947525024414, - "y": 20.616174697875977 + "x": 27.94420051574707, + "y": 20.48697280883789 }, "predictedTarget": { - "x": 308.0502624511719, - "y": 208.41990661621094 + "x": 309.24505615234375, + "y": 207.87747192382813 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 73.31021881103516, - "y": 54.8764533996582 + "x": 82.32704162597656, + "y": 61.0372428894043 }, - "direction": 0.6458104252815247, + "direction": 0.640707790851593, "dropPoint": { - "x": 251.28146362304688, - "y": 188.9981689453125 + "x": 243.69052124023438, + "y": 181.35704040527344 }, "position": { - "x": 28.855199813842773, - "y": 21.374500274658203 + "x": 28.954309463500977, + "y": 21.240154266357422 }, "predictedTarget": { - "x": 307.95025634765625, - "y": 208.45989990234375 + "x": 309.1450500488281, + "y": 207.92747497558594 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 74.33444213867188, - "y": 55.64832305908203 + "x": 83.35519409179688, + "y": 61.80387496948242 }, - "direction": 0.6458104252815247, + "direction": 0.640707790851593, "dropPoint": { - "x": 251.04954528808594, - "y": 188.9879608154297 + "x": 243.4793701171875, + "y": 181.34461975097656 }, "position": { - "x": 29.87942123413086, - "y": 22.1463680267334 + "x": 29.98245620727539, + "y": 22.006786346435547 }, "predictedTarget": { - "x": 307.8502502441406, - "y": 208.49990844726563 + "x": 309.0450744628906, + "y": 207.9774627685547 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 75.37663269042969, - "y": 56.43373107910156 + "x": 84.40137481689453, + "y": 62.583953857421875 }, - "direction": 0.6458104252815247, + "direction": 0.640707790851593, "dropPoint": { - "x": 251.02188110351563, - "y": 188.77671813964844 + "x": 243.4500274658203, + "y": 181.15509033203125 }, "position": { - "x": 30.92160987854004, - "y": 22.931777954101563 + "x": 31.02863883972168, + "y": 22.786867141723633 }, "predictedTarget": { - "x": 307.750244140625, - "y": 208.53990173339844 + "x": 308.945068359375, + "y": 208.0274658203125 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 76.4367904663086, - "y": 57.23268127441406 + "x": 85.46559143066406, + "y": 63.37748718261719 }, - "direction": 0.6458104252815247, + "direction": 0.640707790851593, "dropPoint": { - "x": 250.9951171875, - "y": 188.5660858154297 + "x": 243.42161560058594, + "y": 180.96624755859375 }, "position": { - "x": 31.981767654418945, - "y": 23.730728149414063 + "x": 32.09286117553711, + "y": 23.580398559570313 }, "predictedTarget": { - "x": 307.6502380371094, - "y": 208.5799102783203 + "x": 308.8450622558594, + "y": 208.0774688720703 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 77.55549621582031, - "y": 57.991249084472656 + "x": 86.59197998046875, + "y": 64.1252212524414 }, - "direction": 0.6446267366409302, + "direction": 0.6396202445030212, "dropPoint": { - "x": 250.96922302246094, - "y": 188.35679626464844 + "x": 243.39402770996094, + "y": 180.7786865234375 }, "position": { - "x": 33.060855865478516, - "y": 24.54194450378418 + "x": 33.17599868774414, + "y": 24.386201858520508 }, "predictedTarget": { - "x": 307.5452880859375, - "y": 208.61990356445313 + "x": 308.74505615234375, + "y": 208.12747192382813 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 78.65257263183594, - "y": 58.81598663330078 + "x": 87.69317626953125, + "y": 64.94445037841797 }, - "direction": 0.6446267366409302, + "direction": 0.6396202445030212, "dropPoint": { - "x": 250.94442749023438, - "y": 188.14833068847656 + "x": 243.36753845214844, + "y": 180.59197998046875 }, "position": { - "x": 34.157928466796875, - "y": 25.366680145263672 + "x": 34.27718734741211, + "y": 25.205434799194336 }, "predictedTarget": { - "x": 307.4352722167969, - "y": 208.659912109375 + "x": 308.6450500488281, + "y": 208.17747497558594 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 79.80596160888672, - "y": 59.60319519042969 + "x": 88.85408020019531, + "y": 65.72103881835938 }, - "direction": 0.6435078978538513, + "direction": 0.6385923624038696, "dropPoint": { - "x": 250.9204864501953, - "y": 187.94091796875 + "x": 243.3419189453125, + "y": 180.40634155273438 }, "position": { - "x": 35.273921966552734, - "y": 26.20368766784668 + "x": 35.397281646728516, + "y": 26.03694725036621 }, "predictedTarget": { - "x": 307.3252868652344, - "y": 208.6999053955078 + "x": 308.5450744628906, + "y": 208.2219696044922 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 80.93995666503906, - "y": 60.45370101928711 + "x": 89.99224853515625, + "y": 66.56596374511719 }, - "direction": 0.6435078978538513, + "direction": 0.6385923624038696, "dropPoint": { - "x": 250.89759826660156, - "y": 187.73411560058594 + "x": 243.3173370361328, + "y": 180.22134399414063 }, "position": { - "x": 36.40791702270508, - "y": 27.054195404052734 + "x": 36.53544235229492, + "y": 26.88187026977539 }, "predictedTarget": { - "x": 307.21527099609375, - "y": 208.73989868164063 + "x": 308.445068359375, + "y": 208.26197814941406 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 82.13065338134766, - "y": 61.266048431396484 + "x": 91.19053649902344, + "y": 67.3675765991211 }, - "direction": 0.6423776149749756, + "direction": 0.6375541090965271, "dropPoint": { - "x": 250.8756561279297, - "y": 187.52882385253906 + "x": 243.293701171875, + "y": 180.03782653808594 }, "position": { - "x": 37.56088638305664, - "y": 27.916900634765625 + "x": 37.692562103271484, + "y": 27.739004135131836 }, "predictedTarget": { - "x": 307.10528564453125, - "y": 208.7799072265625 + "x": 308.3450622558594, + "y": 208.30197143554688 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 83.3016357421875, - "y": 62.142234802246094 + "x": 92.36573791503906, + "y": 68.23809814453125 }, - "direction": 0.6423776149749756, + "direction": 0.6375541090965271, "dropPoint": { - "x": 250.854736328125, - "y": 187.32418823242188 + "x": 243.27102661132813, + "y": 179.85501098632813 }, "position": { - "x": 38.73187255859375, - "y": 28.793087005615234 + "x": 38.867759704589844, + "y": 28.60953140258789 }, "predictedTarget": { - "x": 306.9952697753906, - "y": 208.8199005126953 + "x": 308.24505615234375, + "y": 208.34197998046875 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 84.52963256835938, - "y": 62.97972869873047 + "x": 93.60137176513672, + "y": 69.06477355957031 }, - "direction": 0.6412379145622253, + "direction": 0.6365078091621399, "dropPoint": { - "x": 250.83474731445313, - "y": 187.1214599609375 + "x": 243.24935913085938, + "y": 179.67405700683594 }, "position": { - "x": 39.9218864440918, - "y": 29.681396484375 + "x": 40.06196212768555, + "y": 29.492202758789063 }, "predictedTarget": { - "x": 306.8852844238281, - "y": 208.8599090576172 + "x": 308.1450500488281, + "y": 208.38197326660156 }, "state": 1, "targetIndex": 0 }, { "aimPoint": { - "x": 85.73165893554688, - "y": 63.877010345458984 + "x": 94.80763244628906, + "y": 69.95635986328125 }, - "direction": 0.6412379145622253, + "direction": 0.6365078091621399, "dropPoint": { - "x": 250.81576538085938, - "y": 186.91917419433594 + "x": 243.2286834716797, + "y": 179.4936065673828 }, "position": { - "x": 41.12392044067383, - "y": 30.578678131103516 + "x": 41.268226623535156, + "y": 30.3837890625 }, "predictedTarget": { - "x": 306.7752685546875, - "y": 208.89990234375 + "x": 308.0450744628906, + "y": 208.42198181152344 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 86.93370056152344, - "y": 64.7742919921875 + "x": 96.01390075683594, + "y": 70.84794616699219 }, - "direction": 0.6412379145622253, + "direction": 0.6365078091621399, "dropPoint": { - "x": 250.59634399414063, - "y": 186.8988037109375 + "x": 243.02963256835938, + "y": 179.47142028808594 }, "position": { - "x": 42.32595443725586, - "y": 31.47595977783203 + "x": 42.474491119384766, + "y": 31.275375366210938 }, "predictedTarget": { - "x": 306.665283203125, - "y": 208.9398956298828 + "x": 307.945068359375, + "y": 208.46197509765625 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 88.13572692871094, - "y": 65.67156982421875 + "x": 97.22016906738281, + "y": 71.73953247070313 }, - "direction": 0.6412379145622253, + "direction": 0.6365078091621399, "dropPoint": { - "x": 250.3776397705078, - "y": 186.87826538085938 + "x": 242.8314208984375, + "y": 179.44908142089844 }, "position": { - "x": 43.52798843383789, - "y": 32.37324142456055 + "x": 43.680755615234375, + "y": 32.166961669921875 }, "predictedTarget": { - "x": 306.5552673339844, - "y": 208.9799041748047 + "x": 307.8450622558594, + "y": 208.50198364257813 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 89.3377685546875, - "y": 66.56885528564453 + "x": 98.42642974853516, + "y": 72.63111877441406 }, - "direction": 0.6412379145622253, + "direction": 0.6365078091621399, "dropPoint": { - "x": 250.16229248046875, - "y": 186.8578338623047 + "x": 242.63648986816406, + "y": 179.42684936523438 }, "position": { - "x": 44.73002243041992, - "y": 33.27052307128906 + "x": 44.887020111083984, + "y": 33.05854797363281 }, "predictedTarget": { - "x": 306.4452819824219, - "y": 209.01492309570313 + "x": 307.74505615234375, + "y": 208.54197692871094 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 90.4994888305664, - "y": 67.52008056640625 + "x": 99.58953857421875, + "y": 73.58103942871094 }, - "direction": 0.6424159407615662, + "direction": 0.6375737190246582, "dropPoint": { - "x": 249.9490203857422, - "y": 186.8370819091797 + "x": 242.44357299804688, + "y": 179.40435791015625 }, "position": { - "x": 45.930999755859375, - "y": 34.169219970703125 + "x": 46.09233474731445, + "y": 33.951419830322266 }, "predictedTarget": { - "x": 306.33526611328125, - "y": 209.044921875 + "x": 307.6450500488281, + "y": 208.5819854736328 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 91.70046997070313, - "y": 68.41877746582031 + "x": 100.79484558105469, + "y": 74.47390747070313 }, - "direction": 0.6424159407615662, + "direction": 0.6375737190246582, "dropPoint": { - "x": 249.7369842529297, - "y": 186.81678771972656 + "x": 242.25192260742188, + "y": 179.38230895996094 }, "position": { - "x": 47.13197708129883, - "y": 35.06791687011719 + "x": 47.29764938354492, + "y": 34.84429168701172 }, "predictedTarget": { - "x": 306.22528076171875, - "y": 209.07492065429688 + "x": 307.5395812988281, + "y": 208.62197875976563 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 92.90144348144531, - "y": 69.31747436523438 + "x": 102.00016784667969, + "y": 75.36677551269531 }, - "direction": 0.6424159407615662, + "direction": 0.6375737190246582, "dropPoint": { - "x": 249.5276336669922, - "y": 186.7965087890625 + "x": 242.0629119873047, + "y": 179.36032104492188 }, "position": { - "x": 48.33295440673828, - "y": 35.96661376953125 + "x": 48.50296401977539, + "y": 35.73716354370117 }, "predictedTarget": { - "x": 306.1152648925781, - "y": 209.1049346923828 + "x": 307.4295654296875, + "y": 208.6619873046875 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 94.05760192871094, - "y": 70.27597045898438 + "x": 103.15744018554688, + "y": 76.32441711425781 }, - "direction": 0.64372318983078, + "direction": 0.6387582421302795, "dropPoint": { - "x": 249.31976318359375, - "y": 186.77647399902344 + "x": 241.8754119873047, + "y": 179.3385467529297 }, "position": { - "x": 49.532752990722656, - "y": 36.866878509521484 + "x": 49.707218170166016, + "y": 36.63146209716797 }, "predictedTarget": { - "x": 306.0052795410156, - "y": 209.1349334716797 + "x": 307.319580078125, + "y": 208.7019805908203 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 95.25740051269531, - "y": 71.17623901367188 + "x": 104.3616943359375, + "y": 77.21871948242188 }, - "direction": 0.64372318983078, + "direction": 0.6387582421302795, "dropPoint": { - "x": 249.11370849609375, - "y": 186.75637817382813 + "x": 241.68971252441406, + "y": 179.3167724609375 }, "position": { - "x": 50.73255157470703, - "y": 37.76714324951172 + "x": 50.91147232055664, + "y": 37.525760650634766 }, "predictedTarget": { - "x": 305.895263671875, - "y": 209.16493225097656 + "x": 307.2095642089844, + "y": 208.7419891357422 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 96.45719909667969, - "y": 72.07649993896484 + "x": 105.56594848632813, + "y": 78.11302185058594 }, - "direction": 0.64372318983078, + "direction": 0.6387582421302795, "dropPoint": { - "x": 248.90966796875, - "y": 186.7359619140625 + "x": 241.50599670410156, + "y": 179.2947540283203 }, "position": { - "x": 51.932350158691406, - "y": 38.66740798950195 + "x": 52.115726470947266, + "y": 38.42005920410156 }, "predictedTarget": { - "x": 305.7852783203125, - "y": 209.19493103027344 + "x": 307.0995788574219, + "y": 208.781982421875 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 97.61259460449219, - "y": 73.03587341308594 + "x": 106.72274017333984, + "y": 79.0711441040039 }, - "direction": 0.6450164318084717, + "direction": 0.6399266123771667, "dropPoint": { - "x": 248.7083740234375, - "y": 186.7158660888672 + "x": 241.32496643066406, + "y": 179.27305603027344 }, "position": { - "x": 53.130985260009766, - "y": 39.5692253112793 + "x": 53.31893539428711, + "y": 39.315765380859375 }, "predictedTarget": { - "x": 305.6752624511719, - "y": 209.2249298095703 + "x": 306.98956298828125, + "y": 208.8219757080078 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 98.81123352050781, - "y": 73.93768310546875 + "x": 107.92594909667969, + "y": 79.96685028076172 }, - "direction": 0.6450164318084717, + "direction": 0.6399266123771667, "dropPoint": { - "x": 248.47927856445313, - "y": 186.49627685546875 + "x": 241.11451721191406, + "y": 179.0736083984375 }, "position": { - "x": 54.329620361328125, - "y": 40.47104263305664 + "x": 54.52214431762695, + "y": 40.21147155761719 }, "predictedTarget": { - "x": 305.5652770996094, - "y": 209.2549285888672 + "x": 306.8795471191406, + "y": 208.8619842529297 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 100.0098648071289, - "y": 74.83950805664063 + "x": 109.12915802001953, + "y": 80.86255645751953 }, - "direction": 0.6450164318084717, + "direction": 0.6399266123771667, "dropPoint": { - "x": 248.2528076171875, - "y": 186.27877807617188 + "x": 240.90663146972656, + "y": 178.8762969970703 }, "position": { - "x": 55.528255462646484, - "y": 41.372859954833984 + "x": 55.7253532409668, + "y": 41.107177734375 }, "predictedTarget": { - "x": 305.45526123046875, - "y": 209.28492736816406 + "x": 306.7695617675781, + "y": 208.9019775390625 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 101.20849609375, - "y": 75.74131774902344 + "x": 110.33236694335938, + "y": 81.75826263427734 }, - "direction": 0.6450164318084717, + "direction": 0.6399266123771667, "dropPoint": { - "x": 248.02774047851563, - "y": 186.06301879882813 + "x": 240.70018005371094, + "y": 178.6807098388672 }, "position": { - "x": 56.726890563964844, - "y": 42.27467727661133 + "x": 56.92856216430664, + "y": 42.00288391113281 }, "predictedTarget": { - "x": 305.34527587890625, - "y": 209.31492614746094 + "x": 306.6595458984375, + "y": 208.94198608398438 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 102.40713500976563, - "y": 76.64314270019531 + "x": 111.53557586669922, + "y": 82.65396881103516 }, - "direction": 0.6450164318084717, + "direction": 0.6399266123771667, "dropPoint": { - "x": 247.80532836914063, - "y": 185.84967041015625 + "x": 240.496337890625, + "y": 178.48751831054688 }, "position": { - "x": 57.9255256652832, - "y": 43.17649459838867 + "x": 58.131771087646484, + "y": 42.898590087890625 }, "predictedTarget": { - "x": 305.2352600097656, - "y": 209.3449249267578 + "x": 306.549560546875, + "y": 208.9819793701172 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 103.60577392578125, - "y": 77.54495239257813 + "x": 112.73878479003906, + "y": 83.54967498779297 }, - "direction": 0.6450164318084717, + "direction": 0.6399266123771667, "dropPoint": { - "x": 247.58370971679688, - "y": 185.63827514648438 + "x": 240.29344177246094, + "y": 178.29624938964844 }, "position": { - "x": 59.12416076660156, - "y": 44.078311920166016 + "x": 59.33498001098633, + "y": 43.79429626464844 }, "predictedTarget": { - "x": 305.125244140625, - "y": 209.3749237060547 + "x": 306.4395446777344, + "y": 209.0164794921875 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 104.80440521240234, - "y": 78.44677734375 + "x": 113.9419937133789, + "y": 84.44538116455078 }, - "direction": 0.6450164318084717, + "direction": 0.6399266123771667, "dropPoint": { - "x": 247.36471557617188, - "y": 185.42872619628906 + "x": 240.09307861328125, + "y": 178.10687255859375 }, "position": { - "x": 60.32279586791992, - "y": 44.98012924194336 + "x": 60.53818893432617, + "y": 44.69000244140625 }, "predictedTarget": { - "x": 305.0152587890625, - "y": 209.40493774414063 + "x": 306.3295593261719, + "y": 209.04647827148438 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 106.04069519042969, - "y": 79.29847717285156 + "x": 115.18734741210938, + "y": 85.284423828125 }, - "direction": 0.643919825553894, + "direction": 0.6388893127441406, "dropPoint": { - "x": 247.1483612060547, - "y": 185.22157287597656 + "x": 239.89532470703125, + "y": 177.91986083984375 }, "position": { - "x": 61.52241897583008, - "y": 45.88063049316406 + "x": 61.74232864379883, + "y": 45.58445739746094 }, "predictedTarget": { - "x": 304.9052429199219, - "y": 209.4349365234375 + "x": 306.21954345703125, + "y": 209.0764923095703 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 107.24032592773438, - "y": 80.198974609375 + "x": 116.3914794921875, + "y": 86.17887878417969 }, - "direction": 0.643919825553894, + "direction": 0.6388893127441406, "dropPoint": { - "x": 246.9336395263672, - "y": 185.01588439941406 + "x": 239.69924926757813, + "y": 177.73431396484375 }, "position": { - "x": 62.722042083740234, - "y": 46.781131744384766 + "x": 62.946468353271484, + "y": 46.478912353515625 }, "predictedTarget": { - "x": 304.7952575683594, - "y": 209.46493530273438 + "x": 306.10955810546875, + "y": 209.1064910888672 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 108.43994140625, - "y": 81.09947967529297 + "x": 117.59561920166016, + "y": 87.07333374023438 }, - "direction": 0.643919825553894, + "direction": 0.6388893127441406, "dropPoint": { - "x": 246.72154235839844, - "y": 184.81260681152344 + "x": 239.50576782226563, + "y": 177.55113220214844 }, "position": { - "x": 63.92166519165039, - "y": 47.68163299560547 + "x": 64.15060424804688, + "y": 47.37336730957031 }, "predictedTarget": { - "x": 304.68524169921875, - "y": 209.49493408203125 + "x": 305.9995422363281, + "y": 209.13648986816406 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 109.63956451416016, - "y": 81.99998474121094 + "x": 118.79975891113281, + "y": 87.96778869628906 }, - "direction": 0.643919825553894, + "direction": 0.6388893127441406, "dropPoint": { - "x": 246.51084899902344, - "y": 184.611328125 + "x": 239.3137969970703, + "y": 177.3699493408203 }, "position": { - "x": 65.12128448486328, - "y": 48.58213424682617 + "x": 65.35474395751953, + "y": 48.267822265625 }, "predictedTarget": { - "x": 304.57525634765625, - "y": 209.52493286132813 + "x": 305.8895568847656, + "y": 209.16648864746094 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 110.83918762207031, - "y": 82.90048217773438 + "x": 120.00389862060547, + "y": 88.86224365234375 }, - "direction": 0.643919825553894, + "direction": 0.6388893127441406, "dropPoint": { - "x": 246.31307983398438, - "y": 184.5900115966797 + "x": 239.1363525390625, + "y": 177.34703063964844 }, "position": { - "x": 66.32090759277344, - "y": 49.482635498046875 + "x": 66.55888366699219, + "y": 49.16227722167969 }, "predictedTarget": { - "x": 304.4652404785156, - "y": 209.554931640625 + "x": 305.779541015625, + "y": 209.1964874267578 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 112.03881072998047, - "y": 83.80097961425781 + "x": 121.20803833007813, + "y": 89.75669860839844 }, - "direction": 0.643919825553894, + "direction": 0.6388893127441406, "dropPoint": { - "x": 246.11740112304688, - "y": 184.56866455078125 + "x": 238.96095275878906, + "y": 177.32411193847656 }, "position": { - "x": 67.5205307006836, - "y": 50.38313674926758 + "x": 67.76302337646484, + "y": 50.056732177734375 }, "predictedTarget": { - "x": 304.3552551269531, - "y": 209.58493041992188 + "x": 305.6695556640625, + "y": 209.2264862060547 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 113.23843383789063, - "y": 84.70148468017578 + "x": 122.41217803955078, + "y": 90.65115356445313 }, - "direction": 0.643919825553894, + "direction": 0.6388893127441406, "dropPoint": { - "x": 245.92379760742188, - "y": 184.54727172851563 + "x": 238.78759765625, + "y": 177.3011474609375 }, "position": { - "x": 68.72015380859375, - "y": 51.28363800048828 + "x": 68.9671630859375, + "y": 50.95118713378906 }, "predictedTarget": { - "x": 304.2402648925781, - "y": 209.60995483398438 + "x": 305.5595397949219, + "y": 209.25648498535156 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 114.39262390136719, - "y": 85.66242980957031 + "x": 123.5688705444336, + "y": 91.60940551757813 }, - "direction": 0.6452425718307495, + "direction": 0.6400571465492249, "dropPoint": { - "x": 245.73350524902344, - "y": 184.52593994140625 + "x": 238.617431640625, + "y": 177.2783203125 }, "position": { - "x": 69.91858673095703, - "y": 52.185726165771484 + "x": 70.17025756835938, + "y": 51.847049713134766 }, "predictedTarget": { - "x": 304.1202697753906, - "y": 209.6299591064453 + "x": 305.4495544433594, + "y": 209.28648376464844 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 115.59105682373047, - "y": 86.56451416015625 + "x": 124.77196502685547, + "y": 92.50526428222656 }, - "direction": 0.6452425718307495, + "direction": 0.6400571465492249, "dropPoint": { - "x": 245.54388427734375, - "y": 184.5048370361328 + "x": 238.44805908203125, + "y": 177.25570678710938 }, "position": { - "x": 71.11701965332031, - "y": 53.08781433105469 + "x": 71.37335205078125, + "y": 52.74291229248047 }, "predictedTarget": { - "x": 304.0002746582031, - "y": 209.64996337890625 + "x": 305.33953857421875, + "y": 209.3164825439453 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 116.78948974609375, - "y": 87.46660614013672 + "x": 125.97505950927734, + "y": 93.401123046875 }, - "direction": 0.6452425718307495, + "direction": 0.6400571465492249, "dropPoint": { - "x": 245.35635375976563, - "y": 184.48367309570313 + "x": 238.2807159423828, + "y": 177.23306274414063 }, "position": { - "x": 72.3154525756836, - "y": 53.98990249633789 + "x": 72.57644653320313, + "y": 53.63877487182617 }, "predictedTarget": { - "x": 303.8802795410156, - "y": 209.66995239257813 + "x": 305.22955322265625, + "y": 209.3464813232422 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 117.94223022460938, - "y": 88.4293212890625 + "x": 127.12982940673828, + "y": 94.36180114746094 }, - "direction": 0.6465707421302795, + "direction": 0.6412447690963745, "dropPoint": { - "x": 245.1708984375, - "y": 184.46246337890625 + "x": 238.115478515625, + "y": 177.21041870117188 }, "position": { - "x": 73.51268768310547, - "y": 54.89358139038086 + "x": 73.77847290039063, + "y": 54.53606414794922 }, "predictedTarget": { - "x": 303.7602844238281, - "y": 209.68995666503906 + "x": 305.1195373535156, + "y": 209.37649536132813 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 119.13946533203125, - "y": 89.3330078125 + "x": 128.33184814453125, + "y": 95.25909423828125 }, - "direction": 0.6465707421302795, + "direction": 0.6412447690963745, "dropPoint": { - "x": 244.98727416992188, - "y": 184.4415740966797 + "x": 237.95205688476563, + "y": 177.18812561035156 }, "position": { - "x": 74.70992279052734, - "y": 55.79726028442383 + "x": 74.98049926757813, + "y": 55.433353424072266 }, "predictedTarget": { - "x": 303.6402893066406, - "y": 209.7099609375 + "x": 305.0095520019531, + "y": 209.406494140625 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 120.33670043945313, - "y": 90.23667907714844 + "x": 129.53387451171875, + "y": 96.15638732910156 }, - "direction": 0.6465707421302795, + "direction": 0.6412447690963745, "dropPoint": { - "x": 244.80636596679688, - "y": 184.4207000732422 + "x": 237.7912139892578, + "y": 177.16587829589844 }, "position": { - "x": 75.90715789794922, - "y": 56.7009391784668 + "x": 76.18252563476563, + "y": 56.33064270019531 }, "predictedTarget": { - "x": 303.5202941894531, - "y": 209.72994995117188 + "x": 304.8995361328125, + "y": 209.43649291992188 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 121.48870086669922, - "y": 91.2001953125 + "x": 130.6882781982422, + "y": 97.1174087524414 }, - "direction": 0.6478827595710754, + "direction": 0.6424135565757751, "dropPoint": { - "x": 244.62698364257813, - "y": 184.3997344970703 + "x": 237.63194274902344, + "y": 177.14358520507813 }, "position": { - "x": 77.10320281982422, - "y": 57.6061897277832 + "x": 77.38350677490234, + "y": 57.22933578491211 }, "predictedTarget": { - "x": 303.4002990722656, - "y": 209.7499542236328 + "x": 304.78955078125, + "y": 209.46649169921875 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 122.68474578857422, - "y": 92.1054458618164 + "x": 131.88925170898438, + "y": 98.01609802246094 }, - "direction": 0.6478827595710754, + "direction": 0.6424135565757751, "dropPoint": { - "x": 244.60940551757813, - "y": 184.2211456298828 + "x": 237.61273193359375, + "y": 176.98670959472656 }, "position": { - "x": 78.29924774169922, - "y": 58.51144027709961 + "x": 78.58448791503906, + "y": 58.128028869628906 }, "predictedTarget": { - "x": 303.2802734375, - "y": 209.76995849609375 + "x": 304.6795349121094, + "y": 209.49649047851563 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 123.92414855957031, - "y": 92.95333862304688 + "x": 133.13677978515625, + "y": 98.85252380371094 }, - "direction": 0.6466249227523804, + "direction": 0.6412714719772339, "dropPoint": { - "x": 244.59176635742188, - "y": 184.04440307617188 + "x": 237.59349060058594, + "y": 176.83175659179688 }, "position": { - "x": 79.49642944335938, - "y": 59.415184020996094 + "x": 79.78649139404297, + "y": 59.025352478027344 }, "predictedTarget": { - "x": 303.1602783203125, - "y": 209.7899627685547 + "x": 304.5695495605469, + "y": 209.5264892578125 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 125.12133026123047, - "y": 93.8570785522461 + "x": 134.3387908935547, + "y": 99.74984741210938 }, - "direction": 0.6466249227523804, + "direction": 0.6412714719772339, "dropPoint": { - "x": 244.57437133789063, - "y": 183.8697509765625 + "x": 237.57455444335938, + "y": 176.67877197265625 }, "position": { - "x": 80.69361114501953, - "y": 60.31892776489258 + "x": 80.98849487304688, + "y": 59.92267608642578 }, "predictedTarget": { - "x": 303.0452575683594, - "y": 209.8049774169922 + "x": 304.45953369140625, + "y": 209.55648803710938 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 126.36148071289063, - "y": 94.70382690429688 + "x": 135.58682250976563, + "y": 100.5854263305664 }, - "direction": 0.6453762650489807, + "direction": 0.6401402354240417, "dropPoint": { - "x": 244.5570068359375, - "y": 183.697265625 + "x": 237.5556182861328, + "y": 176.52789306640625 }, "position": { - "x": 81.89192199707031, - "y": 61.22117614746094 + "x": 82.19151306152344, + "y": 60.81863784790039 }, "predictedTarget": { - "x": 302.9352722167969, - "y": 209.81497192382813 + "x": 304.34954833984375, + "y": 209.58648681640625 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 127.55979919433594, - "y": 95.60607147216797 + "x": 136.7898406982422, + "y": 101.48138427734375 }, - "direction": 0.6453762650489807, + "direction": 0.6401402354240417, "dropPoint": { - "x": 244.539794921875, - "y": 183.52658081054688 + "x": 237.5369415283203, + "y": 176.37881469726563 }, "position": { - "x": 83.0902328491211, - "y": 62.1234245300293 + "x": 83.39453125, + "y": 61.714599609375 }, "predictedTarget": { - "x": 302.82525634765625, - "y": 209.82498168945313 + "x": 304.2340393066406, + "y": 209.61099243164063 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 128.80072021484375, - "y": 96.45164489746094 + "x": 138.03842163085938, + "y": 102.31610870361328 }, - "direction": 0.6441357731819153, + "direction": 0.6390190124511719, "dropPoint": { - "x": 244.52252197265625, - "y": 183.35780334472656 + "x": 237.51821899414063, + "y": 176.23159790039063 }, "position": { - "x": 84.28966522216797, - "y": 63.02418518066406 + "x": 84.59855651855469, + "y": 62.60921096801758 }, "predictedTarget": { - "x": 302.71527099609375, - "y": 209.83497619628906 + "x": 304.1140441894531, + "y": 209.63099670410156 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 130.00015258789063, - "y": 97.35240173339844 + "x": 139.24244689941406, + "y": 103.21072387695313 }, - "direction": 0.6441357731819153, + "direction": 0.6390190124511719, "dropPoint": { - "x": 244.50552368164063, - "y": 183.19110107421875 + "x": 237.49977111816406, + "y": 176.0863800048828 }, "position": { - "x": 85.48909759521484, - "y": 63.92494583129883 + "x": 85.80258178710938, + "y": 63.503822326660156 }, "predictedTarget": { - "x": 302.6052551269531, - "y": 209.844970703125 + "x": 303.9940490722656, + "y": 209.6510009765625 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 131.2418212890625, - "y": 98.19683837890625 + "x": 140.49151611328125, + "y": 104.04464721679688 }, - "direction": 0.6429042816162109, + "direction": 0.637908935546875, "dropPoint": { - "x": 244.48849487304688, - "y": 183.02627563476563 + "x": 237.48129272460938, + "y": 175.9430389404297 }, "position": { - "x": 86.68963623046875, - "y": 64.82422637939453 + "x": 87.00759887695313, + "y": 64.3970947265625 }, "predictedTarget": { - "x": 302.4952697753906, - "y": 209.85498046875 + "x": 303.8740539550781, + "y": 209.67098999023438 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 132.44236755371094, - "y": 99.09613037109375 + "x": 141.696533203125, + "y": 104.93791198730469 }, - "direction": 0.6429042816162109, + "direction": 0.637908935546875, "dropPoint": { - "x": 244.4717254638672, - "y": 182.86375427246094 + "x": 237.4631805419922, + "y": 175.8018798828125 }, "position": { - "x": 87.89017486572266, - "y": 65.7235107421875 + "x": 88.21261596679688, + "y": 65.29036712646484 }, "predictedTarget": { - "x": 302.38525390625, - "y": 209.86497497558594 + "x": 303.7540588378906, + "y": 209.6909942626953 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 133.68472290039063, - "y": 99.93951416015625 + "x": 142.94601440429688, + "y": 105.7711181640625 }, - "direction": 0.6416829824447632, + "direction": 0.636810839176178, "dropPoint": { - "x": 244.45486450195313, - "y": 182.70286560058594 + "x": 237.4449920654297, + "y": 175.66241455078125 }, "position": { - "x": 89.09181213378906, - "y": 66.62133026123047 + "x": 89.41860961914063, + "y": 66.18231964111328 }, "predictedTarget": { - "x": 302.2752685546875, - "y": 209.87496948242188 + "x": 303.6340637207031, + "y": 209.71099853515625 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 134.88636779785156, - "y": 100.83732604980469 + "x": 144.15200805664063, + "y": 106.66307067871094 }, - "direction": 0.6416829824447632, + "direction": 0.636810839176178, "dropPoint": { - "x": 244.27920532226563, - "y": 182.68112182617188 + "x": 237.28944396972656, + "y": 175.63934326171875 }, "position": { - "x": 90.29344940185547, - "y": 67.51914978027344 + "x": 90.62460327148438, + "y": 67.07427215576172 }, "predictedTarget": { - "x": 302.1652526855469, - "y": 209.88497924804688 + "x": 303.5140380859375, + "y": 209.7310028076172 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 136.0880126953125, - "y": 101.73515319824219 + "x": 145.35800170898438, + "y": 107.55502319335938 }, - "direction": 0.6416829824447632, + "direction": 0.636810839176178, "dropPoint": { - "x": 244.106201171875, - "y": 182.65939331054688 + "x": 237.136474609375, + "y": 175.61630249023438 }, "position": { - "x": 91.49508666992188, - "y": 68.4169692993164 + "x": 91.83059692382813, + "y": 67.96622467041016 }, "predictedTarget": { - "x": 302.0552673339844, - "y": 209.8949737548828 + "x": 303.39404296875, + "y": 209.75099182128906 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 137.2431182861328, - "y": 102.69515991210938 + "x": 146.5152130126953, + "y": 108.51285552978516 }, - "direction": 0.6430416107177734, + "direction": 0.6380151510238647, "dropPoint": { - "x": 243.9347686767578, - "y": 182.6373291015625 + "x": 236.98509216308594, + "y": 175.59295654296875 }, "position": { - "x": 92.69550323486328, - "y": 69.31642150878906 + "x": 93.03551483154297, + "y": 68.85962677001953 }, "predictedTarget": { - "x": 301.9402770996094, - "y": 209.90496826171875 + "x": 303.2740478515625, + "y": 209.77099609375 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 138.4435272216797, - "y": 103.5946044921875 + "x": 147.72012329101563, + "y": 109.40625762939453 }, - "direction": 0.6430416107177734, + "direction": 0.6380151510238647, "dropPoint": { - "x": 243.76571655273438, - "y": 182.6161346435547 + "x": 236.8360595703125, + "y": 175.57052612304688 }, "position": { - "x": 93.89591979980469, - "y": 70.21587371826172 + "x": 94.24043273925781, + "y": 69.7530288696289 }, "predictedTarget": { - "x": 301.8202819824219, - "y": 209.91497802734375 + "x": 303.154052734375, + "y": 209.79100036621094 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 139.64395141601563, - "y": 104.49406433105469 + "x": 148.925048828125, + "y": 110.2996597290039 }, - "direction": 0.6430416107177734, + "direction": 0.6380151510238647, "dropPoint": { - "x": 243.59771728515625, - "y": 182.59429931640625 + "x": 236.68812561035156, + "y": 175.54751586914063 }, "position": { - "x": 95.0963363647461, - "y": 71.11532592773438 + "x": 95.44535064697266, + "y": 70.64643096923828 }, "predictedTarget": { - "x": 301.7002868652344, - "y": 209.9249725341797 + "x": 303.03955078125, + "y": 209.8054962158203 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 140.7982177734375, - "y": 105.45499420166016 + "x": 150.08181762695313, + "y": 111.25792694091797 }, - "direction": 0.6443862915039063, + "direction": 0.639201819896698, "dropPoint": { - "x": 243.43292236328125, - "y": 182.57305908203125 + "x": 236.54327392578125, + "y": 175.5250701904297 }, "position": { - "x": 96.29553985595703, - "y": 72.01638793945313 + "x": 96.64920806884766, + "y": 71.541259765625 }, "predictedTarget": { - "x": 301.58026123046875, - "y": 209.93496704101563 + "x": 302.9295654296875, + "y": 209.81549072265625 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 141.9974365234375, - "y": 106.3560562133789 + "x": 151.28567504882813, + "y": 112.15275573730469 }, - "direction": 0.6443862915039063, + "direction": 0.639201819896698, "dropPoint": { - "x": 243.26937866210938, - "y": 182.55160522460938 + "x": 236.39968872070313, + "y": 175.50250244140625 }, "position": { - "x": 97.49474334716797, - "y": 72.91744995117188 + "x": 97.85306549072266, + "y": 72.43608856201172 }, "predictedTarget": { - "x": 301.46026611328125, - "y": 209.94497680664063 + "x": 302.8195495605469, + "y": 209.82550048828125 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 143.19662475585938, - "y": 107.25711822509766 + "x": 152.48953247070313, + "y": 113.0475845336914 }, - "direction": 0.6443862915039063, + "direction": 0.639201819896698, "dropPoint": { - "x": 243.1085205078125, - "y": 182.5306396484375 + "x": 236.25872802734375, + "y": 175.48045349121094 }, "position": { - "x": 98.6939468383789, - "y": 73.81851196289063 + "x": 99.05692291259766, + "y": 73.33091735839844 }, "predictedTarget": { - "x": 301.34027099609375, - "y": 209.95497131347656 + "x": 302.70953369140625, + "y": 209.8354949951172 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 144.3502655029297, - "y": 108.21873474121094 + "x": 153.64605712890625, + "y": 114.00599670410156 }, - "direction": 0.6457120180130005, + "direction": 0.6403660774230957, "dropPoint": { - "x": 242.94918823242188, - "y": 182.5091094970703 + "x": 236.11932373046875, + "y": 175.45790100097656 }, "position": { - "x": 99.89195251464844, - "y": 74.72116088867188 + "x": 100.25973510742188, + "y": 74.2271499633789 }, "predictedTarget": { - "x": 301.22027587890625, - "y": 209.96498107910156 + "x": 302.59954833984375, + "y": 209.84548950195313 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 145.54827880859375, - "y": 109.12138366699219 + "x": 154.848876953125, + "y": 114.90223693847656 }, - "direction": 0.6457120180130005, + "direction": 0.6403660774230957, "dropPoint": { - "x": 242.79176330566406, - "y": 182.48818969726563 + "x": 235.9817657470703, + "y": 175.43597412109375 }, "position": { - "x": 101.08995819091797, - "y": 75.62380981445313 + "x": 101.4625473022461, + "y": 75.12338256835938 }, "predictedTarget": { - "x": 301.10028076171875, - "y": 209.9749755859375 + "x": 302.4895324707031, + "y": 209.85549926757813 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 146.74627685546875, - "y": 110.02403259277344 + "x": 156.05169677734375, + "y": 115.7984619140625 }, - "direction": 0.6457120180130005, + "direction": 0.6403660774230957, "dropPoint": { - "x": 242.77496337890625, - "y": 182.33091735839844 + "x": 235.96359252929688, + "y": 175.30018615722656 }, "position": { - "x": 102.2879638671875, - "y": 76.52645874023438 + "x": 102.66535949707031, + "y": 76.01961517333984 }, "predictedTarget": { - "x": 300.9802551269531, - "y": 209.98497009277344 + "x": 302.3795471191406, + "y": 209.86549377441406 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 147.9442901611328, - "y": 110.92668151855469 + "x": 157.25450134277344, + "y": 116.6947021484375 }, - "direction": 0.6457120180130005, + "direction": 0.6403660774230957, "dropPoint": { - "x": 242.75816345214844, - "y": 182.17605590820313 + "x": 235.94541931152344, + "y": 175.16671752929688 }, "position": { - "x": 103.48596954345703, - "y": 77.42910766601563 + "x": 103.86817169189453, + "y": 76.91584777832031 }, "predictedTarget": { - "x": 300.8602600097656, - "y": 209.99497985839844 + "x": 302.26953125, + "y": 209.87548828125 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 149.19415283203125, - "y": 111.76039123535156 + "x": 158.5126495361328, + "y": 117.51655578613281 }, - "direction": 0.6442028880119324, + "direction": 0.6390044093132019, "dropPoint": { - "x": 242.74130249023438, - "y": 182.0233917236328 + "x": 235.92730712890625, + "y": 175.03546142578125 }, "position": { - "x": 104.68534088134766, - "y": 78.32994842529297 + "x": 105.07220458984375, + "y": 77.81044006347656 }, "predictedTarget": { - "x": 300.7402648925781, - "y": 210.0 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 150.39352416992188, - "y": 112.66123962402344 - }, - "direction": 0.6442028880119324, - "dropPoint": { - "x": 242.72476196289063, - "y": 181.8724365234375 - }, - "position": { - "x": 105.88471221923828, - "y": 79.23078918457031 - }, - "predictedTarget": { - "x": 300.6202697753906, - "y": 210.0 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 151.63699340820313, - "y": 113.5032958984375 - }, - "direction": 0.6429175138473511, - "dropPoint": { - "x": 242.70819091796875, - "y": 181.72369384765625 - }, - "position": { - "x": 107.08523559570313, - "y": 80.13008880615234 - }, - "predictedTarget": { - "x": 300.5002746582031, - "y": 210.0 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 152.83750915527344, - "y": 114.40259552001953 - }, - "direction": 0.6429175138473511, - "dropPoint": { - "x": 242.69183349609375, - "y": 181.57652282714844 - }, - "position": { - "x": 108.28575897216797, - "y": 81.02938842773438 - }, - "predictedTarget": { - "x": 300.3802795410156, - "y": 210.0 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 154.0817413330078, - "y": 115.24348449707031 - }, - "direction": 0.6416414380073547, - "dropPoint": { - "x": 242.67550659179688, - "y": 181.43173217773438 - }, - "position": { - "x": 109.48743438720703, - "y": 81.92715454101563 - }, - "predictedTarget": { - "x": 300.26025390625, - "y": 210.0 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 155.28341674804688, - "y": 116.14125061035156 - }, - "direction": 0.6416414380073547, - "dropPoint": { - "x": 242.65936279296875, - "y": 181.28851318359375 - }, - "position": { - "x": 110.6891098022461, - "y": 82.82492065429688 - }, - "predictedTarget": { - "x": 300.1402587890625, - "y": 210.0 - }, - "state": 4, - "targetIndex": 0 - }, - { - "aimPoint": { - "x": 156.52833557128906, - "y": 116.98104858398438 - }, - "direction": 0.6403761506080627, - "dropPoint": { - "x": 242.64321899414063, - "y": 181.147705078125 - }, - "position": { - "x": 111.89191436767578, - "y": 83.7211685180664 - }, - "predictedTarget": { - "x": 300.020263671875, - "y": 210.0 + "x": 302.1595458984375, + "y": 209.885498046875 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 157.73114013671875, - "y": 117.87728881835938 + "x": 159.7166748046875, + "y": 118.41114807128906 }, - "direction": 0.6403761506080627, + "direction": 0.6390044093132019, "dropPoint": { - "x": 242.62734985351563, - "y": 181.00865173339844 + "x": 235.90943908691406, + "y": 174.9058074951172 }, "position": { - "x": 113.09471893310547, - "y": 84.61741638183594 + "x": 106.27623748779297, + "y": 78.70503234863281 }, "predictedTarget": { - "x": 299.9002685546875, - "y": 210.0 + "x": 302.0495300292969, + "y": 209.89549255371094 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 158.93394470214844, - "y": 118.77354431152344 + "x": 160.96726989746094, + "y": 119.24301147460938 }, - "direction": 0.6403761506080627, + "direction": 0.6378570199012756, "dropPoint": { - "x": 242.63186645507813, - "y": 181.00830078125 + "x": 235.89163208007813, + "y": 174.7783203125 }, "position": { - "x": 114.29752349853516, - "y": 85.51366424560547 + "x": 107.4813003540039, + "y": 79.5982437133789 }, "predictedTarget": { - "x": 299.7802734375, - "y": 210.0 + "x": 301.9340515136719, + "y": 209.90548706054688 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 160.13674926757813, - "y": 119.66978454589844 + "x": 162.17233276367188, + "y": 120.13623046875 }, - "direction": 0.6403761506080627, + "direction": 0.6378570199012756, "dropPoint": { - "x": 242.63638305664063, - "y": 181.00796508789063 + "x": 235.87408447265625, + "y": 174.65237426757813 }, "position": { - "x": 115.50032806396484, - "y": 86.409912109375 + "x": 108.68636322021484, + "y": 80.491455078125 }, "predictedTarget": { - "x": 299.6602783203125, - "y": 210.0 + "x": 301.8140563964844, + "y": 209.91549682617188 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 161.3395538330078, - "y": 120.5660400390625 + "x": 163.42340087890625, + "y": 120.9673080444336 }, - "direction": 0.6403761506080627, + "direction": 0.6367213726043701, "dropPoint": { - "x": 242.64089965820313, - "y": 181.00762939453125 + "x": 235.8565673828125, + "y": 174.52874755859375 }, "position": { - "x": 116.70313262939453, - "y": 87.30615997314453 + "x": 109.89244079589844, + "y": 81.38330078125 }, "predictedTarget": { - "x": 299.540283203125, - "y": 209.99502563476563 + "x": 301.69403076171875, + "y": 209.9254913330078 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 162.5423583984375, - "y": 121.4622802734375 + "x": 164.6294708251953, + "y": 121.8591537475586 }, - "direction": 0.6403761506080627, + "direction": 0.6367213726043701, "dropPoint": { - "x": 242.6453857421875, - "y": 181.00729370117188 + "x": 235.83929443359375, + "y": 174.40664672851563 }, "position": { - "x": 117.90593719482422, - "y": 88.20240783691406 + "x": 111.09851837158203, + "y": 82.275146484375 }, "predictedTarget": { - "x": 299.4202575683594, - "y": 209.98501586914063 + "x": 301.57403564453125, + "y": 209.93548583984375 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 163.7451629638672, - "y": 122.35853576660156 + "x": 165.88095092773438, + "y": 122.68951416015625 }, - "direction": 0.6403761506080627, + "direction": 0.6355987191200256, "dropPoint": { - "x": 242.64984130859375, - "y": 181.00698852539063 + "x": 235.82211303710938, + "y": 174.286865234375 }, "position": { - "x": 119.1087417602539, - "y": 89.0986557006836 + "x": 112.30559539794922, + "y": 83.16563415527344 }, "predictedTarget": { - "x": 299.3002624511719, - "y": 209.9750213623047 + "x": 301.45404052734375, + "y": 209.94549560546875 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 164.94796752929688, - "y": 123.25477600097656 + "x": 167.08804321289063, + "y": 123.58000183105469 }, - "direction": 0.6403761506080627, + "direction": 0.6355987191200256, "dropPoint": { - "x": 242.65432739257813, - "y": 181.0067138671875 + "x": 235.80517578125, + "y": 174.16879272460938 }, "position": { - "x": 120.3115463256836, - "y": 89.99490356445313 + "x": 113.5126724243164, + "y": 84.05612182617188 }, "predictedTarget": { - "x": 299.1802673339844, - "y": 209.96502685546875 + "x": 301.33404541015625, + "y": 209.9554901123047 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 166.15077209472656, - "y": 124.15103149414063 + "x": 168.29510498046875, + "y": 124.47048950195313 }, - "direction": 0.6403761506080627, + "direction": 0.6355987191200256, "dropPoint": { - "x": 242.6587677001953, - "y": 181.0064239501953 + "x": 235.80963134765625, + "y": 174.16860961914063 }, "position": { - "x": 121.51435089111328, - "y": 90.89115142822266 + "x": 114.7197494506836, + "y": 84.94660949707031 }, "predictedTarget": { - "x": 299.0602722167969, - "y": 209.95501708984375 + "x": 301.2140197753906, + "y": 209.9654998779297 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 167.35357666015625, - "y": 125.04727172851563 + "x": 169.502197265625, + "y": 125.36097717285156 }, - "direction": 0.6403761506080627, + "direction": 0.6355987191200256, "dropPoint": { - "x": 242.6632080078125, - "y": 181.00619506835938 + "x": 235.8140411376953, + "y": 174.16842651367188 }, "position": { - "x": 122.71715545654297, - "y": 91.78739929199219 + "x": 115.92682647705078, + "y": 85.83709716796875 }, "predictedTarget": { - "x": 298.9402770996094, - "y": 209.9450225830078 + "x": 301.0940246582031, + "y": 209.97549438476563 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 168.55638122558594, - "y": 125.94352722167969 + "x": 170.70925903320313, + "y": 126.25146484375 }, - "direction": 0.6403761506080627, + "direction": 0.6355987191200256, "dropPoint": { - "x": 242.6676483154297, - "y": 181.0059356689453 + "x": 235.81845092773438, + "y": 174.16827392578125 }, "position": { - "x": 123.91996002197266, - "y": 92.68364715576172 + "x": 117.13390350341797, + "y": 86.72758483886719 }, "predictedTarget": { - "x": 298.82025146484375, - "y": 209.9350128173828 + "x": 300.9740295410156, + "y": 209.98548889160156 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 169.75918579101563, - "y": 126.83976745605469 + "x": 171.91635131835938, + "y": 127.14195251464844 }, - "direction": 0.6403761506080627, + "direction": 0.6355987191200256, "dropPoint": { - "x": 242.67205810546875, - "y": 181.00572204589844 + "x": 235.82284545898438, + "y": 174.1681365966797 }, "position": { - "x": 125.12276458740234, - "y": 93.57989501953125 + "x": 118.34098052978516, + "y": 87.61807250976563 }, "predictedTarget": { - "x": 298.70025634765625, - "y": 209.92501831054688 + "x": 300.8540344238281, + "y": 209.99549865722656 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 170.99887084960938, - "y": 127.68647766113281 + "x": 173.1234130859375, + "y": 128.03244018554688 }, - "direction": 0.6392958164215088, + "direction": 0.6355987191200256, "dropPoint": { - "x": 242.50762939453125, - "y": 180.8496551513672 + "x": 235.82723999023438, + "y": 174.16802978515625 }, "position": { - "x": 126.3265380859375, - "y": 94.47483825683594 + "x": 119.54805755615234, + "y": 88.50856018066406 }, "predictedTarget": { - "x": 298.58026123046875, - "y": 209.91502380371094 + "x": 300.7340393066406, + "y": 210.0 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 172.20263671875, - "y": 128.5814208984375 + "x": 174.33050537109375, + "y": 128.9229278564453 }, - "direction": 0.6392958164215088, + "direction": 0.6355987191200256, "dropPoint": { - "x": 242.34600830078125, - "y": 180.6956329345703 + "x": 235.83157348632813, + "y": 174.16790771484375 }, "position": { - "x": 127.53031158447266, - "y": 95.36978149414063 + "x": 120.75513458251953, + "y": 89.3990478515625 }, "predictedTarget": { - "x": 298.46026611328125, - "y": 209.90501403808594 + "x": 300.6140441894531, + "y": 210.0 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 173.4064178466797, - "y": 129.4763641357422 + "x": 175.53756713867188, + "y": 129.81341552734375 }, - "direction": 0.6392958164215088, + "direction": 0.6355987191200256, "dropPoint": { - "x": 242.18594360351563, - "y": 180.54348754882813 + "x": 235.83595275878906, + "y": 174.1678466796875 }, "position": { - "x": 128.7340850830078, - "y": 96.26472473144531 + "x": 121.96221160888672, + "y": 90.28953552246094 }, "predictedTarget": { - "x": 298.34027099609375, - "y": 209.89501953125 + "x": 300.4940185546875, + "y": 210.0 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 174.61019897460938, - "y": 130.37130737304688 + "x": 176.74465942382813, + "y": 130.7039031982422 }, - "direction": 0.6392958164215088, + "direction": 0.6355987191200256, "dropPoint": { - "x": 242.02847290039063, - "y": 180.39376831054688 + "x": 235.84027099609375, + "y": 174.16778564453125 }, "position": { - "x": 129.9378662109375, - "y": 97.15966796875 + "x": 123.1692886352539, + "y": 91.18002319335938 }, "predictedTarget": { - "x": 298.2202453613281, - "y": 209.885009765625 + "x": 300.3740234375, + "y": 210.0 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 175.81398010253906, - "y": 131.26625061035156 + "x": 177.95172119140625, + "y": 131.59439086914063 }, - "direction": 0.6392958164215088, + "direction": 0.6355987191200256, "dropPoint": { - "x": 241.87258911132813, - "y": 180.24610900878906 + "x": 235.8446044921875, + "y": 174.16773986816406 }, "position": { - "x": 131.1416473388672, - "y": 98.05461120605469 + "x": 124.3763656616211, + "y": 92.07051086425781 }, "predictedTarget": { - "x": 298.1002502441406, - "y": 209.87501525878906 + "x": 300.2540283203125, + "y": 210.0 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 177.01776123046875, - "y": 132.16119384765625 + "x": 179.1588134765625, + "y": 132.48487854003906 }, - "direction": 0.6392958164215088, + "direction": 0.6355987191200256, "dropPoint": { - "x": 241.71878051757813, - "y": 180.10061645507813 + "x": 235.848876953125, + "y": 174.16770935058594 }, "position": { - "x": 132.34542846679688, - "y": 98.94955444335938 + "x": 125.58344268798828, + "y": 92.96099853515625 }, "predictedTarget": { - "x": 297.9802551269531, - "y": 209.86502075195313 + "x": 300.134033203125, + "y": 210.0 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 178.26039123535156, - "y": 133.0037841796875 + "x": 180.36587524414063, + "y": 133.3753662109375 }, - "direction": 0.6381552219390869, + "direction": 0.6355987191200256, "dropPoint": { - "x": 241.5670166015625, - "y": 179.95706176757813 + "x": 235.70321655273438, + "y": 174.03175354003906 }, "position": { - "x": 133.5502166748047, - "y": 99.84312438964844 + "x": 126.79051971435547, + "y": 93.85148620605469 }, "predictedTarget": { - "x": 297.8602600097656, - "y": 209.8550262451172 + "x": 300.0140380859375, + "y": 210.0 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 179.46517944335938, - "y": 133.89735412597656 + "x": 181.6199493408203, + "y": 134.20208740234375 }, - "direction": 0.6381552219390869, + "direction": 0.6344349980354309, "dropPoint": { - "x": 241.41802978515625, - "y": 179.81549072265625 + "x": 235.55999755859375, + "y": 173.8981475830078 }, "position": { - "x": 134.7550048828125, - "y": 100.7366943359375 + "x": 127.99862670898438, + "y": 94.74057006835938 }, "predictedTarget": { - "x": 297.7402648925781, - "y": 209.8450164794922 + "x": 299.89404296875, + "y": 210.0 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 180.6699676513672, - "y": 134.79092407226563 + "x": 182.82806396484375, + "y": 135.09115600585938 }, - "direction": 0.6381552219390869, + "direction": 0.6344349980354309, "dropPoint": { - "x": 241.2707061767578, - "y": 179.67605590820313 + "x": 235.41885375976563, + "y": 173.76602172851563 }, "position": { - "x": 135.9597930908203, - "y": 101.63026428222656 + "x": 129.2067413330078, + "y": 95.62965393066406 }, "predictedTarget": { - "x": 297.6202697753906, - "y": 209.83502197265625 + "x": 299.7740478515625, + "y": 210.0 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 181.874755859375, - "y": 135.6844940185547 + "x": 184.0361785888672, + "y": 135.98025512695313 }, - "direction": 0.6381552219390869, + "direction": 0.6344349980354309, "dropPoint": { - "x": 241.12583923339844, - "y": 179.53860473632813 + "x": 235.28012084960938, + "y": 173.63623046875 }, "position": { - "x": 137.16458129882813, - "y": 102.52383422851563 + "x": 130.41485595703125, + "y": 96.51873779296875 }, "predictedTarget": { - "x": 297.5002746582031, - "y": 209.8250274658203 + "x": 299.654052734375, + "y": 210.0 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 183.13897705078125, - "y": 136.49781799316406 + "x": 185.24429321289063, + "y": 136.86932373046875 }, - "direction": 0.6364085674285889, + "direction": 0.6344349980354309, "dropPoint": { - "x": 241.24627685546875, - "y": 179.437744140625 + "x": 235.1431121826172, + "y": 173.50848388671875 }, "position": { - "x": 138.37094116210938, - "y": 103.41529846191406 + "x": 131.6229705810547, + "y": 97.40782165527344 }, "predictedTarget": { - "x": 297.3802795410156, - "y": 209.8150177001953 + "x": 299.5340270996094, + "y": 209.9945068359375 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 184.3851318359375, - "y": 137.33534240722656 + "x": 186.45240783691406, + "y": 137.7584228515625 }, - "direction": 0.6352359056472778, + "direction": 0.6344349980354309, "dropPoint": { - "x": 241.36471557617188, - "y": 179.33868408203125 + "x": 235.0081787109375, + "y": 173.38290405273438 }, "position": { - "x": 139.57833862304688, - "y": 104.30535125732422 + "x": 132.83108520507813, + "y": 98.29690551757813 }, "predictedTarget": { - "x": 297.2602844238281, - "y": 209.80502319335938 + "x": 299.4140319824219, + "y": 209.9844970703125 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 185.63211059570313, - "y": 138.17166137695313 + "x": 187.6605224609375, + "y": 138.64749145507813 }, - "direction": 0.6340684294700623, + "direction": 0.6344349980354309, "dropPoint": { - "x": 241.48171997070313, - "y": 179.24148559570313 + "x": 234.87530517578125, + "y": 173.25930786132813 }, "position": { - "x": 140.78677368164063, - "y": 105.1939926147461 + "x": 134.03919982910156, + "y": 99.18598937988281 }, "predictedTarget": { - "x": 297.1402587890625, - "y": 209.7900390625 + "x": 299.2940368652344, + "y": 209.97450256347656 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 186.87979125976563, - "y": 139.00686645507813 + "x": 188.9102783203125, + "y": 139.4799346923828 }, - "direction": 0.632908821105957, + "direction": 0.6334022879600525, "dropPoint": { - "x": 241.59646606445313, - "y": 179.14590454101563 + "x": 234.744873046875, + "y": 173.1380615234375 }, "position": { - "x": 141.99624633789063, - "y": 106.08123016357422 + "x": 135.24822998046875, + "y": 100.07382202148438 }, "predictedTarget": { - "x": 297.020263671875, - "y": 209.77005004882813 + "x": 299.1740417480469, + "y": 209.96450805664063 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 188.12826538085938, - "y": 139.8408660888672 + "x": 190.1193084716797, + "y": 140.36776733398438 }, - "direction": 0.6317543387413025, + "direction": 0.6334022879600525, "dropPoint": { - "x": 241.71026611328125, - "y": 179.05245971679688 + "x": 234.61648559570313, + "y": 173.0184326171875 }, "position": { - "x": 143.2067413330078, - "y": 106.96707153320313 + "x": 136.45726013183594, + "y": 100.96165466308594 }, "predictedTarget": { - "x": 296.9002685546875, - "y": 209.7500457763672 + "x": 299.0540466308594, + "y": 209.95449829101563 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 189.37738037109375, - "y": 140.6738739013672 + "x": 191.32833862304688, + "y": 141.25559997558594 }, - "direction": 0.6306094527244568, + "direction": 0.6334022879600525, "dropPoint": { - "x": 241.82139587402344, - "y": 178.96055603027344 + "x": 234.49050903320313, + "y": 172.90084838867188 }, "position": { - "x": 144.41824340820313, - "y": 107.85152435302734 + "x": 137.66629028320313, + "y": 101.8494873046875 }, "predictedTarget": { - "x": 296.7802734375, - "y": 209.73004150390625 + "x": 298.93402099609375, + "y": 209.9445037841797 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 190.62721252441406, - "y": 141.50575256347656 + "x": 192.59225463867188, + "y": 142.06857299804688 }, - "direction": 0.6294711828231812, + "direction": 0.6320387125015259, "dropPoint": { - "x": 241.93118286132813, - "y": 178.87069702148438 + "x": 234.59048461914063, + "y": 172.82144165039063 }, "position": { - "x": 145.63075256347656, - "y": 108.73460388183594 + "x": 138.87652587890625, + "y": 102.73567199707031 }, "predictedTarget": { - "x": 296.6602783203125, - "y": 209.71005249023438 + "x": 298.81402587890625, + "y": 209.9344940185547 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 191.877685546875, - "y": 142.33663940429688 + "x": 193.84335327148438, + "y": 142.89889526367188 }, - "direction": 0.6283420920372009, + "direction": 0.631022036075592, "dropPoint": { - "x": 242.03875732421875, - "y": 178.7825927734375 + "x": 234.68853759765625, + "y": 172.74371337890625 }, "position": { - "x": 146.84425354003906, - "y": 109.6163101196289 + "x": 140.08766174316406, + "y": 103.6206283569336 }, "predictedTarget": { - "x": 296.5402526855469, - "y": 209.69004821777344 + "x": 298.69403076171875, + "y": 209.92449951171875 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 193.12887573242188, - "y": 143.16641235351563 + "x": 195.0950164794922, + "y": 143.72833251953125 }, - "direction": 0.6272199153900146, + "direction": 0.6300122141838074, "dropPoint": { - "x": 242.14447021484375, - "y": 178.69613647460938 + "x": 234.78518676757813, + "y": 172.66775512695313 }, "position": { - "x": 148.05874633789063, - "y": 110.49665069580078 + "x": 141.29969787597656, + "y": 104.50436401367188 }, "predictedTarget": { - "x": 296.4202575683594, - "y": 209.6700439453125 + "x": 298.57403564453125, + "y": 209.9145050048828 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 194.3807373046875, - "y": 143.99513244628906 + "x": 196.34718322753906, + "y": 144.55697631835938 }, - "direction": 0.6261048316955566, + "direction": 0.6290110349655151, "dropPoint": { - "x": 242.24884033203125, - "y": 178.6116943359375 + "x": 234.87973022460938, + "y": 172.59329223632813 }, "position": { - "x": 149.2742156982422, - "y": 111.37564086914063 + "x": 142.5126190185547, + "y": 105.38687896728516 }, "predictedTarget": { - "x": 296.3002624511719, - "y": 209.65005493164063 + "x": 298.45404052734375, + "y": 209.9044952392578 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 195.59620666503906, - "y": 144.87411499023438 + "x": 197.5601043701172, + "y": 145.43948364257813 }, - "direction": 0.6261048316955566, + "direction": 0.6290110349655151, "dropPoint": { - "x": 242.12844848632813, - "y": 178.59039306640625 + "x": 234.97325134277344, + "y": 172.5208282470703 }, "position": { - "x": 150.48968505859375, - "y": 112.25463104248047 + "x": 143.7255401611328, + "y": 106.26939392089844 }, "predictedTarget": { - "x": 296.1802673339844, - "y": 209.6300506591797 + "x": 298.3340148925781, + "y": 209.89450073242188 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 196.81167602539063, - "y": 145.75311279296875 + "x": 198.85247802734375, + "y": 146.21255493164063 }, - "direction": 0.6261048316955566, + "direction": 0.6270242929458618, "dropPoint": { - "x": 242.00941467285156, - "y": 178.5685577392578 + "x": 235.06399536132813, + "y": 172.45022583007813 }, "position": { - "x": 151.7051544189453, - "y": 113.13362121582031 + "x": 144.94020080566406, + "y": 107.14949798583984 }, "predictedTarget": { - "x": 296.06024169921875, - "y": 209.61004638671875 + "x": 298.2140197753906, + "y": 209.88449096679688 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 197.98025512695313, - "y": 146.69686889648438 + "x": 200.067138671875, + "y": 147.0926513671875 }, - "direction": 0.6275036931037903, + "direction": 0.6270242929458618, "dropPoint": { - "x": 241.893310546875, - "y": 178.54693603515625 + "x": 235.1537322998047, + "y": 172.38104248046875 }, "position": { - "x": 152.91940307617188, - "y": 114.01431274414063 + "x": 146.1548614501953, + "y": 108.02960205078125 }, "predictedTarget": { - "x": 295.9452209472656, - "y": 209.5900421142578 + "x": 298.0940246582031, + "y": 209.87449645996094 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 199.1945037841797, - "y": 147.5775604248047 + "x": 201.359619140625, + "y": 147.86517333984375 }, - "direction": 0.6275036931037903, + "direction": 0.6250739693641663, "dropPoint": { - "x": 241.77865600585938, - "y": 178.52593994140625 + "x": 235.24110412597656, + "y": 172.31396484375 }, "position": { - "x": 154.13365173339844, - "y": 114.89500427246094 + "x": 147.37124633789063, + "y": 108.90734100341797 }, "predictedTarget": { - "x": 295.8352355957031, - "y": 209.57005310058594 + "x": 297.9740295410156, + "y": 209.864501953125 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 200.40875244140625, - "y": 148.458251953125 + "x": 202.57598876953125, + "y": 148.742919921875 }, - "direction": 0.6275036931037903, + "direction": 0.6250739693641663, "dropPoint": { - "x": 241.66644287109375, - "y": 178.50462341308594 + "x": 235.32705688476563, + "y": 172.24794006347656 }, "position": { - "x": 155.347900390625, - "y": 115.77569580078125 + "x": 148.58763122558594, + "y": 109.78507995605469 }, "predictedTarget": { - "x": 295.7252197265625, - "y": 209.550048828125 + "x": 297.8540344238281, + "y": 209.85450744628906 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 201.5767822265625, - "y": 149.40255737304688 + "x": 203.8685760498047, + "y": 149.5148468017578 }, - "direction": 0.628879189491272, + "direction": 0.6231585741043091, "dropPoint": { - "x": 241.5561065673828, - "y": 178.48350524902344 + "x": 235.41131591796875, + "y": 172.18423461914063 }, "position": { - "x": 156.56092834472656, - "y": 116.65805053710938 + "x": 149.80569458007813, + "y": 110.66048431396484 }, "predictedTarget": { - "x": 295.615234375, - "y": 209.53004455566406 + "x": 297.7340393066406, + "y": 209.84449768066406 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 202.78981018066406, - "y": 150.284912109375 + "x": 205.08663940429688, + "y": 150.39024353027344 }, - "direction": 0.628879189491272, + "direction": 0.6231585741043091, "dropPoint": { - "x": 241.44747924804688, - "y": 178.46273803710938 + "x": 235.31027221679688, + "y": 172.16259765625 }, "position": { - "x": 157.77395629882813, - "y": 117.5404052734375 + "x": 151.0237579345703, + "y": 111.535888671875 }, "predictedTarget": { - "x": 295.5052185058594, - "y": 209.51004028320313 + "x": 297.6140441894531, + "y": 209.83450317382813 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 204.00283813476563, - "y": 151.16726684570313 + "x": 206.30470275878906, + "y": 151.26565551757813 }, - "direction": 0.628879189491272, + "direction": 0.6231585741043091, "dropPoint": { - "x": 241.34097290039063, - "y": 178.44178771972656 + "x": 235.21066284179688, + "y": 172.14056396484375 }, "position": { - "x": 158.9869842529297, - "y": 118.42276000976563 + "x": 152.2418212890625, + "y": 112.41129302978516 }, "predictedTarget": { - "x": 295.3952331542969, - "y": 209.4900360107422 + "x": 297.4940490722656, + "y": 209.8245086669922 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 205.1704864501953, - "y": 152.11192321777344 + "x": 207.47586059570313, + "y": 152.20623779296875 }, - "direction": 0.6302273273468018, + "direction": 0.6243380904197693, "dropPoint": { - "x": 241.23707580566406, - "y": 178.42115783691406 + "x": 235.11383056640625, + "y": 172.11878967285156 }, "position": { - "x": 160.19882202148438, - "y": 119.30675506591797 + "x": 153.45884704589844, + "y": 113.28813171386719 }, "predictedTarget": { - "x": 295.28521728515625, - "y": 209.4700469970703 + "x": 297.3740234375, + "y": 209.8144989013672 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 206.38232421875, - "y": 152.99591064453125 + "x": 208.69288635253906, + "y": 153.08306884765625 }, - "direction": 0.6302273273468018, + "direction": 0.6243380904197693, "dropPoint": { - "x": 241.13449096679688, - "y": 178.4008331298828 + "x": 235.0184326171875, + "y": 172.09765625 }, "position": { - "x": 161.41065979003906, - "y": 120.19075012207031 + "x": 154.67587280273438, + "y": 114.16497039794922 }, "predictedTarget": { - "x": 295.17523193359375, - "y": 209.45004272460938 + "x": 297.2540283203125, + "y": 209.80450439453125 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 207.5941619873047, - "y": 153.87991333007813 + "x": 209.909912109375, + "y": 153.95989990234375 }, - "direction": 0.6302273273468018, + "direction": 0.6243380904197693, "dropPoint": { - "x": 241.11843872070313, - "y": 178.30079650878906 + "x": 234.92539978027344, + "y": 172.0763397216797 }, "position": { - "x": 162.62249755859375, - "y": 121.07474517822266 + "x": 155.8928985595703, + "y": 115.04180908203125 }, "predictedTarget": { - "x": 295.0652160644531, - "y": 209.43003845214844 + "x": 297.134033203125, + "y": 209.78900146484375 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 208.80599975585938, - "y": 154.76390075683594 + "x": 211.08119201660156, + "y": 154.90017700195313 }, - "direction": 0.6302273273468018, + "direction": 0.6254869699478149, "dropPoint": { - "x": 241.10227966308594, - "y": 178.20318603515625 + "x": 234.83424377441406, + "y": 172.05523681640625 }, "position": { - "x": 163.83433532714844, - "y": 121.958740234375 + "x": 157.10891723632813, + "y": 115.9200439453125 }, "predictedTarget": { - "x": 294.9552307128906, - "y": 209.4100341796875 + "x": 297.0140380859375, + "y": 209.76901245117188 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 210.07566833496094, - "y": 155.56849670410156 + "x": 212.29721069335938, + "y": 155.77841186523438 }, - "direction": 0.6285091638565063, + "direction": 0.6254869699478149, "dropPoint": { - "x": 241.0860595703125, - "y": 178.10791015625 + "x": 234.74472045898438, + "y": 172.03456115722656 }, "position": { - "x": 165.04769897460938, - "y": 122.84065246582031 + "x": 158.32493591308594, + "y": 116.79827880859375 }, "predictedTarget": { - "x": 294.84521484375, - "y": 209.3850555419922 + "x": 296.89404296875, + "y": 209.74900817871094 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 211.28903198242188, - "y": 156.45040893554688 + "x": 213.5132293701172, + "y": 156.65664672851563 }, - "direction": 0.6285091638565063, + "direction": 0.6254869699478149, "dropPoint": { - "x": 241.07028198242188, - "y": 178.01400756835938 + "x": 234.65731811523438, + "y": 172.01382446289063 }, "position": { - "x": 166.2610626220703, - "y": 123.72256469726563 + "x": 159.54095458984375, + "y": 117.676513671875 }, "predictedTarget": { - "x": 294.7352294921875, - "y": 209.3550567626953 + "x": 296.7740478515625, + "y": 209.72900390625 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 212.55014038085938, - "y": 157.2665252685547 + "x": 214.68479919433594, + "y": 157.5963592529297 }, - "direction": 0.6270869970321655, + "direction": 0.6266013383865356, "dropPoint": { - "x": 241.05447387695313, - "y": 177.92254638671875 + "x": 234.57235717773438, + "y": 171.993408203125 }, "position": { - "x": 167.47567749023438, - "y": 124.60274505615234 + "x": 160.75599670410156, + "y": 118.55610656738281 }, "predictedTarget": { - "x": 294.6252136230469, - "y": 209.32505798339844 + "x": 296.6540222167969, + "y": 209.70901489257813 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 213.76475524902344, - "y": 158.14669799804688 + "x": 215.89984130859375, + "y": 158.4759521484375 }, - "direction": 0.6270869970321655, + "direction": 0.6266013383865356, "dropPoint": { - "x": 241.039306640625, - "y": 177.83265686035156 + "x": 234.48873901367188, + "y": 171.97340393066406 }, "position": { - "x": 168.69029235839844, - "y": 125.48292541503906 + "x": 161.97103881835938, + "y": 119.43569946289063 }, "predictedTarget": { - "x": 294.5152282714844, - "y": 209.29505920410156 + "x": 296.5340270996094, + "y": 209.6890106201172 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 215.02655029296875, - "y": 158.961669921875 + "x": 217.11488342285156, + "y": 159.3555450439453 }, - "direction": 0.6256789565086365, + "direction": 0.6266013383865356, "dropPoint": { - "x": 241.02377319335938, - "y": 177.7451171875 + "x": 234.47238159179688, + "y": 171.89337158203125 }, "position": { - "x": 169.90614318847656, - "y": 126.36139678955078 + "x": 163.1860809326172, + "y": 120.31529235839844 }, "predictedTarget": { - "x": 294.40521240234375, - "y": 209.2650604248047 + "x": 296.4140319824219, + "y": 209.66900634765625 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 216.24240112304688, - "y": 159.84014892578125 + "x": 218.32992553710938, + "y": 160.23513793945313 }, - "direction": 0.6256789565086365, + "direction": 0.6266013383865356, "dropPoint": { - "x": 241.0086669921875, - "y": 177.65921020507813 + "x": 234.45599365234375, + "y": 171.81565856933594 }, "position": { - "x": 171.1219940185547, - "y": 127.2398681640625 + "x": 164.401123046875, + "y": 121.19488525390625 }, "predictedTarget": { - "x": 294.29522705078125, - "y": 209.2350616455078 + "x": 296.2940368652344, + "y": 209.6490020751953 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 217.5047607421875, - "y": 160.65415954589844 + "x": 219.60372924804688, + "y": 161.03341674804688 }, - "direction": 0.6242883801460266, + "direction": 0.6251277327537537, "dropPoint": { - "x": 240.993408203125, - "y": 177.575439453125 + "x": 234.4395751953125, + "y": 171.74014282226563 }, "position": { - "x": 172.3390655517578, - "y": 128.1166534423828 + "x": 165.61746215820313, + "y": 122.07268524169922 }, "predictedTarget": { - "x": 294.1852111816406, - "y": 209.20506286621094 + "x": 296.17401123046875, + "y": 209.62901306152344 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 218.72183227539063, - "y": 161.53094482421875 + "x": 220.820068359375, + "y": 161.91122436523438 }, - "direction": 0.6242883801460266, + "direction": 0.6251277327537537, "dropPoint": { - "x": 240.97862243652344, - "y": 177.49343872070313 + "x": 234.42369079589844, + "y": 171.6659393310547 }, "position": { - "x": 173.55613708496094, - "y": 128.99343872070313 + "x": 166.83380126953125, + "y": 122.95048522949219 }, "predictedTarget": { - "x": 294.0752258300781, - "y": 209.17506408691406 + "x": 296.05401611328125, + "y": 209.6090087890625 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 219.9867706298828, - "y": 162.3411865234375 + "x": 222.08416748046875, + "y": 162.7227783203125 }, - "direction": 0.6228545308113098, + "direction": 0.6239281296730042, "dropPoint": { - "x": 240.962158203125, - "y": 177.40628051757813 + "x": 234.40782165527344, + "y": 171.5940399169922 }, "position": { - "x": 174.7744598388672, - "y": 129.86846923828125 + "x": 168.0511932373047, + "y": 123.82682800292969 }, "predictedTarget": { - "x": 293.9652099609375, - "y": 209.1450653076172 + "x": 295.93951416015625, + "y": 209.58900451660156 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 221.20509338378906, - "y": 163.21621704101563 + "x": 223.30154418945313, + "y": 163.59912109375 }, - "direction": 0.6228545308113098, + "direction": 0.6239281296730042, "dropPoint": { - "x": 240.94618225097656, - "y": 177.3209228515625 + "x": 234.39263916015625, + "y": 171.5236358642578 }, "position": { - "x": 175.99278259277344, - "y": 130.74349975585938 + "x": 169.26858520507813, + "y": 124.70317077636719 }, "predictedTarget": { - "x": 293.855224609375, - "y": 209.1150665283203 + "x": 295.82952880859375, + "y": 209.5690155029297 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 222.47265625, - "y": 164.0225830078125 + "x": 224.5658416748047, + "y": 164.41021728515625 }, - "direction": 0.6213767528533936, + "direction": 0.6227478981018066, "dropPoint": { - "x": 240.93006896972656, - "y": 177.2379150390625 + "x": 234.37722778320313, + "y": 171.4554443359375 }, "position": { - "x": 177.21240234375, - "y": 131.61672973632813 + "x": 170.48699951171875, + "y": 125.57807159423828 }, "predictedTarget": { - "x": 293.7452087402344, - "y": 209.08009338378906 + "x": 295.7195129394531, + "y": 209.54901123046875 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 223.6922607421875, - "y": 164.89581298828125 + "x": 225.7842559814453, + "y": 165.28512573242188 }, - "direction": 0.6213767528533936, + "direction": 0.6227478981018066, "dropPoint": { - "x": 240.91433715820313, - "y": 177.15635681152344 + "x": 234.36227416992188, + "y": 171.38876342773438 }, "position": { - "x": 178.43202209472656, - "y": 132.48995971679688 + "x": 171.70541381835938, + "y": 126.45297241210938 }, "predictedTarget": { - "x": 293.6352233886719, - "y": 209.0400848388672 + "x": 295.6095275878906, + "y": 209.5290069580078 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 224.96044921875, - "y": 165.70111083984375 + "x": 227.048583984375, + "y": 166.09600830078125 }, - "direction": 0.6199157238006592, + "direction": 0.6215905547142029, "dropPoint": { - "x": 240.89822387695313, - "y": 177.0771942138672 + "x": 234.3472900390625, + "y": 171.32415771484375 }, "position": { - "x": 179.6529083251953, - "y": 133.3614044189453 + "x": 172.9248504638672, + "y": 127.32646942138672 }, "predictedTarget": { - "x": 293.52520751953125, - "y": 209.00009155273438 + "x": 295.49951171875, + "y": 209.50900268554688 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 226.18133544921875, - "y": 166.5725555419922 + "x": 228.26803588867188, + "y": 166.96949768066406 }, - "direction": 0.6199157238006592, + "direction": 0.6215905547142029, "dropPoint": { - "x": 240.88284301757813, - "y": 176.9995574951172 + "x": 234.33282470703125, + "y": 171.26113891601563 }, "position": { - "x": 180.87379455566406, - "y": 134.23284912109375 + "x": 174.144287109375, + "y": 128.19996643066406 }, "predictedTarget": { - "x": 293.41522216796875, - "y": 208.9600830078125 + "x": 295.3895263671875, + "y": 209.48899841308594 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 227.45021057128906, - "y": 167.37667846679688 + "x": 229.53477478027344, + "y": 167.77687072753906 }, - "direction": 0.6184696555137634, + "direction": 0.6203962564468384, "dropPoint": { - "x": 240.8673858642578, - "y": 176.9243621826172 + "x": 234.31642150878906, + "y": 171.1934051513672 }, "position": { - "x": 182.095947265625, - "y": 135.1025390625 + "x": 175.36476135253906, + "y": 129.07200622558594 }, "predictedTarget": { - "x": 293.30523681640625, - "y": 208.9200897216797 + "x": 295.2795104980469, + "y": 209.468994140625 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 228.67236328125, - "y": 168.24636840820313 + "x": 230.7552490234375, + "y": 168.64891052246094 }, - "direction": 0.6184696555137634, + "direction": 0.6203962564468384, "dropPoint": { - "x": 240.85240173339844, - "y": 176.85076904296875 + "x": 234.30056762695313, + "y": 171.1273193359375 }, "position": { - "x": 183.31809997558594, - "y": 135.97222900390625 + "x": 176.58523559570313, + "y": 129.9440460205078 }, "predictedTarget": { - "x": 293.1952209472656, - "y": 208.8800811767578 + "x": 295.1695251464844, + "y": 209.44900512695313 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 229.9417724609375, - "y": 169.04953002929688 + "x": 232.0244140625, + "y": 169.45269775390625 }, - "direction": 0.6170419454574585, + "direction": 0.6191645860671997, "dropPoint": { - "x": 240.83724975585938, - "y": 176.7793426513672 + "x": 234.28466796875, + "y": 171.06346130371094 }, "position": { - "x": 184.54148864746094, - "y": 136.8401641845703 + "x": 177.80677795410156, + "y": 130.8145751953125 }, "predictedTarget": { - "x": 293.0852355957031, - "y": 208.840087890625 + "x": 295.05950927734375, + "y": 209.4290008544922 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 231.1651611328125, - "y": 169.91746520996094 + "x": 233.24595642089844, + "y": 170.32322692871094 }, - "direction": 0.6170419454574585, + "direction": 0.6191645860671997, "dropPoint": { - "x": 240.82260131835938, - "y": 176.70957946777344 + "x": 234.2692413330078, + "y": 171.00094604492188 }, "position": { - "x": 185.76487731933594, - "y": 137.70809936523438 + "x": 179.0283203125, + "y": 131.6851043701172 }, "predictedTarget": { - "x": 292.9752197265625, - "y": 208.80007934570313 + "x": 294.94952392578125, + "y": 209.40899658203125 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 232.3885498046875, - "y": 170.785400390625 + "x": 234.51522827148438, + "y": 171.12669372558594 }, - "direction": 0.6170419454574585, + "direction": 0.6179553866386414, "dropPoint": { - "x": 240.82955932617188, - "y": 176.7122344970703 + "x": 234.25357055664063, + "y": 170.94068908691406 }, "position": { - "x": 186.98826599121094, - "y": 138.57603454589844 + "x": 180.25091552734375, + "y": 132.5541534423828 }, "predictedTarget": { - "x": 292.865234375, - "y": 208.7600860595703 + "x": 294.8395080566406, + "y": 209.3834991455078 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 233.6119384765625, - "y": 171.65333557128906 + "x": 235.73782348632813, + "y": 171.99574279785156 }, - "direction": 0.6170419454574585, + "direction": 0.6179553866386414, "dropPoint": { - "x": 240.83653259277344, - "y": 176.71495056152344 + "x": 234.2386474609375, + "y": 170.88186645507813 }, "position": { - "x": 188.21165466308594, - "y": 139.4439697265625 + "x": 181.4735107421875, + "y": 133.42320251464844 }, "predictedTarget": { - "x": 292.7552185058594, - "y": 208.72007751464844 + "x": 294.7295227050781, + "y": 209.35350036621094 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 234.8353271484375, - "y": 172.52127075195313 + "x": 237.0072021484375, + "y": 172.7989044189453 }, - "direction": 0.6170419454574585, + "direction": 0.6167684197425842, "dropPoint": { - "x": 240.8434600830078, - "y": 176.7177276611328 + "x": 234.22372436523438, + "y": 170.82530212402344 }, "position": { - "x": 189.43504333496094, - "y": 140.31190490722656 + "x": 182.6971435546875, + "y": 134.29080200195313 }, "predictedTarget": { - "x": 292.65020751953125, - "y": 208.68008422851563 + "x": 294.6195068359375, + "y": 209.32350158691406 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 236.0587158203125, - "y": 173.3892059326172 + "x": 238.2308349609375, + "y": 173.66650390625 }, - "direction": 0.6170419454574585, + "direction": 0.6167684197425842, "dropPoint": { - "x": 240.85035705566406, - "y": 176.72064208984375 + "x": 234.2093505859375, + "y": 170.77020263671875 }, "position": { - "x": 190.65843200683594, - "y": 141.17984008789063 + "x": 183.9207763671875, + "y": 135.1584014892578 }, "predictedTarget": { - "x": 292.5502014160156, - "y": 208.64007568359375 + "x": 294.509521484375, + "y": 209.2935028076172 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 237.2821044921875, - "y": 174.25714111328125 + "x": 239.50018310546875, + "y": 174.46954345703125 }, - "direction": 0.6170419454574585, + "direction": 0.615606427192688, "dropPoint": { - "x": 240.85743713378906, - "y": 176.72348022460938 + "x": 234.1949462890625, + "y": 170.7171630859375 }, "position": { - "x": 191.88182067871094, - "y": 142.0477752685547 + "x": 185.14541625976563, + "y": 136.0245819091797 }, "predictedTarget": { - "x": 292.4502258300781, - "y": 208.60008239746094 + "x": 294.3995056152344, + "y": 209.2635040283203 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 238.5054931640625, - "y": 175.1250762939453 + "x": 240.72482299804688, + "y": 175.33572387695313 }, - "direction": 0.6170419454574585, + "direction": 0.615606427192688, "dropPoint": { - "x": 240.8642578125, - "y": 176.7264862060547 + "x": 234.1810760498047, + "y": 170.66563415527344 }, "position": { - "x": 193.10520935058594, - "y": 142.91571044921875 + "x": 186.37005615234375, + "y": 136.89076232910156 }, "predictedTarget": { - "x": 292.3502197265625, - "y": 208.56007385253906 + "x": 294.28948974609375, + "y": 209.23350524902344 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 239.76290893554688, - "y": 175.9450225830078 + "x": 241.949462890625, + "y": 176.201904296875 }, - "direction": 0.6160130500793457, + "direction": 0.615606427192688, "dropPoint": { - "x": 240.87103271484375, - "y": 176.72947692871094 + "x": 234.18789672851563, + "y": 170.66854858398438 }, "position": { - "x": 194.32949829101563, - "y": 143.7823944091797 + "x": 187.59469604492188, + "y": 137.75694274902344 }, "predictedTarget": { - "x": 292.2502136230469, - "y": 208.52008056640625 + "x": 294.17950439453125, + "y": 209.20350646972656 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 240.98719787597656, - "y": 176.81170654296875 + "x": 243.17410278320313, + "y": 177.06808471679688 }, - "direction": 0.6160130500793457, + "direction": 0.615606427192688, "dropPoint": { - "x": 240.87814331054688, - "y": 176.73178100585938 + "x": 234.19467163085938, + "y": 170.67153930664063 }, "position": { - "x": 195.5537872314453, - "y": 144.64907836914063 + "x": 188.8193359375, + "y": 138.6231231689453 }, "predictedTarget": { - "x": 292.15020751953125, - "y": 208.48008728027344 + "x": 294.0694885253906, + "y": 209.1735076904297 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 242.21148681640625, - "y": 177.6783905029297 + "x": 244.39874267578125, + "y": 177.93426513671875 }, - "direction": 0.6160130500793457, + "direction": 0.615606427192688, "dropPoint": { - "x": 240.88528442382813, - "y": 176.73435974121094 + "x": 234.201416015625, + "y": 170.67457580566406 }, "position": { - "x": 196.778076171875, - "y": 145.51576232910156 + "x": 190.04397583007813, + "y": 139.4893035888672 }, "predictedTarget": { - "x": 292.0502014160156, - "y": 208.44007873535156 + "x": 293.9595031738281, + "y": 209.1435089111328 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 243.43577575683594, - "y": 178.54507446289063 + "x": 245.62338256835938, + "y": 178.80044555664063 }, - "direction": 0.6160130500793457, + "direction": 0.615606427192688, "dropPoint": { - "x": 240.89236450195313, - "y": 176.73678588867188 + "x": 234.20819091796875, + "y": 170.67774963378906 }, "position": { - "x": 198.0023651123047, - "y": 146.3824462890625 + "x": 191.26861572265625, + "y": 140.35548400878906 }, "predictedTarget": { - "x": 291.9501953125, - "y": 208.40008544921875 + "x": 293.8494873046875, + "y": 209.11351013183594 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 244.66006469726563, - "y": 179.41175842285156 + "x": 246.8480224609375, + "y": 179.6666259765625 }, - "direction": 0.6160130500793457, + "direction": 0.615606427192688, "dropPoint": { - "x": 240.87533569335938, - "y": 176.67408752441406 + "x": 234.21499633789063, + "y": 170.68087768554688 }, "position": { - "x": 199.22665405273438, - "y": 147.24913024902344 + "x": 192.49325561523438, + "y": 141.22166442871094 }, "predictedTarget": { - "x": 291.8502197265625, - "y": 208.36007690429688 + "x": 293.739501953125, + "y": 209.0780029296875 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 245.94068908691406, - "y": 180.19869995117188 + "x": 248.07266235351563, + "y": 180.53280639648438 }, - "direction": 0.6143049597740173, + "direction": 0.615606427192688, "dropPoint": { - "x": 240.8580322265625, - "y": 176.61366271972656 + "x": 234.22164916992188, + "y": 170.68417358398438 }, "position": { - "x": 200.45240783691406, - "y": 148.1137237548828 + "x": 193.7178955078125, + "y": 142.0878448486328 }, "predictedTarget": { - "x": 291.7502136230469, - "y": 208.32008361816406 + "x": 293.6295166015625, + "y": 209.0380096435547 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 247.16644287109375, - "y": 181.06329345703125 + "x": 249.29730224609375, + "y": 181.39898681640625 }, - "direction": 0.6143049597740173, + "direction": 0.615606427192688, "dropPoint": { - "x": 240.8413543701172, - "y": 176.55462646484375 + "x": 234.2282257080078, + "y": 170.6874542236328 }, "position": { - "x": 201.67816162109375, - "y": 148.9783172607422 + "x": 194.94253540039063, + "y": 142.9540252685547 }, "predictedTarget": { - "x": 291.65020751953125, - "y": 208.2751007080078 + "x": 293.5195007324219, + "y": 208.9980010986328 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 248.4438018798828, - "y": 181.85458374023438 + "x": 250.52194213867188, + "y": 182.26516723632813 }, - "direction": 0.6127370595932007, + "direction": 0.615606427192688, "dropPoint": { - "x": 240.8242950439453, - "y": 176.49807739257813 + "x": 234.23471069335938, + "y": 170.69073486328125 }, "position": { - "x": 202.9052734375, - "y": 149.84097290039063 + "x": 196.16717529296875, + "y": 143.82020568847656 }, "predictedTarget": { - "x": 291.5502014160156, - "y": 208.22509765625 + "x": 293.4095153808594, + "y": 208.9580078125 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 249.67091369628906, - "y": 182.71725463867188 + "x": 251.74658203125, + "y": 183.13134765625 }, - "direction": 0.6127370595932007, + "direction": 0.615606427192688, "dropPoint": { - "x": 240.80801391601563, - "y": 176.44297790527344 + "x": 234.2412109375, + "y": 170.6942138671875 }, "position": { - "x": 204.13238525390625, - "y": 150.70362854003906 + "x": 197.39181518554688, + "y": 144.68638610839844 }, "predictedTarget": { - "x": 291.4501953125, - "y": 208.1750946044922 + "x": 293.29949951171875, + "y": 208.91799926757813 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 250.9489288330078, - "y": 183.5074005126953 + "x": 253.0115509033203, + "y": 183.94046020507813 }, - "direction": 0.6111873388290405, + "direction": 0.6145797371864319, "dropPoint": { - "x": 240.79153442382813, - "y": 176.39024353027344 + "x": 234.24758911132813, + "y": 170.6976318359375 }, "position": { - "x": 205.36083984375, - "y": 151.56439208984375 + "x": 198.61734008789063, + "y": 145.5513153076172 }, "predictedTarget": { - "x": 291.3502197265625, - "y": 208.12510681152344 + "x": 293.18951416015625, + "y": 208.8780059814453 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 252.17738342285156, - "y": 184.3681640625 + "x": 254.23707580566406, + "y": 184.80538940429688 }, - "direction": 0.6111873388290405, + "direction": 0.6145797371864319, "dropPoint": { - "x": 240.7758331298828, - "y": 176.3389892578125 + "x": 234.23170471191406, + "y": 170.6526641845703 }, "position": { - "x": 206.58929443359375, - "y": 152.42515563964844 + "x": 199.84286499023438, + "y": 146.41624450683594 }, "predictedTarget": { - "x": 291.2502136230469, - "y": 208.07510375976563 + "x": 293.0794982910156, + "y": 208.83799743652344 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 253.45591735839844, - "y": 185.1573486328125 + "x": 255.5124053955078, + "y": 185.5996551513672 }, - "direction": 0.60965895652771, + "direction": 0.6133100390434265, "dropPoint": { - "x": 240.7598419189453, - "y": 176.29025268554688 + "x": 234.21572875976563, + "y": 170.60983276367188 }, "position": { - "x": 207.81906127929688, - "y": 153.28404235839844 + "x": 201.06948852539063, + "y": 147.2796173095703 }, "predictedTarget": { - "x": 291.15020751953125, - "y": 208.0251007080078 + "x": 292.9695129394531, + "y": 208.79800415039063 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 254.68568420410156, - "y": 186.0162353515625 + "x": 256.739013671875, + "y": 186.46302795410156 }, - "direction": 0.60965895652771, + "direction": 0.6133100390434265, "dropPoint": { - "x": 240.744140625, - "y": 176.24264526367188 + "x": 234.20034790039063, + "y": 170.5682830810547 }, "position": { - "x": 209.048828125, - "y": 154.14292907714844 + "x": 202.29611206054688, + "y": 148.1429901123047 }, "predictedTarget": { - "x": 291.0502014160156, - "y": 207.97509765625 + "x": 292.8595275878906, + "y": 208.75799560546875 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 255.964599609375, - "y": 186.80459594726563 + "x": 258.01422119140625, + "y": 187.25732421875 }, - "direction": 0.6081554889678955, + "direction": 0.6120696663856506, "dropPoint": { - "x": 240.72854614257813, - "y": 176.19761657714844 + "x": 234.18479919433594, + "y": 170.5289764404297 }, "position": { - "x": 210.27987670898438, - "y": 154.9999542236328 + "x": 203.5238037109375, + "y": 149.0048370361328 }, "predictedTarget": { - "x": 290.9501953125, - "y": 207.9250946044922 + "x": 292.74951171875, + "y": 208.71800231933594 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 257.1956481933594, - "y": 187.66162109375 + "x": 259.2419128417969, + "y": 188.11917114257813 }, - "direction": 0.6081554889678955, + "direction": 0.6120696663856506, "dropPoint": { - "x": 240.80758666992188, - "y": 176.22598266601563 + "x": 234.17005920410156, + "y": 170.49098205566406 }, "position": { - "x": 211.51092529296875, - "y": 155.8569793701172 + "x": 204.75149536132813, + "y": 149.86668395996094 }, "predictedTarget": { - "x": 290.8502197265625, - "y": 207.87510681152344 + "x": 292.64501953125, + "y": 208.67799377441406 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 258.4652404785156, - "y": 188.4632568359375 + "x": 260.5169372558594, + "y": 188.91346740722656 }, - "direction": 0.6069750785827637, + "direction": 0.6108580827713013, "dropPoint": { - "x": 240.88412475585938, - "y": 176.25448608398438 + "x": 234.15530395507813, + "y": 170.45513916015625 }, "position": { - "x": 212.7429962158203, - "y": 156.71255493164063 + "x": 205.980224609375, + "y": 150.72703552246094 }, "predictedTarget": { - "x": 290.7502136230469, - "y": 207.82510375976563 + "x": 292.5450134277344, + "y": 208.63800048828125 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 259.6972961425781, - "y": 189.31883239746094 + "x": 261.74566650390625, + "y": 189.77381896972656 }, - "direction": 0.6069750785827637, + "direction": 0.6108580827713013, "dropPoint": { - "x": 240.9593963623047, - "y": 176.28250122070313 + "x": 234.14137268066406, + "y": 170.42059326171875 }, "position": { - "x": 213.97506713867188, - "y": 157.56813049316406 + "x": 207.20895385742188, + "y": 151.58738708496094 }, "predictedTarget": { - "x": 290.6551818847656, - "y": 207.7751007080078 + "x": 292.44500732421875, + "y": 208.59800720214844 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 260.9672546386719, - "y": 190.11978149414063 + "x": 263.0204162597656, + "y": 190.56837463378906 }, - "direction": 0.6058120727539063, + "direction": 0.6096786856651306, "dropPoint": { - "x": 241.031982421875, - "y": 176.310546875 + "x": 234.12734985351563, + "y": 170.38829040527344 }, "position": { - "x": 215.2081298828125, - "y": 158.42227172851563 + "x": 208.43870544433594, + "y": 152.4462890625 }, "predictedTarget": { - "x": 290.565185546875, - "y": 207.72509765625 + "x": 292.34503173828125, + "y": 208.55799865722656 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 262.2003173828125, - "y": 190.97390747070313 + "x": 264.25018310546875, + "y": 191.42727661132813 }, - "direction": 0.6058120727539063, + "direction": 0.6096786856651306, "dropPoint": { - "x": 241.10311889648438, - "y": 176.33802795410156 + "x": 234.11378479003906, + "y": 170.35699462890625 }, "position": { - "x": 216.44119262695313, - "y": 159.2764129638672 + "x": 209.66845703125, + "y": 153.30519104003906 }, "predictedTarget": { - "x": 290.4751892089844, - "y": 207.6750946044922 + "x": 292.2450256347656, + "y": 208.51800537109375 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 263.4704284667969, - "y": 191.77450561523438 + "x": 265.5244140625, + "y": 192.22238159179688 }, - "direction": 0.6046729683876038, + "direction": 0.6085359454154968, "dropPoint": { - "x": 241.1718292236328, - "y": 176.36575317382813 + "x": 234.10043334960938, + "y": 170.32797241210938 }, "position": { - "x": 217.67523193359375, - "y": 160.129150390625 + "x": 210.89918518066406, + "y": 154.16268920898438 }, "predictedTarget": { - "x": 290.3851623535156, - "y": 207.62509155273438 + "x": 292.14501953125, + "y": 208.47799682617188 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 264.7044677734375, - "y": 192.6272430419922 + "x": 266.7551574707031, + "y": 193.0798797607422 }, - "direction": 0.6046729683876038, + "direction": 0.6085359454154968, "dropPoint": { - "x": 241.23907470703125, - "y": 176.39279174804688 + "x": 234.1614227294922, + "y": 170.3545684814453 }, "position": { - "x": 218.90927124023438, - "y": 160.9818878173828 + "x": 212.12991333007813, + "y": 155.0201873779297 }, "predictedTarget": { - "x": 290.295166015625, - "y": 207.57510375976563 + "x": 292.0450134277344, + "y": 208.43800354003906 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 265.97491455078125, - "y": 193.42721557617188 + "x": 267.9858703613281, + "y": 193.9373779296875 }, - "direction": 0.6035513877868652, + "direction": 0.6085359454154968, "dropPoint": { - "x": 241.30397033691406, - "y": 176.4199676513672 + "x": 234.22006225585938, + "y": 170.38116455078125 }, "position": { - "x": 220.14425659179688, - "y": 161.83323669433594 + "x": 213.3606414794922, + "y": 155.877685546875 }, "predictedTarget": { - "x": 290.2051696777344, - "y": 207.5251007080078 + "x": 291.94500732421875, + "y": 208.39801025390625 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 267.20989990234375, - "y": 194.278564453125 + "x": 269.2703552246094, + "y": 194.71762084960938 }, - "direction": 0.6035513877868652, + "direction": 0.6071534752845764, "dropPoint": { - "x": 241.36727905273438, - "y": 176.44650268554688 + "x": 234.2768096923828, + "y": 170.40794372558594 }, "position": { - "x": 221.37924194335938, - "y": 162.68458557128906 + "x": 214.59255981445313, + "y": 156.73348999023438 }, "predictedTarget": { - "x": 290.11517333984375, - "y": 207.47509765625 + "x": 291.84503173828125, + "y": 208.35800170898438 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 268.48040771484375, - "y": 195.0783233642578 + "x": 270.5022888183594, + "y": 195.57342529296875 }, - "direction": 0.6024555563926697, + "direction": 0.6071534752845764, "dropPoint": { - "x": 241.4281463623047, - "y": 176.47317504882813 + "x": 234.3319549560547, + "y": 170.43338012695313 }, "position": { - "x": 222.6151580810547, - "y": 163.5345916748047 + "x": 215.82447814941406, + "y": 157.58929443359375 }, "predictedTarget": { - "x": 290.0251770019531, - "y": 207.4250946044922 + "x": 291.7450256347656, + "y": 208.31800842285156 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 269.7163391113281, - "y": 195.92832946777344 + "x": 271.73419189453125, + "y": 196.42922973632813 }, - "direction": 0.6024555563926697, + "direction": 0.6071534752845764, "dropPoint": { - "x": 241.40853881835938, - "y": 176.43588256835938 + "x": 234.38511657714844, + "y": 170.45896911621094 }, "position": { - "x": 223.85107421875, - "y": 164.3845977783203 + "x": 217.056396484375, + "y": 158.44509887695313 }, "predictedTarget": { - "x": 289.9351501464844, - "y": 207.37509155273438 + "x": 291.64501953125, + "y": 208.2725067138672 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 271.00830078125, - "y": 196.6967010498047 + "x": 273.017333984375, + "y": 197.211181640625 }, - "direction": 0.6007235646247864, + "direction": 0.6058332920074463, "dropPoint": { - "x": 241.3886260986328, - "y": 176.4013214111328 + "x": 234.43600463867188, + "y": 170.48455810546875 }, "position": { - "x": 225.08847045898438, - "y": 165.23245239257813 + "x": 218.28944396972656, + "y": 159.2992706298828 }, "predictedTarget": { - "x": 289.84515380859375, - "y": 207.32510375976563 + "x": 291.5450134277344, + "y": 208.22250366210938 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 272.2456970214844, - "y": 197.5445556640625 + "x": 274.2503967285156, + "y": 198.06536865234375 }, - "direction": 0.6007235646247864, + "direction": 0.6058332920074463, "dropPoint": { - "x": 241.36947631835938, - "y": 176.36790466308594 + "x": 234.48573303222656, + "y": 170.50897216796875 }, "position": { - "x": 226.32586669921875, - "y": 166.08030700683594 + "x": 219.52249145507813, + "y": 160.1534423828125 }, "predictedTarget": { - "x": 289.7551574707031, - "y": 207.2751007080078 + "x": 291.44500732421875, + "y": 208.17250061035156 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 273.5382080078125, - "y": 198.31182861328125 + "x": 275.4834289550781, + "y": 198.91952514648438 }, - "direction": 0.5990157127380371, + "direction": 0.6058332920074463, "dropPoint": { - "x": 241.3499755859375, - "y": 176.337158203125 + "x": 234.53326416015625, + "y": 170.5333251953125 }, "position": { - "x": 227.564697265625, - "y": 166.92605590820313 + "x": 220.7555389404297, + "y": 161.0076141357422 }, "predictedTarget": { - "x": 289.6651611328125, - "y": 207.22509765625 + "x": 291.3450012207031, + "y": 208.12249755859375 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 274.77703857421875, - "y": 199.15757751464844 + "x": 276.76513671875, + "y": 199.70335388183594 }, - "direction": 0.5990157127380371, + "direction": 0.6045769453048706, "dropPoint": { - "x": 241.33126831054688, - "y": 176.30751037597656 + "x": 234.57870483398438, + "y": 170.55772399902344 }, "position": { - "x": 228.80352783203125, - "y": 167.7718048095703 + "x": 221.98965454101563, + "y": 161.8602294921875 }, "predictedTarget": { - "x": 289.5751647949219, - "y": 207.1750946044922 + "x": 291.2450256347656, + "y": 208.072509765625 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 276.07012939453125, - "y": 199.92372131347656 + "x": 277.999267578125, + "y": 200.55596923828125 }, - "direction": 0.5973304510116577, + "direction": 0.6045769453048706, "dropPoint": { - "x": 241.31222534179688, - "y": 176.28053283691406 + "x": 234.62277221679688, + "y": 170.58079528808594 }, "position": { - "x": 230.04379272460938, - "y": 168.61546325683594 + "x": 223.22377014160156, + "y": 162.7128448486328 }, "predictedTarget": { - "x": 289.48516845703125, - "y": 207.12509155273438 + "x": 291.14501953125, + "y": 208.0225067138672 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 277.3103942871094, - "y": 200.7673797607422 + "x": 279.27374267578125, + "y": 201.35009765625 }, - "direction": 0.5973304510116577, + "direction": 0.6035329103469849, "dropPoint": { - "x": 241.29397583007813, - "y": 176.25454711914063 + "x": 234.60577392578125, + "y": 170.55886840820313 }, "position": { - "x": 231.2840576171875, - "y": 169.45912170410156 + "x": 224.45877075195313, + "y": 163.56417846679688 }, "predictedTarget": { - "x": 289.3951721191406, - "y": 207.07510375976563 + "x": 291.0450134277344, + "y": 207.97250366210938 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 278.60394287109375, - "y": 201.53253173828125 + "x": 280.50872802734375, + "y": 202.20143127441406 }, - "direction": 0.5956707000732422, + "direction": 0.6035329103469849, "dropPoint": { - "x": 241.2754364013672, - "y": 176.2312774658203 + "x": 234.58944702148438, + "y": 170.53819274902344 }, "position": { - "x": 232.5257110595703, - "y": 170.30072021484375 + "x": 225.6937713623047, + "y": 164.41551208496094 }, "predictedTarget": { - "x": 289.3051452636719, - "y": 207.0251007080078 + "x": 290.94500732421875, + "y": 207.92250061035156 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 279.8455810546875, - "y": 202.3741455078125 + "x": 281.7925109863281, + "y": 202.98193359375 }, - "direction": 0.5956707000732422, + "direction": 0.6022695899009705, "dropPoint": { - "x": 241.25772094726563, - "y": 176.208984375 + "x": 234.57305908203125, + "y": 170.51979064941406 }, "position": { - "x": 233.76736450195313, - "y": 171.14231872558594 + "x": 226.9298553466797, + "y": 165.26528930664063 }, "predictedTarget": { - "x": 289.21514892578125, - "y": 206.97509765625 + "x": 290.8450012207031, + "y": 207.87249755859375 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 281.139404296875, - "y": 203.13864135742188 + "x": 283.0285949707031, + "y": 203.8317108154297 }, - "direction": 0.5940425395965576, + "direction": 0.6022695899009705, "dropPoint": { - "x": 241.2397003173828, - "y": 176.1893310546875 + "x": 234.55758666992188, + "y": 170.50228881835938 }, "position": { - "x": 235.01039123535156, - "y": 171.9818878173828 + "x": 228.1659393310547, + "y": 166.1150665283203 }, "predictedTarget": { - "x": 289.1251525878906, - "y": 206.9250946044922 + "x": 290.7450256347656, + "y": 207.822509765625 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 282.3824462890625, - "y": 203.97821044921875 + "x": 284.3117980957031, + "y": 204.61285400390625 }, - "direction": 0.5940425395965576, + "direction": 0.601046621799469, "dropPoint": { - "x": 241.21890258789063, - "y": 176.16690063476563 + "x": 234.5420684814453, + "y": 170.4870147705078 }, "position": { - "x": 236.25341796875, - "y": 172.8214569091797 + "x": 229.40306091308594, + "y": 166.9633331298828 }, "predictedTarget": { - "x": 289.03515625, - "y": 206.87509155273438 + "x": 290.6505126953125, + "y": 207.7725067138672 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 283.6851806640625, - "y": 204.72921752929688 + "x": 285.5489196777344, + "y": 205.46112060546875 }, - "direction": 0.5921738743782043, + "direction": 0.601046621799469, "dropPoint": { - "x": 241.1973876953125, - "y": 176.14730834960938 + "x": 234.52745056152344, + "y": 170.47256469726563 }, "position": { - "x": 237.49801635742188, - "y": 173.65870666503906 + "x": 230.6401824951172, + "y": 167.8115997314453 }, "predictedTarget": { - "x": 288.9451599121094, - "y": 206.82510375976563 + "x": 290.5605163574219, + "y": 207.72250366210938 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 284.9297790527344, - "y": 205.56646728515625 + "x": 286.831298828125, + "y": 206.24327087402344 }, - "direction": 0.5921738743782043, + "direction": 0.5998696684837341, "dropPoint": { - "x": 241.1770477294922, - "y": 176.1287078857422 + "x": 234.51283264160156, + "y": 170.4602813720703 }, "position": { - "x": 238.74261474609375, - "y": 174.49595642089844 + "x": 231.8782958984375, + "y": 168.6584014892578 }, "predictedTarget": { - "x": 288.8651123046875, - "y": 206.76513671875 + "x": 290.47052001953125, + "y": 207.67250061035156 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 286.2332763671875, - "y": 206.31594848632813 + "x": 288.0694274902344, + "y": 207.09007263183594 }, - "direction": 0.5903247594833374, + "direction": 0.5998696684837341, "dropPoint": { - "x": 241.1559600830078, - "y": 176.1129608154297 + "x": 234.49920654296875, + "y": 170.44879150390625 }, "position": { - "x": 239.98875427246094, - "y": 175.33090209960938 + "x": 233.1164093017578, + "y": 169.5052032470703 }, "predictedTarget": { - "x": 288.7951354980469, - "y": 206.69512939453125 + "x": 290.3804931640625, + "y": 207.62249755859375 }, "state": 4, "targetIndex": 0 }, { "aimPoint": { - "x": 287.47943115234375, - "y": 207.15089416503906 + "x": 289.35064697265625, + "y": 207.87374877929688 }, - "direction": 0.5903247594833374, + "direction": 0.598746657371521, "dropPoint": { - "x": 241.13604736328125, - "y": 176.09811401367188 + "x": 234.48561096191406, + "y": 170.4394073486328 }, "position": { - "x": 241.23489379882813, - "y": 176.1658477783203 + "x": 234.35546875, + "y": 170.35061645507813 }, "predictedTarget": { - "x": 288.7251281738281, - "y": 206.62513732910156 + "x": 290.2904968261719, + "y": 207.572509765625 }, "state": 4, "targetIndex": 0 } ], - "totalSteps": 247 + "totalSteps": 241 } \ No newline at end of file From e3a54f25d468d6c2b24876f2b9c5e28951e83af0 Mon Sep 17 00:00:00 2001 From: blinker Date: Fri, 12 Jun 2026 20:48:33 +0000 Subject: [PATCH 11/12] [FEATURE] hw09-state-machine: refactore balistic_table, add tabulation and brackets. --- .../include/solvers/ballistic_table.hpp | 88 ++++++++++++------- 1 file changed, 55 insertions(+), 33 deletions(-) diff --git a/drone_simulation/include/solvers/ballistic_table.hpp b/drone_simulation/include/solvers/ballistic_table.hpp index f6a34fd..a72080d 100644 --- a/drone_simulation/include/solvers/ballistic_table.hpp +++ b/drone_simulation/include/solvers/ballistic_table.hpp @@ -43,23 +43,41 @@ struct BallisticTable { // Завантаження з текстового файлу bool load(const std::string path) { std::ifstream dataFile(path); - if (!dataFile.is_open()) return false; + if (!dataFile.is_open()) { + return false; + } int nZ, nV, nM, nD, nL; dataFile >> nZ >> nV >> nM >> nD >> nL; - axisZ0.resize(nZ); for (auto& v : axisZ0) dataFile >> v; - axisV0.resize(nV); for (auto& v : axisV0) dataFile >> v; - axisM.resize(nM); for (auto& v : axisM) dataFile >> v; - axisD.resize(nD); for (auto& v : axisD) dataFile >> v; - axisL.resize(nL); for (auto& v : axisL) dataFile >> v; + axisZ0.resize(nZ); + for (auto& v : axisZ0) { + dataFile >> v; + } + axisV0.resize(nV); + for (auto& v : axisV0) { + dataFile >> v; + } + axisM.resize(nM); + for (auto& v : axisM) { + dataFile >> v; + } + axisD.resize(nD); + for (auto& v : axisD) { + dataFile >> v; + } + axisL.resize(nL); + for (auto& v : axisL) { + dataFile >> v; + } size_t total = (size_t)nZ*nV*nM*nD*nL; data.resize(total); // Порядок: Z0 → V0 → m → d → l (зовнішній → внутрішній) - for (size_t i = 0; i < total; i++) + for (size_t i = 0; i < total; i++) { dataFile >> data[i].t >> data[i].hDist; + } return dataFile.good(); } @@ -70,46 +88,50 @@ struct BallisticTable { { Interp iz = findInterp(Z0, axisZ0); Interp iv = findInterp(V0, axisV0); - Interp im = findInterp(mass, axisM); - Interp id = findInterp(drag, axisD); - Interp il = findInterp(lift, axisL); + Interp im = findInterp(mass, axisM); + Interp id = findInterp(drag, axisD); + Interp il = findInterp(lift, axisL); // 2^5 = 32 вершини гіперкуба // Згортаємо: 32 → 16 → 8 → 4 → 2 → 1 // l: 32 → 16 Result v[16]; - for (int a = 0; a < 2; a++) - for (int b = 0; b < 2; b++) - for (int c = 0; c < 2; c++) - for (int e = 0; e < 2; e++) { - auto& lo = at(iz.lo+a, iv.lo+b, - im.lo+c, id.lo+e, il.lo); - auto& hi = at(iz.lo+a, iv.lo+b, - im.lo+c, id.lo+e, il.lo+1); - v[a*8+b*4+c*2+e] = lerp(lo, hi, il.frac); + for (int a = 0; a < 2; a++) { + for (int b = 0; b < 2; b++) { + for (int c = 0; c < 2; c++) { + for (int e = 0; e < 2; e++) { + auto& lo = at(iz.lo+a, iv.lo+b, im.lo+c, id.lo+e, il.lo); + auto& hi = at(iz.lo+a, iv.lo+b, im.lo+c, id.lo+e, il.lo+1); + v[a*8+b*4+c*2+e] = lerp(lo, hi, il.frac); + } + } + } } - + // d: 16 → 8 Result w[8]; - for (int a = 0; a < 2; a++) - for (int b = 0; b < 2; b++) - for (int c = 0; c < 2; c++) - w[a*4+b*2+c] = lerp(v[a*8+b*4+c*2], - v[a*8+b*4+c*2+1], - id.frac); - + for (int a = 0; a < 2; a++) { + for (int b = 0; b < 2; b++) { + for (int c = 0; c < 2; c++) { + w[a*4+b*2+c] = lerp(v[a*8+b*4+c*2], v[a*8+b*4+c*2+1], id.frac); + } + } + } + // m: 8 → 4 Result u[4]; - for (int a = 0; a < 2; a++) - for (int b = 0; b < 2; b++) - u[a*2+b] = lerp(w[a*4+b*2], - w[a*4+b*2+1], im.frac); - + for (int a = 0; a < 2; a++) { + for (int b = 0; b < 2; b++) { + u[a*2+b] = lerp(w[a*4+b*2], w[a*4+b*2+1], im.frac); + } + } + // V0: 4 → 2 Result s[2]; - for (int a = 0; a < 2; a++) + for (int a = 0; a < 2; a++) { s[a] = lerp(u[a*2], u[a*2+1], iv.frac); + } // Z0: 2 → 1 return lerp(s[0], s[1], iz.frac); From 0280efe9ac6760ca3402bc90417786bd48170884 Mon Sep 17 00:00:00 2001 From: blinker Date: Sat, 13 Jun 2026 10:17:28 +0000 Subject: [PATCH 12/12] [FEATURE] hw09-state-machine: remove DroneState enum, add solver type and path to ballistic table as arguments of the app. refactoring --- .../drone_states/state_accelerating.hpp | 5 +- .../drone_states/state_decelerating.hpp | 5 +- .../include/drone_states/state_moving.hpp | 5 +- .../include/drone_states/state_stopped.hpp | 5 +- .../include/drone_states/state_turning.hpp | 5 +- .../include/interfaces/drone_state.hpp | 2 +- drone_simulation/include/simulation.hpp | 22 +- .../src/drone_states/state_accelerating.cpp | 4 +- .../src/drone_states/state_decelerating.cpp | 4 +- .../src/drone_states/state_moving.cpp | 4 +- .../src/drone_states/state_stopped.cpp | 4 +- .../src/drone_states/state_turning.cpp | 4 +- drone_simulation/src/main.cpp | 37 +- drone_simulation/src/mission_processor.cpp | 13 +- drone_simulation/src/simulation.cpp | 8 +- simulation.json | 482 +++++++++--------- 16 files changed, 303 insertions(+), 306 deletions(-) diff --git a/drone_simulation/include/drone_states/state_accelerating.hpp b/drone_simulation/include/drone_states/state_accelerating.hpp index c3e4b1a..f35e879 100644 --- a/drone_simulation/include/drone_states/state_accelerating.hpp +++ b/drone_simulation/include/drone_states/state_accelerating.hpp @@ -3,8 +3,9 @@ class StateAccelerating : public IDroneState { public: + static constexpr const char* NAME = "ACCELERATING"; StateAccelerating(); - auto execute(DroneContext& ctx) -> std::unique_ptr override; - auto code() const -> DroneState override; + auto execute(DroneContext& ctx) -> std::unique_ptr override; + auto name() const -> std::string override; }; \ No newline at end of file diff --git a/drone_simulation/include/drone_states/state_decelerating.hpp b/drone_simulation/include/drone_states/state_decelerating.hpp index f0a0979..583889b 100644 --- a/drone_simulation/include/drone_states/state_decelerating.hpp +++ b/drone_simulation/include/drone_states/state_decelerating.hpp @@ -3,8 +3,9 @@ class StateDecelerating : public IDroneState { public: + static constexpr const char* NAME = "DECELERATING"; StateDecelerating(); - auto execute(DroneContext& context) -> std::unique_ptr override; - auto code() const -> DroneState override; + auto execute(DroneContext& context) -> std::unique_ptr override; + auto name() const -> std::string override; }; \ No newline at end of file diff --git a/drone_simulation/include/drone_states/state_moving.hpp b/drone_simulation/include/drone_states/state_moving.hpp index 2239f32..bd95d1c 100644 --- a/drone_simulation/include/drone_states/state_moving.hpp +++ b/drone_simulation/include/drone_states/state_moving.hpp @@ -3,8 +3,9 @@ class StateMoving : public IDroneState { public: + static constexpr const char* NAME = "MOVING"; StateMoving(); - auto execute(DroneContext& context) -> std::unique_ptr override; - auto code() const -> DroneState override; + auto execute(DroneContext& context) -> std::unique_ptr override; + auto name() const -> std::string override; }; \ No newline at end of file diff --git a/drone_simulation/include/drone_states/state_stopped.hpp b/drone_simulation/include/drone_states/state_stopped.hpp index e9348d2..20f1223 100644 --- a/drone_simulation/include/drone_states/state_stopped.hpp +++ b/drone_simulation/include/drone_states/state_stopped.hpp @@ -3,8 +3,9 @@ class StateStopped : public IDroneState { public: + static constexpr const char* NAME = "STOPPED"; StateStopped(); - auto execute(DroneContext& context) -> std::unique_ptr override; - auto code() const -> DroneState override; + auto execute(DroneContext& context) -> std::unique_ptr override; + auto name() const -> std::string override; }; \ No newline at end of file diff --git a/drone_simulation/include/drone_states/state_turning.hpp b/drone_simulation/include/drone_states/state_turning.hpp index 9d5c26b..84a060b 100644 --- a/drone_simulation/include/drone_states/state_turning.hpp +++ b/drone_simulation/include/drone_states/state_turning.hpp @@ -3,8 +3,9 @@ class StateTurning : public IDroneState { public: + static constexpr const char* NAME = "TURNING"; StateTurning(); - auto execute(DroneContext& context) -> std::unique_ptr override; - auto code() const -> DroneState override; + auto execute(DroneContext& context) -> std::unique_ptr override; + auto name() const -> std::string override; }; \ No newline at end of file diff --git a/drone_simulation/include/interfaces/drone_state.hpp b/drone_simulation/include/interfaces/drone_state.hpp index 452f506..462522a 100644 --- a/drone_simulation/include/interfaces/drone_state.hpp +++ b/drone_simulation/include/interfaces/drone_state.hpp @@ -12,6 +12,6 @@ class IDroneState { // (головний цикл залишить поточний). virtual std::unique_ptr execute(DroneContext& context) = 0; - virtual DroneState code() const = 0; + virtual std::string name() const = 0; }; diff --git a/drone_simulation/include/simulation.hpp b/drone_simulation/include/simulation.hpp index 3dc54da..9b449f3 100644 --- a/drone_simulation/include/simulation.hpp +++ b/drone_simulation/include/simulation.hpp @@ -7,14 +7,6 @@ using json = nlohmann::json; -enum DroneState { - STOPPED, - ACCELERATING, - DECELERATING, - TURNING, - MOVING -}; - struct Coord { float x; float y; @@ -76,13 +68,6 @@ struct DroneConfig { float turnThreshold; }; -struct DroneMotion { - float speed = 0.0f; - float dir; - Coord pos; - DroneState state; -}; - struct DroneContext { float directionToTarget; float prevDirectionToTarget; @@ -95,12 +80,15 @@ struct DroneContext { }; struct SimulationStep { + bool hit = false; int target; + float droneSpeed = 0.0f; + float droneDirection; Coord dropPoint; Coord aimPoint; Coord predictedTarget; - DroneMotion droneMotion; - bool hit = false; + Coord dronePosition; + std::string droneState; }; float getDistanceToTarget( diff --git a/drone_simulation/src/drone_states/state_accelerating.cpp b/drone_simulation/src/drone_states/state_accelerating.cpp index 8287bfe..bc0916e 100644 --- a/drone_simulation/src/drone_states/state_accelerating.cpp +++ b/drone_simulation/src/drone_states/state_accelerating.cpp @@ -30,6 +30,6 @@ auto StateAccelerating::execute(DroneContext& context) -> std::unique_ptr DroneState { - return ACCELERATING; +auto StateAccelerating::name() const -> std::string { + return NAME; } \ No newline at end of file diff --git a/drone_simulation/src/drone_states/state_decelerating.cpp b/drone_simulation/src/drone_states/state_decelerating.cpp index b1dd316..e85e4cd 100644 --- a/drone_simulation/src/drone_states/state_decelerating.cpp +++ b/drone_simulation/src/drone_states/state_decelerating.cpp @@ -26,6 +26,6 @@ auto StateDecelerating::execute(DroneContext& context) -> std::unique_ptr DroneState { - return DECELERATING; +auto StateDecelerating::name() const -> std::string { + return NAME; } \ No newline at end of file diff --git a/drone_simulation/src/drone_states/state_moving.cpp b/drone_simulation/src/drone_states/state_moving.cpp index fb745ef..bfa1a10 100644 --- a/drone_simulation/src/drone_states/state_moving.cpp +++ b/drone_simulation/src/drone_states/state_moving.cpp @@ -23,6 +23,6 @@ auto StateMoving::execute(DroneContext& context) -> std::unique_ptr return nullptr; } -auto StateMoving::code() const -> DroneState { - return MOVING; +auto StateMoving::name() const -> std::string { + return NAME; } \ No newline at end of file diff --git a/drone_simulation/src/drone_states/state_stopped.cpp b/drone_simulation/src/drone_states/state_stopped.cpp index 90da60f..fe67266 100644 --- a/drone_simulation/src/drone_states/state_stopped.cpp +++ b/drone_simulation/src/drone_states/state_stopped.cpp @@ -20,7 +20,7 @@ auto StateStopped::execute(DroneContext& context) -> std::unique_ptr DroneState +auto StateStopped::name() const -> std::string { - return STOPPED; + return NAME; } \ No newline at end of file diff --git a/drone_simulation/src/drone_states/state_turning.cpp b/drone_simulation/src/drone_states/state_turning.cpp index c7fbf09..85697bc 100644 --- a/drone_simulation/src/drone_states/state_turning.cpp +++ b/drone_simulation/src/drone_states/state_turning.cpp @@ -20,6 +20,6 @@ auto StateTurning::execute(DroneContext& context) -> std::unique_ptr DroneState { - return TURNING; +auto StateTurning::name() const -> std::string { + return NAME; } diff --git a/drone_simulation/src/main.cpp b/drone_simulation/src/main.cpp index aef1af4..812cc84 100644 --- a/drone_simulation/src/main.cpp +++ b/drone_simulation/src/main.cpp @@ -5,6 +5,7 @@ #include "simulation.hpp" #include "mission_processor.hpp" #include "config_loaders/factory.hpp" +#include "drone_states/state_stopped.hpp" using json = nlohmann::json; @@ -25,40 +26,36 @@ using json = nlohmann::json; auto main(int argc, char* argv[]) -> int { - std::unique_ptr loader; - std::unique_ptr targets; - std::unique_ptr ballisticSolver; - std::vector simSteps; + try { + const std::string configPath = (argc > 1) ? argv[1] : "config.json"; + const std::string ammoPath = (argc > 2) ? argv[2] : "ammo.json"; + const std::string targetsPath = (argc > 3) ? argv[3] : "targets.json"; + const std::string solverArg = (argc > 4) ? argv[4] : "analytical"; + const std::string ballisticTablePath = (argc > 5) ? argv[5] : "ballistic_table.txt"; - const std::string configPath = (argc > 1) ? argv[1] : "config.json"; - const std::string ammoPath = (argc > 2) ? argv[2] : "ammo.json"; - const std::string targetsPath = (argc > 3) ? argv[3] : "targets.json"; - const std::string ballisticTablePath = (argc > 4) ? argv[4] : "ballistic_table.txt"; + auto loader = createLoader(LoaderType::FILE, configPath, ammoPath); + auto targets = createProvider(ProviderType::JSON, targetsPath); - try { - loader = createLoader(LoaderType::FILE, configPath, ammoPath); - targets = createProvider(ProviderType::JSON, targetsPath); - loader->load(); DroneConfig droneConfig = loader->getConfig(); - - // ballisticSolver = createSolver(SolverType::ANALYTICAL, droneConfig); - ballisticSolver = createSolver(SolverType::TABLE, droneConfig, ballisticTablePath); + + SolverType solverType = (solverArg == "analytical") ? SolverType::ANALYTICAL : SolverType::TABLE; + auto ballisticSolver = createSolver(solverType, droneConfig, ballisticTablePath); + std::vector simSteps; MissionProcessor missionProcessor(std::move(targets), std::move(ballisticSolver)); missionProcessor.init(std::move(loader)); //write initial sim data simSteps.push_back({ + .hit = false, .target = -1, + .droneDirection = droneConfig.initialDir, .dropPoint = {0, 0}, .aimPoint = {0, 0}, .predictedTarget = {0, 0}, - .droneMotion = { - .dir = droneConfig.initialDir, - .pos = droneConfig.startPos, - .state = STOPPED - } + .dronePosition = droneConfig.startPos, + .droneState = StateStopped::NAME }); // simulation loop diff --git a/drone_simulation/src/mission_processor.cpp b/drone_simulation/src/mission_processor.cpp index 636a890..aa06fd3 100644 --- a/drone_simulation/src/mission_processor.cpp +++ b/drone_simulation/src/mission_processor.cpp @@ -66,11 +66,15 @@ auto MissionProcessor::step() -> SimulationStep { this->currentTime += this->droneConfig.simTimeStep; SimulationStep emptyStep = { + .hit = false, .target = -1, + .droneSpeed = this->droneContext.speed, + .droneDirection = this->droneContext.direction, .dropPoint = {0, 0}, .aimPoint = {0, 0}, .predictedTarget = {0, 0}, - .droneMotion = { this->droneContext.speed, this->droneContext.direction, this->droneContext.position, STOPPED } + .dronePosition = this->droneContext.position, + .droneState = StateStopped::NAME }; return emptyStep; @@ -189,11 +193,14 @@ auto MissionProcessor::getSimulationStep(int targetIndex, const Coord& fireCoord } return { + .hit = isHit, .target = targetIndex, + .droneSpeed = this->droneContext.speed, + .droneDirection = this->droneContext.direction, .dropPoint = fireCoord, .aimPoint = aimPoint, .predictedTarget = targetAtImpact, - .droneMotion = { this->droneContext.speed, this->droneContext.direction, this->droneContext.position, this->state->code() }, - .hit = isHit + .dronePosition = this->droneContext.position, + .droneState = this->state->name() }; } diff --git a/drone_simulation/src/simulation.cpp b/drone_simulation/src/simulation.cpp index df5f720..01a5c5f 100644 --- a/drone_simulation/src/simulation.cpp +++ b/drone_simulation/src/simulation.cpp @@ -151,11 +151,11 @@ void writeSimulationJSONFile( for (const SimulationStep& step : simSteps) { json stepJson; stepJson["position"] = { - {"x", step.droneMotion.pos.x}, - {"y", step.droneMotion.pos.y} + {"x", step.dronePosition.x}, + {"y", step.dronePosition.y} }; - stepJson["direction"] = step.droneMotion.dir; - stepJson["state"] = step.droneMotion.state; + stepJson["direction"] = step.droneDirection; + stepJson["state"] = step.droneState; stepJson["targetIndex"] = step.target; stepJson["dropPoint"] = { {"x", step.dropPoint.x}, diff --git a/simulation.json b/simulation.json index 96bd1e9..6a9cc91 100644 --- a/simulation.json +++ b/simulation.json @@ -18,7 +18,7 @@ "x": 0.0, "y": 0.0 }, - "state": 0, + "state": "STOPPED", "targetIndex": -1 }, { @@ -39,7 +39,7 @@ "x": 313.97802734375, "y": 203.54396057128906 }, - "state": 3, + "state": "TURNING", "targetIndex": 0 }, { @@ -60,7 +60,7 @@ "x": 313.9380187988281, "y": 203.62396240234375 }, - "state": 3, + "state": "TURNING", "targetIndex": 0 }, { @@ -81,7 +81,7 @@ "x": 313.89801025390625, "y": 203.70394897460938 }, - "state": 3, + "state": "TURNING", "targetIndex": 0 }, { @@ -102,7 +102,7 @@ "x": 313.8580017089844, "y": 203.78395080566406 }, - "state": 3, + "state": "TURNING", "targetIndex": 0 }, { @@ -123,7 +123,7 @@ "x": 313.8180236816406, "y": 203.86395263671875 }, - "state": 3, + "state": "TURNING", "targetIndex": 0 }, { @@ -144,7 +144,7 @@ "x": 313.77252197265625, "y": 203.93846130371094 }, - "state": 3, + "state": "TURNING", "targetIndex": 0 }, { @@ -165,7 +165,7 @@ "x": 313.7225036621094, "y": 204.00845336914063 }, - "state": 3, + "state": "TURNING", "targetIndex": 0 }, { @@ -186,7 +186,7 @@ "x": 313.6725158691406, "y": 204.07846069335938 }, - "state": 3, + "state": "TURNING", "targetIndex": 0 }, { @@ -207,7 +207,7 @@ "x": 313.6225280761719, "y": 204.14846801757813 }, - "state": 3, + "state": "TURNING", "targetIndex": 0 }, { @@ -228,7 +228,7 @@ "x": 313.572509765625, "y": 204.2184600830078 }, - "state": 3, + "state": "TURNING", "targetIndex": 0 }, { @@ -249,7 +249,7 @@ "x": 313.52252197265625, "y": 204.28846740722656 }, - "state": 3, + "state": "TURNING", "targetIndex": 0 }, { @@ -270,7 +270,7 @@ "x": 313.4725036621094, "y": 204.35845947265625 }, - "state": 3, + "state": "TURNING", "targetIndex": 0 }, { @@ -291,7 +291,7 @@ "x": 313.4225158691406, "y": 204.428466796875 }, - "state": 3, + "state": "TURNING", "targetIndex": 0 }, { @@ -312,7 +312,7 @@ "x": 313.3725280761719, "y": 204.49847412109375 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -333,7 +333,7 @@ "x": 313.322509765625, "y": 204.56846618652344 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -354,7 +354,7 @@ "x": 313.26702880859375, "y": 204.6384735107422 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -375,7 +375,7 @@ "x": 313.20703125, "y": 204.70846557617188 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -396,7 +396,7 @@ "x": 313.14703369140625, "y": 204.77847290039063 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -417,7 +417,7 @@ "x": 313.0870361328125, "y": 204.8484649658203 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -438,7 +438,7 @@ "x": 313.02703857421875, "y": 204.91847229003906 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -459,7 +459,7 @@ "x": 312.967041015625, "y": 204.98846435546875 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -480,7 +480,7 @@ "x": 312.90704345703125, "y": 205.0584716796875 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -501,7 +501,7 @@ "x": 312.8470458984375, "y": 205.1284637451172 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -522,7 +522,7 @@ "x": 312.78704833984375, "y": 205.19847106933594 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -543,7 +543,7 @@ "x": 312.72705078125, "y": 205.26846313476563 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -564,7 +564,7 @@ "x": 312.66156005859375, "y": 205.33847045898438 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -585,7 +585,7 @@ "x": 312.591552734375, "y": 205.40846252441406 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -606,7 +606,7 @@ "x": 312.52154541015625, "y": 205.4784698486328 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -627,7 +627,7 @@ "x": 312.4515380859375, "y": 205.5484619140625 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -648,7 +648,7 @@ "x": 312.38153076171875, "y": 205.61846923828125 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -669,7 +669,7 @@ "x": 312.3115539550781, "y": 205.68846130371094 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -690,7 +690,7 @@ "x": 312.2415466308594, "y": 205.7584686279297 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -711,7 +711,7 @@ "x": 312.1715393066406, "y": 205.82846069335938 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -732,7 +732,7 @@ "x": 312.1015319824219, "y": 205.89846801757813 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -753,7 +753,7 @@ "x": 312.0315246582031, "y": 205.9684600830078 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -774,7 +774,7 @@ "x": 311.9615478515625, "y": 206.03297424316406 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -795,7 +795,7 @@ "x": 311.89154052734375, "y": 206.0929718017578 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -816,7 +816,7 @@ "x": 311.821533203125, "y": 206.15296936035156 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -837,7 +837,7 @@ "x": 311.75152587890625, "y": 206.2129669189453 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -858,7 +858,7 @@ "x": 311.6815185546875, "y": 206.27296447753906 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -879,7 +879,7 @@ "x": 311.6115417480469, "y": 206.33297729492188 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -900,7 +900,7 @@ "x": 311.5415344238281, "y": 206.39297485351563 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -921,7 +921,7 @@ "x": 311.4715270996094, "y": 206.45297241210938 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -942,7 +942,7 @@ "x": 311.4015197753906, "y": 206.51296997070313 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -963,7 +963,7 @@ "x": 311.3315124511719, "y": 206.57296752929688 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -984,7 +984,7 @@ "x": 311.25604248046875, "y": 206.63296508789063 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -1005,7 +1005,7 @@ "x": 311.176025390625, "y": 206.69297790527344 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -1026,7 +1026,7 @@ "x": 311.0960388183594, "y": 206.7529754638672 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -1047,7 +1047,7 @@ "x": 311.0160217285156, "y": 206.81297302246094 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -1068,7 +1068,7 @@ "x": 310.93603515625, "y": 206.8729705810547 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -1089,7 +1089,7 @@ "x": 310.8560485839844, "y": 206.93296813964844 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -1110,7 +1110,7 @@ "x": 310.7760314941406, "y": 206.9929656982422 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -1131,7 +1131,7 @@ "x": 310.696044921875, "y": 207.05296325683594 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -1152,7 +1152,7 @@ "x": 310.61602783203125, "y": 207.1129608154297 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -1173,7 +1173,7 @@ "x": 310.5360412597656, "y": 207.17295837402344 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -1194,7 +1194,7 @@ "x": 310.4505615234375, "y": 207.2274627685547 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -1215,7 +1215,7 @@ "x": 310.3605651855469, "y": 207.2774658203125 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -1236,7 +1236,7 @@ "x": 310.2705383300781, "y": 207.3274688720703 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -1257,7 +1257,7 @@ "x": 310.1805419921875, "y": 207.37747192382813 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -1278,7 +1278,7 @@ "x": 310.0905456542969, "y": 207.42747497558594 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -1299,7 +1299,7 @@ "x": 310.00054931640625, "y": 207.4774627685547 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -1320,7 +1320,7 @@ "x": 309.9105529785156, "y": 207.5274658203125 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -1341,7 +1341,7 @@ "x": 309.820556640625, "y": 207.5774688720703 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -1362,7 +1362,7 @@ "x": 309.7305603027344, "y": 207.62747192382813 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -1383,7 +1383,7 @@ "x": 309.64056396484375, "y": 207.67747497558594 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -1404,7 +1404,7 @@ "x": 309.5450744628906, "y": 207.7274627685547 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -1425,7 +1425,7 @@ "x": 309.445068359375, "y": 207.7774658203125 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -1446,7 +1446,7 @@ "x": 309.3450622558594, "y": 207.8274688720703 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -1467,7 +1467,7 @@ "x": 309.24505615234375, "y": 207.87747192382813 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -1488,7 +1488,7 @@ "x": 309.1450500488281, "y": 207.92747497558594 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -1509,7 +1509,7 @@ "x": 309.0450744628906, "y": 207.9774627685547 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -1530,7 +1530,7 @@ "x": 308.945068359375, "y": 208.0274658203125 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -1551,7 +1551,7 @@ "x": 308.8450622558594, "y": 208.0774688720703 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -1572,7 +1572,7 @@ "x": 308.74505615234375, "y": 208.12747192382813 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -1593,7 +1593,7 @@ "x": 308.6450500488281, "y": 208.17747497558594 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -1614,7 +1614,7 @@ "x": 308.5450744628906, "y": 208.2219696044922 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -1635,7 +1635,7 @@ "x": 308.445068359375, "y": 208.26197814941406 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -1656,7 +1656,7 @@ "x": 308.3450622558594, "y": 208.30197143554688 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -1677,7 +1677,7 @@ "x": 308.24505615234375, "y": 208.34197998046875 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -1698,7 +1698,7 @@ "x": 308.1450500488281, "y": 208.38197326660156 }, - "state": 1, + "state": "ACCELERATING", "targetIndex": 0 }, { @@ -1719,7 +1719,7 @@ "x": 308.0450744628906, "y": 208.42198181152344 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -1740,7 +1740,7 @@ "x": 307.945068359375, "y": 208.46197509765625 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -1761,7 +1761,7 @@ "x": 307.8450622558594, "y": 208.50198364257813 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -1782,7 +1782,7 @@ "x": 307.74505615234375, "y": 208.54197692871094 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -1803,7 +1803,7 @@ "x": 307.6450500488281, "y": 208.5819854736328 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -1824,7 +1824,7 @@ "x": 307.5395812988281, "y": 208.62197875976563 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -1845,7 +1845,7 @@ "x": 307.4295654296875, "y": 208.6619873046875 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -1866,7 +1866,7 @@ "x": 307.319580078125, "y": 208.7019805908203 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -1887,7 +1887,7 @@ "x": 307.2095642089844, "y": 208.7419891357422 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -1908,7 +1908,7 @@ "x": 307.0995788574219, "y": 208.781982421875 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -1929,7 +1929,7 @@ "x": 306.98956298828125, "y": 208.8219757080078 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -1950,7 +1950,7 @@ "x": 306.8795471191406, "y": 208.8619842529297 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -1971,7 +1971,7 @@ "x": 306.7695617675781, "y": 208.9019775390625 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -1992,7 +1992,7 @@ "x": 306.6595458984375, "y": 208.94198608398438 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -2013,7 +2013,7 @@ "x": 306.549560546875, "y": 208.9819793701172 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -2034,7 +2034,7 @@ "x": 306.4395446777344, "y": 209.0164794921875 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -2055,7 +2055,7 @@ "x": 306.3295593261719, "y": 209.04647827148438 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -2076,7 +2076,7 @@ "x": 306.21954345703125, "y": 209.0764923095703 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -2097,7 +2097,7 @@ "x": 306.10955810546875, "y": 209.1064910888672 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -2118,7 +2118,7 @@ "x": 305.9995422363281, "y": 209.13648986816406 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -2139,7 +2139,7 @@ "x": 305.8895568847656, "y": 209.16648864746094 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -2160,7 +2160,7 @@ "x": 305.779541015625, "y": 209.1964874267578 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -2181,7 +2181,7 @@ "x": 305.6695556640625, "y": 209.2264862060547 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -2202,7 +2202,7 @@ "x": 305.5595397949219, "y": 209.25648498535156 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -2223,7 +2223,7 @@ "x": 305.4495544433594, "y": 209.28648376464844 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -2244,7 +2244,7 @@ "x": 305.33953857421875, "y": 209.3164825439453 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -2265,7 +2265,7 @@ "x": 305.22955322265625, "y": 209.3464813232422 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -2286,7 +2286,7 @@ "x": 305.1195373535156, "y": 209.37649536132813 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -2307,7 +2307,7 @@ "x": 305.0095520019531, "y": 209.406494140625 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -2328,7 +2328,7 @@ "x": 304.8995361328125, "y": 209.43649291992188 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -2349,7 +2349,7 @@ "x": 304.78955078125, "y": 209.46649169921875 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -2370,7 +2370,7 @@ "x": 304.6795349121094, "y": 209.49649047851563 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -2391,7 +2391,7 @@ "x": 304.5695495605469, "y": 209.5264892578125 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -2412,7 +2412,7 @@ "x": 304.45953369140625, "y": 209.55648803710938 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -2433,7 +2433,7 @@ "x": 304.34954833984375, "y": 209.58648681640625 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -2454,7 +2454,7 @@ "x": 304.2340393066406, "y": 209.61099243164063 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -2475,7 +2475,7 @@ "x": 304.1140441894531, "y": 209.63099670410156 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -2496,7 +2496,7 @@ "x": 303.9940490722656, "y": 209.6510009765625 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -2517,7 +2517,7 @@ "x": 303.8740539550781, "y": 209.67098999023438 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -2538,7 +2538,7 @@ "x": 303.7540588378906, "y": 209.6909942626953 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -2559,7 +2559,7 @@ "x": 303.6340637207031, "y": 209.71099853515625 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -2580,7 +2580,7 @@ "x": 303.5140380859375, "y": 209.7310028076172 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -2601,7 +2601,7 @@ "x": 303.39404296875, "y": 209.75099182128906 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -2622,7 +2622,7 @@ "x": 303.2740478515625, "y": 209.77099609375 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -2643,7 +2643,7 @@ "x": 303.154052734375, "y": 209.79100036621094 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -2664,7 +2664,7 @@ "x": 303.03955078125, "y": 209.8054962158203 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -2685,7 +2685,7 @@ "x": 302.9295654296875, "y": 209.81549072265625 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -2706,7 +2706,7 @@ "x": 302.8195495605469, "y": 209.82550048828125 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -2727,7 +2727,7 @@ "x": 302.70953369140625, "y": 209.8354949951172 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -2748,7 +2748,7 @@ "x": 302.59954833984375, "y": 209.84548950195313 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -2769,7 +2769,7 @@ "x": 302.4895324707031, "y": 209.85549926757813 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -2790,7 +2790,7 @@ "x": 302.3795471191406, "y": 209.86549377441406 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -2811,7 +2811,7 @@ "x": 302.26953125, "y": 209.87548828125 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -2832,7 +2832,7 @@ "x": 302.1595458984375, "y": 209.885498046875 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -2853,7 +2853,7 @@ "x": 302.0495300292969, "y": 209.89549255371094 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -2874,7 +2874,7 @@ "x": 301.9340515136719, "y": 209.90548706054688 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -2895,7 +2895,7 @@ "x": 301.8140563964844, "y": 209.91549682617188 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -2916,7 +2916,7 @@ "x": 301.69403076171875, "y": 209.9254913330078 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -2937,7 +2937,7 @@ "x": 301.57403564453125, "y": 209.93548583984375 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -2958,7 +2958,7 @@ "x": 301.45404052734375, "y": 209.94549560546875 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -2979,7 +2979,7 @@ "x": 301.33404541015625, "y": 209.9554901123047 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -3000,7 +3000,7 @@ "x": 301.2140197753906, "y": 209.9654998779297 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -3021,7 +3021,7 @@ "x": 301.0940246582031, "y": 209.97549438476563 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -3042,7 +3042,7 @@ "x": 300.9740295410156, "y": 209.98548889160156 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -3063,7 +3063,7 @@ "x": 300.8540344238281, "y": 209.99549865722656 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -3084,7 +3084,7 @@ "x": 300.7340393066406, "y": 210.0 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -3105,7 +3105,7 @@ "x": 300.6140441894531, "y": 210.0 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -3126,7 +3126,7 @@ "x": 300.4940185546875, "y": 210.0 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -3147,7 +3147,7 @@ "x": 300.3740234375, "y": 210.0 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -3168,7 +3168,7 @@ "x": 300.2540283203125, "y": 210.0 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -3189,7 +3189,7 @@ "x": 300.134033203125, "y": 210.0 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -3210,7 +3210,7 @@ "x": 300.0140380859375, "y": 210.0 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -3231,7 +3231,7 @@ "x": 299.89404296875, "y": 210.0 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -3252,7 +3252,7 @@ "x": 299.7740478515625, "y": 210.0 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -3273,7 +3273,7 @@ "x": 299.654052734375, "y": 210.0 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -3294,7 +3294,7 @@ "x": 299.5340270996094, "y": 209.9945068359375 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -3315,7 +3315,7 @@ "x": 299.4140319824219, "y": 209.9844970703125 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -3336,7 +3336,7 @@ "x": 299.2940368652344, "y": 209.97450256347656 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -3357,7 +3357,7 @@ "x": 299.1740417480469, "y": 209.96450805664063 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -3378,7 +3378,7 @@ "x": 299.0540466308594, "y": 209.95449829101563 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -3399,7 +3399,7 @@ "x": 298.93402099609375, "y": 209.9445037841797 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -3420,7 +3420,7 @@ "x": 298.81402587890625, "y": 209.9344940185547 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -3441,7 +3441,7 @@ "x": 298.69403076171875, "y": 209.92449951171875 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -3462,7 +3462,7 @@ "x": 298.57403564453125, "y": 209.9145050048828 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -3483,7 +3483,7 @@ "x": 298.45404052734375, "y": 209.9044952392578 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -3504,7 +3504,7 @@ "x": 298.3340148925781, "y": 209.89450073242188 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -3525,7 +3525,7 @@ "x": 298.2140197753906, "y": 209.88449096679688 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -3546,7 +3546,7 @@ "x": 298.0940246582031, "y": 209.87449645996094 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -3567,7 +3567,7 @@ "x": 297.9740295410156, "y": 209.864501953125 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -3588,7 +3588,7 @@ "x": 297.8540344238281, "y": 209.85450744628906 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -3609,7 +3609,7 @@ "x": 297.7340393066406, "y": 209.84449768066406 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -3630,7 +3630,7 @@ "x": 297.6140441894531, "y": 209.83450317382813 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -3651,7 +3651,7 @@ "x": 297.4940490722656, "y": 209.8245086669922 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -3672,7 +3672,7 @@ "x": 297.3740234375, "y": 209.8144989013672 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -3693,7 +3693,7 @@ "x": 297.2540283203125, "y": 209.80450439453125 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -3714,7 +3714,7 @@ "x": 297.134033203125, "y": 209.78900146484375 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -3735,7 +3735,7 @@ "x": 297.0140380859375, "y": 209.76901245117188 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -3756,7 +3756,7 @@ "x": 296.89404296875, "y": 209.74900817871094 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -3777,7 +3777,7 @@ "x": 296.7740478515625, "y": 209.72900390625 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -3798,7 +3798,7 @@ "x": 296.6540222167969, "y": 209.70901489257813 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -3819,7 +3819,7 @@ "x": 296.5340270996094, "y": 209.6890106201172 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -3840,7 +3840,7 @@ "x": 296.4140319824219, "y": 209.66900634765625 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -3861,7 +3861,7 @@ "x": 296.2940368652344, "y": 209.6490020751953 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -3882,7 +3882,7 @@ "x": 296.17401123046875, "y": 209.62901306152344 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -3903,7 +3903,7 @@ "x": 296.05401611328125, "y": 209.6090087890625 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -3924,7 +3924,7 @@ "x": 295.93951416015625, "y": 209.58900451660156 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -3945,7 +3945,7 @@ "x": 295.82952880859375, "y": 209.5690155029297 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -3966,7 +3966,7 @@ "x": 295.7195129394531, "y": 209.54901123046875 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -3987,7 +3987,7 @@ "x": 295.6095275878906, "y": 209.5290069580078 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -4008,7 +4008,7 @@ "x": 295.49951171875, "y": 209.50900268554688 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -4029,7 +4029,7 @@ "x": 295.3895263671875, "y": 209.48899841308594 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -4050,7 +4050,7 @@ "x": 295.2795104980469, "y": 209.468994140625 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -4071,7 +4071,7 @@ "x": 295.1695251464844, "y": 209.44900512695313 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -4092,7 +4092,7 @@ "x": 295.05950927734375, "y": 209.4290008544922 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -4113,7 +4113,7 @@ "x": 294.94952392578125, "y": 209.40899658203125 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -4134,7 +4134,7 @@ "x": 294.8395080566406, "y": 209.3834991455078 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -4155,7 +4155,7 @@ "x": 294.7295227050781, "y": 209.35350036621094 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -4176,7 +4176,7 @@ "x": 294.6195068359375, "y": 209.32350158691406 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -4197,7 +4197,7 @@ "x": 294.509521484375, "y": 209.2935028076172 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -4218,7 +4218,7 @@ "x": 294.3995056152344, "y": 209.2635040283203 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -4239,7 +4239,7 @@ "x": 294.28948974609375, "y": 209.23350524902344 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -4260,7 +4260,7 @@ "x": 294.17950439453125, "y": 209.20350646972656 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -4281,7 +4281,7 @@ "x": 294.0694885253906, "y": 209.1735076904297 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -4302,7 +4302,7 @@ "x": 293.9595031738281, "y": 209.1435089111328 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -4323,7 +4323,7 @@ "x": 293.8494873046875, "y": 209.11351013183594 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -4344,7 +4344,7 @@ "x": 293.739501953125, "y": 209.0780029296875 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -4365,7 +4365,7 @@ "x": 293.6295166015625, "y": 209.0380096435547 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -4386,7 +4386,7 @@ "x": 293.5195007324219, "y": 208.9980010986328 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -4407,7 +4407,7 @@ "x": 293.4095153808594, "y": 208.9580078125 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -4428,7 +4428,7 @@ "x": 293.29949951171875, "y": 208.91799926757813 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -4449,7 +4449,7 @@ "x": 293.18951416015625, "y": 208.8780059814453 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -4470,7 +4470,7 @@ "x": 293.0794982910156, "y": 208.83799743652344 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -4491,7 +4491,7 @@ "x": 292.9695129394531, "y": 208.79800415039063 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -4512,7 +4512,7 @@ "x": 292.8595275878906, "y": 208.75799560546875 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -4533,7 +4533,7 @@ "x": 292.74951171875, "y": 208.71800231933594 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -4554,7 +4554,7 @@ "x": 292.64501953125, "y": 208.67799377441406 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -4575,7 +4575,7 @@ "x": 292.5450134277344, "y": 208.63800048828125 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -4596,7 +4596,7 @@ "x": 292.44500732421875, "y": 208.59800720214844 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -4617,7 +4617,7 @@ "x": 292.34503173828125, "y": 208.55799865722656 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -4638,7 +4638,7 @@ "x": 292.2450256347656, "y": 208.51800537109375 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -4659,7 +4659,7 @@ "x": 292.14501953125, "y": 208.47799682617188 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -4680,7 +4680,7 @@ "x": 292.0450134277344, "y": 208.43800354003906 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -4701,7 +4701,7 @@ "x": 291.94500732421875, "y": 208.39801025390625 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -4722,7 +4722,7 @@ "x": 291.84503173828125, "y": 208.35800170898438 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -4743,7 +4743,7 @@ "x": 291.7450256347656, "y": 208.31800842285156 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -4764,7 +4764,7 @@ "x": 291.64501953125, "y": 208.2725067138672 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -4785,7 +4785,7 @@ "x": 291.5450134277344, "y": 208.22250366210938 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -4806,7 +4806,7 @@ "x": 291.44500732421875, "y": 208.17250061035156 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -4827,7 +4827,7 @@ "x": 291.3450012207031, "y": 208.12249755859375 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -4848,7 +4848,7 @@ "x": 291.2450256347656, "y": 208.072509765625 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -4869,7 +4869,7 @@ "x": 291.14501953125, "y": 208.0225067138672 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -4890,7 +4890,7 @@ "x": 291.0450134277344, "y": 207.97250366210938 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -4911,7 +4911,7 @@ "x": 290.94500732421875, "y": 207.92250061035156 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -4932,7 +4932,7 @@ "x": 290.8450012207031, "y": 207.87249755859375 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -4953,7 +4953,7 @@ "x": 290.7450256347656, "y": 207.822509765625 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -4974,7 +4974,7 @@ "x": 290.6505126953125, "y": 207.7725067138672 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -4995,7 +4995,7 @@ "x": 290.5605163574219, "y": 207.72250366210938 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -5016,7 +5016,7 @@ "x": 290.47052001953125, "y": 207.67250061035156 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -5037,7 +5037,7 @@ "x": 290.3804931640625, "y": 207.62249755859375 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 }, { @@ -5058,7 +5058,7 @@ "x": 290.2904968261719, "y": 207.572509765625 }, - "state": 4, + "state": "MOVING", "targetIndex": 0 } ],