@elite-dangerous-almanac/core 0.2.4 → 0.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/PROVENANCE/i18n/SOURCES.md +118 -94
- package/PROVENANCE/materials/SOURCES.md +22 -0
- package/PROVENANCE/ships/SOURCES.md +33 -6
- package/README.md +14 -8
- package/assets/ships/LakonMiner/schematic-bottom.svg +5 -3
- package/assets/ships/LakonMiner/schematic-top.svg +2 -4
- package/dist/chunk-3CKWT2F3.js +1 -0
- package/dist/{chunk-7ZERP4TB.js.map → chunk-3CKWT2F3.js.map} +1 -1
- package/dist/{chunk-A7KNIFRU.js → chunk-3P455LF4.js} +1 -1
- package/dist/{chunk-A7KNIFRU.js.map → chunk-3P455LF4.js.map} +1 -1
- package/dist/chunk-5QSCLEEB.js +1 -0
- package/dist/chunk-5QSCLEEB.js.map +1 -0
- package/dist/{chunk-4TFAZX73.js → chunk-773VO2GK.js} +1 -1
- package/dist/{chunk-7EWZGDWY.js → chunk-7S7ZTZZY.js} +1 -1
- package/dist/chunk-A5TCT2AJ.js +1 -0
- package/dist/{chunk-AIEC3LBT.js.map → chunk-A5TCT2AJ.js.map} +1 -1
- package/dist/chunk-AAU7OM47.js +1 -0
- package/dist/chunk-AAU7OM47.js.map +1 -0
- package/dist/{chunk-3LZXB2MC.js → chunk-ABSDZINM.js} +1 -1
- package/dist/{chunk-DSMLYA2M.js → chunk-BMQM4JBL.js} +1 -1
- package/dist/{chunk-DSMLYA2M.js.map → chunk-BMQM4JBL.js.map} +1 -1
- package/dist/chunk-E3AUKPSQ.js +1 -0
- package/dist/{chunk-G2VSQFD6.js.map → chunk-E3AUKPSQ.js.map} +1 -1
- package/dist/chunk-EFQOUATZ.js +1 -0
- package/dist/chunk-EFQOUATZ.js.map +1 -0
- package/dist/chunk-GISL7YML.js +1 -0
- package/dist/chunk-GISL7YML.js.map +1 -0
- package/dist/chunk-IZIIGK3W.js +1 -0
- package/dist/{chunk-TW7LUBHD.js.map → chunk-IZIIGK3W.js.map} +1 -1
- package/dist/chunk-KBCA4GEZ.js +1 -0
- package/dist/chunk-KLC5XT6F.js +1 -0
- package/dist/chunk-KLC5XT6F.js.map +1 -0
- package/dist/chunk-LOWDDWDT.js +1 -0
- package/dist/{chunk-GLWPSVFV.js.map → chunk-LOWDDWDT.js.map} +1 -1
- package/dist/chunk-MRLUWHGI.js +1 -0
- package/dist/{chunk-FF2X4K5P.js.map → chunk-MRLUWHGI.js.map} +1 -1
- package/dist/chunk-NBLLW7TH.js +1 -0
- package/dist/chunk-NBLLW7TH.js.map +1 -0
- package/dist/{chunk-IWFQ4ZKF.js → chunk-OFZGNWBT.js} +1 -1
- package/dist/chunk-PF3HZ73R.js +1 -0
- package/dist/{chunk-ITKZKREP.js.map → chunk-PF3HZ73R.js.map} +1 -1
- package/dist/{chunk-KGJCTSVV.js → chunk-S3MONE55.js} +1 -1
- package/dist/chunk-S3MONE55.js.map +1 -0
- package/dist/{chunk-OLKNYGGT.js → chunk-SDXUPP4P.js} +1 -1
- package/dist/chunk-XFDMCPDW.js +1 -0
- package/dist/{chunk-GRSNX36B.js.map → chunk-XFDMCPDW.js.map} +1 -1
- package/dist/chunk-XSN53F7W.js +1 -0
- package/dist/{chunk-DBGXZF7O.js.map → chunk-XSN53F7W.js.map} +1 -1
- package/dist/{chunk-MTJ4MS7W.js → chunk-YCGISPDR.js} +1 -1
- package/dist/i18n/experimental-effect-descriptions.d.ts +21 -6
- package/dist/i18n/experimental-effect-descriptions.js +1 -1
- package/dist/i18n/experimental-effects.js +1 -1
- package/dist/i18n/index.d.ts +0 -2
- package/dist/i18n/index.js +1 -1
- package/dist/i18n/materials.d.ts +7 -6
- package/dist/i18n/materials.js +1 -1
- package/dist/i18n/micro-resources.d.ts +7 -6
- package/dist/i18n/micro-resources.js +1 -1
- package/dist/i18n/pre-engineered.js +1 -1
- package/dist/materials/index.js +1 -1
- package/dist/materials/materials-all.js +1 -1
- package/dist/materials/materials-encoded.js +1 -1
- package/dist/materials/materials-manufactured.js +1 -1
- package/dist/materials/materials.js +1 -1
- package/dist/materials/micro-resources-all.js +1 -1
- package/dist/materials/micro-resources.js +1 -1
- package/dist/ships/blueprint-costs.js +1 -1
- package/dist/ships/blueprint-journal.js +1 -1
- package/dist/ships/build-metrics.js +1 -1
- package/dist/ships/engineering-options.d.ts +10 -4
- package/dist/ships/engineering-options.js +1 -1
- package/dist/ships/engineering.js +1 -1
- package/dist/ships/gunsights.d.ts +2 -2
- package/dist/ships/gunsights.js +1 -1
- package/dist/ships/index.js +1 -1
- package/dist/ships/modules-all.js +1 -1
- package/dist/ships/modules-hardpoint.js +1 -1
- package/dist/ships/modules.js +1 -1
- package/dist/ships/pre-engineered-stats.d.ts +5 -0
- package/dist/ships/pre-engineered-stats.js +1 -1
- package/dist/ships/ship-loadout.d.ts +4 -1
- package/dist/ships/ship-loadout.js +1 -1
- package/dist/ships/weapons.d.ts +14 -4
- package/dist/ships/weapons.js +1 -1
- package/package.json +1 -9
- package/dist/chunk-37JIMWLK.js +0 -1
- package/dist/chunk-37JIMWLK.js.map +0 -1
- package/dist/chunk-5ZVYRX6Z.js +0 -1
- package/dist/chunk-5ZVYRX6Z.js.map +0 -1
- package/dist/chunk-7ZERP4TB.js +0 -1
- package/dist/chunk-AIEC3LBT.js +0 -1
- package/dist/chunk-CJQ37JII.js +0 -1
- package/dist/chunk-CJQ37JII.js.map +0 -1
- package/dist/chunk-DAQ3PJ4R.js +0 -1
- package/dist/chunk-DAQ3PJ4R.js.map +0 -1
- package/dist/chunk-DBGXZF7O.js +0 -1
- package/dist/chunk-FD74K27A.js +0 -1
- package/dist/chunk-FD74K27A.js.map +0 -1
- package/dist/chunk-FF2X4K5P.js +0 -1
- package/dist/chunk-G2VSQFD6.js +0 -1
- package/dist/chunk-GLWPSVFV.js +0 -1
- package/dist/chunk-GRSNX36B.js +0 -1
- package/dist/chunk-ITKZKREP.js +0 -1
- package/dist/chunk-JO52LYO3.js +0 -1
- package/dist/chunk-KGJCTSVV.js.map +0 -1
- package/dist/chunk-KJFUNIIY.js +0 -1
- package/dist/chunk-KJFUNIIY.js.map +0 -1
- package/dist/chunk-SC6Z2TV7.js +0 -1
- package/dist/chunk-SC6Z2TV7.js.map +0 -1
- package/dist/chunk-TW7LUBHD.js +0 -1
- package/dist/i18n/engineering-groups.d.ts +0 -21
- package/dist/i18n/engineering-groups.js +0 -1
- package/dist/i18n/engineering-groups.js.map +0 -1
- package/dist/i18n/ships.d.ts +0 -36
- package/dist/i18n/ships.js +0 -1
- package/dist/i18n/ships.js.map +0 -1
- /package/dist/{chunk-4TFAZX73.js.map → chunk-773VO2GK.js.map} +0 -0
- /package/dist/{chunk-7EWZGDWY.js.map → chunk-7S7ZTZZY.js.map} +0 -0
- /package/dist/{chunk-3LZXB2MC.js.map → chunk-ABSDZINM.js.map} +0 -0
- /package/dist/{chunk-JO52LYO3.js.map → chunk-KBCA4GEZ.js.map} +0 -0
- /package/dist/{chunk-IWFQ4ZKF.js.map → chunk-OFZGNWBT.js.map} +0 -0
- /package/dist/{chunk-OLKNYGGT.js.map → chunk-SDXUPP4P.js.map} +0 -0
- /package/dist/{chunk-MTJ4MS7W.js.map → chunk-YCGISPDR.js.map} +0 -0
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
2
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" viewBox="0 0 1200 800" width="1200" height="800" color="#17242d">
|
|
3
3
|
<g id="layer-hardpoint" inkscape:groupmode="layer" data-feature-category="hardpoint" data-feature-color="#e63946">
|
|
4
|
-
<g id="layer-hardpoint-01" inkscape:groupmode="layer" data-feature="hardpoint" data-journal-slot="MediumMiningHardpoint1" data-visible="true"><path d="M 550.4308 143.5932 L 538.0390 143.5932 L 534.5538 140.1080 L 534.5538 116.0989 L 538.0390 112.6137 L 550.4308 112.6137 L 553.9160 116.0989 L 553.9160 140.1080 Z" fill="#e63946" fill-opacity="0.82" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round"/></g>
|
|
5
|
-
<g id="layer-hardpoint-02" inkscape:groupmode="layer" data-feature="hardpoint" data-journal-slot="MediumMiningHardpoint2" data-visible="true"><path d="M 593.9806 143.5932 L 581.5888 143.5932 L 578.1036 140.1080 L 578.1036 116.0989 L 581.5888 112.6137 L 593.9806 112.6137 L 597.4658 116.0989 L 597.4658 140.1080 Z" fill="#e63946" fill-opacity="0.82" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round"/></g>
|
|
6
4
|
<g id="layer-hardpoint-03" inkscape:groupmode="layer" data-feature="hardpoint" data-journal-slot="MediumHardpoint3" data-visible="true"><path d="M 588.6486 394.9119 L 588.6487 360.7959 L 590.3189 352.5510 L 609.6811 352.5510 L 611.3804 360.7959 L 611.3804 369.3659 L 611.3803 394.9110 Z" fill="#e63946" fill-opacity="0.72" fill-rule="evenodd" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round"/></g>
|
|
7
|
-
<g id="layer-hardpoint-04" inkscape:groupmode="layer" data-feature="hardpoint" data-journal-slot="SmallMiningHardpoint1" data-visible="true"><path d="M 572.3121 158.7548 L 559.9203 158.7548 L 556.4351 155.2696 L 556.4351 131.2605 L 559.9203 127.7753 L 572.3121 127.7753 L 575.7973 131.2605 L 575.7973 155.2696 Z" fill="#e63946" fill-opacity="0.82" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round"/></g>
|
|
8
5
|
<g id="layer-hardpoint-05" inkscape:groupmode="layer" data-feature="hardpoint" data-journal-slot="SmallHardpoint2" data-visible="true"><path d="M 591.5851 248.5276 L 591.5851 248.5275 L 593.3278 246.7849 L 593.5701 246.7849 L 606.6722 246.7850 L 608.4149 248.5276 L 608.4149 255.8265 L 608.4148 269.6347 L 604.6837 272.6955 L 595.1594 272.8523 L 591.5851 269.6355 Z" fill="#e63946" fill-opacity="0.72" fill-rule="evenodd" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round"/></g>
|
|
9
6
|
<g id="layer-hardpoint-08" inkscape:groupmode="layer" data-feature="hardpoint" data-journal-slot="LargeMiningHardpoint1" data-visible="true"><path d="M 615.0896 77.4899 L 653.8140 77.4899 L 653.8140 116.2141 L 653.8140 135.5763 L 615.0896 135.5763 L 615.0896 116.2142 Z" fill="#e63946" fill-opacity="0.72" fill-rule="evenodd" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round"/></g>
|
|
10
7
|
</g>
|
|
@@ -29,7 +26,8 @@
|
|
|
29
26
|
</g>
|
|
30
27
|
<g id="layer-utility-mount" inkscape:groupmode="layer" data-feature-category="utility_mount" data-feature-color="#e056a7">
|
|
31
28
|
<g id="layer-utility-mount-01" inkscape:groupmode="layer" data-feature="utility_mount" data-journal-slot="TinyHardpoint1" data-visible="true"><path d="M 582.2964 152.7612 L 589.1119 152.7612 L 591.0287 150.8444 L 591.0287 144.0289 L 589.1119 142.1120 L 582.2964 142.1120 L 580.3795 144.0289 L 580.3795 150.8444 Z" fill="#e056a7" fill-opacity="0.82" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round"/></g>
|
|
32
|
-
<g id="layer-utility-mount-explicit-
|
|
29
|
+
<g id="layer-utility-mount-explicit-01" inkscape:groupmode="layer" data-feature="utility_mount" data-journal-slot="TinyHardpoint3" data-visible="true"><path d="M 700.0638 671.8070 L 706.8793 671.8070 L 708.7962 669.8902 L 708.7962 663.0747 L 706.8793 661.1578 L 700.0638 661.1578 L 698.1470 663.0747 L 698.1470 669.8902 Z" fill="#e056a7" fill-opacity="0.82" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round"/></g>
|
|
30
|
+
<g id="layer-utility-mount-explicit-02" inkscape:groupmode="layer" data-feature="utility_mount" data-journal-slot="TinyHardpoint4" data-visible="true"><path d="M 491.2446 671.8070 L 498.0601 671.8070 L 499.9769 669.8902 L 499.9769 663.0747 L 498.0601 661.1578 L 491.2446 661.1578 L 489.3277 663.0747 L 489.3277 669.8902 Z" fill="#e056a7" fill-opacity="0.82" stroke="currentColor" stroke-width="1.2" stroke-linejoin="round"/></g>
|
|
33
31
|
</g>
|
|
34
32
|
<g id="layer-hull" inkscape:groupmode="layer" data-technical-layer="hull" data-endpoint-extension="3" data-junction-gap="3" data-junction-repairs="857">
|
|
35
33
|
<path data-technical-line="structure" data-path-assembly="connected" d="M 311.4684 539.2705 L 321.4915 539.2706 M 313.1668 472.6621 L 313.3187 459.2597 M 313.1704 494.4510 L 313.1884 512.2436 M 313.1878 511.7074 L 328.3480 511.7074 M 313.3910 442.3553 L 313.4087 454.9444 L 313.4053 466.8130 M 313.4098 441.5379 L 313.4122 454.3186 L 313.4121 467.6179 M 313.4151 564.0762 L 313.4136 553.6523 L 313.4195 564.0763 M 313.4195 564.0763 L 323.8935 570.3967 M 313.4195 564.0763 L 323.3229 570.0583 M 313.4381 480.4903 L 313.4197 498.2152 L 313.7051 481.1269 M 313.4480 419.6405 L 313.4480 441.5965 M 313.4480 422.4000 L 329.1215 422.4000 M 313.4480 425.5278 L 329.1174 425.5278 M 313.4480 429.6609 L 329.1119 429.6609 M 313.4480 432.7887 L 326.1567 432.7887 M 313.4480 436.9217 L 326.1567 436.9217 M 313.4480 441.7193 L 313.4480 476.4662 M 313.4480 444.1825 L 326.1568 444.1824 M 313.4480 447.3103 L 326.1568 447.3103 M 313.4480 451.4433 L 326.1568 451.4433 M 313.4480 454.5711 L 326.1568 454.5711 M 313.4480 458.7041 L 326.1568 458.7041 M 313.4480 461.8319 L 326.1568 461.8319 M 313.4480 466.8145 L 326.7584 466.8198 M 313.4480 467.5682 L 326.7611 467.5733 M 313.4480 539.2705 L 313.4480 564.0678 L 323.5665 570.1598 M 314.6669 412.8616 L 328.5321 380.5093 L 314.7431 412.7448 M 314.7950 412.7789 L 324.7859 389.3394 M 314.8135 412.6736 L 322.1193 395.5954 M 315.0127 412.8733 L 324.6888 390.0347 M 315.6119 565.3705 L 315.6989 554.3763 M 320.1661 385.5464 L 320.1824 370.2819 M 320.1834 369.4115 L 320.1946 358.9447 M 321.9756 533.0917 L 336.4922 533.0968 M 322.0475 518.7263 L 336.4922 518.7218 M 326.1567 440.0495 L 315.8150 440.0495 L 326.1568 440.0494 M 326.5252 356.8331 L 337.2982 356.8331 M 329.0974 504.8291 L 316.7321 504.0822 L 329.1033 503.9701 M 329.1106 430.6331 L 329.1351 412.1163 M 329.1328 411.3371 L 329.2708 389.8523 M 329.7952 429.7280 L 329.8170 412.0957 M 329.8147 411.3146 L 329.9495 389.2649 M 330.6882 430.6102 L 331.3003 466.8284 M 330.7533 541.7666 L 346.0468 541.7666 M 331.3455 397.3590 L 331.9314 429.6921 L 331.9972 397.3577 M 331.8952 466.8259 L 331.9376 430.5872 M 332.2017 551.3272 L 348.2168 553.6419 M 333.3892 485.2819 L 346.0489 485.3028 M 333.7927 484.6341 L 346.0482 484.6546 M 335.1276 490.6790 L 346.0542 490.6444 M 335.3574 551.2107 L 348.2168 553.6419 M 335.6503 480.8817 L 346.0445 480.9104 M 335.8589 498.2405 L 346.0619 498.2699 M 335.8599 498.9627 L 346.0626 498.9922 M 335.9141 491.5235 L 346.0551 491.4834 M 335.9727 480.1686 L 346.0437 480.1951 M 336.4922 516.3990 L 336.4922 534.9884 M 337.3935 560.8375 L 348.2667 574.1994 M 337.5610 578.6340 L 380.6762 604.5917 M 337.6704 578.6510 L 380.6284 604.5141 M 337.7522 560.0265 L 348.4387 572.7420 L 348.2168 553.6419 M 337.8101 430.3057 L 349.8984 430.3057 M 337.8101 430.3084 L 337.8101 411.0465 L 348.5301 411.0465 L 348.5301 430.3084 M 337.8203 378.1713 L 337.8203 392.7472 L 380.7000 392.7472 L 380.7000 378.1713 M 338.0621 578.9208 L 380.1493 604.2743 M 338.6875 411.0465 L 338.7421 392.7472 M 339.3909 411.0465 L 339.4265 392.7472 M 346.0180 439.5121 L 346.0345 471.0250 M 346.0280 516.0256 L 346.0280 537.5905 L 346.0280 516.8069 M 346.0345 471.0250 L 346.0403 498.2699 M 346.0345 471.0250 L 346.0918 528.0670 L 346.0346 545.4794 M 346.0396 476.0329 L 334.0966 476.0317 L 346.0401 476.5723 M 346.0545 356.8331 L 356.8756 356.8331 M 349.4369 553.6119 L 349.5886 573.3410 L 358.4829 577.9624 L 358.4759 556.9289 M 349.5437 454.1728 L 349.7246 470.9043 M 349.8976 439.4283 L 349.8985 428.7991 M 349.8976 534.8769 L 349.8983 545.5058 M 350.0567 518.6310 L 350.0428 471.1100 L 350.1833 518.6898 M 350.1707 454.7268 L 350.3704 470.9129 M 350.2380 552.4626 L 371.2471 563.8531 L 359.4119 557.4894 M 354.5485 445.3170 L 354.5485 455.7983 M 354.5485 517.8162 L 354.5485 528.2977 M 356.0340 459.4230 L 356.2804 513.5006 M 356.6792 428.4744 L 356.6792 439.9870 M 356.6792 534.4201 L 356.6792 545.9328 M 357.0343 440.2497 L 406.9442 440.2497 M 357.0343 534.1578 L 406.9442 534.1578 M 359.2023 579.7292 L 380.0858 589.5019 M 359.3083 553.0706 L 369.2802 557.9600 M 359.4119 557.4364 L 359.4187 578.4070 L 380.3918 587.9364 L 380.4443 558.4008 M 359.5290 553.0706 L 369.3778 557.8660 M 361.9223 443.6385 L 381.5217 443.6379 M 361.9223 444.2191 L 381.8142 444.2188 M 361.9234 530.0867 L 381.8142 530.0867 M 361.9243 530.6676 L 381.5217 530.6688 M 361.9252 445.1920 L 409.1217 445.1920 M 361.9252 529.2155 L 409.1217 529.2155 M 362.1382 428.3728 L 362.1382 440.2497 M 362.1382 534.1578 L 362.1382 545.9328 M 363.1642 364.7185 L 363.1776 377.5779 M 363.2622 377.5779 L 363.2755 364.7185 M 364.8746 428.2531 L 406.9442 428.2531 M 364.8750 546.1535 L 406.9442 546.1535 M 368.3351 428.2531 L 368.3351 440.2497 M 368.3351 534.1578 L 368.3351 546.1535 M 369.5641 356.8331 L 380.3852 356.8331 M 369.6024 446.0970 L 388.1436 446.0971 L 409.1218 446.0973 M 369.6024 518.5964 L 388.1436 518.5964 L 409.1224 518.5967 M 369.6256 527.5176 L 388.1436 527.5176 L 407.2321 527.5174 L 391.9902 527.5176 L 402.1484 527.5176 L 388.8870 527.5176 M 369.6257 455.0182 L 388.1436 455.0182 M 369.9696 421.3366 L 369.9696 411.0465 L 380.6896 411.0465 L 380.6896 425.0516 M 370.1958 443.4512 L 356.9318 443.4518 L 371.4196 443.4515 M 370.1958 530.9563 L 356.9318 530.9551 L 371.4196 530.9551 M 370.4072 459.4231 L 370.6190 513.5117 M 370.7978 470.9129 L 370.9445 459.0202 M 371.1556 514.0627 L 371.2862 471.1097 L 371.2026 514.0813 M 371.2589 428.2531 L 371.2589 440.2497 M 371.2589 534.1578 L 371.2589 546.1535 M 371.3511 447.1341 L 405.4572 447.1342 M 371.3511 453.9810 L 405.4572 453.9810 M 371.3511 519.7117 L 405.4572 519.7117 M 371.3511 526.5586 L 405.4572 526.5585 M 371.4341 426.0021 L 404.9393 426.0021 M 371.4341 442.5007 L 404.9393 442.5007 M 371.4341 531.9058 L 404.9393 531.9058 M 371.4341 548.4054 L 404.9393 548.4054 M 371.4435 470.9043 L 371.5762 458.6416 M 371.6973 428.2531 L 371.6973 440.2497 M 371.6973 534.1578 L 371.6973 546.1535 M 372.3423 446.0970 L 388.3410 446.0970 M 372.3423 455.0182 L 388.1436 455.0182 M 372.3423 455.0375 L 389.0296 455.0375 L 372.3423 455.0375 Z M 372.3423 455.0375 L 388.8601 455.0375 M 372.3423 518.5749 L 389.0296 518.5749 L 372.3423 518.5749 Z M 372.3423 518.5749 L 388.8603 518.5749 L 401.7009 518.5749 L 389.6553 518.5749 L 401.9085 518.5749 M 372.3423 518.5964 L 388.3422 518.5964 M 372.3423 527.5176 L 388.3399 527.5176 M 372.3653 425.0516 L 406.0487 425.0516 M 372.3653 443.4515 L 406.0487 443.4515 M 372.3653 530.9551 L 406.0487 530.9551 M 372.3653 549.3550 L 406.0487 549.3550 M 372.4612 445.8096 L 402.2991 445.8083 M 372.4612 455.3056 L 405.0724 455.3078 M 372.4612 518.3090 L 402.2991 518.3078 M 372.4612 527.8050 L 402.2991 527.8064 M 373.2575 486.7115 L 373.2907 510.4921 M 374.0090 486.3814 L 374.0276 511.0168 M 374.5718 428.2531 L 374.5718 440.2497 M 374.5718 534.1578 L 374.5718 546.1535 M 374.6229 428.2531 L 374.6229 440.2497 M 374.6229 534.1578 L 374.6229 546.1535 M 375.1961 428.2531 L 375.1961 440.2497 M 375.1961 534.1578 L 375.1961 546.1535 M 375.2508 455.0375 L 375.2861 471.0247 M 375.2854 518.5749 L 375.2857 493.6101 M 375.2868 549.3550 L 375.2874 561.3031 M 376.4513 478.7237 L 389.9280 478.6993 M 379.1078 392.7472 L 379.1436 411.0465 M 379.7922 392.7472 L 379.8468 411.0465 M 379.8131 428.2531 L 379.8131 440.2497 M 379.8131 534.1578 L 379.8131 546.1535 M 380.1513 602.6438 L 389.8367 608.4880 M 380.7193 603.7360 L 389.3933 608.9357 M 381.2817 588.3179 L 381.3353 558.4741 M 382.8211 543.8862 L 396.7491 543.8862 M 382.8317 536.4251 L 396.7492 536.4251 M 382.8385 430.5446 L 396.6252 430.5446 M 382.8453 438.0054 L 396.7668 438.0044 M 383.2856 537.0059 L 396.6282 537.0059 M 383.2924 431.1258 L 396.6253 431.1261 M 383.3080 437.4240 L 396.6261 437.4243 M 383.3331 543.3053 L 396.6282 543.3053 M 386.5174 397.3577 L 386.5737 425.0516 M 386.6672 425.0491 L 400.9733 425.0446 M 386.6672 425.0516 L 387.1690 397.3590 M 388.1436 455.0182 L 407.2321 455.0180 L 391.9902 455.0182 L 405.0724 455.0182 M 388.5650 389.2649 L 388.6998 411.3146 M 388.6975 412.0957 L 388.7135 425.0516 M 388.8599 446.0777 L 372.3423 446.0776 L 389.0296 446.0777 M 388.8865 518.5964 L 402.1477 518.5964 L 391.9902 518.5964 M 388.8867 446.0970 L 402.1477 446.0971 L 391.9902 446.0971 M 388.8889 446.0777 L 401.7009 446.0777 L 389.6552 446.0777 L 401.9085 446.0777 M 388.8889 455.0375 L 401.7009 455.0375 L 389.6553 455.0375 L 401.9085 455.0375 M 389.0296 527.5348 L 372.3423 527.5347 L 388.8603 527.5348 L 401.7009 527.5348 L 389.6553 527.5348 L 401.9085 527.5348 M 389.1416 356.8331 L 399.9146 356.8331 M 389.2438 389.8523 L 389.3819 411.3371 M 389.3795 412.1163 L 389.3966 425.0516 M 389.3931 422.4000 L 402.7054 422.4000 M 389.4114 503.9701 L 401.7826 504.0822 L 389.4173 504.8291 M 389.7565 593.5176 L 389.8369 608.5222 L 390.2997 593.6947 M 389.8931 592.2192 L 389.9855 559.7867 M 389.9861 603.7408 L 405.0724 603.7408 M 390.0124 610.1642 L 405.0724 619.2306 L 405.0724 561.9733 M 390.0837 600.6128 L 405.0724 600.6128 M 390.1724 511.7074 L 406.1449 511.7074 M 390.2128 596.4799 L 405.0724 596.4799 M 390.3963 592.3684 L 390.5451 559.8788 M 390.4107 589.2191 L 405.0724 589.2191 M 390.4250 586.0912 L 405.0724 586.0912 M 391.7536 467.5733 L 405.0724 467.5682 M 391.7563 466.8198 L 405.0724 466.8145 M 392.3634 593.3520 L 405.0724 593.3520 M 392.3635 458.7041 L 405.0724 458.7041 M 392.3635 461.8319 L 405.0724 461.8319 M 392.6127 455.3250 L 403.3137 455.3250 M 392.6127 455.3250 L 403.3137 455.3250 M 392.6127 455.3250 L 403.3137 455.3250 M 392.6127 518.2272 L 403.3137 518.2272 M 392.6127 518.2272 L 403.3137 518.2272 M 392.6127 518.2272 L 403.3137 518.2272 M 393.7287 389.3394 L 403.7195 412.7789 M 393.8257 390.0347 L 403.5019 412.8733 M 393.9140 559.7539 L 393.9594 548.4054 M 394.7677 391.7772 L 403.7070 412.6736 M 396.8527 430.3875 L 407.1593 430.3887 M 396.8527 438.1153 L 407.1593 438.1139 M 396.8527 536.2915 L 407.1593 536.2929 M 399.3096 445.7902 L 384.2491 445.7902 L 399.5227 445.7897 M 399.3096 455.3250 L 384.2491 455.3250 L 399.5227 455.3255 M 399.3096 518.2875 L 384.2491 518.2875 L 399.5227 518.2870 M 399.3096 527.8222 L 384.2491 527.8222 L 399.5227 527.8228 M 401.5501 424.3183 L 412.7938 424.3135 M 401.5501 550.0889 L 412.8432 550.0933 M 401.6201 580.4619 L 401.6310 561.5628 M 401.6225 430.3910 L 416.7011 430.3910 M 401.6225 438.1115 L 416.7017 438.1115 M 401.6225 536.2954 L 416.7017 536.2954 M 401.6364 550.0889 L 401.6650 560.7136 M 401.8415 430.5284 L 416.7011 430.5311 M 402.2123 550.0891 L 402.2844 560.7808 M 402.5967 561.6299 L 402.6048 579.7996 M 403.7714 412.7448 L 389.9825 380.5093 L 403.8476 412.8616 M 404.3371 549.3550 L 404.7574 561.1099 L 404.7602 549.3550 M 404.6291 561.9054 L 404.6678 580.3617 M 404.6988 581.2748 L 404.8192 561.9374 M 404.8096 481.1269 L 405.0950 498.2152 L 405.0765 480.4903 M 405.0724 455.0182 L 405.0724 466.8132 M 405.0724 455.0182 L 405.0724 476.4946 M 405.0724 549.3550 L 405.0724 561.1787 M 405.1024 455.0180 L 405.1026 467.6179 M 405.1060 455.0180 L 405.1094 466.8130 M 405.1074 599.5857 L 405.1101 617.8974 M 405.1074 599.5857 L 405.1140 618.6081 M 405.1074 599.5857 L 405.1084 561.9860 L 405.1080 598.8324 M 405.1078 549.3550 L 405.1095 561.2301 L 405.1080 549.3550 M 405.6849 476.9808 L 405.6849 491.9273 M 405.6942 476.9559 L 405.7090 491.9197 L 405.6942 476.9559 Z M 405.6942 476.9559 L 405.7090 491.9198 M 406.0266 488.5562 L 406.1960 475.0702 M 406.0380 494.6303 L 406.1716 515.9754 M 406.2453 358.9447 L 406.2565 369.4115 M 406.2575 370.2819 L 406.2738 385.5464 M 409.0443 518.8383 L 409.1507 529.5310 M 409.1217 444.7825 L 409.1226 458.2749 M 409.1217 529.5224 L 409.1226 515.8033 M 409.3684 480.6445 L 409.3705 493.7886 M 412.0532 458.6039 L 412.0532 476.9523 M 412.0532 497.4667 L 412.0532 515.8026 M 413.5488 480.6454 L 413.5488 493.7741 M 415.4937 379.4048 L 415.5218 349.2683 M 415.5188 349.2677 L 415.4937 378.6398 L 415.5188 349.2680 M 416.7009 429.0739 L 416.7018 439.4171 M 416.7009 545.3336 L 416.7018 534.9904 M 417.6420 477.7594 L 430.9621 477.7594 M 417.6420 496.5458 L 430.9621 496.5458 M 417.6428 447.3172 L 430.9621 447.3172 M 417.6428 456.6612 L 430.9621 456.6612 M 417.6428 517.7463 L 430.9621 517.7463 M 417.6428 527.0897 L 430.9621 527.0897 M 418.6806 639.4041 L 418.6806 658.9890 M 419.1174 481.0588 L 419.1174 493.2465 M 421.3923 636.4465 L 443.9832 636.4465 M 421.3923 661.9466 L 441.4689 661.9466 M 421.9888 636.4465 L 422.0518 611.3925 L 422.0329 636.4465 M 422.0327 636.4465 L 422.0459 611.3919 M 422.0454 619.8128 L 422.0752 636.4465 M 422.0477 611.3914 L 422.0757 636.4465 M 422.1505 611.3967 L 422.1505 636.4465 M 422.1727 610.4197 L 427.4064 594.6929 M 422.2492 610.4389 L 437.0381 565.7274 M 422.3295 610.4630 L 438.6374 561.3727 M 422.6239 481.0588 L 422.6239 493.2465 M 423.1950 481.0588 L 423.1950 493.2465 M 423.3122 636.4465 L 423.3110 611.1160 L 439.5550 562.2904 M 423.8919 636.4465 L 423.8911 611.2094 L 440.0138 562.7493 M 424.3386 443.4515 L 444.0407 443.4515 M 424.3386 530.9551 L 444.1497 530.9551 M 424.3683 425.0516 L 444.1497 425.0516 M 424.3683 549.3550 L 444.1497 549.3550 L 444.1497 562.0586 L 444.1497 572.7755 M 425.1566 424.8871 L 444.1497 424.8714 M 425.1567 424.8506 L 444.1497 424.8651 M 425.1574 549.4443 L 444.0187 549.4219 M 425.1574 549.4661 L 444.0187 549.4257 M 425.5600 529.8800 L 440.7041 529.8941 M 426.1075 459.4531 L 440.7032 459.4653 M 426.2668 611.5938 L 426.2668 636.4465 M 426.3488 529.8798 L 437.5829 529.8817 M 426.7014 481.0588 L 426.7014 493.2465 M 426.8453 632.9784 L 426.8477 611.6887 M 427.1360 481.0588 L 427.1360 493.2465 M 427.1402 481.1566 L 427.1402 493.1487 M 427.4297 444.5259 L 440.4592 444.5237 M 429.3531 481.1566 L 429.3531 493.1487 M 429.3705 481.0588 L 429.3705 493.2465 M 429.8276 428.2525 L 446.3192 428.2525 M 429.8276 440.2494 L 448.3457 440.2494 M 429.8276 534.1578 L 446.3192 534.1578 M 429.8276 546.1546 L 446.3192 546.1546 M 429.8421 514.9551 L 440.4592 514.9525 M 430.9718 633.5604 L 444.0216 633.5612 M 430.9729 632.9807 L 444.0216 632.9807 M 431.1113 609.2878 L 444.0625 609.2878 M 431.1935 608.7070 L 444.0649 608.7070 M 432.2127 530.8570 L 444.0113 530.8653 M 432.3916 530.8830 L 444.0113 530.9099 M 432.7337 459.4519 L 432.7337 474.9681 M 432.7337 499.3372 L 432.7337 514.9544 M 433.8774 575.2833 L 438.5357 561.2709 M 433.9583 260.1935 L 433.9625 278.8915 M 434.9886 416.5485 L 444.0343 407.5076 M 434.9886 416.5485 L 444.0343 407.5076 M 434.9886 416.5485 L 444.0343 407.5076 M 434.9886 557.7565 L 444.0186 566.7819 M 434.9886 557.7565 L 444.0186 566.7819 M 434.9886 557.7565 L 444.0186 566.7819 M 435.0069 416.6649 L 444.1497 407.5215 M 435.0069 557.7417 L 444.0280 566.7639 M 436.3544 537.9470 L 446.3706 537.9351 M 436.3544 542.3655 L 446.3579 541.7941 M 436.6024 365.0003 L 450.6972 365.0003 M 436.9276 352.6979 L 450.2528 352.6979 M 436.9276 364.9905 L 450.2528 364.9905 M 438.5040 561.2393 L 422.1881 610.4235 L 438.5230 561.2583 M 438.9958 316.2950 L 439.0014 301.9983 M 441.5865 316.3311 L 441.6617 304.6860 L 441.6501 316.3278 M 442.6878 408.8531 L 434.9886 416.5482 L 444.1497 407.3923 M 443.9621 503.9226 L 444.0125 514.8602 M 443.9629 468.2131 L 443.9795 456.6939 M 443.9703 639.1204 L 444.0213 628.5438 M 443.9954 477.7594 L 444.0046 465.7818 M 444.0084 588.2200 L 444.0093 574.2055 L 444.0403 589.0833 L 444.0318 600.4219 M 444.0115 517.7463 L 444.0178 499.0979 M 444.0132 477.7594 L 444.0451 465.5564 M 444.0170 608.2558 L 444.0220 619.3108 L 444.0655 608.5569 M 444.0171 517.7463 L 444.0265 496.5458 M 444.0208 620.7204 L 444.0217 635.5382 M 444.0229 574.1570 L 444.0152 561.0992 L 444.0433 573.5723 M 444.0250 403.5973 L 444.0336 389.9997 L 444.0288 404.1607 M 444.0298 517.7463 L 444.0311 496.5458 M 444.0309 499.8897 L 444.0327 517.7463 M 444.0395 600.2390 L 444.0752 589.0148 M 444.0410 517.7463 L 444.0435 496.5458 M 444.0457 477.7594 L 444.0469 467.5951 M 444.0467 517.7463 L 444.0514 496.5458 M 444.0555 477.7594 L 444.0578 467.6044 M 444.0602 674.4619 L 444.0635 664.3440 M 444.0693 620.2692 L 444.0885 635.7492 M 444.1293 496.5458 L 444.1293 513.4102 M 444.1293 496.5458 L 444.1293 513.3928 L 444.1293 496.5458 Z M 444.1492 467.6823 L 444.1492 477.7594 M 444.1493 496.5458 L 444.1495 517.7463 M 444.1493 649.9503 L 444.1493 632.4063 L 444.1495 607.5222 M 444.1493 664.4833 L 444.1493 680.0519 M 444.1497 371.1640 L 444.1497 382.1297 M 444.1497 382.2688 L 444.1497 403.3536 M 444.1497 404.1764 L 444.1497 428.2525 M 444.1497 467.2879 L 444.1497 477.7594 M 444.1497 496.5458 L 444.1497 517.7463 M 445.5681 403.1792 L 445.5720 389.2859 M 445.5705 639.8638 L 445.5735 654.2971 M 445.5737 404.0266 L 446.1546 414.1996 L 446.1546 404.0095 M 445.5737 562.6888 L 445.6736 573.1076 L 446.1546 562.6734 M 445.5746 629.2106 L 445.5767 615.2660 L 445.5749 604.4879 M 445.5749 424.9597 L 446.1546 414.8245 L 446.1546 424.9801 M 445.5749 587.2092 L 445.5758 573.9236 M 446.0401 697.6373 L 446.1839 668.7610 M 446.0504 668.8370 L 446.1280 679.9813 M 446.1538 639.7763 L 446.1543 654.3952 M 446.1546 389.2915 L 446.1546 403.1902 M 446.1546 604.4870 L 446.1546 615.2639 L 446.1555 629.2106 M 446.1558 587.2092 L 446.2022 573.8781 M 446.3468 651.8257 L 446.9500 626.3715 M 446.4171 621.6340 L 446.4171 648.8574 M 446.4172 621.6340 L 446.4172 648.8512 M 446.4744 651.2615 L 447.0282 627.1508 L 446.5427 651.7862 M 446.5614 428.4948 L 446.5614 440.0071 M 446.5614 435.7786 L 436.3544 436.3592 L 446.5614 436.3769 M 446.7945 656.7950 L 447.4153 611.7941 L 453.9572 580.0784 M 446.9695 625.5499 L 447.2935 611.8792 L 453.9572 579.8800 M 447.2942 611.6823 L 450.6941 595.4963 M 447.2947 611.6738 L 450.8098 594.9422 M 448.3445 562.6636 L 448.3454 573.1484 M 448.3454 389.2992 L 448.4491 403.1367 L 448.9265 389.3051 M 448.3454 432.1617 L 448.3466 466.9716 L 448.9265 432.2586 M 448.3466 587.2101 L 448.4414 573.9780 L 448.9274 587.2092 M 448.3475 424.9668 L 448.3475 414.8230 L 448.9274 424.9966 M 448.3483 403.9811 L 448.3466 414.1745 L 448.9304 404.0101 M 448.8654 278.8945 L 448.8731 260.1867 M 448.9254 562.6695 L 448.9729 573.1501 M 450.3503 371.1640 L 450.3503 382.2202 M 450.3503 382.6796 L 450.3503 403.3536 M 450.3503 404.1764 L 450.3503 425.5881 L 450.3503 466.6046 M 450.3503 467.2900 L 450.3503 549.6309 M 450.3503 550.2997 L 450.3503 562.0586 L 450.3503 572.7755 M 450.3503 573.4146 L 450.3504 597.1289 M 450.3988 449.4781 L 450.3988 466.5597 M 450.3988 466.5597 L 450.3988 449.8480 L 450.3988 466.5597 Z M 450.4124 488.8280 L 450.4124 513.3928 L 450.4124 488.8454 L 450.4124 513.4102 M 450.4348 481.1430 L 450.4425 498.6010 M 450.4374 443.4520 L 450.4439 466.5180 M 450.4425 499.4374 L 450.4664 487.6783 M 450.4441 467.2088 L 450.4481 481.4934 M 450.4443 467.9959 L 493.7461 467.9959 L 526.3181 467.9958 M 450.4493 421.4388 L 450.5063 410.1646 M 450.4541 530.8606 L 450.4589 516.8453 M 450.4556 443.4515 L 450.4957 464.7075 L 450.4732 443.2391 M 450.4599 588.2188 L 450.4192 574.2055 L 450.4966 589.0815 M 450.4600 481.8090 L 450.4684 465.8092 M 450.4605 512.2277 L 450.4652 498.2611 M 450.4647 530.9549 L 450.4948 484.6272 L 450.4937 530.9549 M 450.4672 467.9959 L 450.4748 453.6250 M 450.4679 526.0048 L 450.4396 497.2699 L 450.4717 520.2460 M 450.4708 482.0950 L 450.4756 467.9959 M 450.4754 468.4799 L 460.8548 468.4799 M 450.4774 574.1579 L 450.4936 561.0983 L 450.4830 573.5732 M 450.4812 403.5946 L 450.4995 389.9985 L 450.5217 404.1578 M 450.4844 497.3297 L 450.4888 486.2204 M 450.4897 483.9358 L 450.4960 467.9959 M 450.8083 409.7947 L 450.8083 424.8396 M 450.8083 549.4471 L 450.8083 564.5108 M 451.0514 409.8966 L 451.0529 424.8361 M 451.0514 564.5108 L 451.0529 549.4510 M 451.3330 428.9977 L 451.3330 439.6065 M 451.3330 534.6988 L 451.3330 545.3076 M 451.8772 318.6402 L 451.8772 338.2176 M 451.9071 428.9977 L 451.9071 439.6065 M 451.9071 534.6988 L 451.9071 545.3076 M 451.9381 439.9241 L 452.0486 428.6331 M 451.9780 545.6733 L 451.9992 534.3803 M 451.9933 440.5301 L 452.0640 428.0129 M 452.0312 533.7743 L 452.0465 546.2938 M 452.1774 427.2716 L 452.1774 441.2947 M 452.1774 533.0105 L 452.1774 547.0336 M 454.0210 571.0778 L 454.9892 551.8159 M 454.4601 264.0146 L 454.5056 306.2628 L 454.4796 263.9815 M 454.4678 306.2628 L 454.4739 276.8668 M 454.4828 285.1305 L 454.4890 306.3591 L 454.5021 335.4720 M 454.4917 341.7079 L 454.5493 307.0372 L 454.5051 341.4122 M 454.5003 297.6241 L 454.6170 266.6106 M 454.5008 306.9418 L 454.5022 335.3707 M 454.5014 317.5964 L 454.4873 307.0369 L 454.5017 335.6791 M 454.6170 264.0243 L 454.6170 342.2951 M 454.7235 699.1702 L 454.7235 728.7058 M 454.7235 704.6186 L 454.7235 719.1765 M 454.7437 427.2716 L 454.7437 441.2947 M 454.7437 533.0105 L 454.7437 547.0336 M 454.7505 263.3330 L 467.9560 230.2766 M 454.7780 699.1702 L 454.7780 728.7058 M 455.1464 683.4061 L 455.1594 698.2330 L 455.1541 683.4107 L 455.1588 698.3065 M 455.1562 729.0873 L 455.1576 699.2435 M 455.1579 552.8651 L 455.1579 570.4974 M 455.1581 538.1271 L 455.1581 552.0840 L 455.1581 538.1284 M 455.1581 539.7157 L 455.1751 551.7877 L 455.1581 539.7196 M 455.1581 552.0841 L 455.3835 530.0343 M 455.1581 552.8858 L 455.1607 571.4028 M 455.1582 552.1065 L 455.6033 530.6217 M 455.1610 645.5985 L 468.0688 644.8517 L 455.1633 644.7395 M 455.1865 607.5901 L 473.4194 607.5831 M 455.1865 607.6019 L 455.1866 550.7378 M 455.1865 621.9718 L 455.1865 639.0154 M 455.1866 534.0716 L 455.1866 549.2960 M 455.1866 683.0912 L 455.1866 699.5309 M 455.1866 700.4658 L 455.1866 732.7522 M 455.1866 734.0929 L 455.1866 748.9963 M 455.5732 734.2870 L 455.6052 749.2916 L 456.0610 734.4641 M 455.5745 468.0651 L 481.4771 468.0659 M 455.5745 468.1327 L 481.4771 468.0659 M 455.5745 491.3470 L 478.3912 491.3470 M 455.5745 491.9258 L 478.3913 491.9276 M 455.6623 732.9887 L 455.7543 700.5561 M 455.7199 683.3571 L 455.8010 699.6586 M 455.7522 744.5103 L 469.0746 744.5103 M 455.8483 741.3822 L 469.0746 741.3822 M 455.9754 737.2493 L 469.0746 737.2493 M 455.9924 683.9989 L 456.0660 700.0796 M 456.0426 521.6234 L 460.0312 530.8041 L 469.8415 553.6427 M 456.1418 733.1379 L 456.3393 700.6482 M 456.1609 729.9885 L 469.0746 729.9885 M 456.1799 726.8606 L 469.0746 726.8606 M 456.2473 263.9797 L 469.6487 230.4530 L 456.8290 264.0920 M 456.2617 312.3286 L 456.2712 341.1792 M 456.3524 312.4196 L 456.8382 340.7091 M 456.7061 343.7702 L 470.2173 343.7694 M 456.7436 750.9336 L 472.1078 760.0000 M 456.7788 682.5360 L 474.8351 682.5360 L 474.8351 760.0000 M 456.7799 652.4768 L 474.8350 652.4768 L 474.8351 560.3000 M 456.8189 521.2787 L 471.1028 553.6310 M 457.1318 520.6832 L 471.6364 553.5142 M 457.2193 453.3412 L 505.6301 453.3394 M 457.6005 608.3428 L 474.0077 608.3367 M 457.6858 521.9371 L 474.0394 521.9358 M 457.9424 522.5181 L 474.0388 522.5175 M 458.2810 580.8188 L 469.0745 580.8188 M 458.2810 584.9519 L 469.0745 584.9519 M 458.2810 588.0797 L 469.0745 588.0797 M 458.2810 592.2127 L 469.0745 592.2127 M 458.2810 595.3405 L 469.0745 595.3405 M 458.2811 563.1694 L 469.0746 563.1694 M 458.2811 566.2972 L 469.0746 566.2972 M 458.2811 570.4303 L 469.0746 570.4303 M 458.2811 573.5581 L 469.0746 573.5581 M 458.2811 577.6911 L 469.0746 577.6911 M 458.2811 599.4735 L 469.0745 599.4735 M 458.2811 602.6013 L 469.0745 602.6013 M 458.2811 734.1214 L 469.0746 734.1214 M 459.1973 700.5234 L 459.2724 682.5360 M 459.6016 697.5762 L 460.0848 682.5360 M 459.8293 312.7749 L 506.5457 312.7749 M 459.8293 343.7693 L 506.5457 343.7693 M 459.8748 309.7149 L 506.5755 309.7149 M 459.8748 340.7093 L 506.5755 340.7093 M 460.3336 530.1088 L 470.2723 553.5483 M 460.4813 695.6229 L 460.5856 683.9205 L 461.0141 694.8255 M 461.6570 265.2691 L 486.0900 240.2280 M 461.6570 275.4391 L 461.6570 306.3597 M 462.2370 277.1017 L 475.5852 277.8110 L 462.2371 277.8100 M 462.2370 277.1726 L 477.9376 261.2941 L 486.5726 252.5626 M 462.2371 279.2156 L 475.9726 280.2314 M 462.2371 279.7985 L 475.9726 280.8140 M 462.2379 265.5054 L 485.9556 241.1980 L 484.4639 251.8939 L 462.2379 274.3238 M 462.2379 309.7149 L 462.2370 275.1478 L 485.0128 252.1649 L 486.5731 240.9725 M 462.4169 461.0483 L 476.6249 461.1488 M 462.4207 451.5046 L 476.6172 451.4033 M 463.2631 450.9897 L 475.8748 450.8996 M 463.2746 461.5633 L 475.8931 461.6525 M 463.6284 449.1138 L 476.1979 449.1138 M 463.6325 682.5360 L 463.6326 670.9092 M 463.6682 463.4560 L 476.2192 463.4560 M 463.8005 279.9760 L 463.8005 290.6242 L 463.8005 300.7373 M 463.8005 287.7151 L 475.6821 292.1201 M 463.8005 288.3090 L 476.2609 292.9291 M 463.8759 414.3535 L 464.2437 404.3469 M 465.6264 326.9510 L 476.8950 326.9504 M 465.6291 319.1800 L 476.5484 319.7612 L 465.6427 319.7612 M 465.6388 326.3693 L 476.8642 326.3704 M 465.6592 334.1400 L 476.5611 333.5570 L 465.6678 333.5591 M 467.5137 659.4914 L 478.0850 659.4957 M 467.5137 673.8661 L 478.2589 673.8611 M 467.7823 230.5005 L 454.5936 263.2293 L 467.8061 230.3670 M 467.8979 721.2313 L 467.9093 702.3322 M 467.9077 688.2891 L 467.9448 701.4830 M 468.0142 229.8492 L 482.0048 194.7617 L 468.0349 229.7678 M 468.1232 229.8580 L 482.2097 194.5962 M 468.2591 702.3993 L 468.2677 720.5691 M 468.5036 689.1024 L 468.5914 701.5502 M 468.8569 425.4629 L 468.8569 436.9781 M 468.8637 425.4629 L 468.8637 436.9781 M 468.8734 422.7468 L 468.8734 439.7666 M 470.3803 702.6748 L 470.4208 721.1312 M 470.6983 689.1842 L 471.1700 701.8793 L 471.1745 688.4695 M 471.0902 350.9367 L 471.0902 372.1688 M 471.0902 385.7886 L 471.0902 407.0207 M 471.0902 420.6408 L 471.0902 441.8726 M 471.1100 722.0442 L 471.2288 702.7069 M 471.2181 621.8963 L 471.9051 638.9846 L 472.0675 621.2597 M 472.5451 760.0000 L 473.0607 740.3551 M 472.5964 684.3265 L 473.1315 701.9996 L 473.0969 683.6892 M 472.6022 218.3230 L 468.0311 229.7657 L 482.8493 192.5701 M 472.6222 739.6018 L 473.1156 702.7555 L 473.0607 740.3551 M 472.9620 760.0000 L 473.0607 740.3551 M 473.0425 583.1247 L 473.4079 595.7138 L 473.4194 607.5946 M 473.3276 553.2527 L 459.2791 520.7946 L 473.4100 553.4430 M 473.9455 582.3073 L 474.0230 595.0880 L 474.0077 608.3873 M 474.0184 541.3407 L 474.0337 527.1852 M 474.0347 526.3158 L 474.0511 511.0516 M 474.0521 510.1813 L 474.0634 499.7141 M 474.3963 350.9373 L 474.3963 372.1682 M 474.3963 385.7892 L 474.3963 407.0201 M 474.3963 420.6411 L 474.3963 441.8720 M 474.4247 277.7494 L 485.2170 262.0377 M 474.8185 553.5077 L 474.9990 577.1895 L 474.9839 639.3396 M 474.8350 639.5831 L 492.4009 639.5638 M 474.8350 641.0063 L 492.4149 641.0047 M 474.8350 650.6907 L 492.3216 650.6906 M 474.9172 355.9621 L 474.9423 367.2953 M 474.9172 390.8757 L 474.9423 402.2093 M 474.9172 425.6706 L 474.9423 437.0041 M 475.0436 277.7823 L 485.8625 262.0232 M 475.7111 355.9777 L 475.7409 367.2865 M 475.7111 390.8914 L 475.7409 402.2004 M 475.7111 425.6865 L 475.7409 436.9953 M 476.1159 262.9826 L 465.9807 273.2300 L 476.1410 263.0098 M 476.4321 709.9709 L 476.4321 685.7951 L 514.7012 685.7951 L 514.7012 709.9709 M 476.8556 207.6757 L 482.0415 194.6940 M 477.0048 449.1138 L 497.4389 449.1138 M 477.0086 463.4560 L 497.4544 463.4560 M 477.7923 553.3288 L 477.7923 572.9352 M 477.8032 381.8697 L 488.2268 381.8680 L 519.5604 381.8712 M 477.8032 416.7216 L 488.2268 416.7198 L 519.5604 416.7231 M 478.6095 175.4713 L 478.6124 190.5341 M 478.6952 553.3299 L 478.6954 572.2179 L 478.8353 553.3301 M 479.0731 572.2181 L 479.0764 553.3304 M 479.2352 553.3306 L 479.3806 572.7025 L 479.5637 553.3311 M 479.4365 348.4044 L 479.4365 374.7012 M 479.4365 381.8694 L 479.4365 409.5530 M 479.4365 416.7213 L 479.4365 444.4052 M 479.8165 553.3314 L 479.8168 572.7020 M 480.0673 713.6062 L 511.0660 713.6062 M 480.1071 348.4044 L 480.1071 374.7012 M 480.1071 381.8693 L 480.1071 409.5530 M 480.1071 416.7212 L 480.1071 444.4052 M 480.1931 617.7253 L 480.2037 606.8095 M 480.3741 694.0922 L 480.3741 713.6062 M 480.4893 497.6025 L 491.0251 497.6025 M 480.5281 347.4982 L 480.5101 361.5529 L 480.5281 375.6074 M 480.5281 410.4593 L 480.5101 396.4048 L 480.5287 381.8693 M 480.5281 445.3115 L 480.5101 431.2567 L 480.5287 416.7211 M 480.8363 173.4345 L 495.5262 173.4353 M 480.8363 192.5700 L 495.5262 192.5709 M 481.1034 348.4044 L 481.1034 374.7012 M 481.1034 381.8692 L 481.1034 409.5530 M 481.1034 416.7210 L 481.1034 444.4052 M 481.2951 660.8259 L 481.2951 672.1266 M 481.3010 656.7448 L 506.5046 656.7448 M 481.3011 676.1815 L 506.5046 676.1815 M 481.4771 468.0659 L 493.3588 468.1342 L 481.4771 468.1041 M 481.5853 694.0922 L 481.5853 713.6062 M 481.7744 348.4044 L 481.7744 374.7012 M 481.7744 381.8690 L 481.7744 409.5530 M 481.7744 416.7209 L 481.7744 444.4052 M 482.0604 659.6731 L 506.2741 659.6731 M 482.0634 673.2531 L 506.2741 673.2531 M 482.1914 350.4989 L 482.1780 361.5529 L 482.1951 375.6073 M 482.1914 442.3117 L 482.1780 431.2567 L 482.1956 416.7209 M 482.1951 410.4592 L 482.1780 396.4048 L 482.1956 381.8690 M 482.2834 354.7442 L 482.2834 368.3613 M 482.2834 389.5961 L 482.2834 403.2135 M 482.2834 424.4480 L 482.2834 438.0651 M 482.5971 194.3708 L 496.1974 194.3708 M 482.6040 291.1998 L 503.5655 297.4285 M 482.7124 194.3037 L 496.2079 194.3033 M 482.8336 659.6731 L 482.8336 673.2531 M 482.8566 354.8952 L 482.8566 368.2104 M 482.8566 389.7474 L 482.8566 403.0622 M 482.8566 424.5993 L 482.8566 437.9141 M 482.8915 277.2311 L 503.5646 277.2311 M 482.8915 277.8119 L 503.5646 277.8119 M 482.9953 617.7253 L 482.9992 605.9990 M 483.0057 586.2877 L 483.0122 566.4811 M 483.1801 291.9644 L 503.5652 298.0218 M 483.2785 694.0922 L 483.2785 713.6062 M 483.8558 326.9507 L 504.8938 326.9498 M 483.8724 326.3696 L 504.8941 326.3687 M 484.0712 194.3708 L 469.8724 229.8848 L 484.7381 194.3708 M 484.2819 468.0104 L 496.0113 468.0104 L 484.3020 468.0104 L 495.9901 468.0104 M 484.4897 694.0922 L 484.4897 713.6062 M 486.0998 354.8952 L 486.0998 368.2104 M 486.0998 389.7474 L 486.0998 403.0622 M 486.0998 424.5993 L 486.0998 437.9141 M 486.1691 676.2061 L 503.3357 676.2061 L 487.2432 676.2061 L 502.2743 676.2061 M 486.1829 694.0922 L 486.1829 713.6062 M 487.2878 617.7253 L 487.3616 606.1558 M 487.3941 694.0922 L 487.3941 713.6062 M 487.4891 586.1513 L 487.6141 566.5527 M 488.4543 376.0771 L 520.4487 376.0801 M 488.4543 410.9293 L 519.5612 410.9426 M 488.4551 347.0279 L 519.5598 347.0229 M 488.4551 445.7814 L 519.5598 445.7867 M 488.6194 656.6978 L 505.6076 656.6978 L 489.5944 656.6978 M 489.0729 244.6031 L 499.2341 244.4104 M 489.0872 694.0922 L 489.0872 713.6062 M 489.3382 238.9587 L 491.9232 221.9221 L 496.3715 193.2487 L 491.9687 221.9280 L 489.3430 238.9578 M 489.3693 242.4876 L 499.5429 242.3086 M 490.2984 694.0922 L 490.2984 713.6062 M 491.0692 277.2311 L 491.0702 262.0300 M 491.0829 617.0741 L 491.0829 632.9272 M 491.0838 347.0275 L 491.0838 376.0773 M 491.0838 381.8682 L 491.0838 410.9304 M 491.0838 416.7201 L 491.0838 445.7819 M 491.5852 254.7770 L 509.4358 254.7353 M 491.5861 276.3155 L 507.0034 276.3155 M 491.9202 255.8252 L 506.5292 255.4391 M 491.9211 262.0327 L 491.9220 274.9475 L 506.6872 274.9522 L 506.9103 262.0105 M 491.9916 694.0922 L 491.9916 713.6062 M 492.7100 309.5763 L 506.0502 309.6047 L 494.3819 309.5066 L 509.8004 309.4987 M 492.8987 347.0272 L 492.8987 376.0775 M 492.8987 381.8684 L 492.8987 410.9312 M 492.8987 416.7203 L 492.8987 445.7822 M 492.9676 553.3387 L 492.9614 572.1964 L 493.4097 553.3380 M 493.2028 694.0922 L 493.2028 713.6062 M 494.1890 553.3384 L 494.1887 572.2196 L 494.6409 553.3388 M 494.8960 694.0922 L 494.8960 713.6062 M 495.4222 553.3396 L 495.4207 572.2163 L 495.8742 553.3400 M 495.6540 627.1263 L 503.3006 616.3914 M 496.1072 694.0922 L 496.1072 713.6062 M 496.1588 194.2706 L 500.1675 168.0265 L 496.9045 189.4477 M 496.2104 194.2873 L 482.7095 194.2943 L 496.2130 194.2705 M 496.6574 553.3407 L 496.6815 572.2434 L 497.1094 553.3412 M 497.1305 235.0602 L 503.7504 193.2197 L 497.6476 235.0721 M 497.7492 184.6032 L 504.6601 139.3646 L 510.2971 102.4555 M 497.7493 183.6983 L 500.1453 167.9444 L 497.7494 183.6423 M 497.8004 694.0922 L 497.8004 713.6062 M 497.8861 553.3419 L 497.8686 572.2135 L 498.3280 553.3419 M 498.9330 595.1416 L 498.9432 583.4806 L 499.4040 594.6578 M 499.0116 694.0922 L 499.0116 713.6062 M 499.0443 595.9704 L 499.0443 608.0062 M 499.1091 553.3416 L 499.3406 572.2584 L 499.5512 553.3414 M 499.3077 347.0261 L 499.3077 376.0781 M 499.3077 381.8691 L 499.3077 410.9339 M 499.3077 416.7210 L 499.3077 445.7833 M 500.3003 553.3411 L 500.3021 572.2184 L 500.7424 553.3410 M 500.3017 497.6025 L 510.8398 497.6025 M 500.7046 694.0922 L 500.7046 713.6062 M 500.8205 535.7316 L 512.8188 535.7288 M 500.8295 528.2665 L 512.8242 528.1794 M 501.1238 416.7212 L 501.1238 445.7836 M 501.1239 347.0258 L 501.1240 376.0783 M 501.1239 410.9347 L 501.1240 381.8693 M 501.4746 528.6528 L 512.5336 528.6528 M 501.4746 535.1704 L 512.5336 535.1704 M 501.4933 553.3407 L 501.4932 572.2168 L 501.9062 553.3405 M 501.5946 650.6907 L 515.2095 650.6905 M 501.7406 641.0059 L 515.2117 641.0047 M 501.7620 158.0210 L 503.4044 147.2704 M 501.7638 158.0056 L 503.4056 147.2547 M 501.7891 639.5535 L 515.3638 639.5386 M 501.9158 694.0922 L 501.9158 713.6062 M 501.9987 584.1615 L 501.9989 608.0112 M 502.3202 595.1482 L 502.3284 583.4687 M 502.6213 553.3409 L 502.6381 572.2404 L 503.0342 553.3411 M 502.7701 594.6582 L 502.7755 582.9866 M 503.6090 694.0922 L 503.6090 713.6062 M 503.6745 632.2555 L 511.3212 621.5206 M 503.7443 553.3406 L 503.7030 572.2131 L 504.1571 553.3402 M 504.6592 139.5951 L 510.3085 102.3808 M 504.8202 694.0922 L 504.8202 713.6062 M 504.8696 319.1800 L 484.1773 319.7603 L 504.8867 319.7606 M 504.8696 333.5582 L 484.1994 333.5579 L 504.8758 334.1394 M 504.8914 553.3397 L 505.4534 572.2637 L 505.2571 553.3394 M 505.0643 586.0243 L 505.0884 612.7544 M 505.3677 133.7138 L 509.9053 104.4256 L 505.4658 133.7283 M 505.5110 468.0600 L 517.5010 468.0770 L 505.5110 468.1617 M 505.8519 553.3390 L 505.8519 572.2179 L 506.2176 553.3388 M 506.3870 538.1840 L 518.3699 538.1829 M 506.5134 694.0922 L 506.5134 713.6062 M 506.8501 553.3392 L 506.8539 572.2184 L 507.2157 553.3398 M 506.9200 129.6041 L 508.7164 118.9326 M 507.0927 122.5795 L 509.8740 104.4005 M 507.5242 275.8031 L 507.7609 262.0144 M 507.5325 347.0248 L 507.5327 376.0789 M 507.5325 410.9374 L 507.5327 381.8700 M 507.5325 416.7218 L 507.5325 445.7847 M 507.7246 694.0922 L 507.7246 713.6062 M 507.8245 553.3390 L 507.8149 572.2150 L 508.1268 553.3386 M 507.8868 129.7958 L 509.6887 119.1117 M 507.9656 117.7215 L 509.8397 104.8586 M 508.1406 309.4995 L 508.8626 298.1116 L 508.7040 309.4992 M 508.4419 180.1347 L 502.7813 219.9124 L 500.7164 234.6983 L 503.2937 220.1340 L 508.8969 180.7008 M 508.6171 275.9639 L 508.8278 262.0433 M 508.6609 553.3379 L 508.8192 572.2583 L 508.9633 553.3375 M 509.1980 275.9689 L 509.4089 262.0416 M 509.3484 347.0245 L 509.3484 376.0791 M 509.3484 381.8701 L 509.3484 410.9382 M 509.3484 416.7220 L 509.3484 445.7850 M 509.4177 694.0922 L 509.4177 713.6062 M 509.4358 244.3552 L 509.4358 255.2656 M 509.4759 553.3368 L 509.4799 572.2181 L 509.7784 553.3363 M 509.6929 309.4987 L 510.0707 289.4708 L 509.7289 309.4987 M 509.7992 309.5658 L 510.1406 289.3991 M 510.1406 289.3996 L 533.0933 289.3999 L 533.0929 309.7148 M 510.2187 102.1661 L 522.1027 101.8448 M 510.2766 553.3357 L 510.2700 572.2150 L 510.5025 553.3356 M 510.3564 309.4629 L 510.4897 298.2312 M 510.5384 100.6648 L 515.4407 82.1647 L 510.5721 100.6724 M 510.5511 259.5739 L 510.0678 288.7460 L 510.5739 259.7878 M 510.6289 694.0922 L 510.6289 713.6062 M 510.6471 100.6984 L 515.5069 82.1913 L 510.6477 100.6984 M 510.6932 256.7560 L 510.1505 288.8181 L 533.0200 288.8190 M 510.8079 163.2848 L 513.2820 145.8791 M 510.8105 641.0051 L 510.9843 621.9935 M 510.8880 257.1914 L 510.8880 270.9840 M 510.9016 553.3355 L 511.0199 572.2584 L 511.1276 553.3355 M 511.2212 234.8446 L 517.2650 218.2028 M 511.4449 162.7145 L 513.8280 145.9692 M 511.5106 553.3354 L 511.5144 572.2179 L 511.7367 553.3354 M 511.9909 133.7283 L 514.1589 119.0275 L 516.7997 104.3364 L 514.7259 119.0597 L 512.5511 133.7342 M 512.1011 553.3354 L 512.1031 572.2181 L 512.2409 553.3355 M 512.2299 243.4694 L 512.2299 270.4283 M 512.2580 309.3781 L 512.4290 298.2442 M 512.2677 453.3397 L 550.1235 453.3397 M 512.4181 343.7693 L 547.0493 343.7692 M 512.4456 309.7149 L 550.3173 309.7149 M 512.4915 553.3358 L 512.6315 572.2169 L 512.6317 553.3359 M 513.0480 673.8627 L 523.5493 673.8710 M 513.0483 659.4928 L 523.6212 659.5018 M 513.1009 180.7144 L 530.5777 180.8526 M 513.1813 180.1462 L 529.6315 180.0922 M 513.3414 234.5482 L 519.2853 218.1512 L 513.9568 234.5453 M 513.5344 572.9352 L 513.5345 553.3388 M 514.5571 614.1025 L 514.5812 586.0243 M 514.7510 244.3454 L 514.7569 256.7459 L 514.7622 269.1475 M 514.8184 244.3513 L 514.8246 256.7459 L 514.8296 269.1398 M 515.4876 163.2691 L 529.0521 163.5876 M 515.5647 162.6933 L 529.0521 163.5876 M 515.7573 347.0235 L 515.7573 376.0797 M 515.7573 381.8708 L 515.7573 410.9409 M 515.7573 416.7227 L 515.7573 445.7861 M 515.7990 239.9000 L 529.7635 239.9000 M 515.7990 273.9976 L 529.7635 273.9976 M 516.3448 577.1895 L 516.3451 553.5372 M 516.3451 608.4057 L 516.3451 639.3399 M 516.4632 314.3310 L 526.5735 314.3310 M 516.4632 338.9883 L 526.5735 338.9883 M 516.7377 80.9055 L 527.9009 80.8582 L 516.7419 80.9161 M 516.7596 80.9982 L 527.9009 80.9965 M 517.5729 347.0232 L 517.5729 376.0799 M 517.5729 350.4534 L 540.5386 350.4534 M 517.5729 372.6520 L 540.5386 372.6520 M 517.5729 416.7229 L 517.5729 445.7864 M 517.5729 420.1574 L 540.5386 420.1573 M 517.5729 442.3560 L 540.5384 442.3560 M 517.5730 381.8710 L 517.5730 410.9417 M 517.5730 385.3053 L 540.5386 385.3053 M 517.5730 407.5041 L 540.5386 407.5040 M 517.6225 448.8462 L 528.3454 448.7977 M 517.6273 463.4560 L 528.3404 463.4560 M 517.6274 449.1138 L 528.3402 449.1138 M 517.7720 453.1544 L 528.1563 452.5151 L 517.7998 452.4421 M 518.9022 537.9120 L 518.9545 518.6241 M 519.1533 352.5434 L 519.1533 369.6804 M 519.1533 387.3953 L 519.1533 404.5324 M 519.1533 422.2475 L 519.1533 439.3843 M 519.5788 560.3000 L 519.5787 652.4768 L 537.6339 652.4768 M 519.5788 760.0000 L 519.5788 682.5360 L 537.6351 682.5360 M 520.3662 209.6636 L 524.6932 197.7490 M 520.4000 608.3367 L 536.8072 608.3428 M 520.4001 608.3873 L 520.3848 595.0880 L 520.4621 582.3073 M 520.9884 607.5831 L 539.2474 607.5902 M 520.9884 607.5946 L 520.9998 595.7138 L 521.3653 583.1247 M 521.0038 553.4430 L 535.1347 520.7946 M 521.3107 683.6892 L 521.2764 701.9996 L 521.8115 684.3265 M 521.3472 740.3551 L 521.8627 760.0000 M 521.3472 740.3551 L 521.4457 760.0000 M 521.3472 740.3551 L 521.2922 702.7555 L 521.7856 739.6018 M 521.4930 499.6899 L 521.4963 518.3470 M 521.4964 519.2175 L 521.4990 533.5862 M 522.1533 244.3475 L 522.1586 256.7432 L 522.1645 269.1377 M 522.2206 244.3407 L 522.2260 256.7420 L 522.2319 269.1445 M 522.3060 760.0000 L 537.6702 750.9336 M 522.3402 621.2597 L 522.5025 638.9846 L 523.1896 621.8963 M 522.7714 553.5142 L 537.2759 520.6832 M 522.8443 100.6335 L 511.8236 100.5448 L 516.5569 82.4052 L 528.3897 82.5354 M 523.1788 702.7069 L 523.2977 722.0442 M 523.2333 688.4695 L 523.2377 701.8793 L 523.7094 689.1842 M 523.3049 553.6310 L 537.5888 521.2787 M 523.3824 100.4264 L 528.4522 82.6522 L 523.4554 100.0904 M 523.3983 244.8548 L 523.4042 257.2493 L 523.4095 269.6433 M 523.6634 100.5223 L 528.7181 82.3810 L 523.6870 100.2688 M 524.0248 721.1312 L 524.0653 702.6748 M 524.1354 553.5483 L 534.0742 530.1088 M 524.1984 314.6628 L 546.1355 314.6620 M 524.1987 338.6559 L 546.1256 338.6572 M 524.3589 96.9373 L 528.8202 80.9971 M 524.5662 553.6427 L 534.3766 530.8041 L 538.3651 521.6234 M 524.7796 338.0754 L 546.1333 338.0765 M 524.7798 315.2443 L 546.1390 315.2419 M 524.8574 197.2969 L 530.5756 181.5518 M 524.9971 544.2169 L 525.4121 522.6139 L 525.4125 543.2570 M 525.2446 235.8349 L 537.1679 235.8396 M 525.3362 235.2541 L 537.2468 235.2635 M 525.3392 563.1694 L 536.1327 563.1694 M 525.3392 566.2972 L 536.1327 566.2972 M 525.3392 570.4303 L 536.1327 570.4303 M 525.3392 573.5581 L 536.1327 573.5581 M 525.3392 577.6911 L 536.1327 577.6911 M 525.3392 580.8189 L 536.1327 580.8189 M 525.3392 584.9519 L 536.1327 584.9519 M 525.3392 588.0797 L 536.1327 588.0797 M 525.3392 592.2127 L 536.1327 592.2127 M 525.3392 595.3405 L 536.1327 595.3405 M 525.3392 599.4735 L 536.1327 599.4735 M 525.3392 602.6013 L 536.1327 602.6013 M 525.3392 726.8606 L 538.2278 726.8606 M 525.3392 729.9885 L 538.2468 729.9885 M 525.3392 734.1214 L 536.1327 734.1214 M 525.3392 737.2493 L 538.4324 737.2493 M 525.3392 741.3822 L 538.5594 741.3822 M 525.3392 744.5103 L 538.6556 744.5103 M 525.8164 701.5502 L 525.9041 689.1024 M 526.1779 720.5691 L 526.1864 702.3993 M 526.3180 541.1649 L 526.3181 463.6705 M 526.4631 701.4830 L 526.5002 688.2891 M 526.4964 315.2441 L 526.4964 338.0755 M 526.4984 702.3322 L 526.5098 721.2313 M 526.6618 378.6598 L 549.2843 378.6598 M 526.6618 379.2976 L 549.2957 379.2976 M 526.6618 413.5118 L 547.2627 413.5118 M 526.6618 414.1495 L 547.2627 414.1495 M 526.6619 344.4456 L 547.2613 344.4456 M 526.6619 448.3637 L 547.2611 448.3637 M 526.7065 197.6864 L 530.5579 187.4057 M 526.9807 316.3886 L 546.5408 316.3886 M 526.9807 336.9308 L 546.5407 336.9306 M 527.5169 320.1585 L 527.5169 333.1608 M 527.8678 537.5842 L 527.8623 481.8624 L 527.8708 463.6678 M 528.3439 463.6669 L 517.6228 463.6859 L 528.4014 463.7494 M 528.3999 536.3548 L 528.4053 481.8603 L 528.4014 463.7449 M 528.8133 88.2465 L 529.0562 101.5136 L 529.0583 134.0034 M 529.0521 163.5876 L 529.6315 180.0922 M 529.0521 163.5876 L 529.0542 146.1550 M 529.5484 103.0403 L 529.5493 121.2212 M 529.5496 91.1066 L 529.5862 49.6415 M 529.6315 180.0922 L 529.6338 163.6866 M 529.6341 162.9237 L 529.6362 146.1908 M 529.6409 133.3265 L 529.6410 121.6617 M 530.2892 531.9897 L 530.2939 481.5661 M 530.5096 153.1543 L 530.5424 141.7212 M 530.5181 73.7919 L 530.5464 84.4425 M 530.5229 128.4849 L 530.5350 139.7941 M 530.5364 89.9029 L 530.6026 53.9458 L 530.5636 90.8743 M 530.5465 191.1681 L 530.5793 180.3282 M 530.5497 53.6211 L 530.5281 63.7776 L 530.5672 53.7290 M 530.5735 53.7675 L 530.5795 64.0340 M 530.5796 153.5833 L 530.6198 142.4054 M 530.6623 53.1120 L 530.6806 66.5939 L 530.6824 89.1811 M 530.6857 126.6152 L 530.6867 137.2359 M 530.6871 142.3036 L 530.6886 158.5016 M 530.6886 159.1811 L 530.6904 178.1399 M 530.6904 178.8089 L 530.6928 204.8614 M 530.7332 244.8518 L 530.7385 257.2464 L 530.7444 269.6412 M 530.8006 244.8459 L 530.8059 257.2475 L 530.8118 269.6471 M 530.8681 530.6523 L 530.8697 482.1490 M 531.0104 527.3771 L 531.0866 506.2694 M 531.0254 320.1585 L 546.6286 320.1585 L 546.6285 333.1607 L 531.0254 333.1608 M 531.1235 218.1562 L 542.4216 218.1426 M 531.3159 217.5839 L 541.9734 217.5694 M 531.4161 309.7148 L 552.7000 309.7148 M 531.4532 136.3286 L 532.5931 125.6911 M 531.8864 527.3461 L 531.9883 506.2818 M 532.0211 204.4759 L 532.5842 177.7705 L 532.0409 158.2727 M 532.0379 88.5089 L 533.1660 52.7297 L 533.1678 88.4315 M 532.1594 141.3453 L 533.1734 157.5681 L 533.1713 141.4142 M 532.2845 509.3360 L 532.2842 498.0285 L 532.2845 509.3409 M 533.1763 158.3416 L 533.1766 177.0659 M 533.1769 177.8402 L 533.1787 203.7556 M 533.3297 270.4283 L 533.3329 243.4694 M 533.3936 694.8255 L 533.8223 683.9205 L 533.9264 695.6229 M 533.4680 78.1376 L 533.5235 106.3737 M 533.5276 108.6895 L 533.5610 125.4122 M 533.6948 309.7148 L 533.7465 288.8193 M 534.3229 682.5360 L 534.8085 697.6499 M 534.6746 242.9137 L 534.6746 270.9840 M 535.1732 682.5360 L 535.2481 700.5234 M 535.6940 65.3453 L 535.7040 43.9326 M 535.6942 64.7900 L 558.8274 94.7543 M 535.7205 140.3899 L 557.6398 140.3907 L 535.7205 140.9716 M 535.8491 40.8036 L 595.8852 40.7966 M 536.6956 106.2768 L 557.6389 106.2757 L 536.6962 105.6941 M 536.7279 140.3899 L 536.7285 123.4451 L 536.7305 105.6951 M 536.7280 137.9825 L 558.7277 137.9790 M 536.7304 106.2857 L 556.9059 106.2843 M 536.7304 106.7413 L 557.1242 107.5825 L 557.7485 123.1363 L 557.6620 105.7528 M 537.0674 138.5069 L 558.3876 138.5078 M 537.5596 138.5070 L 537.6049 123.7113 L 538.1118 136.6734 L 557.0235 137.2087 L 557.1937 123.6076 M 537.5738 123.1729 L 537.6894 106.2767 M 537.7328 309.5698 L 551.2945 309.5296 L 538.1181 309.5039 M 537.7445 72.1539 L 537.7445 102.0251 M 538.0685 700.6482 L 538.2660 733.1379 M 538.0766 102.5628 L 555.6596 102.5622 M 538.1422 102.4127 L 556.2895 102.2826 M 538.1612 123.2235 L 538.2360 106.2767 M 538.2896 71.7284 L 556.3042 95.7022 L 538.4075 72.2662 M 538.3076 71.7143 L 556.2855 95.3834 M 538.3468 734.4641 L 538.8025 749.2916 L 538.8346 734.2870 M 538.3796 700.0796 L 538.4532 683.9989 M 538.6068 699.6586 L 538.6880 683.3571 M 538.6535 700.5561 L 538.7455 732.9887 M 538.7834 105.7521 L 558.2549 105.7528 M 538.8046 530.6217 L 539.2495 552.1065 M 539.0243 530.0343 L 539.2497 552.0841 M 539.2272 534.0716 L 539.2272 549.8889 M 539.2272 734.0898 L 539.2272 744.4177 M 539.2444 644.7395 L 526.3389 644.8517 L 539.2467 645.5985 M 539.2469 571.4025 L 539.2497 552.8858 M 539.2474 607.5979 L 539.2495 571.3796 M 539.2479 607.5953 L 539.2497 571.3566 M 539.2489 587.8516 L 544.1874 611.7941 L 544.5591 638.7391 M 539.2489 698.3065 L 539.2535 683.4107 L 539.2484 698.2330 L 539.2614 683.4061 M 539.2497 537.5270 L 539.2327 551.7877 L 539.2497 539.7209 M 539.2497 538.1271 L 539.2497 552.0856 M 539.2497 538.1284 L 539.2497 552.0853 M 539.2498 552.8651 L 539.2498 570.4974 M 539.2501 699.2435 L 539.2516 729.0873 M 539.2512 721.7508 L 564.6941 721.7522 L 564.8061 710.5130 M 539.2513 722.2992 L 565.2518 722.3023 M 539.3196 733.3171 L 564.7999 733.3171 M 539.3198 733.3282 L 564.7999 733.3171 M 539.3200 733.3386 L 564.7999 733.3591 L 600.0000 733.4004 L 635.1995 733.3437 L 663.9065 733.3622 M 539.4246 551.8159 L 540.3928 571.0778 M 539.4246 551.8159 L 540.3928 571.0778 M 539.4246 551.8159 L 540.3928 571.0778 M 539.4246 551.8159 L 540.3928 571.0778 M 539.6358 704.6200 L 539.6358 719.1766 M 539.6358 704.7069 L 565.3128 704.6934 L 600.0000 704.6963 L 634.6866 704.7028 L 663.5972 704.7127 M 539.6358 705.2399 L 565.3039 705.2613 L 600.0000 705.2506 L 634.6955 705.2317 L 663.5972 705.2420 M 539.6358 706.9820 L 553.2687 706.9820 M 539.6358 710.9828 L 600.0000 710.9997 L 663.5972 710.9819 M 539.6358 711.2349 L 555.3351 710.9872 M 539.6530 589.5197 L 544.3092 611.8792 L 544.6300 625.4177 M 539.7220 699.1702 L 539.7220 728.7058 M 539.7220 704.6200 L 539.7220 721.7509 M 539.7220 709.5678 L 574.4952 709.5395 M 539.7220 710.5134 L 574.4597 710.5128 M 540.3928 571.0778 L 540.3927 589.5197 L 540.3928 571.0778 Z M 540.7869 594.9422 L 544.3020 611.6735 L 540.7870 594.9423 M 540.9026 595.4963 L 544.3025 611.6825 M 541.0227 350.9375 L 541.0227 372.1680 M 541.0227 385.7894 L 541.0227 407.0199 M 541.0227 420.6414 L 541.0227 441.8718 M 541.5684 506.6705 L 541.5698 518.2546 M 543.1555 161.8876 L 543.1558 181.4891 M 543.7364 162.4696 L 543.7367 181.4891 M 544.2007 678.3599 L 530.3745 678.3599 L 530.3745 656.7950 L 544.2063 656.7950 M 544.5624 517.1769 L 544.5624 537.9102 L 544.5624 517.7981 M 544.5624 525.7887 L 544.5624 540.8991 M 544.5624 525.7887 L 544.5624 540.8991 M 544.5624 525.7887 L 544.5624 541.5359 L 544.5624 525.7887 Z M 544.5624 525.7887 L 544.5624 540.8991 M 544.5624 525.7887 L 544.5624 540.8991 M 544.5624 540.8991 L 544.5624 530.3555 L 544.5624 540.8991 Z M 544.5710 514.9606 L 544.5710 544.2588 M 544.5710 544.3373 L 544.5710 556.7067 M 544.6500 626.2619 L 544.8917 636.4669 M 544.7772 637.7113 L 544.5692 627.1601 L 544.8074 637.5377 M 545.1856 634.2751 L 545.1856 621.6340 L 545.1856 635.2663 M 545.4689 703.6865 L 600.0000 703.7036 L 654.9599 703.6863 M 545.4780 703.2168 L 574.4603 703.2179 M 545.4964 702.2659 L 574.4952 702.2440 M 545.5645 698.3613 L 565.3666 698.3569 L 582.3704 698.3492 L 565.3737 697.8097 L 545.5665 697.8158 M 545.5718 696.3877 L 600.0000 696.4081 L 654.8656 696.3876 M 545.5735 695.9268 L 574.4603 695.9525 M 545.5770 694.9754 L 574.4958 694.9780 M 546.0605 564.4288 L 560.5086 564.4285 M 546.9742 181.8288 L 546.9751 162.4696 M 547.3398 566.5415 L 547.3399 632.7155 M 547.3398 566.5415 L 547.3399 632.6496 M 547.3398 566.5415 L 547.3399 632.7328 M 547.3779 564.4288 L 547.3779 638.4199 M 547.5554 181.1986 L 547.5560 161.8888 M 547.5787 385.2974 L 547.5801 410.5828 M 547.5788 417.0656 L 547.5816 445.4296 M 547.5801 416.4025 L 547.5801 429.7760 M 547.7568 566.4166 L 559.2388 566.5497 M 547.8011 566.5410 L 558.4278 566.5403 M 547.8845 628.5961 L 547.8857 566.4181 M 548.6856 531.4988 L 548.6858 543.0675 M 550.1234 626.9673 L 550.1235 566.4440 M 550.7241 162.1801 L 551.3035 181.1493 L 551.3029 162.1801 M 550.8481 413.0955 L 551.2023 432.5639 L 551.2614 412.5505 M 551.1339 247.5664 L 555.5923 237.2590 L 562.0512 228.5177 M 556.3752 460.5526 L 556.3776 446.5942 L 556.9505 460.5541 M 556.4932 566.5179 L 556.4932 626.9673 M 556.7524 195.0311 L 571.5961 195.6099 M 556.7524 195.9980 L 574.8594 195.9993 M 556.7524 196.3988 L 574.8595 196.3988 M 556.7525 197.8972 L 574.8596 197.8998 M 556.7527 202.8013 L 571.5964 203.3780 M 556.7528 203.7696 L 571.9775 203.7671 M 556.7528 204.2454 L 572.5247 204.2454 M 556.7529 205.6073 L 570.0464 205.6041 M 556.8343 319.9711 L 558.4517 333.6273 L 560.4547 345.6033 L 559.0363 333.6208 L 557.4834 320.5377 M 557.6790 109.1620 L 573.6356 108.7326 M 557.6813 109.6331 L 573.6292 109.6319 M 557.6823 109.8285 L 573.6264 110.0332 M 557.6866 110.6799 L 572.6813 110.6534 L 572.6497 124.9117 L 558.9486 124.9117 L 558.9495 110.8295 M 557.7878 123.6678 L 557.7962 138.5078 M 557.8836 531.4992 L 557.8839 543.0678 M 558.4856 722.3015 L 558.6558 733.3171 M 558.7276 138.1672 L 558.7285 123.4451 M 558.7279 133.9112 L 572.9357 133.9112 M 558.7279 134.2871 L 572.9357 134.4455 M 558.7281 132.0816 L 572.9356 132.0727 M 558.7281 132.5607 L 558.7299 110.7254 M 558.7282 131.6414 L 572.9356 131.6390 M 558.7283 130.7505 L 572.9355 131.3043 M 558.7285 127.4437 L 572.9353 127.9967 M 558.7286 126.8247 L 572.9353 126.8247 M 558.7286 127.1066 L 572.9353 127.1066 M 558.7305 564.4286 L 558.7317 628.5959 M 558.8293 538.9775 L 558.8353 528.9772 M 558.9351 150.0314 L 572.6653 150.0314 M 558.9351 157.7849 L 572.6653 157.7840 M 558.9351 165.4977 L 572.6653 165.4977 M 558.9351 173.2699 L 572.6653 173.2699 M 558.9351 181.0155 L 572.6653 181.0146 M 558.9351 188.6511 L 572.6653 188.6503 M 558.9486 124.8228 L 572.6499 124.8228 M 558.9495 110.9173 L 572.6807 110.9220 M 559.1663 110.6773 L 559.1682 124.9117 M 559.2388 632.6185 L 559.2388 566.5418 L 559.2388 638.3476 M 559.2766 566.5415 L 559.2767 632.7015 M 559.2766 566.5415 L 559.2767 632.6184 L 559.2766 566.5415 Z M 559.3017 242.8371 L 566.4121 232.4620 M 559.5525 156.4642 L 571.9187 156.7975 M 559.5525 179.6118 L 571.9211 179.9439 M 559.5534 141.1693 L 571.5902 141.6387 M 559.5543 171.9531 L 571.9208 172.2851 M 559.5546 164.2063 L 571.5922 164.6769 M 559.5879 102.5309 L 571.9666 102.3258 M 559.6311 157.3211 L 571.9722 157.3211 M 559.6317 149.6112 L 571.9725 149.6092 M 559.6320 159.1954 L 571.9722 159.1925 M 559.6323 142.0249 L 571.9707 142.0249 M 559.6329 143.7444 L 571.9716 143.7453 M 559.6329 151.4495 L 571.9707 151.4504 M 559.6347 165.0652 L 571.9719 165.0652 M 559.6359 166.9392 L 571.9760 166.9404 M 559.6359 172.8099 L 571.9766 172.8107 M 559.6365 182.3420 L 571.9760 182.3447 M 559.6370 174.5979 L 571.9748 174.6000 M 559.6379 180.4686 L 571.9751 180.4686 M 559.6379 190.1275 L 571.9790 190.1255 M 559.6879 149.0895 L 571.5908 149.2257 M 559.6914 182.8668 L 572.0564 183.2036 M 559.6932 190.6570 L 572.0531 190.9843 M 559.7115 101.4684 L 571.8750 101.4737 M 560.0135 151.8357 L 572.0534 152.3081 M 560.0137 144.1326 L 572.0526 144.6012 M 560.0137 159.5827 L 571.9181 159.7181 M 560.0167 167.3274 L 572.0540 167.7969 M 560.0170 174.9871 L 572.0558 175.4577 M 560.0185 198.2885 L 574.8597 198.4602 M 560.5807 353.0978 L 560.5809 369.4725 M 560.5809 386.4066 L 575.1751 386.4029 M 560.5809 386.9847 L 575.7560 386.9856 M 560.6472 280.6400 L 565.7452 289.3180 L 576.3177 299.1144 M 560.8743 352.8355 L 583.6162 352.8353 L 583.6161 372.7704 L 565.5057 372.7706 M 561.9985 515.6807 L 561.9985 543.6142 M 562.0070 533.4953 L 562.0070 543.6142 M 562.0070 533.4953 L 562.0070 543.6142 M 562.0070 533.4953 L 562.0070 543.6142 M 562.0070 533.4953 L 562.0070 543.6142 M 562.0070 533.4953 L 562.0070 543.6142 M 562.0070 533.4953 L 562.0070 543.6142 M 562.5022 319.9633 L 573.3148 319.9385 M 562.5298 320.4867 L 573.3544 320.4594 M 562.8997 613.4903 L 562.9013 632.5851 M 563.4927 613.4980 L 563.4935 632.5927 M 563.5684 333.3477 L 564.8383 345.5976 L 564.2093 333.8946 M 564.0606 523.3014 L 564.7806 536.3707 L 564.8057 523.3227 M 564.3829 722.3022 L 564.5225 733.3171 M 564.7999 733.3171 L 600.0000 733.3171 L 635.1995 733.3171 L 663.9074 733.3171 M 564.8695 510.7872 L 565.1726 610.6838 M 564.9683 474.7088 L 565.0412 494.0379 M 564.9963 467.4236 L 564.9981 453.1347 M 564.9992 510.7872 L 565.7529 610.4244 L 600.0000 610.4244 L 634.2453 610.4235 L 634.9997 510.7872 M 565.0318 480.5598 L 565.0401 491.4914 M 565.0381 434.1409 L 565.0401 415.3663 L 565.0414 434.9924 M 565.0401 491.5094 L 565.0482 480.5598 M 565.4672 613.0055 L 599.9997 613.0055 L 634.5325 613.0055 M 565.5055 427.6609 L 565.5114 415.2702 M 565.6297 278.4046 L 573.3762 289.6773 M 565.8339 611.0605 L 600.0000 611.0585 L 634.1658 611.0594 M 566.3067 415.2688 L 566.4069 425.5931 M 567.3594 415.2677 L 567.6008 427.1922 M 567.6361 505.2494 L 567.8524 609.9954 L 597.5356 610.0081 L 597.5234 482.4955 M 568.1712 427.2168 L 568.4132 415.2677 M 569.3644 425.7156 L 569.4659 415.2688 M 570.1968 205.1858 L 558.9371 205.1788 L 570.4264 205.3141 M 570.2611 415.2702 L 570.2672 427.8380 M 570.6749 504.2637 L 570.6769 490.5974 M 570.6779 467.9338 L 570.6796 446.5004 M 570.6791 452.8785 L 587.4410 452.8785 M 570.6791 453.0111 L 583.4076 453.0823 M 570.6807 432.5644 L 570.6821 415.3476 M 570.7013 453.0981 L 570.7119 467.9324 M 570.7191 143.3366 L 558.9371 143.3290 L 572.6517 143.4906 M 570.7228 151.0902 L 558.9371 151.0826 L 572.6517 151.2442 M 570.7244 480.5598 L 570.7325 491.5094 M 570.7265 158.8042 L 558.9371 158.7965 L 572.6517 158.9582 M 570.7304 166.5761 L 558.9371 166.5684 L 572.6517 166.7300 M 570.7312 434.9924 L 570.7325 415.3663 L 570.7344 434.1409 M 570.7313 494.0379 L 570.8043 474.7088 M 570.7325 491.4914 L 570.7407 480.5598 M 570.7343 174.3208 L 558.9371 174.3134 L 572.6517 174.4750 M 570.7382 181.9564 L 558.9371 181.9488 L 572.6517 182.1104 M 570.7393 482.4478 L 590.3470 482.4827 M 570.7395 482.1497 L 590.3468 482.1492 M 570.7399 481.5693 L 590.3463 481.5703 M 570.7421 189.7050 L 558.9371 189.6976 L 572.6517 189.8584 M 570.7461 197.5507 L 558.9371 197.5431 L 574.8596 197.7307 M 570.7489 142.3872 L 558.9297 142.4007 L 572.6505 142.2332 M 571.8029 616.6765 L 571.8029 631.1507 M 571.9217 187.6889 L 559.6766 187.8233 L 571.9775 188.2106 M 572.0706 724.4881 L 599.9994 724.4940 L 627.9288 724.4881 M 572.4254 110.6539 L 572.4257 124.9117 M 572.8359 94.7543 L 595.7909 65.0209 L 595.7883 40.7966 M 572.9337 110.6845 L 572.9349 125.5478 M 572.9351 123.4451 L 572.9360 138.1672 M 572.9357 133.5495 L 558.9312 133.5365 L 572.9357 133.7045 M 572.9359 137.4287 L 594.9356 137.4272 M 572.9359 137.9754 L 594.9356 137.9764 M 573.1121 661.0105 L 573.1121 671.9062 M 573.2760 138.5078 L 594.5962 138.5069 M 573.4087 105.7528 L 592.9414 105.7519 M 573.5221 138.5078 L 573.5331 123.1738 L 573.6568 105.7528 M 573.5704 661.0105 L 573.5704 672.5893 M 574.0847 138.5078 L 574.1015 123.1738 L 574.2171 106.2766 M 574.1797 661.0105 L 574.1797 673.4977 M 574.2388 689.5657 L 574.3106 678.2877 L 574.3372 661.0059 L 574.2597 647.3571 M 574.4327 106.2757 L 594.9330 106.2840 M 574.8602 202.9061 L 574.8591 192.8847 L 594.1226 192.8847 M 574.9923 106.8226 L 594.9331 106.8226 M 575.1164 710.9927 L 600.0000 711.3826 L 623.9229 710.9930 M 575.1750 381.6478 L 587.4429 381.6422 L 575.7558 382.2244 M 575.3738 102.2827 L 593.5213 102.4130 M 575.3778 95.3835 L 593.3557 71.7143 M 575.4654 422.5371 L 587.4424 422.5383 M 575.4654 423.1189 L 587.4424 422.5383 M 575.4654 432.5648 L 587.4418 432.5606 L 587.4424 422.5383 M 575.4654 433.1418 L 590.3520 433.1438 M 575.7390 439.8202 L 587.4427 439.2415 L 575.8526 439.2420 M 576.0035 102.5622 L 593.5869 102.5631 M 576.0282 276.8313 L 586.2027 276.8295 M 576.6324 638.7725 L 576.6324 654.6690 M 580.3586 162.1801 L 580.3586 181.1481 L 580.9398 162.1801 M 583.5725 651.9535 L 583.5737 638.2363 M 584.1073 181.1986 L 584.1076 161.8905 M 584.6885 162.4726 L 584.6891 181.8280 M 586.1918 676.5876 L 586.2051 661.0039 L 586.1990 678.2716 M 586.3252 661.0105 L 586.3252 678.2815 M 586.9345 661.0105 L 586.9346 678.2815 M 587.3928 661.0105 L 587.3928 678.2815 M 587.4362 349.0333 L 612.5613 349.0243 M 587.6020 345.5354 L 599.9999 345.5165 L 612.3982 345.5213 M 587.6170 346.0967 L 599.9999 346.0889 L 612.3833 346.0799 M 587.9260 181.4882 L 587.9266 162.4714 M 587.9683 349.6003 L 612.0296 349.6092 M 588.0774 661.0105 L 588.0774 678.2815 M 588.0864 413.5892 L 612.5568 413.5892 M 588.0945 392.3023 L 611.9055 392.3023 M 588.2107 413.0478 L 612.5568 413.1963 M 588.3775 394.6320 L 611.7841 394.7783 M 588.5072 161.8917 L 588.5078 181.4891 M 588.5292 349.6005 L 588.5292 392.3023 M 588.5292 352.4896 L 611.4706 352.4896 M 588.5292 352.5510 L 611.4706 352.5510 M 588.5292 358.7497 L 611.4706 358.7498 M 588.5297 706.9820 L 600.0000 706.9820 L 611.4701 706.9820 M 588.6003 412.5811 L 612.5568 412.8167 M 588.6486 394.0039 L 588.6487 369.3659 M 588.8256 395.0228 L 611.3934 395.2441 M 588.8405 661.0105 L 588.8406 678.2815 M 589.2666 279.1819 L 589.2668 291.4314 M 589.3779 413.0549 L 589.3782 432.5662 M 589.4175 395.5735 L 610.5639 395.5744 L 589.8329 395.9627 M 589.4256 405.0398 L 610.5738 405.0423 M 589.4529 291.1894 L 589.4541 279.1819 M 589.5468 661.0105 L 589.5468 678.2815 M 589.8375 405.4304 L 610.1763 405.4301 M 589.9586 413.0584 L 589.9592 432.4679 M 590.1734 349.7739 L 609.8266 349.7739 M 590.2820 474.7088 L 590.3550 494.0379 M 590.3456 480.5598 L 590.3538 491.4914 M 590.3462 504.8609 L 590.3479 492.1648 M 590.3507 470.4489 L 590.3529 453.0697 M 590.3519 434.1409 L 590.3538 415.3663 L 590.3551 434.9924 M 590.3538 491.5094 L 590.3619 480.5598 M 590.4051 491.0250 L 590.4071 504.2649 M 590.4086 661.0101 L 590.4086 678.2806 L 590.4086 668.0153 M 590.4968 673.7097 L 590.5090 660.8677 M 590.8191 427.6756 L 590.8260 413.5892 M 591.6040 413.5892 L 591.7208 425.6091 M 591.9705 324.1241 L 602.7171 324.5521 M 592.5557 320.1518 L 607.4939 320.1660 M 592.5846 673.7152 L 592.6220 660.8640 M 592.6391 413.5892 L 592.9143 427.1772 M 593.2558 72.2662 L 575.3591 95.7022 L 593.3737 71.7284 M 593.2793 269.2181 L 593.8587 253.6528 M 593.4852 427.2018 L 593.7609 413.5892 M 593.5701 246.7849 L 606.4302 246.7851 M 593.6489 106.2774 L 593.7722 123.6640 L 593.7904 138.5070 M 593.9188 72.1539 L 593.9188 102.0251 M 594.1865 676.7711 L 594.1865 688.4495 M 594.2135 106.2775 L 594.3412 123.1700 M 594.3424 123.6649 L 594.3537 138.5069 M 594.4744 253.6995 L 594.4756 268.5598 M 594.6780 425.7318 L 594.7959 413.5892 M 594.8485 235.0913 L 605.3474 235.0913 M 594.9329 105.6967 L 594.9351 123.4451 L 594.9357 140.3898 M 594.9676 105.6957 L 574.0259 106.2766 L 594.9676 106.2775 M 595.5740 413.5892 L 595.5809 427.8591 M 595.9428 140.3899 L 574.0247 140.3890 L 595.9431 140.9707 M 595.9634 43.9326 L 595.9693 65.3453 M 596.0327 467.9321 L 596.0347 442.3762 M 596.0348 441.2917 L 596.0370 413.5892 M 596.0381 480.5598 L 596.0462 491.5094 M 596.0450 434.9924 L 596.0462 415.3663 L 596.0481 434.1409 M 596.0450 494.0379 L 596.1180 474.7088 M 596.0462 491.4914 L 596.0544 480.5598 M 596.0561 453.1083 L 596.0716 474.6561 M 596.0790 485.0308 L 596.0932 504.8623 M 596.6601 432.8505 L 596.6603 413.0993 M 597.2408 413.1028 L 597.2414 432.8524 M 598.1212 125.4122 L 598.1540 108.6890 M 598.1587 106.3735 L 598.2142 78.1376 M 598.4388 141.4151 L 598.4406 157.5672 M 598.4389 197.8380 L 598.4421 177.8402 M 598.4409 158.3416 L 598.4412 177.0667 M 598.4427 125.7549 L 598.4427 136.2869 M 598.4482 52.7297 L 598.4447 88.4309 L 599.0273 52.6452 M 599.0200 177.1276 L 600.1587 158.2786 M 599.0625 136.9889 L 599.5834 125.6958 M 599.5651 177.7726 L 599.5775 197.7705 M 599.5737 141.3445 L 600.1584 157.6289 M 600.9717 197.4157 L 600.9734 178.7927 M 600.9734 178.1221 L 600.9751 159.2243 M 600.9746 164.9594 L 646.4817 164.9594 M 600.9751 158.5865 L 600.9766 142.2177 M 600.9770 137.1382 L 600.9779 126.5621 M 600.9810 89.1493 L 600.9827 66.5939 L 601.0009 53.1572 M 601.0560 64.0340 L 601.0800 53.2119 M 601.0633 153.5854 L 601.1207 142.4084 L 601.0769 153.1555 L 601.0890 141.7221 M 601.0749 63.7787 L 601.0911 53.2196 M 601.0838 91.5043 L 601.0950 73.7908 L 601.1127 90.8743 L 601.1334 53.9464 L 601.1086 89.9040 M 601.0979 167.9839 L 601.1469 154.5716 M 601.1199 66.1781 L 601.1325 53.9284 M 601.7910 173.4082 L 602.0067 189.6956 M 601.9311 49.6037 L 602.1137 91.1066 M 601.9706 58.5796 L 602.0765 47.7683 M 602.0990 76.2975 L 602.1114 92.8693 M 602.1119 121.2224 L 602.1143 103.0393 M 602.2615 82.3645 L 602.2679 101.5494 L 602.8542 82.3526 M 602.2643 139.9077 L 602.2661 102.3220 L 602.8733 139.9591 M 602.3713 173.4120 L 602.5870 189.7130 M 602.4764 482.4955 L 602.4641 610.0081 L 632.1473 609.9954 L 632.3638 505.2498 M 602.7580 432.8533 L 602.7582 413.1365 M 603.0765 102.4709 L 603.0792 123.2920 M 603.3390 413.1400 L 603.3392 432.8527 M 603.4064 733.3171 L 635.1995 733.3337 L 663.9065 733.3607 M 603.8787 142.9272 L 603.8817 164.2955 L 623.1133 164.3147 L 623.1124 142.9437 M 603.8819 474.7088 L 603.9549 494.0379 M 603.9067 504.8623 L 603.9104 482.2492 M 603.9117 474.6751 L 603.9152 453.0950 M 603.9455 480.5598 L 603.9537 491.4914 M 603.9518 434.1409 L 603.9537 415.3663 L 603.9550 434.9924 M 603.9537 491.5094 L 603.9619 480.5598 M 604.4191 427.7048 L 604.4259 413.5892 M 605.2040 413.5892 L 605.3211 425.6407 M 605.5208 268.5607 L 605.5238 253.6995 M 605.8129 676.7711 L 605.8129 688.4495 M 606.1392 253.6528 L 606.7159 269.2151 M 606.2391 413.5892 L 606.5147 427.2006 M 607.0849 427.2174 L 607.3609 413.5892 M 607.3647 681.5700 L 607.3779 660.8641 M 607.3736 678.1918 L 607.3779 660.8641 M 607.3779 660.8641 L 607.4835 673.7123 M 608.2780 425.7245 L 608.3959 413.5892 M 608.4148 269.6347 L 608.4149 255.8265 M 609.1740 413.5892 L 609.1809 427.7925 M 609.4910 660.8677 L 609.5032 673.7097 M 609.5914 661.0101 L 609.5914 678.2806 M 609.5928 504.2649 L 609.5940 490.9380 M 609.6380 480.5598 L 609.6462 491.5094 M 609.6449 434.9924 L 609.6462 415.3663 L 609.6481 434.1409 M 609.6450 494.0379 L 609.7180 474.7088 M 609.6462 491.4914 L 609.6544 480.5598 M 609.6479 453.0260 L 609.6506 470.4421 M 609.6480 433.1697 L 624.5347 433.1447 M 609.6529 482.4827 L 629.2607 482.4478 M 609.6532 482.1489 L 629.2604 482.1489 M 609.6536 481.5709 L 629.2600 481.5709 M 609.6538 491.6964 L 609.6558 504.8621 M 610.0413 413.1809 L 610.0424 432.4659 M 610.0584 123.3532 L 610.0610 102.4960 M 610.1845 408.1272 L 589.4413 408.3899 L 610.5804 408.5141 M 610.1925 140.6425 L 610.2023 121.1565 M 610.2040 120.3868 L 610.8328 102.3131 L 610.8328 121.0646 L 610.8263 140.5447 M 610.2484 82.3479 L 610.8328 101.5455 L 610.8298 82.3414 M 610.6205 432.5641 L 624.5346 432.5636 M 610.6205 432.5691 L 610.6220 413.1845 M 611.3898 393.5733 L 588.5403 394.0060 L 611.5675 393.9872 M 611.4706 349.6090 L 611.4706 392.3023 M 611.5900 189.7092 L 610.5051 173.7692 L 612.1756 189.7074 M 612.3304 164.4571 L 623.3886 164.4619 L 623.3898 146.5113 M 612.5561 423.1202 L 624.5344 423.1212 M 612.5561 423.1202 L 624.5344 422.5405 M 612.5561 423.1202 L 612.5568 412.8052 M 612.5581 452.8785 L 628.4196 452.8785 M 613.1261 120.4942 L 613.1261 102.2153 L 613.1262 83.0044 M 613.1261 121.0735 L 613.1261 139.0172 M 613.1884 121.2049 L 613.2141 138.2543 M 613.2148 136.2695 L 655.1970 136.2695 M 613.2165 138.3696 L 613.2029 121.0791 L 613.2658 102.2097 M 613.2464 90.4406 L 613.2658 102.2097 M 613.2658 102.2097 L 613.3107 120.4341 M 613.7640 678.2852 L 613.7739 661.0102 M 613.7739 661.0102 L 613.8070 648.2802 M 613.7739 661.0102 L 613.7937 647.5046 M 613.7760 660.2888 L 613.7766 670.6528 M 613.9935 276.8295 L 624.1680 276.8313 M 614.1034 139.2184 L 654.3627 139.2397 M 614.1132 139.0869 L 654.3606 139.1227 M 614.1389 73.0698 L 634.1991 73.0001 L 654.2492 73.0109 M 614.3765 72.5893 L 634.2009 72.5971 L 654.0576 72.6235 M 614.7777 110.9129 L 614.7778 126.9267 M 614.7777 135.8523 L 614.7778 82.8981 M 615.0896 77.9603 L 653.8140 77.9603 M 615.0896 116.2141 L 615.0896 135.5763 L 653.8140 135.5763 L 653.8140 116.2141 L 653.8140 96.8521 L 653.8140 77.4899 L 615.0896 77.4899 L 615.0896 96.8521 L 615.0896 116.2142 M 615.0896 135.1059 L 653.8140 135.1059 M 615.4148 71.1848 L 629.7861 71.1860 M 615.7169 77.4899 L 615.7169 96.0245 M 615.7169 78.3972 L 634.4518 78.3972 L 653.1867 78.3972 M 615.7169 97.7147 L 615.7169 115.3514 M 615.7169 117.0831 L 615.7169 135.5763 M 615.7169 134.4766 L 653.1867 134.4766 M 616.3461 77.9603 L 616.3461 95.3953 M 616.3461 87.8897 L 634.4518 87.8897 L 652.5575 87.8897 M 616.3461 98.3440 L 616.3461 114.7222 M 616.3461 117.7124 L 616.3461 135.1059 M 616.3461 117.9151 L 634.4518 117.9151 L 652.5575 117.9151 M 616.3461 124.4184 L 634.4518 124.4184 L 652.5575 124.4184 M 616.3461 125.0201 L 634.4518 125.0201 L 652.5575 125.0201 M 616.4257 638.2363 L 616.4275 652.1586 M 623.3670 638.7725 L 623.3670 654.6690 M 623.8785 299.1144 L 634.4509 289.3180 L 639.5490 280.6400 M 623.9694 164.9594 L 623.9707 146.5113 M 624.1470 446.5021 L 612.5583 445.9195 L 624.2439 445.9202 M 624.1474 439.2417 L 612.5577 439.8195 L 624.2442 439.8229 M 624.2445 382.2246 L 612.5574 381.6443 L 624.8259 381.6453 M 624.2451 386.9842 L 639.4187 386.9854 M 624.8256 386.4053 L 639.4187 386.4046 M 625.1687 143.8567 L 625.1809 164.9594 M 625.2156 96.2556 L 643.6880 96.2556 M 625.2156 109.7019 L 643.6880 109.7019 M 625.5037 694.9780 L 654.8589 694.9753 M 625.5042 702.2440 L 654.9434 702.2663 M 625.5042 709.5395 L 657.5541 709.5655 M 625.5391 695.9525 L 654.8679 695.9265 M 625.5391 703.2179 L 654.9544 703.2168 M 625.5397 710.5128 L 657.5382 710.5134 M 625.6595 673.9452 L 625.6904 661.0113 L 625.7666 678.2841 M 625.8668 96.8449 L 643.0367 96.8449 M 625.8668 109.1126 L 643.0367 109.1126 M 626.6456 320.4586 L 637.4695 320.5035 M 626.6852 319.9372 L 637.4978 319.9556 M 626.8200 289.6773 L 634.5665 278.4046 M 627.6421 91.8461 L 641.2615 91.8461 M 627.6421 111.2082 L 641.2615 111.2082 M 627.7985 92.4754 L 641.1051 92.4754 M 627.7985 111.8375 L 641.1051 111.8375 M 627.9977 92.9458 L 640.9059 92.9458 M 628.1965 616.6765 L 628.1965 631.1507 M 628.1969 112.7784 L 640.7066 112.7784 M 628.1970 93.4162 L 640.7067 93.4162 M 628.3533 94.0455 L 640.5503 94.0455 M 628.3533 113.4077 L 640.5502 113.4077 M 628.7114 453.0588 L 617.1742 453.1006 L 628.7135 453.0590 M 629.1957 474.7088 L 629.2686 494.0379 M 629.2593 480.5598 L 629.2675 491.4914 M 629.2615 504.8623 L 629.2635 492.6746 M 629.2655 434.1409 L 629.2675 415.3663 L 629.2687 434.9924 M 629.2675 491.5094 L 629.2755 480.5598 M 629.2676 467.7833 L 629.2700 453.0864 M 629.3238 490.5190 L 629.3250 504.2637 M 629.7328 427.6809 L 629.7388 415.2702 M 630.2765 189.7121 L 628.0692 173.7674 L 630.8650 189.7210 M 630.5340 415.2688 L 630.6346 425.6217 M 631.5868 415.2677 L 631.8286 427.2126 M 632.3983 427.2294 L 632.6406 415.2677 M 632.5322 164.9594 L 632.5624 143.8529 M 633.5919 425.7054 L 633.6933 415.2688 M 633.7676 146.4115 L 633.7678 164.9594 M 633.7841 232.4620 L 640.8945 242.8371 M 634.3484 146.4067 L 634.3487 164.9594 M 634.4885 415.2702 L 634.4945 427.7777 M 634.4959 372.7706 L 616.3838 372.7704 L 616.3836 352.8353 L 639.2514 352.8355 M 634.7339 722.3224 L 663.5972 722.3040 M 634.8256 610.6838 L 635.1294 510.7872 M 634.9517 480.5598 L 634.9599 491.5094 M 634.9586 434.9924 L 634.9599 415.3663 L 634.9618 434.1409 M 634.9587 494.0379 L 635.0317 474.7088 M 634.9599 491.4914 L 634.9681 480.5598 M 635.0027 453.0853 L 635.0049 467.4237 M 635.1927 710.5130 L 635.3053 721.7764 L 663.5972 721.7560 M 635.1940 523.3227 L 635.2191 536.3707 L 635.9391 523.3014 M 635.4769 733.3171 L 635.6162 722.3218 M 635.5905 143.9013 L 635.6339 164.9594 M 635.7903 333.8857 L 635.1614 345.5921 L 636.4304 333.3533 M 636.1055 173.4401 L 639.7780 189.3783 L 636.6999 173.4247 M 636.5063 632.5927 L 636.5085 613.4980 M 637.0985 632.5851 L 637.1015 613.4895 M 637.9928 543.6142 L 637.9929 533.4953 M 637.9928 543.6142 L 637.9929 533.4953 M 637.9928 543.6142 L 637.9929 533.4953 M 637.9928 543.6142 L 637.9929 533.4953 M 637.9928 543.6142 L 637.9929 533.4953 M 637.9928 543.6142 L 637.9929 533.4953 M 638.0014 543.6142 L 638.0015 514.9541 M 638.0014 543.6938 L 638.0014 554.0604 M 638.1450 228.5177 L 644.6039 237.2590 L 649.0623 247.5664 M 638.6310 71.1866 L 653.0029 71.1866 M 639.4190 369.8459 L 639.4191 353.1113 M 640.7231 566.5415 L 640.7232 632.6184 L 640.7231 566.5415 Z M 640.7231 566.5415 L 640.7232 632.7016 M 640.7610 566.5447 L 652.6219 566.5444 M 640.7611 632.6185 L 640.7610 566.5418 L 640.7612 638.3476 M 640.9058 112.3080 L 627.9977 112.3080 L 640.9059 112.3080 M 641.1647 528.9772 L 641.1707 538.9775 M 641.2682 628.5959 L 641.2692 566.5447 M 641.3437 733.3171 L 641.5136 722.3181 M 641.6192 197.3543 L 644.3858 209.3668 M 642.1160 543.0678 L 642.1163 531.4992 M 642.2154 197.3504 L 645.1265 210.0056 M 642.5159 320.5235 L 640.9620 333.6387 L 639.5456 345.6030 L 641.5487 333.6451 L 643.1647 319.9598 M 643.0486 460.5541 L 643.6242 446.5954 L 643.6221 460.5511 M 643.3068 143.9205 L 643.3093 164.9594 M 643.5066 566.5446 L 643.5067 626.9673 M 644.5566 146.2983 L 644.5593 164.9594 M 644.5570 710.9872 L 663.5972 711.2828 M 644.8216 173.4557 L 649.3926 189.4391 M 645.1401 146.2933 L 645.1388 164.9594 L 660.1361 164.9594 M 645.4249 173.4537 L 650.1811 190.0811 M 646.1282 164.9594 L 646.1866 143.9158 M 646.7307 706.9820 L 663.5972 706.9820 M 647.2999 309.7148 L 668.5837 309.7148 M 649.6827 309.7149 L 687.5541 309.7149 M 649.8704 453.3397 L 687.7320 453.3397 M 649.8765 566.5445 L 649.8765 626.9673 M 650.6465 379.2976 L 673.3380 379.2976 M 650.6550 378.6598 L 673.3380 378.6598 M 651.3142 543.0675 L 651.3144 531.4988 M 651.6519 197.3679 L 655.1001 209.4327 M 651.8566 143.9456 L 651.8600 164.9594 M 652.1141 566.5444 L 652.1155 628.5961 M 652.2558 197.3661 L 655.8834 210.0803 M 652.4182 445.4296 L 652.4211 417.0656 M 652.4197 410.5828 L 652.4212 385.2974 M 652.4197 416.3150 L 652.4198 429.7760 M 652.5575 77.9603 L 652.5575 95.3953 M 652.5575 98.3440 L 652.5575 114.7222 M 652.5575 117.7125 L 652.5575 135.1059 M 652.6220 632.6496 L 652.6219 566.5420 L 652.6221 638.4199 M 652.6600 566.5417 L 652.6600 632.7155 M 652.6600 566.5417 L 652.6600 632.6497 M 652.6600 566.5417 L 652.6600 632.7328 M 652.7372 413.5118 L 673.3380 413.5118 M 652.7372 414.1495 L 673.3380 414.1495 M 652.7385 344.4456 L 673.3378 344.4456 M 652.7386 448.3637 L 673.3378 448.3637 M 652.9114 164.9594 L 652.9117 146.2188 M 652.9493 343.7692 L 687.5816 343.7693 M 653.1867 77.4899 L 653.1867 96.0245 M 653.1867 97.7147 L 653.1867 115.3515 M 653.1867 117.0831 L 653.1867 135.5763 M 653.3862 173.4566 L 658.9189 189.7490 M 653.4589 316.3886 L 673.0190 316.3886 M 653.4591 336.9306 L 673.0190 336.9308 M 653.4917 146.2073 L 653.4922 164.9594 M 653.8634 338.6532 L 675.8004 338.6551 M 653.8657 314.6637 L 675.8001 314.6637 M 653.8681 315.2446 L 675.2190 315.2446 M 653.8744 338.0724 L 675.2196 338.0742 M 653.9987 173.4596 L 659.5310 189.7452 M 654.8647 697.7899 L 634.6257 697.7837 L 617.6302 698.3433 L 634.6328 698.3557 L 654.8841 698.3451 M 655.1985 138.3471 L 655.1728 103.1129 L 655.2443 138.2543 M 655.2364 621.6340 L 655.2364 634.6889 M 655.2365 621.6340 L 655.2365 635.6715 M 655.3329 83.0334 L 655.3329 101.8920 M 655.3329 102.4723 L 655.3329 139.0172 M 655.4290 526.2962 L 655.4290 543.6147 M 655.4374 525.7887 L 655.4374 540.8991 M 655.4374 525.7887 L 655.4374 540.8991 M 655.4374 525.7887 L 655.4374 541.5359 L 655.4374 525.7887 Z M 655.4374 525.7887 L 655.4374 540.8991 M 655.4374 525.7887 L 655.4374 540.8991 M 655.4374 540.8991 L 655.4374 530.3555 L 655.4374 540.8991 Z M 655.4375 517.1769 L 655.4374 537.9102 L 655.4375 517.7981 M 655.4735 81.2281 L 667.7642 81.2281 M 655.5206 636.8625 L 655.7693 626.3715 M 655.5991 637.9628 L 655.8474 627.1508 L 655.6299 638.1855 M 655.7878 644.1795 L 656.2346 611.7941 L 662.7764 580.0784 M 655.7887 625.5499 L 656.1127 611.8792 L 662.7764 579.8800 M 655.7936 656.7950 L 670.0431 656.7950 L 670.0431 678.3599 L 655.7992 678.3599 M 656.1139 611.6738 L 659.6290 594.9422 L 656.1140 611.6738 M 657.5852 218.1447 L 668.8762 218.1621 M 657.6305 81.2281 L 657.6292 96.0940 L 658.2546 81.2281 M 657.7675 173.4749 L 663.7646 189.7490 M 658.0266 217.5754 L 668.6839 217.5975 M 658.3495 173.3792 L 664.3463 189.6521 M 658.4300 518.2546 L 658.4315 506.6705 M 658.9772 350.9375 L 658.9772 372.1680 M 658.9772 385.7894 L 658.9772 407.0199 M 658.9772 420.6414 L 658.9772 441.8718 M 659.4613 350.4534 L 682.4268 350.4534 M 659.4613 372.6520 L 682.4269 372.6520 M 659.4613 385.3053 L 682.4269 385.3053 M 659.4613 407.5040 L 682.4269 407.5041 M 659.4613 420.1573 L 682.4268 420.1574 M 659.4613 442.3560 L 682.4268 442.3560 M 661.2644 101.9598 L 661.2659 120.3898 L 661.8453 101.9618 M 662.2870 169.0334 L 672.4727 197.1162 L 662.7680 168.6780 M 662.7446 722.3046 L 662.9141 733.3171 M 662.7526 235.2609 L 674.6635 235.2558 M 662.8318 235.8444 L 674.7551 235.8367 M 662.8403 571.0778 L 663.8085 551.8159 M 663.5427 699.1702 L 663.5427 728.7058 M 663.5427 704.6186 L 663.5427 721.7560 M 663.5972 699.1702 L 663.5972 728.7058 M 663.9657 683.4061 L 663.9787 698.2330 L 663.9733 683.4107 L 663.9781 698.3065 M 663.9754 729.0873 L 663.9769 699.2435 M 663.9772 552.8651 L 663.9772 570.4974 M 663.9773 538.1271 L 663.9773 552.0840 L 663.9773 538.1284 M 663.9773 539.7157 L 663.9943 551.7877 L 663.9773 539.7196 M 663.9773 552.0841 L 664.2027 530.0343 M 663.9773 552.8858 L 663.9800 571.4028 M 663.9775 552.1065 L 664.4226 530.6217 M 663.9802 645.5985 L 676.8880 644.8517 L 663.9826 644.7395 M 664.0058 534.0716 L 664.0058 549.2960 M 664.0058 550.7378 L 664.0058 607.6019 M 664.0058 607.5901 L 682.2386 607.5831 M 664.0058 621.9718 L 664.0058 639.0154 M 664.0058 683.0912 L 664.0058 699.5309 M 664.0058 700.4658 L 664.0058 732.7522 M 664.0058 734.0929 L 664.0058 748.9963 M 664.3924 734.2870 L 664.4245 749.2916 L 664.8802 734.4641 M 664.4815 732.9887 L 664.5735 700.5561 M 664.4926 167.9742 L 675.1451 197.3055 M 664.5174 166.8278 L 664.5200 146.1057 M 664.5391 683.3571 L 664.6202 699.6586 M 664.5714 744.5103 L 677.8938 744.5103 M 664.6676 741.3822 L 677.8938 741.3822 M 664.7946 737.2493 L 677.8938 737.2493 M 664.8117 683.9989 L 664.8852 700.0796 M 664.8619 521.6234 L 668.8504 530.8041 L 678.6608 553.6427 M 664.9610 733.1379 L 665.1585 700.6482 M 664.9802 729.9885 L 677.8938 729.9885 M 664.9992 726.8606 L 677.8938 726.8606 M 665.0994 146.1075 L 665.1021 166.8278 M 665.3251 242.9137 L 665.3251 270.9840 M 665.5628 750.9336 L 680.9270 760.0000 M 665.5980 682.5360 L 683.6543 682.5360 L 683.6543 760.0000 M 665.5991 652.4768 L 683.6542 652.4768 L 683.6543 560.3000 M 665.6382 521.2787 L 679.9221 553.6310 M 665.9511 520.6832 L 680.4556 553.5142 M 666.2538 288.8190 L 666.3052 309.7148 M 666.4198 608.3428 L 682.8270 608.3367 M 666.6668 243.4694 L 666.6700 270.4283 M 666.9074 309.7148 L 666.9067 289.3999 L 689.8591 289.3978 M 666.9791 288.8181 L 689.3989 288.8184 M 667.1003 580.8188 L 677.8937 580.8188 M 667.1003 584.9519 L 677.8937 584.9519 M 667.1003 588.0797 L 677.8937 588.0797 M 667.1003 592.2127 L 677.8937 592.2127 M 667.1003 595.3405 L 677.8937 595.3405 M 667.1003 599.4735 L 677.8937 599.4735 M 667.1003 602.6013 L 677.8937 602.6013 M 667.1004 563.1694 L 677.8938 563.1694 M 667.1004 566.2972 L 677.8938 566.2972 M 667.1004 570.4303 L 677.8938 570.4303 M 667.1004 573.5581 L 677.8938 573.5581 M 667.1004 577.6911 L 677.8938 577.6911 M 667.1004 734.1214 L 677.8938 734.1214 M 667.7154 509.3360 L 667.7157 498.0285 L 667.7154 509.3409 M 667.7196 498.0294 L 667.7198 509.3358 M 667.7196 498.0295 L 667.7198 509.3363 M 667.7196 498.0300 L 667.7198 509.3369 L 667.7196 498.0300 Z M 667.7196 498.0300 L 667.7198 509.3375 M 667.7588 101.9840 L 668.3432 120.2938 L 668.3395 99.2272 M 667.7641 99.2655 L 677.9061 98.5906 M 667.7641 139.9127 L 668.3470 121.0625 L 668.3453 139.8864 M 667.7647 176.9839 L 667.7662 166.8426 L 667.7659 146.0815 M 667.7653 98.4902 L 677.9061 98.5906 M 667.7653 98.4902 L 668.3987 81.2265 M 667.7653 98.4902 L 667.7811 81.1012 M 668.0114 506.2818 L 668.0814 520.7555 M 668.0165 700.5234 L 668.0917 682.5360 M 668.0984 520.7946 L 682.2292 553.4430 M 668.3462 146.0776 L 668.3479 166.8397 L 668.3467 178.5863 M 668.4208 697.5762 L 668.9041 682.5360 M 668.9134 506.2694 L 668.9729 522.8153 M 668.9743 320.1585 L 653.3711 320.1585 L 653.3714 333.1607 L 668.9743 333.1608 M 669.1371 482.1469 L 669.1371 523.1945 M 669.1528 530.1088 L 679.0916 553.5483 M 669.1879 269.6471 L 669.1938 257.2475 L 669.1991 244.8459 M 669.2553 269.6412 L 669.2615 257.2464 L 669.2665 244.8518 M 669.3006 695.6229 L 669.4048 683.9205 L 669.8334 694.8255 M 669.7035 481.5652 L 669.7077 524.5129 M 670.2362 239.9000 L 684.2007 239.9000 M 670.2362 273.9976 L 684.2007 273.9976 M 670.8726 463.6758 L 682.3775 463.7160 L 671.6048 463.7207 M 671.2169 463.4560 L 682.3726 463.4560 M 671.4211 463.6777 L 681.5210 463.6601 M 671.6034 528.8928 L 671.6032 481.8603 L 671.6048 463.6784 M 671.6564 448.8577 L 682.3745 448.8668 M 671.6610 449.1138 L 682.3705 449.1138 M 672.1265 530.1014 L 672.1333 481.8624 L 672.1300 463.6802 M 672.4518 670.9092 L 672.4518 682.5360 M 672.4828 320.1585 L 672.4828 333.1608 M 673.1604 81.2259 L 677.9061 98.5906 M 673.4262 314.3310 L 683.5365 314.3310 M 673.4262 338.9883 L 683.5365 338.9883 M 673.5033 315.2446 L 673.5033 338.0741 M 673.6037 177.2177 L 674.1366 194.5286 M 673.6818 463.6856 L 673.6818 533.6947 M 673.6818 467.9958 L 706.2536 467.9959 L 749.5125 467.9959 M 673.6818 533.6946 L 682.1469 553.2527 M 673.7518 81.2259 L 678.4758 98.4175 M 674.2032 177.7871 L 674.7719 196.2779 M 674.4035 184.2990 L 686.1211 184.2226 M 674.5867 535.7854 L 674.5867 522.6130 L 674.8517 536.3976 M 675.3101 197.7600 L 679.6390 209.6794 M 675.6895 81.1153 L 680.9618 100.0945 M 675.6896 81.1152 L 681.0640 100.4189 M 676.3330 659.4914 L 686.9043 659.4957 M 676.3330 673.8661 L 687.0782 673.8611 M 676.5565 80.9965 L 687.6924 80.9982 M 676.5902 269.6433 L 676.5955 257.2493 L 676.6014 244.8548 M 676.7172 721.2313 L 676.7286 702.3322 M 676.7269 688.2891 L 676.7640 701.4830 M 677.0784 702.3993 L 677.0869 720.5691 M 677.3229 689.1024 L 677.4106 701.5502 M 677.7678 269.1445 L 677.7737 256.7420 L 677.7791 244.3407 M 677.8352 269.1377 L 677.8414 256.7432 L 677.8464 244.3475 M 679.1995 702.6748 L 679.2400 721.1312 M 679.5176 689.1842 L 679.9893 701.8793 L 679.9937 688.4695 M 679.5512 376.0801 L 711.5455 376.0771 M 679.5512 410.9321 L 711.5455 410.9260 M 679.5512 445.7841 L 711.5455 445.7811 M 679.9293 722.0442 L 680.0481 702.7069 M 680.0374 621.8963 L 680.7244 638.9846 L 680.8867 621.2597 M 680.4396 347.0193 L 716.5826 347.0176 M 680.4399 416.7266 L 711.5446 416.7319 M 680.4400 381.8748 L 711.5446 381.8798 M 680.6279 101.2339 L 694.0317 102.0481 M 680.6500 101.3150 L 694.0471 102.1284 M 680.6539 101.3295 L 675.5259 82.4513 L 680.7408 100.6305 M 680.8465 352.5434 L 680.8465 369.6804 M 680.8465 387.3953 L 680.8465 404.5324 M 680.8465 422.2475 L 680.8465 439.3843 M 681.3643 760.0000 L 681.8800 740.3551 M 681.4157 684.3265 L 681.9508 701.9996 L 681.9162 683.6892 M 681.4414 739.6018 L 681.9348 702.7555 L 681.8800 740.3551 M 681.7813 760.0000 L 681.8800 740.3551 M 681.8617 583.1247 L 682.2272 595.7138 L 682.2386 607.5946 M 682.1999 452.4421 L 671.8434 452.5151 L 682.2277 453.1544 M 682.2010 102.3973 L 694.1561 102.6948 M 682.4268 347.0192 L 682.4269 376.0799 M 682.4268 416.7270 L 682.4268 445.7838 M 682.4269 381.8751 L 682.4269 410.9315 M 682.5726 102.2378 L 694.1077 102.4430 M 682.7053 218.1224 L 688.7785 234.8446 M 682.7647 582.3073 L 682.8422 595.0880 L 682.8269 608.3873 M 682.8377 541.3407 L 682.8530 527.1852 M 682.8539 526.3158 L 682.8704 511.0516 M 682.8713 510.1813 L 682.8826 499.7141 M 683.0197 151.5954 L 684.4690 167.1378 M 683.6378 553.5077 L 683.8182 577.1895 L 683.8032 639.3396 M 683.6542 650.6907 L 701.1409 650.6906 M 683.6543 639.5831 L 701.2201 639.5638 M 683.6543 641.0063 L 701.2342 641.0047 M 683.6561 155.5806 L 684.9979 166.5684 M 684.2424 347.0191 L 684.2426 376.0797 M 684.2424 416.7273 L 684.2424 445.7837 M 684.2426 381.8754 L 684.2426 410.9312 M 685.1701 269.1398 L 685.1754 256.7459 L 685.1813 244.3513 M 685.2375 269.1475 L 685.2428 256.7459 L 685.2487 244.3454 M 685.2514 709.9709 L 685.2514 685.7951 L 723.5204 685.7951 L 723.5204 709.9709 M 685.4591 177.7764 L 691.7445 238.9744 L 685.9888 177.1964 M 686.0444 234.5405 L 680.7141 218.1465 L 686.6589 234.5444 M 686.6115 572.9352 L 686.6116 553.3288 M 687.3828 114.5617 L 689.0981 129.6487 L 688.1107 114.4320 M 687.5145 553.3299 L 687.5146 572.2179 L 687.6546 553.3301 M 687.5707 298.2442 L 687.7417 309.3781 M 687.7131 80.9220 L 676.5559 80.9132 L 687.7391 80.8588 M 687.7698 243.4694 L 687.7698 270.4283 M 687.8923 572.2181 L 687.8957 553.3304 M 688.0545 553.3306 L 688.1998 572.7025 L 688.3830 553.3311 M 688.6357 553.3314 L 688.6361 572.7020 M 688.8865 713.6062 L 719.8853 713.6062 M 688.9528 82.4218 L 693.8398 101.0506 M 689.0123 617.7253 L 689.0229 606.8095 M 689.1117 257.1914 L 689.1117 270.9840 M 689.1934 694.0922 L 689.1934 713.6062 M 689.3065 256.7560 L 689.8492 288.8182 M 689.3086 497.6025 L 699.8444 497.6025 M 689.4187 259.7887 L 689.9479 288.7454 L 689.4681 259.5728 M 689.5100 298.2312 L 689.6433 309.4629 M 689.8590 289.3960 L 690.2003 309.5571 M 690.1144 660.8259 L 690.1144 672.1266 M 690.1202 656.7448 L 715.3239 656.7448 M 690.1203 676.1815 L 715.3239 676.1815 M 690.1998 309.5247 L 707.2898 309.5530 L 693.9486 309.5790 L 705.6148 309.5793 M 690.1999 309.5342 L 700.8894 309.5655 M 690.2826 309.5344 L 689.9316 289.4720 L 690.2912 309.5345 M 690.4046 694.0922 L 690.4046 713.6062 M 690.5639 244.3552 L 690.5639 255.2656 M 690.5639 252.2113 L 715.0331 252.2113 M 690.5639 253.3440 L 708.4145 253.3857 M 690.5639 253.9709 L 708.0795 254.4342 M 690.5908 262.0416 L 690.8017 275.9689 M 690.6513 347.0188 L 690.6514 376.0791 M 690.6513 410.9300 L 690.6514 381.8764 M 690.6513 416.7284 L 690.6513 445.7831 M 690.8797 659.6731 L 715.0933 659.6731 M 690.8826 673.2531 L 715.0933 673.2531 M 691.1719 262.0433 L 691.3826 275.9639 M 691.2962 309.5374 L 691.1371 298.1116 L 691.8617 309.5391 M 691.6528 659.6731 L 691.6528 673.2531 M 691.8146 617.7253 L 691.8184 605.9990 M 691.8249 586.2877 L 691.8314 566.4811 M 692.0978 694.0922 L 692.0978 713.6062 M 692.2388 262.0144 L 692.4755 275.8031 M 692.4671 376.0789 L 692.4672 347.0187 M 692.4671 381.8767 L 692.4672 410.9296 M 692.4672 416.7287 L 692.4672 445.7829 M 692.9963 276.3155 L 708.4137 276.3155 M 693.0894 262.0105 L 693.3125 274.9522 L 708.0777 274.9475 L 708.0786 262.0327 M 693.3090 694.0922 L 693.3090 713.6062 M 693.4242 309.7149 L 740.1249 309.7149 M 693.4242 340.7093 L 740.1249 340.7093 M 693.4540 312.7749 L 740.1704 312.7749 M 693.4540 343.7693 L 740.1704 343.7693 M 693.7125 140.2398 L 689.4563 104.4993 L 694.1773 139.6811 M 693.9385 101.0955 L 689.0651 82.3645 L 693.9633 101.0713 M 694.1748 102.4712 L 698.7275 139.3646 M 694.2280 103.1390 L 698.7819 140.0374 M 694.3696 453.3394 L 742.7804 453.3412 M 694.4884 468.1038 L 682.4990 468.1441 L 694.4884 468.1203 M 694.9884 676.2061 L 712.1549 676.2061 L 696.0625 676.2061 L 711.0936 676.2061 M 695.0022 694.0922 L 695.0022 713.6062 M 695.1050 319.1782 L 715.8156 319.7588 L 695.1337 319.7585 M 695.1091 334.1417 L 715.7982 333.5579 L 695.1366 333.5612 M 695.1328 326.9513 L 716.1625 326.9486 M 695.1393 326.3698 L 716.1247 326.3681 M 696.1071 617.7253 L 696.1808 606.1558 M 696.2134 694.0922 L 696.2134 713.6062 M 696.2203 309.5122 L 708.3699 309.5001 M 696.3084 586.1513 L 696.4333 566.5527 M 696.4342 297.4285 L 717.3957 291.1998 M 696.4345 298.0218 L 716.8196 291.9644 M 696.4354 277.2311 L 717.1082 277.2311 M 696.4354 277.8119 L 717.1082 277.8119 M 697.3791 153.0343 L 699.1042 166.8376 L 708.1173 239.4566 M 697.4386 656.6978 L 714.4268 656.6978 L 698.4136 656.6978 M 697.9047 153.0207 L 699.6387 166.8414 L 708.6547 239.4663 M 697.9064 694.0922 L 697.9064 713.6062 M 698.8487 139.8371 L 694.5040 104.4555 L 698.8775 139.7501 M 698.8758 376.0783 L 698.8759 347.0184 M 698.8758 381.8777 L 698.8759 410.9284 M 698.8759 416.7298 L 698.8759 445.7823 M 699.1176 694.0922 L 699.1176 713.6062 M 699.6105 146.5193 L 703.0815 174.6436 M 699.9021 617.0741 L 699.9021 632.9272 M 700.6920 347.0183 L 700.6920 376.0781 M 700.6920 381.8780 L 700.6920 410.9281 M 700.6920 416.7301 L 700.6920 445.7821 M 700.8108 694.0922 L 700.8108 713.6062 M 700.9612 239.0509 L 697.6113 209.4055 L 693.2965 167.2190 L 698.1777 209.6321 L 701.5798 239.6288 M 701.7869 553.3387 L 701.7806 572.1964 L 702.2290 553.3380 M 702.0220 694.0922 L 702.0220 713.6062 M 702.5381 449.1138 L 722.9846 449.1138 M 702.5473 463.4560 L 722.9928 463.4560 M 703.0082 553.3384 L 703.0079 572.2196 L 703.4602 553.3388 M 703.0417 194.2524 L 717.3056 194.2420 L 703.0417 194.2528 M 703.0438 194.2698 L 717.2961 194.2748 M 703.0463 194.2900 L 717.2932 194.2854 M 703.0564 194.3708 L 717.4243 194.3708 M 703.7152 694.0922 L 703.7152 713.6062 M 704.0096 468.0104 L 715.6977 468.0104 L 703.9884 468.0104 L 715.7178 468.0104 M 704.2415 553.3396 L 704.2399 572.2163 L 704.6934 553.3400 M 704.4732 627.1263 L 712.1199 616.3914 M 704.4735 173.4353 L 719.1634 173.4345 M 704.9264 694.0922 L 704.9264 713.6062 M 705.2062 216.6237 L 707.2120 232.8180 M 705.2811 192.5709 L 719.1634 192.5700 M 705.4767 553.3407 L 705.5008 572.2434 L 705.9286 553.3412 M 706.5443 468.0925 L 718.5226 468.0745 L 744.4255 468.1176 M 706.6196 694.0922 L 706.6196 713.6062 M 706.6409 468.1410 L 718.5226 468.0875 L 744.4255 468.1203 M 706.7053 553.3419 L 706.6879 572.2135 L 707.1472 553.3419 M 707.1010 347.0180 L 707.1010 376.0775 M 707.1010 381.8791 L 707.1010 410.9268 M 707.1010 416.7312 L 707.1010 445.7815 M 707.7522 595.1416 L 707.7624 583.4806 L 708.2232 594.6578 M 707.8308 694.0922 L 707.8308 713.6062 M 707.8609 252.0845 L 696.4396 252.0999 L 707.8706 252.0624 M 707.8636 595.9704 L 707.8636 608.0062 M 707.9284 553.3416 L 708.1598 572.2584 L 708.3705 553.3414 M 708.9159 347.0179 L 708.9159 376.0773 M 708.9159 381.8793 L 708.9159 410.9265 M 708.9159 416.7315 L 708.9159 445.7814 M 708.9295 262.0300 L 708.9308 277.2311 M 709.1195 553.3411 L 709.1213 572.2184 L 709.5616 553.3410 M 709.1210 497.6025 L 719.6591 497.6025 M 709.5239 694.0922 L 709.5239 713.6062 M 709.6397 535.7316 L 721.6380 535.7288 M 709.6487 528.2665 L 721.6435 528.1794 M 710.2938 528.6528 L 721.3529 528.6528 M 710.2938 535.1704 L 721.3529 535.1704 M 710.3126 553.3407 L 710.3124 572.2168 L 710.7254 553.3405 M 710.4138 650.6907 L 724.0288 650.6905 M 710.5598 641.0059 L 724.0309 641.0047 M 710.6083 639.5535 L 724.1831 639.5386 M 710.7351 694.0922 L 710.7351 713.6062 M 710.8179 584.1615 L 710.8181 608.0112 M 711.1394 595.1482 L 711.1477 583.4687 M 711.4405 553.3409 L 711.4573 572.2404 L 711.8534 553.3411 M 711.5893 594.6582 L 711.5948 582.9866 M 712.4283 694.0922 L 712.4283 713.6062 M 712.4937 632.2555 L 720.1404 621.5206 M 712.5635 553.3406 L 712.5222 572.2131 L 712.9764 553.3402 M 713.4254 240.9725 L 714.9872 252.1649 L 737.7618 275.1487 L 737.7609 309.7149 M 713.4277 252.5628 L 722.0621 261.2941 L 737.7618 277.1713 M 713.6395 694.0922 L 713.6395 713.6062 M 713.7106 553.3397 L 714.2726 572.2637 L 714.0763 553.3394 M 713.8836 586.0243 L 713.9077 612.7544 M 713.8999 354.8952 L 713.8999 368.2104 M 713.8999 389.7474 L 713.8999 403.0622 M 713.8999 424.5993 L 713.8999 437.9141 M 713.9067 240.2280 L 738.3418 265.2691 M 714.1372 262.0232 L 724.9561 277.7823 M 714.6712 553.3390 L 714.6711 572.2179 L 715.0369 553.3388 M 714.7827 262.0377 L 725.5750 277.7494 M 715.2063 538.1840 L 727.1892 538.1829 M 715.2637 194.3708 L 730.1282 229.8839 L 715.9306 194.3708 M 715.3327 694.0922 L 715.3327 713.6062 M 715.6693 553.3392 L 715.6732 572.2184 L 716.0350 553.3398 M 716.5439 694.0922 L 716.5439 713.6062 M 716.6437 553.3390 L 716.6342 572.2150 L 716.9461 553.3386 M 717.1390 192.5701 L 731.9299 229.7811 L 717.9630 194.6911 M 717.1431 354.8952 L 717.1431 368.2104 M 717.1431 389.7474 L 717.1431 403.0622 M 717.1431 424.5993 L 717.1431 437.9141 M 717.4802 553.3379 L 717.6384 572.2583 L 717.7826 553.3375 M 717.7163 354.7442 L 717.7163 368.3613 M 717.7163 389.5961 L 717.7163 403.2135 M 717.7163 424.4480 L 717.7163 438.0651 M 717.7973 194.6136 L 731.8758 229.8559 M 717.8047 375.6073 L 717.8217 361.5529 L 717.8083 350.4989 M 717.8047 382.3501 L 717.8217 396.4048 L 717.8047 410.4592 M 717.8047 417.2020 L 717.8217 431.2567 L 717.8083 442.3117 M 718.2253 348.4044 L 718.2253 374.7012 M 718.2253 383.2563 L 718.2253 409.5530 M 718.2253 418.1082 L 718.2253 444.4052 M 718.2369 694.0922 L 718.2369 713.6062 M 718.2951 553.3368 L 718.2991 572.2181 L 718.5977 553.3363 M 718.8963 348.4044 L 718.8963 374.7012 M 718.8963 383.2563 L 718.8963 409.5530 M 718.8963 418.1082 L 718.8963 444.4052 M 719.0958 553.3357 L 719.0893 572.2150 L 719.3218 553.3356 M 719.4481 694.0922 L 719.4481 713.6062 M 719.4716 347.4982 L 719.4896 361.5529 L 719.4716 375.6074 M 719.4716 382.3500 L 719.4896 396.4048 L 719.4716 410.4593 M 719.4716 417.2019 L 719.4896 431.2567 L 719.4716 445.3115 M 719.6298 641.0051 L 719.8035 621.9935 M 719.7208 553.3355 L 719.8392 572.2584 L 719.9468 553.3355 M 719.8926 348.4044 L 719.8926 374.7012 M 719.8926 383.2563 L 719.8926 409.5530 M 719.8926 418.1082 L 719.8926 444.4052 M 720.3299 553.3354 L 720.3336 572.2179 L 720.5559 553.3354 M 720.5633 348.4044 L 720.5633 374.7012 M 720.5633 383.2563 L 720.5633 409.5530 M 720.5633 418.1082 L 720.5633 444.4052 M 720.9203 553.3354 L 720.9223 572.2181 L 721.0601 553.3355 M 721.3108 553.3358 L 721.4507 572.2169 L 721.4510 553.3359 M 721.3873 190.5341 L 721.3902 175.4713 M 721.7550 491.3470 L 744.4255 491.3470 M 721.8673 673.8627 L 732.3685 673.8710 M 721.8676 659.4928 L 732.4405 659.5018 M 722.3537 553.3388 L 722.3537 572.9352 M 723.0949 207.5541 L 731.9987 229.7542 L 723.1568 207.7098 M 723.1065 326.9501 L 734.3898 326.9489 M 723.1491 326.3690 L 734.3668 326.3684 M 723.3748 319.1794 L 734.3367 319.1794 M 723.3763 614.1025 L 723.4005 586.0243 M 723.3901 461.1494 L 737.5760 461.0475 M 723.3931 451.4030 L 737.5769 451.5052 M 723.4649 319.7594 L 734.3736 319.7594 M 723.4938 262.7113 L 735.2981 274.6482 M 723.5240 262.7415 L 735.3019 274.6521 M 723.7388 292.9291 L 736.1992 288.3091 M 723.7700 463.4560 L 736.3347 463.4560 M 723.7985 449.1138 L 736.3753 449.1138 M 723.8587 263.0098 L 734.0190 273.2300 L 723.8841 262.9826 M 724.0274 280.2314 L 736.2353 279.3285 M 724.0274 280.8140 L 736.2353 279.9114 M 724.1317 450.8990 L 736.7115 450.9900 M 724.1462 461.6531 L 736.7298 461.5630 M 724.2588 367.2865 L 724.2886 355.9777 M 724.2588 402.2004 L 724.2886 390.8914 M 724.2588 436.9953 L 724.2886 425.6865 M 724.3176 292.1201 L 736.1992 287.7151 M 725.0574 367.2953 L 725.0825 355.9621 M 725.0574 402.2093 L 725.0825 390.8757 M 725.0574 437.0041 L 725.0825 425.6706 M 725.1640 577.1895 L 725.1643 553.5372 M 725.1643 608.4057 L 725.1643 639.3399 M 725.6034 350.9373 L 725.6034 372.1682 M 725.6034 385.7892 L 725.6034 407.0201 M 725.6034 420.6411 L 725.6034 441.8720 M 727.7214 537.9120 L 727.7737 518.6241 M 727.7632 522.5176 L 745.2845 522.5182 M 727.7647 521.9378 L 745.5398 521.9404 M 728.3464 491.9279 L 744.4255 491.9279 M 728.3980 560.3000 L 728.3980 652.4768 L 746.4532 652.4768 M 728.3980 760.0000 L 728.3980 682.5360 L 746.4543 682.5360 M 728.9095 350.9367 L 728.9095 372.1688 M 728.9095 385.7886 L 728.9095 407.0207 M 728.9095 420.6408 L 728.9095 441.8726 M 729.2192 608.3367 L 745.6264 608.3428 M 729.2193 608.3873 L 729.2040 595.0880 L 729.2813 582.3073 M 729.7819 343.7694 L 743.2936 343.7702 M 729.8076 607.5831 L 748.0667 607.5902 M 729.8076 607.5946 L 729.8191 595.7138 L 730.1845 583.1247 M 729.8231 553.4430 L 743.9539 520.7946 M 730.1299 683.6892 L 730.0956 701.9996 L 730.6307 684.3265 M 730.1664 740.3551 L 730.6819 760.0000 M 730.1664 740.3551 L 730.2650 760.0000 M 730.1664 740.3551 L 730.1115 702.7555 L 730.6048 739.6018 M 730.3122 499.6899 L 730.3155 518.3470 M 730.3157 519.2175 L 730.3182 533.5862 M 731.1253 760.0000 L 746.4895 750.9336 M 731.1266 422.7468 L 731.1266 439.7666 M 731.1360 425.4629 L 731.1360 436.9781 M 731.1428 425.4629 L 731.1428 436.9781 M 731.1595 621.2597 L 731.3218 638.9846 L 732.0088 621.8963 M 731.5906 553.5142 L 746.0952 520.6832 M 731.9980 702.7069 L 732.1170 722.0442 M 732.0465 230.2830 L 745.2492 263.3330 M 732.0525 688.4695 L 732.0570 701.8793 L 732.5287 689.1842 M 732.1242 553.6310 L 746.4081 521.2787 M 732.8440 721.1312 L 732.8845 702.6748 M 732.9547 553.5483 L 742.8934 530.1088 M 733.3855 553.6427 L 743.1958 530.8041 L 747.1844 521.6234 M 734.1585 563.1694 L 744.9520 563.1694 M 734.1585 566.2972 L 744.9520 566.2972 M 734.1585 570.4303 L 744.9520 570.4303 M 734.1585 573.5581 L 744.9520 573.5581 M 734.1585 577.6911 L 744.9520 577.6911 M 734.1585 580.8189 L 744.9520 580.8189 M 734.1585 584.9519 L 744.9519 584.9519 M 734.1585 588.0797 L 744.9519 588.0797 M 734.1585 592.2127 L 744.9519 592.2127 M 734.1585 595.3405 L 744.9519 595.3405 M 734.1585 599.4735 L 744.9519 599.4735 M 734.1585 602.6013 L 744.9519 602.6013 M 734.1585 726.8606 L 747.0471 726.8606 M 734.1585 729.9885 L 747.0661 729.9885 M 734.1585 734.1214 L 744.9520 734.1214 M 734.1585 737.2493 L 747.2516 737.2493 M 734.1585 741.3822 L 747.3787 741.3822 M 734.1585 744.5103 L 747.4748 744.5103 M 734.3426 334.1397 L 723.4436 333.5582 L 734.3600 333.5576 M 734.6356 701.5502 L 734.7234 689.1024 M 734.9971 720.5691 L 735.0057 702.3993 M 735.2824 701.4830 L 735.3195 688.2891 M 735.3177 702.3322 L 735.3291 721.2313 M 736.1992 279.9760 L 736.1992 290.6242 L 736.1992 300.7373 M 737.7589 265.5063 L 714.0441 241.1992 L 715.5361 251.8939 L 737.7618 274.3238 M 737.7618 277.1018 L 724.4145 277.8110 L 737.7618 277.8100 M 738.3418 275.4400 L 738.3427 306.3594 M 739.1451 468.4799 L 749.5118 468.4799 M 742.2129 694.8255 L 742.6416 683.9205 L 742.7457 695.6229 M 743.1422 682.5360 L 743.6278 697.6499 M 743.1606 340.7091 L 743.6464 312.4207 M 743.1716 264.0920 L 730.3510 230.4521 L 743.7524 263.9797 M 743.7268 341.1775 L 743.7370 312.3299 M 743.9924 682.5360 L 744.0674 700.5234 M 745.2560 427.2716 L 745.2560 441.2947 M 745.3112 263.3108 L 732.2582 230.4840 L 745.3954 263.3670 M 745.3827 264.0243 L 745.3827 342.2951 M 745.5004 341.7084 L 745.4708 307.0372 L 745.5296 341.4130 M 745.5027 325.6751 L 745.4932 307.0375 L 745.5157 333.3077 M 746.8877 700.6482 L 747.0852 733.1379 M 747.1660 734.4641 L 747.6218 749.2916 L 747.6538 734.2870 M 747.1988 700.0796 L 747.2724 683.9989 M 747.4260 699.6586 L 747.5073 683.3571 M 747.4727 700.5561 L 747.5648 732.9887 M 747.6238 530.6217 L 748.0688 552.1065 M 747.8223 427.2716 L 747.8223 441.2947 M 747.8435 530.0343 L 748.0689 552.0841 M 747.9396 440.5298 L 747.9792 428.0120 M 747.9842 428.6322 L 748.0034 439.9241 M 748.0465 734.0898 L 748.0465 744.4177 M 748.0637 644.7395 L 735.1581 644.8517 L 748.0659 645.5985 M 748.0661 571.4025 L 748.0689 552.8858 M 748.0667 607.5979 L 748.0688 571.3796 M 748.0672 607.5953 L 748.0689 571.3566 M 748.0681 587.8516 L 753.0066 611.7941 L 753.6275 656.7950 M 748.0682 698.3065 L 748.0728 683.4107 L 748.0676 698.2330 L 748.0806 683.4061 M 748.0689 537.5270 L 748.0519 551.7877 L 748.0689 539.7209 M 748.0689 538.1271 L 748.0689 552.0856 M 748.0689 538.1284 L 748.0689 552.0853 M 748.0691 552.8651 L 748.0691 570.4974 M 748.0694 699.2435 L 748.0709 729.0873 M 748.0926 428.9977 L 748.0926 439.6065 M 748.0926 534.6988 L 748.0926 545.3076 M 748.1225 318.6402 L 748.1225 338.2176 M 748.2438 551.8159 L 749.2120 571.0778 M 748.2438 551.8159 L 749.2120 571.0778 M 748.2438 551.8159 L 749.2120 571.0778 M 748.2438 551.8159 L 749.2120 571.0778 M 748.4551 704.6200 L 748.4551 719.1766 M 748.4722 589.5197 L 753.1285 611.8792 L 753.4492 625.4177 M 748.5412 699.1702 L 748.5412 728.7058 M 748.5412 704.6200 L 748.5412 719.1766 M 748.6667 428.9977 L 748.6667 439.6065 M 748.6667 534.6988 L 748.6667 545.3076 M 748.9468 424.8629 L 748.9483 409.8966 M 748.9468 549.4538 L 748.9483 564.5108 M 749.1914 409.7947 L 749.1914 424.8624 M 749.1914 549.4537 L 749.1914 564.5108 M 749.2120 571.0778 L 749.2119 589.5197 L 749.2120 571.0778 Z M 749.3028 365.0003 L 763.3973 365.0003 M 749.4700 499.4374 L 749.5040 482.2701 M 749.4975 530.8825 L 749.5223 497.2708 L 749.5361 530.8823 M 749.5051 482.2556 L 749.5132 465.6994 M 749.5053 482.2529 L 749.5136 465.7399 M 749.5060 467.9959 L 749.5064 479.5160 M 749.5064 443.4515 L 749.5031 464.7081 L 749.5715 443.2393 M 749.5071 498.9299 L 749.5078 516.9223 M 749.5206 403.5955 L 749.4993 389.9988 L 749.5737 404.1596 M 749.5239 481.9984 L 749.5271 468.1155 M 749.5324 521.3438 L 749.5425 498.2182 M 749.5324 521.7643 L 749.5343 498.3525 M 749.5356 481.8391 L 749.5367 468.1155 M 749.5368 588.2188 L 749.5031 574.2046 L 749.5418 589.0815 M 749.5374 530.9549 L 749.5466 484.6272 L 749.5401 530.9548 M 749.5398 574.1562 L 749.5516 561.0983 L 749.5359 573.5706 L 749.5853 560.8853 M 749.5452 494.1676 L 749.5864 481.1441 M 749.5497 481.6466 L 749.5555 468.1155 M 749.5873 488.8280 L 749.5873 513.3928 L 749.5873 488.8454 L 749.5873 513.4102 M 749.6009 449.4781 L 749.6009 466.5845 M 749.6009 466.5845 L 749.6009 449.8480 L 749.6009 466.5845 Z M 749.6062 594.9422 L 753.1212 611.6735 L 749.6062 594.9423 M 749.6492 595.1470 L 749.6494 573.4146 M 749.6494 371.1640 L 749.6494 382.1341 M 749.6494 382.2629 L 749.6494 403.3536 M 749.6494 404.1764 L 749.6494 414.5438 M 749.6494 414.9614 L 749.6494 425.5881 L 749.6494 466.6276 M 749.6494 467.2843 L 749.6494 549.6318 M 749.6494 550.3205 L 749.6494 562.0586 L 749.6494 572.7755 M 749.7218 595.4963 L 753.1218 611.6825 M 749.7472 352.6979 L 763.0721 352.6979 M 749.7472 364.9905 L 763.0721 364.9905 M 751.0288 573.1492 L 751.0752 562.6849 M 751.0714 404.0334 L 751.0735 414.7456 L 751.0743 424.9801 M 751.0735 587.2092 L 751.5621 573.9721 L 751.6543 587.2101 M 751.0743 389.2885 L 751.1547 403.1402 L 751.6552 389.2962 M 751.1266 260.1867 L 751.1334 278.8924 M 751.6531 573.1543 L 751.6552 562.6512 M 751.6543 404.0452 L 751.6543 414.1772 M 751.6543 414.8393 L 751.6561 424.9922 M 753.4692 626.2619 L 754.0780 651.9602 M 753.6185 432.5112 L 763.6453 431.9404 L 753.6359 431.9209 M 753.6232 435.7727 L 763.6444 436.3594 M 753.6350 541.7740 L 763.6444 541.7846 M 753.6805 428.2525 L 770.1721 428.2525 M 753.6805 440.2494 L 770.1721 440.2494 M 753.6805 534.1578 L 770.1721 534.1578 M 753.6805 546.1546 L 770.1721 546.1546 M 753.8043 573.1676 L 753.8460 562.7074 M 753.8430 404.0461 L 753.8498 414.1786 L 754.4268 404.0349 M 753.8442 587.2092 L 754.3406 573.9694 L 754.4248 587.2092 M 753.8451 389.3012 L 753.9447 403.1201 L 754.4260 389.3054 M 753.8451 424.9993 L 753.8451 414.8162 L 754.4239 424.9706 M 753.8451 604.4888 L 753.8451 615.2639 M 753.8737 651.7758 L 753.3885 627.1601 L 753.9415 651.2615 M 754.0048 621.6340 L 754.0048 648.8718 M 754.0049 621.6340 L 754.0049 648.8718 M 754.2375 668.7611 L 754.3819 697.6373 M 754.2938 680.0196 L 754.3716 668.8370 M 754.4236 629.2118 L 754.4248 615.2648 L 754.4260 604.4879 M 754.4259 639.8638 L 754.4259 654.3314 M 754.4260 562.6628 L 754.4277 573.1475 M 755.8500 371.1640 L 755.8500 382.1424 M 755.8500 382.2283 L 755.8500 403.3536 M 755.8500 404.1764 L 755.8500 414.5704 M 755.8500 407.3923 L 765.0111 416.5482 L 757.3119 408.8531 M 755.8500 407.5215 L 764.9928 416.6649 M 755.8500 415.0293 L 755.8500 428.2525 M 755.8500 424.8555 L 774.8423 424.8490 M 755.8500 425.0516 L 775.6314 425.0516 M 755.8500 467.2958 L 755.8500 477.7597 M 755.8500 496.5458 L 755.8500 517.7463 M 755.8500 530.9551 L 775.6611 530.9551 M 755.8500 572.7755 L 755.8500 562.0586 L 755.8500 549.3550 L 775.6314 549.3550 M 755.8501 607.5222 L 755.8501 632.4063 L 755.8501 649.9503 M 755.8501 664.5818 L 755.8501 680.0519 M 755.8704 496.5458 L 755.8704 513.3928 L 755.8704 496.5458 Z M 755.8704 496.5458 L 755.8704 513.4102 M 755.9109 620.2692 L 756.0185 635.7486 L 755.9951 620.7183 M 755.9263 623.5579 L 755.9322 638.4089 M 755.9314 636.4465 L 778.6071 636.4465 M 755.9402 608.5578 L 755.9729 619.9265 M 755.9406 608.7048 L 768.8062 608.7040 M 755.9411 517.7463 L 755.9441 499.1340 M 755.9423 609.2860 L 768.8884 609.2840 M 755.9449 561.0992 L 755.9895 574.1600 M 755.9467 467.5803 L 755.9467 477.7597 M 755.9470 443.4515 L 775.6611 443.4515 M 755.9475 477.7597 L 755.9491 467.5778 M 755.9508 517.7463 L 755.9522 498.9934 M 755.9538 477.7597 L 755.9545 467.5723 M 755.9600 443.4558 L 767.4424 443.4571 M 755.9602 498.8543 L 755.9706 517.4367 M 755.9605 498.8497 L 755.9721 514.8368 M 755.9607 403.9731 L 755.9942 389.9985 L 756.0282 403.5973 M 755.9632 560.8862 L 755.9913 573.5732 M 755.9643 566.7714 L 764.9928 557.7417 M 755.9661 666.6489 L 755.9748 680.2020 L 755.9746 664.4773 M 755.9704 517.7463 L 755.9826 496.5458 M 755.9763 566.7868 L 765.0111 557.7565 M 755.9763 566.7868 L 765.0111 557.7565 M 755.9763 566.7868 L 765.0111 557.7565 M 755.9796 407.5218 L 765.0111 416.5485 M 755.9796 407.5218 L 765.0111 416.5485 M 755.9796 407.5218 L 765.0111 416.5485 M 755.9836 619.3108 L 756.0146 608.2579 M 755.9858 466.4913 L 755.9933 477.7597 M 755.9934 496.5458 L 756.0005 517.7463 M 755.9949 466.2902 L 755.9990 477.7597 M 755.9992 632.9807 L 769.0259 632.9807 M 756.0033 633.5612 L 769.0277 633.5604 M 756.0048 530.8719 L 767.7865 530.8772 M 756.0048 530.8778 L 767.6078 530.8806 M 756.0069 468.2134 L 756.0274 456.6612 M 756.0167 424.8434 L 774.8423 424.8451 M 756.0182 549.4375 L 774.8434 549.4282 M 756.0182 549.4407 L 774.8434 549.4463 M 758.3496 316.3068 L 758.3380 304.6860 L 758.4131 316.3103 M 758.5305 661.9466 L 778.6071 661.9466 M 759.2956 474.9553 L 773.3465 474.9676 M 759.5405 444.5237 L 770.2401 444.5257 M 759.5405 459.4547 L 771.2907 459.4515 M 759.5405 514.9525 L 774.8772 514.9543 L 760.7894 514.9513 M 759.5405 529.8835 L 771.3373 529.8805 M 759.9859 562.7493 L 776.1086 611.2094 L 776.1063 636.4465 M 760.4448 562.2903 L 776.6884 611.1160 L 776.6884 636.4465 M 760.9983 301.9983 L 761.0039 316.2925 M 761.3623 561.3727 L 777.6701 610.4631 M 761.4349 561.3000 L 775.0994 602.3857 M 761.4527 561.2823 L 767.6896 580.0191 M 761.4749 561.2600 L 777.7661 610.4351 M 761.4833 561.2516 L 777.7998 610.4262 M 766.0375 278.8915 L 766.0414 260.1935 M 767.0075 496.5467 L 782.3577 496.5458 M 767.2660 459.4526 L 767.2660 474.9687 M 767.2660 496.5467 L 767.2660 514.9534 M 769.0376 447.3172 L 782.3569 447.3172 M 769.0376 456.6612 L 782.3569 456.6612 M 769.0376 477.7594 L 782.3577 477.7594 M 769.0376 517.7463 L 782.3569 517.7463 M 769.0376 527.0897 L 782.3569 527.0897 M 770.6292 481.0588 L 770.6292 493.2465 M 770.6466 481.1566 L 770.6466 493.1487 M 772.8595 481.1566 L 772.8595 493.1487 M 772.8637 481.0588 L 772.8637 493.2465 M 773.1541 611.6878 L 773.1541 632.9807 M 773.2983 481.0588 L 773.2983 493.2465 M 773.7348 636.4465 L 773.7358 611.5938 M 774.2108 599.6097 L 777.8104 610.4235 M 776.8047 481.0588 L 776.8047 493.2465 M 777.3758 481.0588 L 777.3758 493.2465 M 777.8490 611.3967 L 777.8490 636.4465 L 777.8494 611.3965 M 777.9107 636.4465 L 777.9606 611.3908 L 777.9738 636.4465 M 777.9248 611.3944 L 777.9356 623.9545 M 777.9702 629.5787 L 778.0043 611.3867 M 780.8823 481.0588 L 780.8823 493.2465 M 781.3189 639.4041 L 781.3189 658.9890 M 782.6841 550.1871 L 794.8920 550.1940 M 783.2979 439.4171 L 783.2988 429.0733 M 783.2979 534.9904 L 783.2988 545.3336 M 783.2980 438.1115 L 798.3772 438.1115 M 783.2980 536.2954 L 798.3772 536.2954 M 783.2986 430.5311 L 798.1583 430.5284 M 783.2986 544.0159 L 798.3772 544.0159 M 784.4779 349.2683 L 784.5060 379.4048 M 784.4809 349.2677 L 784.5060 378.6398 L 784.4809 349.2680 M 786.4509 480.6454 L 786.4973 493.7750 M 787.1137 550.0939 L 798.4496 550.0889 M 787.2176 424.3135 L 798.4496 424.3183 M 787.9468 458.6046 L 787.9468 476.9523 M 787.9468 497.4676 L 787.9468 515.8030 M 790.6292 493.7879 L 790.6313 480.6445 M 790.8520 529.5233 L 790.8771 516.0300 M 790.8526 529.2155 L 838.0745 529.2155 M 790.8557 527.5174 L 811.8564 527.5176 L 830.3976 527.5177 M 790.8771 458.2749 L 790.8780 444.7825 M 790.8773 455.0180 L 811.8564 455.0183 L 830.3976 455.0183 M 790.8780 445.1920 L 838.0745 445.1920 M 792.8404 438.1139 L 803.1470 438.1153 M 792.8404 536.2929 L 803.1470 536.2915 M 792.8404 544.0185 L 803.1470 544.0200 M 793.0555 428.2531 L 835.1251 428.2531 M 793.0555 440.2497 L 842.9654 440.2497 M 793.0555 534.1578 L 842.9654 534.1578 M 793.0555 546.1535 L 835.1247 546.1535 M 793.7262 386.2371 L 793.7425 370.9729 M 793.7351 377.9331 L 806.8496 377.9309 M 793.7435 370.1025 L 793.7547 359.6354 M 793.8040 475.7609 L 793.9864 490.2769 M 793.8125 473.3515 L 793.8268 455.0181 M 793.8284 516.6661 L 793.9620 495.3210 M 793.8551 512.3981 L 809.8276 512.3981 M 793.9510 425.0516 L 827.6344 425.0516 M 793.9510 443.4515 L 827.6344 443.4515 M 793.9510 530.9551 L 827.6344 530.9551 M 793.9510 549.3550 L 827.6344 549.3550 M 794.5428 447.0562 L 828.6489 447.0561 M 794.5428 453.9030 L 828.6489 453.9030 M 794.5428 519.6337 L 828.6489 519.6337 M 794.5428 526.4805 L 828.6489 526.4806 M 794.8860 619.2988 L 794.8926 600.2764 M 794.8899 618.5881 L 794.8926 600.2764 M 794.8906 467.5037 L 794.8942 455.0181 M 794.8920 599.5231 L 794.8916 562.6768 L 794.8926 600.2764 M 794.8921 549.3550 L 794.8905 561.9209 L 794.8923 549.3550 M 794.8974 468.3086 L 794.8976 455.0181 M 794.9235 481.1810 L 794.9050 498.9059 L 795.1904 481.8176 M 794.9276 455.3070 L 827.5388 455.3057 M 794.9276 459.3948 L 807.6365 459.3948 M 794.9276 462.5226 L 807.6365 462.5226 M 794.9276 467.5039 L 794.9276 455.0183 L 794.9276 477.1905 M 794.9276 467.5052 L 808.2437 467.5105 M 794.9276 468.2589 L 808.2464 468.2640 M 794.9276 549.3550 L 794.9276 561.8694 M 794.9276 562.6640 L 794.9276 619.9213 L 809.9876 610.8549 M 794.9276 586.7819 L 809.5750 586.7819 M 794.9276 589.9098 L 809.5893 589.9098 M 794.9276 594.0427 L 807.6366 594.0427 M 794.9276 597.1706 L 809.7872 597.1706 M 794.9276 601.3035 L 809.9163 601.3035 M 794.9276 604.4315 L 810.0139 604.4315 M 795.0604 426.0021 L 828.5656 426.0021 M 795.0604 442.5007 L 828.5656 442.5007 M 795.0604 531.9058 L 828.5656 531.9058 M 795.0604 548.4054 L 828.5656 548.4054 M 795.1808 562.6282 L 795.3012 581.9655 M 795.2397 549.3550 L 795.2426 561.8006 L 795.6876 549.3550 M 795.3322 581.0524 L 795.3709 562.5961 M 795.9165 397.4950 L 795.8645 378.5454 L 795.9900 397.8323 M 796.1524 413.5523 L 810.0175 381.2000 L 796.2286 413.4355 M 796.2805 413.4696 L 806.2713 390.0301 M 796.2930 413.3643 L 805.2323 392.4679 M 796.4981 413.5640 L 806.1743 390.7254 M 796.6863 455.3875 L 807.3873 455.3875 M 796.6863 455.3875 L 807.3873 455.3875 M 796.6863 455.3875 L 807.3873 455.3875 M 796.6863 518.2897 L 807.3873 518.2897 M 796.6863 518.2897 L 807.3873 518.2897 M 796.6863 518.2897 L 807.3873 518.2897 M 797.2946 423.0907 L 810.6069 423.0907 M 797.3952 580.4904 L 797.4033 562.3206 M 797.4503 518.3071 L 827.5388 518.3091 M 797.7009 445.8083 L 827.5388 445.8097 M 797.7009 527.8064 L 827.5388 527.8051 M 797.7156 561.4715 L 797.7923 550.0892 M 797.8516 518.5965 L 808.0098 518.5965 L 792.7679 518.5967 L 811.8564 518.5965 L 830.3743 518.5965 M 798.0915 446.0799 L 810.3447 446.0799 L 798.2991 446.0799 L 811.1397 446.0799 L 827.6577 446.0800 L 810.9704 446.0799 M 798.0915 455.0398 L 810.3447 455.0398 L 798.2991 455.0398 L 811.1397 455.0398 L 827.6577 455.0398 M 798.0915 518.5772 L 810.3447 518.5772 L 798.2991 518.5772 L 811.1111 518.5772 M 798.0915 527.5370 L 810.3448 527.5370 L 798.2991 527.5370 L 811.1111 527.5370 M 798.3350 561.4043 L 798.3654 550.0889 M 798.3690 562.2535 L 798.3799 581.1526 M 799.0264 549.3621 L 811.8824 549.3580 M 800.4773 445.7919 L 815.7509 445.7925 L 800.6904 445.7925 M 800.4773 455.3278 L 815.7509 455.3272 L 800.6904 455.3272 M 800.4773 518.2892 L 815.7509 518.2897 L 800.6904 518.2897 M 800.4773 527.8251 L 815.7509 527.8245 L 800.6904 527.8245 M 803.2331 438.0044 L 817.1547 438.0054 M 803.2511 543.8857 L 817.1615 543.8862 M 803.2514 536.4261 L 817.1547 536.4251 M 803.3715 537.0064 L 816.6917 537.0068 M 803.3715 543.3044 L 816.7074 543.3044 M 803.3736 437.4243 L 816.6917 437.4240 M 803.3744 431.1261 L 816.7074 431.1258 M 803.3745 430.5446 L 817.1615 430.5446 M 806.0416 549.3550 L 806.0860 560.4447 M 808.0098 455.0183 L 797.8523 455.0183 L 811.1135 455.0183 M 808.0098 527.5176 L 797.8523 527.5176 L 811.1133 527.5177 M 809.0862 560.0009 L 809.1330 549.3550 M 809.4549 560.5695 L 809.6037 593.0592 M 809.7003 594.3854 L 810.1631 609.2129 L 810.2435 594.2083 M 809.9696 559.5799 L 810.0184 549.3550 M 810.0145 560.4774 L 810.1069 592.9100 M 810.0720 494.9154 L 824.7143 494.8889 M 810.1633 609.1787 L 819.8487 603.3345 M 810.5827 505.5198 L 798.2174 504.7729 L 810.5886 504.6608 M 810.6043 425.0516 L 810.6205 412.8071 M 810.6067 609.6264 L 819.2807 604.4267 M 810.6181 412.0278 L 810.7562 390.5430 M 810.9704 527.5370 L 827.6577 527.5371 L 811.1401 527.5370 M 811.1130 446.0971 L 797.8516 446.0971 L 808.0098 446.0971 L 792.7679 446.0973 L 811.8564 446.0971 L 830.3744 446.0971 M 811.1399 518.5772 L 827.6577 518.5772 M 811.2873 425.0516 L 811.3025 412.7864 M 811.3002 412.0054 L 811.4350 389.9556 M 811.6578 455.0183 L 827.6577 455.0183 M 811.6590 518.5965 L 827.6577 518.5965 M 811.6590 527.5177 L 827.6577 527.5177 M 811.6601 446.0971 L 827.6577 446.0971 M 812.5796 455.3272 L 812.7856 467.5192 M 812.8310 398.0497 L 813.3203 425.0516 M 813.3805 467.5166 L 813.3949 455.3063 M 813.4277 425.0516 L 813.4826 398.0484 M 818.1846 444.2211 L 838.0801 444.2214 M 818.1855 530.0859 L 838.0783 530.0867 M 818.4759 443.6412 L 838.0783 443.6391 M 818.4768 530.6667 L 838.0763 530.6667 M 818.6647 559.1648 L 818.7183 589.0086 M 819.1523 360.6489 L 819.6114 375.6237 M 819.3000 378.8620 L 819.3000 393.4379 L 862.1797 393.4379 L 862.1797 378.8620 M 819.3104 425.0516 L 819.3104 411.7372 L 830.0304 411.7372 M 819.3238 605.2824 L 862.4390 579.3247 M 819.3644 605.2092 L 862.3356 579.3381 M 819.5557 559.0915 L 819.6082 588.6271 L 840.5813 579.0979 L 840.5881 558.1272 M 819.8507 604.9650 L 861.9379 579.6115 M 819.9142 590.1926 L 840.7977 580.4199 M 820.1532 411.7372 L 820.2078 393.4379 M 820.1866 428.2531 L 820.1866 440.2497 M 820.1866 534.1578 L 820.1866 546.1535 M 820.3623 360.6489 L 820.9622 375.6237 M 820.8564 411.7372 L 820.8922 393.4379 M 824.7126 561.9940 L 824.7132 549.3550 M 824.7139 471.7154 L 824.7507 455.0398 M 824.7143 494.3020 L 824.7146 518.5772 M 824.8036 428.2531 L 824.8036 440.2497 M 824.8036 534.1578 L 824.8036 546.1535 M 825.3768 428.2531 L 825.3768 440.2497 M 825.3768 534.1578 L 825.3768 546.1535 M 825.4279 428.2531 L 825.4279 440.2497 M 825.4279 534.1578 L 825.4279 546.1535 M 825.9777 511.6971 L 825.9986 487.0814 M 826.7093 511.1828 L 826.7425 487.4021 M 826.9492 370.6883 L 827.1709 360.0090 M 827.6577 455.0398 L 810.9704 455.0398 L 827.6577 455.0398 Z M 827.6577 518.5772 L 810.9704 518.5772 L 827.6577 518.5772 Z M 828.3024 428.2531 L 828.3024 440.2497 M 828.3024 534.1578 L 828.3024 546.1535 M 828.4244 459.3857 L 828.5565 471.5948 L 828.4470 459.3946 M 828.5801 443.4515 L 843.0679 443.4518 L 829.8039 443.4512 M 828.5801 530.9551 L 843.0679 530.9551 L 829.8039 530.9563 M 828.7408 428.2531 L 828.7408 440.2497 M 828.7408 534.1578 L 828.7408 546.1535 M 828.7529 564.5440 L 849.7620 553.1533 M 828.7974 514.7492 L 828.7138 471.8005 L 828.8443 514.7211 M 829.0836 459.6468 L 829.2307 471.6038 M 829.3810 460.1030 L 829.5928 514.1916 M 830.6111 558.7749 L 842.1495 553.0707 M 830.6222 558.5564 L 841.8891 553.0707 M 831.6646 428.2531 L 831.6646 440.2497 M 831.6646 534.1578 L 831.6646 546.1535 M 836.7245 365.4092 L 836.7378 378.2686 M 836.8224 378.2686 L 836.8358 365.4092 M 837.8615 428.3728 L 837.8615 440.2497 M 837.8615 534.1578 L 837.8615 545.9328 M 841.5241 557.6197 L 841.5171 578.6531 L 850.4114 574.0317 L 850.5631 554.3026 M 843.3205 428.4744 L 843.3205 439.9870 M 843.3205 534.4201 L 843.3205 545.9328 M 843.7196 460.1141 L 843.9660 514.1917 M 845.4515 445.3170 L 845.4515 455.7985 M 845.4515 517.8164 L 845.4515 528.2977 M 846.3975 360.0128 L 846.6109 370.6883 M 849.6012 471.6038 L 849.8003 455.4175 M 849.8167 519.3805 L 849.9572 471.8007 L 849.9433 519.3217 M 850.1011 545.5058 L 850.1021 534.8769 M 850.1012 428.7991 L 850.1021 439.4283 M 850.1014 430.9965 L 862.1899 430.9965 L 862.1899 411.7372 L 851.4699 411.7372 L 851.4699 430.9991 L 851.4699 449.4410 M 850.2451 471.5951 L 850.4328 454.8635 L 850.2754 471.5951 M 851.7333 574.8901 L 862.6065 561.5282 M 851.7830 554.3326 L 867.7983 552.0179 M 851.7830 554.3326 L 864.5933 551.9107 M 851.7830 554.3326 L 851.5613 573.4327 L 862.2478 560.7172 M 851.9156 487.4021 L 851.9488 511.1828 M 852.5979 375.6237 L 853.1978 360.6489 M 852.6595 487.0814 L 852.6804 511.6971 M 853.9303 535.5027 L 875.2961 535.5029 M 853.9373 499.6830 L 864.1401 499.6535 M 853.9381 498.9607 L 864.1411 498.9312 M 853.9449 492.1741 L 864.0859 492.2142 M 853.9457 491.3351 L 864.8724 491.3698 M 853.9485 375.6237 L 854.4077 360.6489 M 853.9511 485.9935 L 866.6108 485.9726 M 853.9518 485.3453 L 866.2073 485.3249 M 853.9532 542.4573 L 869.2467 542.4573 M 853.9533 528.7578 L 853.9568 512.4330 M 853.9536 527.2689 L 875.2961 527.2687 M 853.9540 525.5427 L 875.2961 525.5429 M 853.9555 481.6011 L 864.3497 481.5724 M 853.9557 517.3087 L 875.2961 517.3086 M 853.9562 480.8858 L 864.0273 480.8593 M 853.9599 477.2630 L 865.9034 476.7224 L 853.9604 476.7236 M 853.9613 491.3352 L 853.9655 471.7157 M 853.9654 546.1701 L 853.9081 528.7578 L 853.9655 471.7157 M 853.9655 471.7157 L 853.9771 449.4411 M 853.9720 516.7163 L 853.9720 538.2812 M 853.9720 516.7163 L 853.9720 538.2812 M 853.9720 516.7163 L 853.9720 538.2812 M 860.5735 393.4379 L 860.6091 411.7372 M 861.2579 393.4379 L 861.3125 411.7372 M 866.7105 377.9309 L 879.8250 377.9331 M 868.0028 398.0484 L 868.0686 430.3828 L 868.6545 398.0497 M 868.0624 431.2779 L 868.1048 467.5166 M 868.6997 467.5192 L 869.3118 431.3009 M 870.0505 389.9556 L 870.1853 412.0054 M 870.1830 412.7864 L 870.2048 430.4187 M 870.7292 390.5430 L 870.8672 412.0278 M 870.8649 412.8071 L 870.8894 431.3238 M 870.8785 423.0907 L 886.5520 423.0907 M 870.8826 426.2185 L 886.5520 426.2185 M 870.8881 430.3516 L 886.5520 430.3516 M 870.8967 504.6608 L 883.2679 504.7729 L 870.9026 505.5198 M 871.6520 512.3981 L 886.8122 512.3981 M 873.2389 468.2640 L 886.5520 468.2589 M 873.2416 467.5105 L 886.5520 467.5052 M 873.8432 448.0010 L 886.5520 448.0010 M 873.8432 452.1340 L 886.5520 452.1340 M 873.8432 455.2618 L 886.5520 455.2618 M 873.8432 459.3948 L 886.5520 459.3948 M 873.8432 462.5226 L 886.5520 462.5226 M 873.8433 433.4794 L 886.5520 433.4794 M 873.8433 437.6124 L 886.5520 437.6124 M 873.8433 440.7402 L 886.5520 440.7402 M 873.8433 444.8732 L 886.5520 444.8732 M 875.2141 390.0301 L 885.2050 413.4696 M 875.3112 390.7254 L 884.9873 413.5640 M 876.1065 571.0874 L 886.5805 564.7671 M 876.4291 570.8531 L 886.5520 564.7585 L 886.5520 539.9612 M 876.6771 570.7490 L 886.5805 564.7671 M 877.5982 395.5042 L 877.6011 378.2018 L 877.6390 395.5995 M 877.8807 396.2861 L 885.1865 413.3643 M 878.5016 516.8924 L 888.6569 516.8924 M 878.5085 536.0033 L 888.6557 536.0033 M 878.5085 539.9613 L 888.5316 539.9612 M 879.8054 359.6354 L 879.8166 370.1025 M 879.8176 370.9729 L 879.8339 386.2371 M 884.3011 555.0671 L 884.3881 566.0613 M 885.2569 413.4355 L 871.4679 381.2000 L 885.3331 413.5523 M 886.2949 481.8176 L 886.5803 498.9059 L 886.5619 481.1810 M 886.5520 420.3312 L 886.5520 442.2872 M 886.5520 442.4072 L 886.5520 477.1620 M 886.5750 450.5711 L 886.8332 473.3528 M 886.5805 564.7671 L 886.5864 554.3431 L 886.5849 564.7669 M 886.5879 468.3086 L 886.5878 455.0093 L 886.5902 442.2287 M 886.5947 467.5037 L 886.5913 455.6351 L 886.6090 443.0460 M 886.8115 513.0606 L 886.8296 495.1417 M 736.2359 300.7358 L 736.2355 288.7278 L 736.2359 300.7358 Z M 736.2355 288.1317 L 736.2352 277.9322 L 736.2355 288.1317 Z M 463.7165 288.7936 L 463.7157 300.7338 L 463.7165 288.7936 Z M 677.1350 82.4265 L 687.8732 82.4271 L 692.6213 100.3817 L 681.9008 100.3675 L 677.1350 82.4265 Z M 537.4911 211.1315 L 537.4887 192.8847 L 556.7522 192.8847 L 556.7531 211.1363 L 537.4911 211.1315 Z M 555.7842 722.7047 L 555.4290 732.9165 L 540.1206 732.9165 L 540.4013 722.7047 L 555.7842 722.7047 Z M 644.2152 722.7047 L 659.5981 722.7047 L 659.8788 732.9165 L 644.5704 732.9165 L 644.2152 722.7047 Z M 757.5980 627.8048 L 757.5985 614.0712 L 771.3320 614.0712 L 771.3317 627.8048 L 757.5980 627.8048 Z M 428.6677 627.8048 L 428.6677 614.0712 L 442.4015 614.0712 L 442.4014 627.8048 L 428.6677 627.8048 Z M 650.5523 386.4143 L 650.5141 372.8438 L 650.9871 353.1789 L 650.7315 372.8738 L 650.5523 386.4143 Z M 549.3942 372.8414 L 549.4231 386.4152 L 549.1807 372.8716 L 549.0637 353.1807 L 549.3942 372.8414 Z M 600.0000 698.3345 L 583.0966 698.3297 L 599.9994 697.8139 L 616.9039 698.3433 L 600.0000 698.3345 Z M 572.0458 123.9651 L 559.5484 123.9651 L 560.0105 111.3058 L 571.9122 111.4473 L 572.0458 123.9651 Z M 637.9929 515.6807 L 637.9929 525.7544 L 637.9929 515.6807 Z M 637.9929 532.8471 L 637.9929 522.4809 L 637.9929 532.8471 Z M 562.0070 522.4809 L 562.0070 532.8471 L 562.0070 522.4809 Z M 562.0070 515.6807 L 562.0070 525.7544 L 562.0070 515.6807 Z M 715.7710 660.7195 L 715.7710 672.2069 L 690.7938 672.2069 L 690.7938 660.7195 L 715.7710 660.7195 Z M 739.1937 678.3599 L 739.1937 656.7950 L 753.7192 656.7950 L 753.7192 678.3599 L 739.1937 678.3599 Z M 699.1674 617.7253 L 699.1674 632.6892 L 688.3694 632.6891 L 688.3694 617.7253 L 699.1674 617.7253 Z M 659.5134 595.4963 L 656.1135 611.6823 L 659.5134 595.4963 Z M 506.9517 660.7195 L 506.9517 672.2069 L 481.9746 672.2069 L 481.9746 660.7195 L 506.9517 660.7195 Z M 446.6984 656.7950 L 461.2239 656.7950 L 461.2239 678.3599 L 446.6984 678.3599 L 446.6984 656.7950 Z M 490.3481 617.7253 L 490.3481 632.6892 L 479.5502 632.6891 L 479.5502 617.7253 L 490.3481 617.7253 Z M 540.7909 594.9613 L 544.3021 611.6738 L 540.7909 594.9613 Z" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round"/>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{CORE_MODULES}from"./chunk-FA5JVXVG.js";import{HARDPOINT_MODULES}from"./chunk-773VO2GK.js";import{INTERNAL_MODULES}from"./chunk-4CBMQULR.js";import{UTILITY_MODULES}from"./chunk-ELT3FEA4.js";var ALL_MODULES=Object.freeze([...CORE_MODULES,...INTERNAL_MODULES,...HARDPOINT_MODULES,...UTILITY_MODULES]);export{ALL_MODULES};//# sourceMappingURL=chunk-3CKWT2F3.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/ships/modules-all.ts"],"names":["
|
|
1
|
+
{"version":3,"sources":["../src/ships/modules-all.ts"],"names":["CORE_MODULES","HARDPOINT_MODULES","INTERNAL_MODULES","UTILITY_MODULES","ALL_MODULES","Object","freeze"],"mappings":"O,6LA0CO,IAAMI,YAA2CC,OAAOC,OAAO,IAC/DN,gBACAE,oBACAD,qBACAE,yBACNC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{fixedSlotReason,validateLoadout}from"./chunk-OJC6AUL7.js";import{calculateModuleLimits}from"./chunk-KPETDYQX.js";import{publishLoadoutInternals,normalizeLoadoutEvent,preEngineeredVariantFor,moduleFitProblem,effectiveModule,moduleFitError}from"./chunk-FD74K27A.js";import{getShipBySymbol}from"./chunk-6UNAD74Z.js";import{parseSlef,toSlef,stringifySlef,getLoadoutModifier}from"./chunk-T4MKUKYS.js";import{getSourceModuleValue}from"./chunk-NIURLW2F.js";import{statesInertModifiers,rolledOverFixedArticle,isNonOutfittingSlot,isBuiltInHullModule,cloneLoadoutModule,cloneModuleStats,availableBlueprintsFor,availableExperimentalsFor,ownKeyIn,FITTED_ITEM,blueprintAvailableFor,blueprintRoutesFor,experimentalAvailableFor,primitiveEngineeringInputsFor,missingBaseLabels,journalModifiersFor,getPreEngineeredStats,getPreEngineeredJournalModifiers,getPreEngineeredModifiers,ordinaryEngineeringProof,unresolvedModifiers,matchingKeyIn,isCargoHatchSlot,orderBySlotLayout}from"./chunk-SC6Z2TV7.js";import{builtInModuleBySymbol}from"./chunk-3LZXB2MC.js";import{getPreEngineeredVariants}from"./chunk-KPJ77VPS.js";import{ALL_MODULES}from"./chunk-7ZERP4TB.js";import{getExperimentalEffect}from"./chunk-77I24V6B.js";import{singleJumpRange}from"./chunk-VTMCSCXV.js";import{calculateUnladenMass,calculateCargoCapacity,calculateFuelCapacity}from"./chunk-DCB4COCL.js";import{resolveBlueprintForModule}from"./chunk-OLKNYGGT.js";import{getBlueprintGrade}from"./chunk-AYAKU4YA.js";import{getDefaultLoadout}from"./chunk-GRIK3EDH.js";import{getExperimentalsForModule}from"./chunk-GLWPSVFV.js";import{baseStats,computeModifiers,labelsForDamageType,scaleForLabel}from"./chunk-CJQ37JII.js";import{ammunitionCapacity}from"./chunk-AA3K5XUE.js";import{loadoutSlotName}from"./chunk-KAA4VOOB.js";import{parseSlotName,enumerateSlots}from"./chunk-RAO35XDF.js";import{normalizeKey,CATALOGUE_KEY}from"./chunk-BKWLI44T.js";import{truncate,describeValue,requireString,requireStringIfPresent}from"./chunk-PKWVG2JY.js";import{deepFreeze}from"./chunk-DURKO7JU.js";var REBUY_FRACTION=.05;function exportLoadoutEvent(input,options){const fromSource=options.credits==="source";const source=fromSource?input.sourcePurchase:null;const totals=source!==null&&!input.sourceTotalsVoided&&sourceTotalsHold(input.modules,source)?source:null;const hullValue=fromSource?source?.hullValue??null:input.retailHullValue;const modulesValue=fromSource?totals?.modulesValue??null:computedModulesValue(input.modules,input.statsFor);const rebuy=fromSource?totals?.rebuy??null:hullValue===null||modulesValue===null?null:Math.trunc((hullValue+modulesValue)*REBUY_FRACTION);return{Ship:input.shipSymbol.toLowerCase(),...input.shipName===void 0?{}:{ShipName:input.shipName},...input.shipIdent===void 0?{}:{ShipIdent:input.shipIdent},...hullValue===null?{}:{HullValue:hullValue},...modulesValue===null?{}:{ModulesValue:modulesValue},UnladenMass:input.unladenMass,CargoCapacity:input.cargoCapacity,...input.maxJumpRange===null?{}:{MaxJumpRange:input.maxJumpRange},FuelCapacity:{Main:input.fuelCapacity.main,Reserve:input.fuelCapacity.reserve},...rebuy===null?{}:{Rebuy:rebuy},Modules:exportModules(input,options,fromSource)}}function exportModules(input,options,fromSource){const ordered=options.moduleOrder==="slots"?slotOrderedModules(input.modules,input.layout):[...input.modules.values()];return ordered.map(module=>{const on=module.On??(options.explicitPower?true:void 0);const priority=module.Priority??(options.explicitPower?0:void 0);const value=fromSource?sourceModuleValue(module,input.sourcePurchase):moduleValue(module,input.statsFor);return{Slot:module.Slot,Item:module.Item.toLowerCase(),...on===void 0?{}:{On:on},...priority===void 0?{}:{Priority:priority},...module.Health===void 0?{}:{Health:module.Health},...typeof value==="number"?{Value:value}:{},...module.Engineering===void 0?{}:{Engineering:cloneLoadoutModule(module).Engineering}}})}function slotOrderedModules(modules,layout){return orderBySlotLayout([...modules.values()],layout,module=>module.Slot)}function computedModulesValue(modules,statsFor){let sum=0;for(const module of modules.values()){const value=moduleValue(module,statsFor);if(value==="unknown")return null;if(value!=="free")sum+=value}return sum}function moduleValue(module,statsFor){const stats=statsFor(module);if(stats!==null)return stats.cost??"unknown";return isNonOutfittingSlot(module.Slot)||isBuiltInHullModule(module)?"free":"unknown"}var SOURCE_ITEM="ShipLoadout: sourcePurchase moduleValues[].item";function sourceModuleValue(module,source){const entry=source===null?null:getSourceModuleValue(source,module.Slot);if(entry===null)return"unknown";return normalizeKey(entry.item,SOURCE_ITEM)===normalizeKey(module.Item,FITTED_ITEM)?entry.value:"unknown"}function sourceTotalsHold(modules,source){for(const entry of source.moduleValues){const key=matchingKeyIn(modules,entry.slot);const fitted=key===null?void 0:modules.get(key);if(!fitted)return false;if(isCargoHatchSlot(entry.slot)&&entry.value===0)continue;if(normalizeKey(fitted.Item,FITTED_ITEM)!==normalizeKey(entry.item,SOURCE_ITEM)){return false}}return true}var SLOT_KEY="ShipLoadout: slotKey";var FITTED_SLOT="ShipLoadout: fitted module Slot";var LoadoutEditError=class extends TypeError{code;constraint;params;constructor(message,code,params,constraint){super(message);this.code=code;this.params=deepFreeze(structuredClone(params));if(constraint!==void 0)this.constraint=constraint}};var experimentalEffectUnsupported=(code,params)=>deepFreeze({kind:"unsupported",code:code,params:params});var engineeringNormalizationUnsupported=(code,params)=>deepFreeze({kind:"unsupported",code:code,params:params});function weighable(tonnes){return tonnes!==void 0&&Number.isFinite(tonnes)&&tonnes>=0?tonnes:void 0}var AGGREGATE_STATS=["mass","cargoCapacity","fuelCapacity"];var ShipLoadout=class _ShipLoadout{#ship;#shipSymbol;#modules;#moduleStats;#primitiveModifiers;#top;#sourcePurchase;#importOutcomes;#slotCache=/* @__PURE__ */new Map;#layoutCache;constructor(ship,shipSymbol,modules,top,sourcePurchase=null,moduleStats=/* @__PURE__ */new Map,primitiveModifiers=/* @__PURE__ */new Map,importOutcomes=deepFreeze([])){this.#ship=ship;this.#shipSymbol=shipSymbol;this.#modules=modules;this.#top=top;this.#sourcePurchase=sourcePurchase;this.#moduleStats=moduleStats;this.#primitiveModifiers=primitiveModifiers;this.#importOutcomes=importOutcomes;publishLoadoutInternals(this,{ship:ship,modules:()=>[...this.#modules.values()],effectiveModules:()=>this.#modulesForEffectiveStats(),effectiveModule:module=>this.#moduleForEffectiveStats(module),statsFor:module=>this.#statsFor(module),layout:()=>this.#layout(),resolveDrive:()=>this.#resolveDrive(),frameShiftDriveModule:()=>this.#frameShiftDrive()?.module,calculationModules:()=>this.#calculationModules(),statedMainFuel:()=>this.#top.FuelCapacity?.Main})}static fromSlef(input,index=0){const entries=parseSlef(input);const entry=entries[index];if(!entry){throw new TypeError(`ShipLoadout.fromSlef: no entry at index ${truncate(index)} (have ${entries.length})`)}const imported=normalizeLoadoutEvent(entry.data);const ship=getShipBySymbol(imported.shipSymbol);if(!ship){throw new TypeError(`ShipLoadout.fromSlef: unknown hull "${truncate(imported.shipSymbol)}"`)}return _ShipLoadout.#fromImported(imported,ship)}static fromLoadout(event){if(event===null||typeof event!=="object"){throw new TypeError(`ShipLoadout.fromLoadout: event must be a Loadout event, received ${describeValue(event)}`)}const imported=normalizeLoadoutEvent(event);const ship=getShipBySymbol(imported.shipSymbol);if(!ship){throw new TypeError(`ShipLoadout.fromLoadout: unknown hull "${truncate(imported.shipSymbol)}"`)}return _ShipLoadout.#fromImported(imported,ship)}static#fromImported(imported,ship){const outcomes=[...imported.outcomes];const loadout=new _ShipLoadout(ship,imported.shipSymbol,imported.modules,imported.top,imported.sourcePurchase,imported.moduleStats,imported.primitiveModifiers,outcomes);const{UnladenMass:UnladenMass,CargoCapacity:CargoCapacity,FuelCapacity:FuelCapacity}=imported.top;for(const module of[...imported.modules.values()]){const unresolved=loadout.#rollStatedRecipe(module);if(unresolved!==null)outcomes.push(unresolved)}if(UnladenMass!==void 0)loadout.#top.UnladenMass=UnladenMass;if(CargoCapacity!==void 0)loadout.#top.CargoCapacity=CargoCapacity;if(FuelCapacity!==void 0)loadout.#top.FuelCapacity=FuelCapacity;deepFreeze(outcomes);return loadout}#rollStatedRecipe(module){const engineering=module.Engineering;if(!engineering||typeof engineering.BlueprintName!=="string")return null;const stated=engineering.Modifiers;const stats=this.#statsFor(module);if(stated!==void 0&&(this.#moduleStats.has(module.Slot)||stats===null||!statesInertModifiers(stats,stated))){return null}if(stated===void 0&&this.#moduleStats.has(module.Slot)){const variant=preEngineeredVariantFor(module);if(variant?.acquisition!=="mercenary"||engineering.Level<=variant.grade){return null}}try{this.applyBlueprint(module.Slot,engineering.BlueprintName,{grade:engineering.Level,quality:engineering.Quality??1,...typeof engineering.ExperimentalEffect==="string"?{experimentalEffectSymbol:engineering.ExperimentalEffect}:{}});if(stated!==void 0){return{action:"rerolledEngineering",slot:module.Slot,sourceSymbol:module.Item,blueprintSymbol:engineering.BlueprintName}}const passedOver=rolledOverFixedArticle(module.Item,engineering);return passedOver===null?null:{action:"ambiguousEngineering",slot:module.Slot,sourceSymbol:module.Item,blueprintSymbol:engineering.BlueprintName,preEngineeredVariant:passedOver}}catch(error){if(!(error instanceof TypeError)&&!(error instanceof RangeError))throw error;return{action:"unresolvedEngineering",slot:module.Slot,sourceSymbol:module.Item,blueprintSymbol:engineering.BlueprintName}}}static empty(shipSymbol){const requested=requireString(shipSymbol,"ShipLoadout.empty: shipSymbol");const ship=getShipBySymbol(requested);if(!ship){throw new TypeError(`ShipLoadout.empty: no slot layout for hull "${truncate(shipSymbol)}"`)}const fitted=(getDefaultLoadout(ship.symbol)?.modules??[]).filter(module=>{const parsed=parseSlotName(module.slot);return parsed!==null&&fixedSlotReason(parsed)!==null});return new _ShipLoadout(ship,ship.symbol,new Map(fitted.map(module=>[module.slot,{Slot:module.slot,Item:module.symbol}])),{})}static default(shipSymbol){const requested=requireString(shipSymbol,"ShipLoadout.default: shipSymbol");const ship=getShipBySymbol(requested);if(!ship){throw new TypeError(`ShipLoadout.default: no default loadout for hull "${truncate(shipSymbol)}"`)}const loadout=getDefaultLoadout(ship.symbol);return new _ShipLoadout(ship,loadout.symbol,new Map(loadout.modules.map(module=>[module.slot,{Slot:module.slot,Item:module.symbol}])),{})}get shipSymbol(){return this.#shipSymbol}get shipName(){return this.#top.ShipName??null}get shipIdent(){return this.#top.ShipIdent??null}get unladenMass(){return this.#top.UnladenMass??this.#computedUnladenMass()}#computedUnladenMass(){return calculateUnladenMass(this.#ship.hullMass,this.#calculationModules())}get fuelCapacity(){const cap=this.#top.FuelCapacity;if(cap?.Main!==void 0&&cap.Reserve!==void 0){return Object.freeze({main:cap.Main,reserve:cap.Reserve})}const computed=this.#computedFuelCapacity();return Object.freeze({main:cap?.Main??computed.main,reserve:cap?.Reserve??computed.reserve})}get cargoCapacity(){return this.#top.CargoCapacity??this.#computedCargoCapacity()}#computedCargoCapacity(){return calculateCargoCapacity(this.#calculationModules())}#computedFuelCapacity(){return calculateFuelCapacity(this.#ship.reserveFuelCapacity,this.#calculationModules())}get hullValue(){return this.#top.HullValue??null}get modulesValue(){return this.#top.ModulesValue??null}get rebuy(){return this.#top.Rebuy??null}get sourcePurchase(){return this.#sourcePurchase}get importOutcomes(){return this.#importOutcomes}validation(){const slots=this.#layout();const byKey=new Map(slots.map(slot=>[normalizeKey(slot.key,CATALOGUE_KEY),slot]));const modules=[...this.#modules.values()].map(module=>{const stats=this.#statsFor(module);const slot=byKey.get(normalizeKey(module.Slot,FITTED_SLOT));const builtIn=stats===null&&isNonOutfittingSlot(module.Slot)||isBuiltInHullModule(module);const fitProblem=stats&&slot&&!builtIn?moduleFitProblem(this.#shipSymbol,slot,stats):null;const thrusterMaxMass=weighable(stats?.slot==="thrusters"?effectiveModule(this.#moduleForEffectiveStats(module),stats)?.maxMass:void 0);return{slot:module.Slot,symbol:module.Item,requiresKnownSlot:!builtIn,fitError:fitProblem?.message??null,...fitProblem===null?{}:{fitConstraint:fitProblem.constraint},...fitProblem?.params===void 0?{}:{fitParams:fitProblem.params},...stats?.exclusionGroup===void 0?{}:{exclusionGroup:stats.exclusionGroup},...stats?.limitGroup===void 0?{}:{limitGroup:stats.limitGroup},...stats?.limitIncrease===void 0?{}:{limitIncrease:stats.limitIncrease},...thrusterMaxMass===void 0?{}:{thrusterMaxMass:thrusterMaxMass}}});const dry=weighable(this.unladenMass);const fuel=weighable(this.fuelCapacity.main);const cargo=weighable(this.cargoCapacity);const mass=dry===void 0?void 0:{dry:dry,...fuel===void 0?{}:{fuel:fuel},...fuel===void 0||cargo===void 0?{}:{cargo:cargo}};return validateLoadout({shipSymbol:this.#shipSymbol,slots:slots,modules:modules,...mass===void 0?{}:{mass:mass}})}slots(kind){const cached=this.#slotCache.get(kind);if(cached!==void 0)return cached;const slots=kind===void 0?this.#layout():this.#layout().filter(slot=>slot.kind===kind);const currentLimits=this.#moduleLimits();const value=deepFreeze(slots.map(slot=>{const stats=this.#moduleStatsAt(slot.key);const fixedReason=fixedSlotReason(slot);const immovableReason=fixedReason!==null?fixedReason:stats?.limitIncrease!==void 0&&this.#moduleLimitRegression(slot.key,null,currentLimits,stats)!==null?"moduleLimit":null;return{...slot,name:loadoutSlotName(slot),module:this.fittedModuleAt(slot.key),removable:immovableReason===null,...immovableReason===null?{}:{immovableReason:immovableReason}}}));this.#slotCache.set(kind,value);return value}fittedModuleAt(slotKey){const module=this.#fittedModuleFor(slotKey);if(!module)return null;const raw=cloneLoadoutModule(module);const stats=this.#statsFor(module);const effective=effectiveModule(this.#moduleForEffectiveStats(module),stats);return deepFreeze({slot:module.Slot,symbol:raw.Item,on:raw.On,priority:raw.Priority,health:raw.Health,value:raw.Value,engineering:raw.Engineering,raw:raw,stats:stats===null?null:cloneModuleStats(stats),effectiveStats:effective===null?null:cloneModuleStats(effective),ammunition:ammunitionCapacity(effective),preEngineeredVariant:preEngineeredVariantFor(raw)})}fittedModules(){return deepFreeze([...this.#modules.keys()].flatMap(key=>{const fitted=this.fittedModuleAt(key);return fitted===null?[]:[fitted]}))}availableBlueprints(slotKey){const module=this.#fittedModuleFor(slotKey);return deepFreeze(module?availableBlueprintsFor(module.Item,this.#statsFor(module)):[])}availableExperimentalEffects(slotKey){const module=this.#fittedModuleFor(slotKey);return deepFreeze(module?availableExperimentalsFor(module.Item,this.#statsFor(module)):[])}modulesForSlot(slotKey){const slot=this.#requireSlot(slotKey);const occupied=new Set([...this.#modules.values()].flatMap(fitted=>{if(normalizeKey(fitted.Slot,FITTED_SLOT)===normalizeKey(slot.key,CATALOGUE_KEY))return[];const group=this.#statsFor(fitted)?.exclusionGroup;return group===void 0?[]:[group]}));const currentLimits=this.#moduleLimits();const currentStats=this.#moduleStatsAt(slot.key);return ALL_MODULES.filter(module=>module.grantOnly===void 0&&moduleFitError(this.#shipSymbol,slot,module)===null&&(module.exclusionGroup===void 0||!occupied.has(module.exclusionGroup))&&this.#moduleLimitRegression(slot.key,module,currentLimits,currentStats)===null)}repairFixedMount(slotKey){const requested=requireString(slotKey,SLOT_KEY);const wanted=normalizeKey(requested,SLOT_KEY);const slot=this.#requireSlot(requested);const fittedKey=this.#fittedKey(requested);const resultSlot=fittedKey??requested;const canonicalKey=slot.key;if(fixedSlotReason(slot)===null){return deepFreeze({status:"refused",slot:resultSlot,reason:"notFixedMount"})}const current=this.#fittedModuleFor(requested);const currentStats=current?this.#statsFor(current):null;const valid=current!==void 0&¤tStats!==null&&(slot.kind==="cargoHatch"?isBuiltInHullModule(current):moduleFitProblem(this.#shipSymbol,slot,currentStats)===null);if(valid){return deepFreeze({status:"unchanged",slot:current.Slot,symbol:current.Item})}const defaultModule=getDefaultLoadout(this.#shipSymbol)?.modules.find(module=>normalizeKey(module.slot,CATALOGUE_KEY)===wanted);if(!defaultModule){return deepFreeze({status:"defaultUnavailable",slot:resultSlot})}const ownKey=ownKeyIn(this.#modules,canonicalKey);const replacement={Slot:ownKey,Item:defaultModule.symbol,...current?.On===void 0?{}:{On:current.On},...current?.Priority===void 0?{}:{Priority:current.Priority},...current?.Health===void 0?{}:{Health:current.Health}};const replacementStats=builtInModuleBySymbol(defaultModule.symbol,"ShipLoadout.repairFixedMount")??(isBuiltInHullModule(replacement)?builtInModuleBySymbol("ModularCargoBayDoor","ShipLoadout.repairFixedMount"):null);if(!replacementStats){return deepFreeze({status:"defaultUnavailable",slot:resultSlot,symbol:defaultModule.symbol})}this.#replaceModule(ownKey,replacement,replacementStats);return deepFreeze({status:"repaired",slot:ownKey,symbol:defaultModule.symbol})}setModule(slotKey,module){const slot=this.#requireSlot(slotKey);if(module===null||module===void 0){throw new TypeError(`ShipLoadout.setModule: no module supplied for "${truncate(slotKey)}" (did the module lookup return undefined?)`)}if(typeof module.symbol!=="string"){throw new TypeError(`ShipLoadout.setModule: module for "${truncate(slotKey)}" must be an outfitting module, received ${describeValue(module)}`)}module=cloneModuleStats(module);const catalogued=builtInModuleBySymbol(module.symbol,FITTED_ITEM);if(catalogued===null){throw new TypeError(`ShipLoadout.setModule: no module is catalogued as "${truncate(module.symbol)}"`)}for(const field of AGGREGATE_STATS){const stated=module[field];if(stated===void 0){if(catalogued[field]===void 0)continue;throw new TypeError(`ShipLoadout.setModule: the supplied record for "${truncate(module.symbol)}" has no ${field}`)}if(typeof stated!=="number"||!Number.isFinite(stated)){throw new TypeError(`ShipLoadout.setModule: the supplied record for "${truncate(module.symbol)}" states a ${field} of ${describeValue(stated)}`)}}const problem=moduleFitProblem(this.#shipSymbol,slot,module);if(problem){if(problem.constraint==="immutableSlot"){throw new LoadoutEditError(`ShipLoadout.setModule: ${truncate(module.symbol)} → ${truncate(slotKey)}: ${problem.message}`,"immutableSlot",{slot:slot.key})}throw new LoadoutEditError(`ShipLoadout.setModule: ${truncate(module.symbol)} → ${truncate(slotKey)}: ${problem.message}`,"incompatibleModule",{...problem.params,slot:slot.key,symbol:module.symbol,constraint:problem.constraint},problem.constraint)}if(module.exclusionGroup!==void 0){const conflict=[...this.#modules.values()].find(fitted=>normalizeKey(fitted.Slot,FITTED_SLOT)!==normalizeKey(slot.key,CATALOGUE_KEY)&&this.#statsFor(fitted)?.exclusionGroup===module.exclusionGroup);if(conflict){throw new LoadoutEditError(`ShipLoadout.setModule: ${truncate(module.symbol)} → ${truncate(slotKey)}: ${module.exclusionGroup} is limited to one per ship (already fitted in ${truncate(conflict.Slot)})`,"duplicateExclusiveModule",{exclusionGroup:module.exclusionGroup,slot:slot.key,symbol:module.symbol,previousSlot:conflict.Slot,previousSymbol:conflict.Item})}}const limitProblem=this.#moduleLimitRegression(slot.key,module);if(limitProblem!==null){throw new LoadoutEditError(`ShipLoadout.setModule: ${truncate(module.symbol)} → ${truncate(slotKey)}: ${limitProblem.group} would have ${limitProblem.count} modules but the ship allows ${limitProblem.limit}`,"moduleLimitExceeded",{group:limitProblem.group,count:limitProblem.count,limit:limitProblem.limit,slot:slot.key,symbol:module.symbol})}const key=this.#fittedKey(slotKey)??slot.key;this.#replaceModule(key,{Slot:key,Item:module.symbol},module);return this}removeModule(slotKey){const wanted=normalizeKey(slotKey,SLOT_KEY);if(wanted==="cargohatch"){throw new LoadoutEditError("ShipLoadout.removeModule: the cargoHatch slot cannot be changed","immutableSlot",{slot:"CargoHatch"})}const parsed=parseSlotName(slotKey);const slot=this.#layout().find(candidate=>normalizeKey(candidate.key,CATALOGUE_KEY)===wanted);if(parsed!==null&&fixedSlotReason(parsed)==="requiredSlot"){const fittedKey=this.#fittedKey(slotKey);const key2=slot?.key??fittedKey??slotKey;throw new LoadoutEditError(`ShipLoadout.removeModule: the ${truncate(key2)} slot is required and cannot be emptied`,"requiredSlot",{slot:key2})}const key=this.#fittedKey(slotKey);if(key!==null){const limitProblem=this.#moduleLimitRegression(key,null);if(limitProblem!==null){const fitted=this.#modules.get(key);throw new LoadoutEditError(`ShipLoadout.removeModule: ${truncate(slotKey)}: ${limitProblem.group} would have ${limitProblem.count} modules but the ship allows ${limitProblem.limit}`,"moduleLimitExceeded",{group:limitProblem.group,count:limitProblem.count,limit:limitProblem.limit,slot:key,...fitted===void 0?{}:{symbol:fitted.Item}})}this.#replaceModule(key,null)}return this}applyBlueprint(slotKey,blueprintSymbol,options){requireString(blueprintSymbol,"ShipLoadout.applyBlueprint: blueprintSymbol");if(options===null||typeof options!=="object"){throw new TypeError(`ShipLoadout.applyBlueprint: options must be an object with a grade, received ${describeValue(options)}`)}const wantedGrade=options.grade;const wantedQuality=options.quality;const wantedExperimental=options.experimentalEffectSymbol??void 0;requireStringIfPresent(wantedExperimental,"ShipLoadout.applyBlueprint: options.experimentalEffectSymbol");const module=this.#fittedModuleFor(slotKey);if(!module){throw new RangeError(`ShipLoadout.applyBlueprint: slot "${truncate(slotKey)}" is empty`)}const fittedStats=this.#statsFor(module);if(!fittedStats){throw new TypeError(`ShipLoadout.applyBlueprint: no stats for module "${truncate(module.Item)}"`)}const recipe=resolveBlueprintForModule(module.Item,blueprintSymbol);const named=recipe===blueprintSymbol?`"${truncate(blueprintSymbol)}"`:`"${truncate(blueprintSymbol)}" (${truncate(recipe)} on this module)`;const written=blueprintSymbol.trim().toLowerCase();const resolved=recipe.trim().toLowerCase();if(getPreEngineeredVariants(module.Item).some(variant=>variant.acquisition==="eventReward"&&(variant.blueprintSymbol.toLowerCase()===written||variant.blueprintSymbol.toLowerCase()===resolved))){throw new TypeError(`ShipLoadout.applyBlueprint: ${named} is a fixed pre-engineered identity, not a craftable blueprint; use setPreEngineeredVariant to fit its fixed article`)}if(!Number.isInteger(wantedGrade)||wantedGrade<1||wantedGrade>5){throw new RangeError(`ShipLoadout.applyBlueprint: no blueprint ${named} grade ${truncate(wantedGrade)}`)}const grade=getBlueprintGrade(recipe,wantedGrade);if(!grade){throw new RangeError(`ShipLoadout.applyBlueprint: no blueprint ${named} grade ${truncate(wantedGrade)}`)}let experimental;if(wantedExperimental!==void 0){experimental=getExperimentalEffect(wantedExperimental);if(!experimental){throw new RangeError(`ShipLoadout.applyBlueprint: unknown experimental effect "${truncate(wantedExperimental)}"`)}}const quality=wantedQuality??1;if(!Number.isFinite(quality)||quality<0||quality>1){throw new RangeError(`ShipLoadout.applyBlueprint: quality must be a finite number in [0, 1]`)}if(fittedStats.engineeringLocked){throw new TypeError(`ShipLoadout.applyBlueprint: module "${truncate(module.Item)}" is a final pre-engineered article and accepts no further engineering`)}if(!blueprintAvailableFor(module.Item,blueprintSymbol)){const offered=[...blueprintRoutesFor(module.Item)].map(([blueprint,route])=>`${blueprint} (${route})`);throw new TypeError(offered.length>0?`ShipLoadout.applyBlueprint: module "${truncate(module.Item)}" is not offered blueprint ${named}; available candidates are ${offered.join(", ")}`:`ShipLoadout.applyBlueprint: no registry lists an engineering menu for module "${truncate(module.Item)}"`)}if(wantedExperimental!==void 0&&!experimentalAvailableFor(module.Item,wantedExperimental)){const offered=getExperimentalsForModule(module.Item);throw new TypeError(`ShipLoadout.applyBlueprint: module "${truncate(module.Item)}" is not offered experimental effect "${truncate(wantedExperimental)}"; it takes ${offered.length>0?offered.join(", "):"no experimental effect"}`)}const stats=this.#engineeringBaseStats(module)??fittedStats;const base=baseStats(stats);const canonical=primitiveEngineeringInputsFor(stats,grade,experimental);const missing=missingBaseLabels(stats,base,canonical.grade.features,canonical.experimental?.modifiers);if(missing.length>0){throw new TypeError(`ShipLoadout.applyBlueprint: cannot compute ${named} for module "${truncate(module.Item)}"; missing base stats for ${missing.join(", ")}`)}const damageDistribution=experimental?.damageDistribution??grade.damageDistribution;const primitiveModifiers=computeModifiers(base,canonical.grade,quality,canonical.experimental);const modifiers=journalModifiersFor(stats,primitiveModifiers);if(damageDistribution){for(const type of["kinetic","thermal","explosive","absolute"]){const value=damageDistribution[type];if(value===void 0)continue;const label=labelsForDamageType(type)[0];if(label===void 0)continue;const damageModifier={Label:label,Value:value*scaleForLabel(label),OriginalValue:(stats.damageDistribution?.[type]??0)*scaleForLabel(label)};modifiers.push(damageModifier);primitiveModifiers.push(damageModifier)}}const engineering={BlueprintName:blueprintSymbol,Level:wantedGrade,Quality:quality,...wantedExperimental!==void 0?{ExperimentalEffect:wantedExperimental}:{},Modifiers:modifiers};this.#replaceModule(module.Slot,{...module,Engineering:engineering},stats,primitiveModifiers);return this}setExperimentalEffect(slotKey,experimental){if(experimental!==null){requireString(experimental,"ShipLoadout.setExperimentalEffect: experimental")}const wanted=experimental;const module=this.#fittedModuleFor(slotKey);if(!module)return experimentalEffectUnsupported("emptySlot",{slot:slotKey});const stats=this.#statsFor(module);if(!stats){return experimentalEffectUnsupported("unsupportedEngineering",{slot:module.Slot,symbol:module.Item})}const engineering=module.Engineering;if(!engineering){return experimentalEffectUnsupported("notEngineered",{slot:module.Slot,symbol:module.Item})}if(stats.engineeringLocked){return experimentalEffectUnsupported("finalArticle",{slot:module.Slot,symbol:module.Item})}const previous=engineering.ExperimentalEffect??null;if(previous===null&&wanted===null||previous!==null&&wanted!==null&&previous.trim().toLowerCase()===wanted.trim().toLowerCase()){return deepFreeze({kind:"unchanged",experimentalEffectSymbol:previous})}const variant=preEngineeredVariantFor(module);let effect;if(wanted!==null){effect=getExperimentalEffect(wanted);if(!effect){return experimentalEffectUnsupported("unknownExperimentalEffect",{slot:module.Slot,symbol:module.Item,experimental:wanted})}const restoresBakedEffect=variant?.experimentalEffectSymbol!==void 0&&variant.acquisition!=="mercenary"&&variant.experimentalEffectSymbol.trim().toLowerCase()===wanted.trim().toLowerCase();if(!experimentalAvailableFor(module.Item,wanted)&&!restoresBakedEffect){return experimentalEffectUnsupported("unsupportedExperimentalEffect",{slot:module.Slot,symbol:module.Item,experimental:wanted})}}if(variant&&variant.acquisition!=="mercenary"){const stock=this.#engineeringBaseStats(module);if(!stock){return experimentalEffectUnsupported("unsupportedEngineering",{slot:module.Slot,symbol:module.Item})}const missing=missingBaseLabels(stock,baseStats(stock),[],effect?.modifiers);if(missing.length>0){return experimentalEffectUnsupported("unresolvedModifiers",{slot:module.Slot,symbol:module.Item,labels:missing})}const{experimentalEffectSymbol:originalEffect,...withoutEffect}=variant;const adjusted=wanted===null?withoutEffect:{...withoutEffect,experimentalEffectSymbol:wanted};const resolved=getPreEngineeredStats(withoutEffect);if(!resolved){return experimentalEffectUnsupported("unsupportedEngineering",{slot:module.Slot,symbol:module.Item})}const replacement={BlueprintName:engineering.BlueprintName,Level:engineering.Level,Quality:engineering.Quality,...wanted===null?{}:{ExperimentalEffect:wanted},Modifiers:getPreEngineeredJournalModifiers(adjusted)};this.#replaceModule(module.Slot,{...module,Engineering:replacement},cloneModuleStats(resolved),getPreEngineeredModifiers(adjusted))}else{const blueprint=engineering.BlueprintName;const grade=engineering.Level;const quality=engineering.Quality;if(typeof blueprint!=="string"||!Number.isInteger(grade)||grade<1||grade>5){return experimentalEffectUnsupported("unsupportedEngineering",{slot:module.Slot,symbol:module.Item})}const currentEffect=previous===null?void 0:getExperimentalEffect(previous)??null;if(ordinaryEngineeringProof(module.Item,engineering,currentEffect)==="unproven"){return experimentalEffectUnsupported("unidentifiedPreEngineeredVariant",{slot:module.Slot,symbol:module.Item,blueprint:blueprint})}const recipe=resolveBlueprintForModule(module.Item,blueprint);const blueprintGrade=getBlueprintGrade(recipe,grade);if(!blueprintGrade||!blueprintAvailableFor(module.Item,blueprint)||!Number.isFinite(quality)||quality<0||quality>1){return experimentalEffectUnsupported("unsupportedEngineering",{slot:module.Slot,symbol:module.Item,blueprint:blueprint,grade:grade})}const base=this.#engineeringBaseStats(module)??stats;const canonical=primitiveEngineeringInputsFor(base,blueprintGrade,effect);const missing=missingBaseLabels(base,baseStats(base),canonical.grade.features,canonical.experimental?.modifiers);if(missing.length>0){return experimentalEffectUnsupported("unresolvedModifiers",{slot:module.Slot,symbol:module.Item,labels:missing})}this.applyBlueprint(module.Slot,blueprint,{grade:grade,quality:quality,...wanted===null?{}:{experimentalEffectSymbol:wanted}})}return deepFreeze({kind:"updated",previousExperimentalEffectSymbol:previous,experimentalEffectSymbol:wanted})}completeEngineeringGrade(slotKey){const module=this.#fittedModuleFor(slotKey);if(!module)return engineeringNormalizationUnsupported("emptySlot",{slot:slotKey});const stats=this.#statsFor(module);if(!stats){return engineeringNormalizationUnsupported("unsupportedEngineering",{slot:module.Slot,symbol:module.Item})}const engineering=module.Engineering;if(!engineering){return engineeringNormalizationUnsupported("notEngineered",{slot:module.Slot,symbol:module.Item})}if(stats.engineeringLocked){return engineeringNormalizationUnsupported("finalArticle",{slot:module.Slot,symbol:module.Item})}if(engineering.Quality===1&&engineering.Modifiers!==void 0){return deepFreeze({kind:"unchanged"})}const previousQuality=engineering.Quality;if(!Number.isFinite(previousQuality)||previousQuality<0||previousQuality>1){return engineeringNormalizationUnsupported("invalidQuality",{slot:module.Slot,symbol:module.Item})}const experimental=engineering.ExperimentalEffect??null;const effect=experimental===null?void 0:getExperimentalEffect(experimental)??void 0;if(experimental!==null&&!effect){return engineeringNormalizationUnsupported("unknownExperimentalEffect",{slot:module.Slot,symbol:module.Item,experimental:experimental})}const blueprint=engineering.BlueprintName;const grade=engineering.Level;if(typeof blueprint!=="string"||!Number.isInteger(grade)||grade<1||grade>5){return engineeringNormalizationUnsupported("unsupportedEngineering",{slot:module.Slot,symbol:module.Item})}const variant=preEngineeredVariantFor(module);const restoresBakedEffect=variant?.experimentalEffectSymbol!==void 0&&variant.acquisition!=="mercenary"&&variant.experimentalEffectSymbol.trim().toLowerCase()===experimental?.trim().toLowerCase();if(experimental!==null&&!experimentalAvailableFor(module.Item,experimental)&&!restoresBakedEffect){return engineeringNormalizationUnsupported("unsupportedExperimentalEffect",{slot:module.Slot,symbol:module.Item,experimental:experimental})}if(variant&&variant.acquisition!=="mercenary"){const stock=this.#engineeringBaseStats(module);if(!stock){return engineeringNormalizationUnsupported("unsupportedEngineering",{slot:module.Slot,symbol:module.Item})}const missing=missingBaseLabels(stock,baseStats(stock),[],effect?.modifiers);if(missing.length>0){return engineeringNormalizationUnsupported("unresolvedModifiers",{slot:module.Slot,symbol:module.Item,labels:missing})}const{experimentalEffectSymbol:originalEffect,...withoutEffect}=variant;const adjusted=experimental===null?withoutEffect:{...withoutEffect,experimentalEffectSymbol:experimental};const resolved=getPreEngineeredStats(withoutEffect);if(!resolved){return engineeringNormalizationUnsupported("unsupportedEngineering",{slot:module.Slot,symbol:module.Item})}const replacement={BlueprintName:engineering.BlueprintName,Level:engineering.Level,Quality:1,...experimental===null?{}:{ExperimentalEffect:experimental},Modifiers:getPreEngineeredJournalModifiers(adjusted)};this.#replaceModule(module.Slot,{...module,Engineering:replacement},cloneModuleStats(resolved),getPreEngineeredModifiers(adjusted))}else{const proof=ordinaryEngineeringProof(module.Item,engineering,effect);if(proof==="unproven"||proof==="proven"&&!blueprintAvailableFor(module.Item,blueprint)){return engineeringNormalizationUnsupported("unidentifiedPreEngineeredVariant",{slot:module.Slot,symbol:module.Item,blueprint:blueprint})}const recipe=resolveBlueprintForModule(module.Item,blueprint);const blueprintGrade=getBlueprintGrade(recipe,grade);if(!blueprintGrade||!blueprintAvailableFor(module.Item,blueprint)){return engineeringNormalizationUnsupported("unsupportedEngineering",{slot:module.Slot,symbol:module.Item,blueprint:blueprint,grade:grade})}const base=this.#engineeringBaseStats(module)??stats;const canonical=primitiveEngineeringInputsFor(base,blueprintGrade,effect);const missing=missingBaseLabels(base,baseStats(base),canonical.grade.features,canonical.experimental?.modifiers);if(missing.length>0){return engineeringNormalizationUnsupported("unresolvedModifiers",{slot:module.Slot,symbol:module.Item,labels:missing})}this.applyBlueprint(module.Slot,blueprint,{grade:grade,quality:1,...experimental===null?{}:{experimentalEffectSymbol:experimental}})}return deepFreeze({kind:"normalized",previousQuality:previousQuality,quality:1})}setPreEngineeredVariant(slotKey,variant){if(variant===null||typeof variant!=="object"){throw new TypeError(`ShipLoadout.setPreEngineeredVariant: variant must be a pre-engineered variant, received ${describeValue(variant)}`)}requireString(variant.symbol,"ShipLoadout.setPreEngineeredVariant: variant.symbol");requireString(variant.blueprintSymbol,"ShipLoadout.setPreEngineeredVariant: variant.blueprintSymbol");requireString(variant.acquisition,"ShipLoadout.setPreEngineeredVariant: variant.acquisition");requireStringIfPresent(variant.experimentalEffectSymbol,"ShipLoadout.setPreEngineeredVariant: variant.experimentalEffectSymbol");const known=getPreEngineeredVariants(variant.symbol).find(candidate=>candidate.blueprintSymbol.toLowerCase()===variant.blueprintSymbol.toLowerCase()&&candidate.grade===variant.grade&&(candidate.experimentalEffectSymbol?.toLowerCase()??"")===(variant.experimentalEffectSymbol?.toLowerCase()??"")&&candidate.acquisition===variant.acquisition);if(!known){throw new RangeError(`ShipLoadout.setPreEngineeredVariant: no catalogued variant "${truncate(variant.blueprintSymbol)}" for module "${truncate(variant.symbol)}"`)}const stats=getPreEngineeredStats(known);const unresolved=unresolvedModifiers(known);if(unresolved.length>0){throw new TypeError(`ShipLoadout.setPreEngineeredVariant: cannot resolve "${truncate(variant.blueprintSymbol)}" for module "${truncate(variant.symbol)}"; missing base stats for ${unresolved.join(", ")}`)}this.setModule(slotKey,stats);const module=this.#fittedModuleFor(slotKey);const journalModifiers=getPreEngineeredJournalModifiers(known);const engineering={BlueprintName:known.blueprintSymbol,Level:known.grade,Quality:1,...known.experimentalEffectSymbol===void 0?{}:{ExperimentalEffect:known.experimentalEffectSymbol},...journalModifiers.length>0?{Modifiers:journalModifiers}:{}};this.#replaceModule(module.Slot,{...module,Engineering:engineering},cloneModuleStats(stats),getPreEngineeredModifiers(known));return this}clearEngineering(slotKey){const module=this.#fittedModuleFor(slotKey);if(module&&this.#statsFor(module)?.engineeringLocked){throw new TypeError(`ShipLoadout.clearEngineering: module "${truncate(module.Item)}" is a final pre-engineered article and its engineering cannot be removed`)}if(module?.Engineering){const baseStats2=this.#engineeringBaseStats(module);const bare={Slot:module.Slot,Item:module.Item};if(module.On!==void 0)bare.On=module.On;if(module.Priority!==void 0){bare.Priority=module.Priority}if(module.Health!==void 0)bare.Health=module.Health;if(module.Value!==void 0)bare.Value=module.Value;this.#replaceModule(module.Slot,bare,baseStats2??void 0)}return this}setModuleEnabled(slotKey,on){this.#patchModule(slotKey,{On:on});return this}setModulePriority(slotKey,priority){if(!Number.isInteger(priority)||priority<0||priority>4){throw new RangeError(`ShipLoadout: power priority must be an integer 0-4, got ${truncate(priority)}`)}this.#patchModule(slotKey,{Priority:priority});return this}#patchModule(slotKey,patch){const module=this.#fittedModuleFor(slotKey);if(!module){throw new RangeError(`ShipLoadout: slot "${truncate(slotKey)}" is empty`)}this.#modules.set(module.Slot,cloneLoadoutModule({...module,...patch}));this.#slotCache.clear()}toLoadoutEvent(options={}){const unladenMass=this.#computedUnladenMass();const cargoCapacity=this.#computedCargoCapacity();const fuel=this.#computedFuelCapacity();const maxJumpRange=this.#exportableJumpRange(unladenMass);return exportLoadoutEvent({shipSymbol:this.#shipSymbol,...this.#top.ShipName===void 0?{}:{shipName:this.#top.ShipName},...this.#top.ShipIdent===void 0?{}:{shipIdent:this.#top.ShipIdent},modules:this.#modules,layout:this.#layout(),sourcePurchase:this.#sourcePurchase,retailHullValue:this.#ship.hullCost,unladenMass:unladenMass,cargoCapacity:cargoCapacity,fuelCapacity:fuel,maxJumpRange:maxJumpRange,sourceTotalsVoided:this.#importOutcomes.some(outcome=>outcome.sourceSymbol===null&&parseSlotName(outcome.slot)?.kind==="core"),statsFor:module=>this.#statsFor(module)},options)}toSlef(options){return toSlef(this.toLoadoutEvent(options),options.header)}toSlefString(options){return stringifySlef(this.toSlef(options),{indent:options.indent??0})}#exportableJumpRange(unladenMass){let drive;try{drive=this.#resolveDrive()}catch{return null}if(drive===null)return null;const tank=this.#computedFuelCapacity();return singleJumpRange(unladenMass,Math.min(tank.main,drive.maxFuel),drive)}#layout(){if(this.#layoutCache===void 0){this.#layoutCache=Object.freeze(enumerateSlots(this.#ship))}return this.#layoutCache}#requireSlot(slotKey){const wanted=normalizeKey(slotKey,SLOT_KEY);const slot=this.#layout().find(s=>normalizeKey(s.key,CATALOGUE_KEY)===wanted);if(!slot){throw new RangeError(`ShipLoadout: hull "${truncate(this.#shipSymbol)}" has no slot "${truncate(slotKey)}"`)}return slot}#fittedKey(slotKey){return matchingKeyIn(this.#modules,normalizeKey(slotKey,SLOT_KEY))}#fittedModuleFor(slotKey){const key=this.#fittedKey(slotKey);return key===null?void 0:this.#modules.get(key)}#calculationModules(){return[...this.#modules.values()].map(module=>({mass:this.#moduleMass(module),cargoCapacity:this.#moduleCapacity(module,"CargoCapacity","cargoCapacity"),fuelCapacity:this.#moduleCapacity(module,"FuelCapacity","fuelCapacity")}))}#moduleLimits(){const entries=[...this.#modules.values()].flatMap(module=>{const stats=this.#statsFor(module);return stats===null?[]:[stats]});return calculateModuleLimits(entries)}#moduleStatsAt(slotKey){const fitted=this.#fittedModuleFor(slotKey);return fitted===void 0?null:this.#statsFor(fitted)}#engineeringBaseStats(module){const fitted=this.#statsFor(module);if(!module.Engineering||preEngineeredVariantFor(module)===null)return fitted;const stock=builtInModuleBySymbol(module.Item,FITTED_ITEM);if(!stock)return fitted;return fitted?.engineeringLocked?cloneModuleStats({...stock,engineeringLocked:true}):stock}#moduleForEffectiveStats(module){const modifiers=this.#primitiveModifiers.get(module.Slot);if(modifiers===void 0||module.Engineering===void 0)return module;return{...module,Engineering:{...module.Engineering,Modifiers:modifiers}}}#modulesForEffectiveStats(){return[...this.#modules.values()].map(module=>this.#moduleForEffectiveStats(module))}#moduleLimitRegression(slotKey,replacement,current=this.#moduleLimits(),previous=this.#moduleStatsAt(slotKey)){if(previous?.limitGroup===void 0&&previous?.limitIncrease===void 0&&replacement?.limitGroup===void 0&&replacement?.limitIncrease===void 0){return null}for(const usage of current){const count=usage.count-Number(previous?.limitGroup===usage.group)+Number(replacement?.limitGroup===usage.group);const increase=usage.increase-(previous?.limitIncrease?.group===usage.group?previous.limitIncrease.amount:0)+(replacement?.limitIncrease?.group===usage.group?replacement.limitIncrease.amount:0);const limit=usage.baseLimit+increase;const excess=Math.max(0,count-limit);if(excess>usage.excess){return{...usage,increase:increase,limit:limit,count:count,excess:excess}}}return null}#replaceModule(slotKey,replacement,replacementStats,primitiveModifiers){const previous=this.#modules.get(slotKey)??null;this.#adjustImportedFigures(previous,replacement,replacementStats);if(replacement===null){this.#modules.delete(slotKey);this.#moduleStats.delete(slotKey);this.#primitiveModifiers.delete(slotKey)}else{this.#modules.set(slotKey,cloneLoadoutModule(replacement));if(replacementStats!==void 0)this.#moduleStats.set(slotKey,replacementStats);if(primitiveModifiers===void 0)this.#primitiveModifiers.delete(slotKey);else this.#primitiveModifiers.set(slotKey,primitiveModifiers)}this.#slotCache.clear()}#adjustImportedFigures(previous,next,nextStats){if(this.#top.UnladenMass!==void 0){this.#top.UnladenMass+=this.#moduleMass(next,nextStats)-this.#moduleMass(previous)}if(this.#top.CargoCapacity!==void 0){this.#top.CargoCapacity+=this.#moduleCapacity(next,"CargoCapacity","cargoCapacity",nextStats)-this.#moduleCapacity(previous,"CargoCapacity","cargoCapacity")}if(this.#top.FuelCapacity?.Main!==void 0){const reserve=this.#top.FuelCapacity.Reserve;this.#top.FuelCapacity={Main:this.#top.FuelCapacity.Main+this.#moduleCapacity(next,"FuelCapacity","fuelCapacity",nextStats)-this.#moduleCapacity(previous,"FuelCapacity","fuelCapacity"),...reserve===void 0?{}:{Reserve:reserve}}}if(normalizeKey(previous?.Item,FITTED_ITEM)===normalizeKey(next?.Item,FITTED_ITEM)){return}if(previous!==null&&isCargoHatchSlot(previous.Slot)||next!==null&&isCargoHatchSlot(next.Slot)){return}delete this.#top.ModulesValue;delete this.#top.Rebuy}#moduleMass(module,statsOverride){if(module===null)return 0;if(isCargoHatchSlot(module.Slot))return 0;const modified=getLoadoutModifier(module,"Mass");if(modified!==null)return modified;return(statsOverride??this.#statsFor(module))?.mass??0}#moduleCapacity(module,modifierLabel,field,statsOverride){if(module===null)return 0;if(isCargoHatchSlot(module.Slot))return 0;const modified=getLoadoutModifier(module,modifierLabel);if(modified!==null)return modified;return(statsOverride??this.#statsFor(module))?.[field]??0}#frameShiftDrive(){for(const m of this.#modules.values()){const stats=this.#statsFor(m);if(stats?.slot==="frameShiftDrive")return{module:m,stats:stats}}return void 0}#resolveDrive(){const fsd=this.#frameShiftDrive();if(!fsd)return null;const{module:fsdModule,stats:base}=fsd;if(base.fuelMul===void 0||base.fuelPower===void 0){throw new TypeError(`ShipLoadout: the fitted record for frame shift drive "${truncate(fsdModule.Item)}" has no jump constants`)}const optMass=getLoadoutModifier(fsdModule,"FSDOptimalMass")??base.optMass;const maxFuel=getLoadoutModifier(fsdModule,"MaxFuelPerJump")??base.maxFuel;if(optMass===void 0||maxFuel===void 0){const missing=[...optMass===void 0?["optMass"]:[],...maxFuel===void 0?["maxFuel"]:[]];throw new TypeError(`ShipLoadout: the fitted record for frame shift drive "${truncate(fsdModule.Item)}" has no ${missing.join(" or ")}`)}return{optMass:optMass,maxFuel:maxFuel,fuelMul:base.fuelMul,fuelPower:base.fuelPower,jumpBoost:this.#resolveJumpBoost()}}#resolveJumpBoost(){for(const m of this.#modules.values()){const stats=this.#statsFor(m);if(stats?.engineeringGroup!=="fsdBoosters"&&(stats?.jumpBoost===void 0||stats.jumpBoost===0)){continue}if(m.On===false)continue;if(stats?.jumpBoost===void 0){throw new TypeError(`ShipLoadout: the fitted record for FSD booster "${truncate(m.Item)}" has no jumpBoost`)}return stats.jumpBoost}return 0}#statsFor(module){if(module===null)return null;const stats=this.#moduleStats.get(module.Slot)??builtInModuleBySymbol(module.Item,FITTED_ITEM);if(stats)return stats;return isBuiltInHullModule(module)?builtInModuleBySymbol("ModularCargoBayDoor","ShipLoadout: built-in module"):null}};export{LoadoutEditError,ShipLoadout};//# sourceMappingURL=chunk-A7KNIFRU.js.map
|
|
1
|
+
import{fixedSlotReason,validateLoadout}from"./chunk-OJC6AUL7.js";import{calculateModuleLimits}from"./chunk-KPETDYQX.js";import{publishLoadoutInternals,normalizeLoadoutEvent,preEngineeredVariantFor,moduleFitProblem,effectiveModule,moduleFitError}from"./chunk-GISL7YML.js";import{getShipBySymbol}from"./chunk-6UNAD74Z.js";import{parseSlef,toSlef,stringifySlef,getLoadoutModifier}from"./chunk-T4MKUKYS.js";import{getSourceModuleValue}from"./chunk-NIURLW2F.js";import{statesInertModifiers,rolledOverFixedArticle,isNonOutfittingSlot,isBuiltInHullModule,cloneLoadoutModule,cloneModuleStats,availableBlueprintsFor,availableExperimentalsFor,ownKeyIn,FITTED_ITEM,blueprintAvailableFor,blueprintRoutesFor,experimentalAvailableFor,primitiveEngineeringInputsFor,missingBaseLabels,journalModifiersFor,getPreEngineeredStats,getPreEngineeredJournalModifiers,getPreEngineeredModifiers,ordinaryEngineeringProof,unresolvedModifiers,matchingKeyIn,isCargoHatchSlot,orderBySlotLayout}from"./chunk-NBLLW7TH.js";import{builtInModuleBySymbol}from"./chunk-ABSDZINM.js";import{getPreEngineeredVariants}from"./chunk-KPJ77VPS.js";import{ALL_MODULES}from"./chunk-3CKWT2F3.js";import{singleJumpRange}from"./chunk-VTMCSCXV.js";import{calculateUnladenMass,calculateCargoCapacity,calculateFuelCapacity}from"./chunk-DCB4COCL.js";import{getBlueprintGrade}from"./chunk-AYAKU4YA.js";import{getDefaultLoadout}from"./chunk-GRIK3EDH.js";import{getExperimentalEffect}from"./chunk-77I24V6B.js";import{ammunitionCapacity}from"./chunk-AA3K5XUE.js";import{baseStats,computeModifiers,labelsForDamageType,scaleForLabel}from"./chunk-5QSCLEEB.js";import{resolveBlueprintForModule}from"./chunk-SDXUPP4P.js";import{getExperimentalsForModule}from"./chunk-LOWDDWDT.js";import{loadoutSlotName}from"./chunk-KAA4VOOB.js";import{parseSlotName,enumerateSlots}from"./chunk-RAO35XDF.js";import{normalizeKey,CATALOGUE_KEY}from"./chunk-BKWLI44T.js";import{truncate,describeValue,requireString,requireStringIfPresent}from"./chunk-PKWVG2JY.js";import{deepFreeze}from"./chunk-DURKO7JU.js";var REBUY_FRACTION=.05;function exportLoadoutEvent(input,options){const fromSource=options.credits==="source";const source=fromSource?input.sourcePurchase:null;const totals=source!==null&&!input.sourceTotalsVoided&&sourceTotalsHold(input.modules,source)?source:null;const hullValue=fromSource?source?.hullValue??null:input.retailHullValue;const modulesValue=fromSource?totals?.modulesValue??null:computedModulesValue(input.modules,input.statsFor);const rebuy=fromSource?totals?.rebuy??null:hullValue===null||modulesValue===null?null:Math.trunc((hullValue+modulesValue)*REBUY_FRACTION);return{Ship:input.shipSymbol.toLowerCase(),...input.shipName===void 0?{}:{ShipName:input.shipName},...input.shipIdent===void 0?{}:{ShipIdent:input.shipIdent},...hullValue===null?{}:{HullValue:hullValue},...modulesValue===null?{}:{ModulesValue:modulesValue},UnladenMass:input.unladenMass,CargoCapacity:input.cargoCapacity,...input.maxJumpRange===null?{}:{MaxJumpRange:input.maxJumpRange},FuelCapacity:{Main:input.fuelCapacity.main,Reserve:input.fuelCapacity.reserve},...rebuy===null?{}:{Rebuy:rebuy},Modules:exportModules(input,options,fromSource)}}function exportModules(input,options,fromSource){const ordered=options.moduleOrder==="slots"?slotOrderedModules(input.modules,input.layout):[...input.modules.values()];return ordered.map(module=>{const on=module.On??(options.explicitPower?true:void 0);const priority=module.Priority??(options.explicitPower?0:void 0);const value=fromSource?sourceModuleValue(module,input.sourcePurchase):moduleValue(module,input.statsFor);return{Slot:module.Slot,Item:module.Item.toLowerCase(),...on===void 0?{}:{On:on},...priority===void 0?{}:{Priority:priority},...module.Health===void 0?{}:{Health:module.Health},...typeof value==="number"?{Value:value}:{},...module.Engineering===void 0?{}:{Engineering:cloneLoadoutModule(module).Engineering}}})}function slotOrderedModules(modules,layout){return orderBySlotLayout([...modules.values()],layout,module=>module.Slot)}function computedModulesValue(modules,statsFor){let sum=0;for(const module of modules.values()){const value=moduleValue(module,statsFor);if(value==="unknown")return null;if(value!=="free")sum+=value}return sum}function moduleValue(module,statsFor){const stats=statsFor(module);if(stats!==null)return stats.cost??"unknown";return isNonOutfittingSlot(module.Slot)||isBuiltInHullModule(module)?"free":"unknown"}var SOURCE_ITEM="ShipLoadout: sourcePurchase moduleValues[].item";function sourceModuleValue(module,source){const entry=source===null?null:getSourceModuleValue(source,module.Slot);if(entry===null)return"unknown";return normalizeKey(entry.item,SOURCE_ITEM)===normalizeKey(module.Item,FITTED_ITEM)?entry.value:"unknown"}function sourceTotalsHold(modules,source){for(const entry of source.moduleValues){const key=matchingKeyIn(modules,entry.slot);const fitted=key===null?void 0:modules.get(key);if(!fitted)return false;if(isCargoHatchSlot(entry.slot)&&entry.value===0)continue;if(normalizeKey(fitted.Item,FITTED_ITEM)!==normalizeKey(entry.item,SOURCE_ITEM)){return false}}return true}var SLOT_KEY="ShipLoadout: slotKey";var FITTED_SLOT="ShipLoadout: fitted module Slot";var LoadoutEditError=class extends TypeError{code;constraint;params;constructor(message,code,params,constraint){super(message);this.code=code;this.params=deepFreeze(structuredClone(params));if(constraint!==void 0)this.constraint=constraint}};var experimentalEffectUnsupported=(code,params)=>deepFreeze({kind:"unsupported",code:code,params:params});var engineeringNormalizationUnsupported=(code,params)=>deepFreeze({kind:"unsupported",code:code,params:params});function weighable(tonnes){return tonnes!==void 0&&Number.isFinite(tonnes)&&tonnes>=0?tonnes:void 0}var AGGREGATE_STATS=["mass","cargoCapacity","fuelCapacity"];var ShipLoadout=class _ShipLoadout{#ship;#shipSymbol;#modules;#moduleStats;#primitiveModifiers;#top;#sourcePurchase;#importOutcomes;#slotCache=/* @__PURE__ */new Map;#layoutCache;constructor(ship,shipSymbol,modules,top,sourcePurchase=null,moduleStats=/* @__PURE__ */new Map,primitiveModifiers=/* @__PURE__ */new Map,importOutcomes=deepFreeze([])){this.#ship=ship;this.#shipSymbol=shipSymbol;this.#modules=modules;this.#top=top;this.#sourcePurchase=sourcePurchase;this.#moduleStats=moduleStats;this.#primitiveModifiers=primitiveModifiers;this.#importOutcomes=importOutcomes;publishLoadoutInternals(this,{ship:ship,modules:()=>[...this.#modules.values()],effectiveModules:()=>this.#modulesForEffectiveStats(),effectiveModule:module=>this.#moduleForEffectiveStats(module),statsFor:module=>this.#statsFor(module),layout:()=>this.#layout(),resolveDrive:()=>this.#resolveDrive(),frameShiftDriveModule:()=>this.#frameShiftDrive()?.module,calculationModules:()=>this.#calculationModules(),statedMainFuel:()=>this.#top.FuelCapacity?.Main})}static fromSlef(input,index=0){const entries=parseSlef(input);const entry=entries[index];if(!entry){throw new TypeError(`ShipLoadout.fromSlef: no entry at index ${truncate(index)} (have ${entries.length})`)}const imported=normalizeLoadoutEvent(entry.data);const ship=getShipBySymbol(imported.shipSymbol);if(!ship){throw new TypeError(`ShipLoadout.fromSlef: unknown hull "${truncate(imported.shipSymbol)}"`)}return _ShipLoadout.#fromImported(imported,ship)}static fromLoadout(event){if(event===null||typeof event!=="object"){throw new TypeError(`ShipLoadout.fromLoadout: event must be a Loadout event, received ${describeValue(event)}`)}const imported=normalizeLoadoutEvent(event);const ship=getShipBySymbol(imported.shipSymbol);if(!ship){throw new TypeError(`ShipLoadout.fromLoadout: unknown hull "${truncate(imported.shipSymbol)}"`)}return _ShipLoadout.#fromImported(imported,ship)}static#fromImported(imported,ship){const outcomes=[...imported.outcomes];const loadout=new _ShipLoadout(ship,imported.shipSymbol,imported.modules,imported.top,imported.sourcePurchase,imported.moduleStats,imported.primitiveModifiers,outcomes);const{UnladenMass:UnladenMass,CargoCapacity:CargoCapacity,FuelCapacity:FuelCapacity}=imported.top;for(const module of[...imported.modules.values()]){const unresolved=loadout.#rollStatedRecipe(module);if(unresolved!==null)outcomes.push(unresolved)}if(UnladenMass!==void 0)loadout.#top.UnladenMass=UnladenMass;if(CargoCapacity!==void 0)loadout.#top.CargoCapacity=CargoCapacity;if(FuelCapacity!==void 0)loadout.#top.FuelCapacity=FuelCapacity;deepFreeze(outcomes);return loadout}#rollStatedRecipe(module){const engineering=module.Engineering;if(!engineering||typeof engineering.BlueprintName!=="string")return null;const stated=engineering.Modifiers;const stats=this.#statsFor(module);if(stated!==void 0&&(this.#moduleStats.has(module.Slot)||stats===null||!statesInertModifiers(stats,stated))){return null}if(stated===void 0&&this.#moduleStats.has(module.Slot)){const variant=preEngineeredVariantFor(module);if(variant?.acquisition!=="mercenary"||engineering.Level<=variant.grade){return null}}try{this.applyBlueprint(module.Slot,engineering.BlueprintName,{grade:engineering.Level,quality:engineering.Quality??1,...typeof engineering.ExperimentalEffect==="string"?{experimentalEffectSymbol:engineering.ExperimentalEffect}:{}});if(stated!==void 0){return{action:"rerolledEngineering",slot:module.Slot,sourceSymbol:module.Item,blueprintSymbol:engineering.BlueprintName}}const passedOver=rolledOverFixedArticle(module.Item,engineering);return passedOver===null?null:{action:"ambiguousEngineering",slot:module.Slot,sourceSymbol:module.Item,blueprintSymbol:engineering.BlueprintName,preEngineeredVariant:passedOver}}catch(error){if(!(error instanceof TypeError)&&!(error instanceof RangeError))throw error;return{action:"unresolvedEngineering",slot:module.Slot,sourceSymbol:module.Item,blueprintSymbol:engineering.BlueprintName}}}static empty(shipSymbol){const requested=requireString(shipSymbol,"ShipLoadout.empty: shipSymbol");const ship=getShipBySymbol(requested);if(!ship){throw new TypeError(`ShipLoadout.empty: no slot layout for hull "${truncate(shipSymbol)}"`)}const fitted=(getDefaultLoadout(ship.symbol)?.modules??[]).filter(module=>{const parsed=parseSlotName(module.slot);return parsed!==null&&fixedSlotReason(parsed)!==null});return new _ShipLoadout(ship,ship.symbol,new Map(fitted.map(module=>[module.slot,{Slot:module.slot,Item:module.symbol}])),{})}static default(shipSymbol){const requested=requireString(shipSymbol,"ShipLoadout.default: shipSymbol");const ship=getShipBySymbol(requested);if(!ship){throw new TypeError(`ShipLoadout.default: no default loadout for hull "${truncate(shipSymbol)}"`)}const loadout=getDefaultLoadout(ship.symbol);return new _ShipLoadout(ship,loadout.symbol,new Map(loadout.modules.map(module=>[module.slot,{Slot:module.slot,Item:module.symbol}])),{})}get shipSymbol(){return this.#shipSymbol}get shipName(){return this.#top.ShipName??null}get shipIdent(){return this.#top.ShipIdent??null}get unladenMass(){return this.#top.UnladenMass??this.#computedUnladenMass()}#computedUnladenMass(){return calculateUnladenMass(this.#ship.hullMass,this.#calculationModules())}get fuelCapacity(){const cap=this.#top.FuelCapacity;if(cap?.Main!==void 0&&cap.Reserve!==void 0){return Object.freeze({main:cap.Main,reserve:cap.Reserve})}const computed=this.#computedFuelCapacity();return Object.freeze({main:cap?.Main??computed.main,reserve:cap?.Reserve??computed.reserve})}get cargoCapacity(){return this.#top.CargoCapacity??this.#computedCargoCapacity()}#computedCargoCapacity(){return calculateCargoCapacity(this.#calculationModules())}#computedFuelCapacity(){return calculateFuelCapacity(this.#ship.reserveFuelCapacity,this.#calculationModules())}get hullValue(){return this.#top.HullValue??null}get modulesValue(){return this.#top.ModulesValue??null}get rebuy(){return this.#top.Rebuy??null}get sourcePurchase(){return this.#sourcePurchase}get importOutcomes(){return this.#importOutcomes}validation(){const slots=this.#layout();const byKey=new Map(slots.map(slot=>[normalizeKey(slot.key,CATALOGUE_KEY),slot]));const modules=[...this.#modules.values()].map(module=>{const stats=this.#statsFor(module);const slot=byKey.get(normalizeKey(module.Slot,FITTED_SLOT));const builtIn=stats===null&&isNonOutfittingSlot(module.Slot)||isBuiltInHullModule(module);const fitProblem=stats&&slot&&!builtIn?moduleFitProblem(this.#shipSymbol,slot,stats):null;const thrusterMaxMass=weighable(stats?.slot==="thrusters"?effectiveModule(this.#moduleForEffectiveStats(module),stats)?.maxMass:void 0);return{slot:module.Slot,symbol:module.Item,requiresKnownSlot:!builtIn,fitError:fitProblem?.message??null,...fitProblem===null?{}:{fitConstraint:fitProblem.constraint},...fitProblem?.params===void 0?{}:{fitParams:fitProblem.params},...stats?.exclusionGroup===void 0?{}:{exclusionGroup:stats.exclusionGroup},...stats?.limitGroup===void 0?{}:{limitGroup:stats.limitGroup},...stats?.limitIncrease===void 0?{}:{limitIncrease:stats.limitIncrease},...thrusterMaxMass===void 0?{}:{thrusterMaxMass:thrusterMaxMass}}});const dry=weighable(this.unladenMass);const fuel=weighable(this.fuelCapacity.main);const cargo=weighable(this.cargoCapacity);const mass=dry===void 0?void 0:{dry:dry,...fuel===void 0?{}:{fuel:fuel},...fuel===void 0||cargo===void 0?{}:{cargo:cargo}};return validateLoadout({shipSymbol:this.#shipSymbol,slots:slots,modules:modules,...mass===void 0?{}:{mass:mass}})}slots(kind){const cached=this.#slotCache.get(kind);if(cached!==void 0)return cached;const slots=kind===void 0?this.#layout():this.#layout().filter(slot=>slot.kind===kind);const currentLimits=this.#moduleLimits();const value=deepFreeze(slots.map(slot=>{const stats=this.#moduleStatsAt(slot.key);const fixedReason=fixedSlotReason(slot);const immovableReason=fixedReason!==null?fixedReason:stats?.limitIncrease!==void 0&&this.#moduleLimitRegression(slot.key,null,currentLimits,stats)!==null?"moduleLimit":null;return{...slot,name:loadoutSlotName(slot),module:this.fittedModuleAt(slot.key),removable:immovableReason===null,...immovableReason===null?{}:{immovableReason:immovableReason}}}));this.#slotCache.set(kind,value);return value}fittedModuleAt(slotKey){const module=this.#fittedModuleFor(slotKey);if(!module)return null;const raw=cloneLoadoutModule(module);const stats=this.#statsFor(module);const effective=effectiveModule(this.#moduleForEffectiveStats(module),stats);return deepFreeze({slot:module.Slot,symbol:raw.Item,on:raw.On,priority:raw.Priority,health:raw.Health,value:raw.Value,engineering:raw.Engineering,raw:raw,stats:stats===null?null:cloneModuleStats(stats),effectiveStats:effective===null?null:cloneModuleStats(effective),ammunition:ammunitionCapacity(effective),preEngineeredVariant:preEngineeredVariantFor(raw)})}fittedModules(){return deepFreeze([...this.#modules.keys()].flatMap(key=>{const fitted=this.fittedModuleAt(key);return fitted===null?[]:[fitted]}))}availableBlueprints(slotKey){const module=this.#fittedModuleFor(slotKey);return deepFreeze(module?availableBlueprintsFor(module.Item,this.#statsFor(module)):[])}availableExperimentalEffects(slotKey){const module=this.#fittedModuleFor(slotKey);return deepFreeze(module?availableExperimentalsFor(module.Item,this.#statsFor(module)):[])}modulesForSlot(slotKey){const slot=this.#requireSlot(slotKey);const occupied=new Set([...this.#modules.values()].flatMap(fitted=>{if(normalizeKey(fitted.Slot,FITTED_SLOT)===normalizeKey(slot.key,CATALOGUE_KEY))return[];const group=this.#statsFor(fitted)?.exclusionGroup;return group===void 0?[]:[group]}));const currentLimits=this.#moduleLimits();const currentStats=this.#moduleStatsAt(slot.key);return ALL_MODULES.filter(module=>module.grantOnly===void 0&&moduleFitError(this.#shipSymbol,slot,module)===null&&(module.exclusionGroup===void 0||!occupied.has(module.exclusionGroup))&&this.#moduleLimitRegression(slot.key,module,currentLimits,currentStats)===null)}repairFixedMount(slotKey){const requested=requireString(slotKey,SLOT_KEY);const wanted=normalizeKey(requested,SLOT_KEY);const slot=this.#requireSlot(requested);const fittedKey=this.#fittedKey(requested);const resultSlot=fittedKey??requested;const canonicalKey=slot.key;if(fixedSlotReason(slot)===null){return deepFreeze({status:"refused",slot:resultSlot,reason:"notFixedMount"})}const current=this.#fittedModuleFor(requested);const currentStats=current?this.#statsFor(current):null;const valid=current!==void 0&¤tStats!==null&&(slot.kind==="cargoHatch"?isBuiltInHullModule(current):moduleFitProblem(this.#shipSymbol,slot,currentStats)===null);if(valid){return deepFreeze({status:"unchanged",slot:current.Slot,symbol:current.Item})}const defaultModule=getDefaultLoadout(this.#shipSymbol)?.modules.find(module=>normalizeKey(module.slot,CATALOGUE_KEY)===wanted);if(!defaultModule){return deepFreeze({status:"defaultUnavailable",slot:resultSlot})}const ownKey=ownKeyIn(this.#modules,canonicalKey);const replacement={Slot:ownKey,Item:defaultModule.symbol,...current?.On===void 0?{}:{On:current.On},...current?.Priority===void 0?{}:{Priority:current.Priority},...current?.Health===void 0?{}:{Health:current.Health}};const replacementStats=builtInModuleBySymbol(defaultModule.symbol,"ShipLoadout.repairFixedMount")??(isBuiltInHullModule(replacement)?builtInModuleBySymbol("ModularCargoBayDoor","ShipLoadout.repairFixedMount"):null);if(!replacementStats){return deepFreeze({status:"defaultUnavailable",slot:resultSlot,symbol:defaultModule.symbol})}this.#replaceModule(ownKey,replacement,replacementStats);return deepFreeze({status:"repaired",slot:ownKey,symbol:defaultModule.symbol})}setModule(slotKey,module){const slot=this.#requireSlot(slotKey);if(module===null||module===void 0){throw new TypeError(`ShipLoadout.setModule: no module supplied for "${truncate(slotKey)}" (did the module lookup return undefined?)`)}if(typeof module.symbol!=="string"){throw new TypeError(`ShipLoadout.setModule: module for "${truncate(slotKey)}" must be an outfitting module, received ${describeValue(module)}`)}module=cloneModuleStats(module);const catalogued=builtInModuleBySymbol(module.symbol,FITTED_ITEM);if(catalogued===null){throw new TypeError(`ShipLoadout.setModule: no module is catalogued as "${truncate(module.symbol)}"`)}for(const field of AGGREGATE_STATS){const stated=module[field];if(stated===void 0){if(catalogued[field]===void 0)continue;throw new TypeError(`ShipLoadout.setModule: the supplied record for "${truncate(module.symbol)}" has no ${field}`)}if(typeof stated!=="number"||!Number.isFinite(stated)){throw new TypeError(`ShipLoadout.setModule: the supplied record for "${truncate(module.symbol)}" states a ${field} of ${describeValue(stated)}`)}}const problem=moduleFitProblem(this.#shipSymbol,slot,module);if(problem){if(problem.constraint==="immutableSlot"){throw new LoadoutEditError(`ShipLoadout.setModule: ${truncate(module.symbol)} → ${truncate(slotKey)}: ${problem.message}`,"immutableSlot",{slot:slot.key})}throw new LoadoutEditError(`ShipLoadout.setModule: ${truncate(module.symbol)} → ${truncate(slotKey)}: ${problem.message}`,"incompatibleModule",{...problem.params,slot:slot.key,symbol:module.symbol,constraint:problem.constraint},problem.constraint)}if(module.exclusionGroup!==void 0){const conflict=[...this.#modules.values()].find(fitted=>normalizeKey(fitted.Slot,FITTED_SLOT)!==normalizeKey(slot.key,CATALOGUE_KEY)&&this.#statsFor(fitted)?.exclusionGroup===module.exclusionGroup);if(conflict){throw new LoadoutEditError(`ShipLoadout.setModule: ${truncate(module.symbol)} → ${truncate(slotKey)}: ${module.exclusionGroup} is limited to one per ship (already fitted in ${truncate(conflict.Slot)})`,"duplicateExclusiveModule",{exclusionGroup:module.exclusionGroup,slot:slot.key,symbol:module.symbol,previousSlot:conflict.Slot,previousSymbol:conflict.Item})}}const limitProblem=this.#moduleLimitRegression(slot.key,module);if(limitProblem!==null){throw new LoadoutEditError(`ShipLoadout.setModule: ${truncate(module.symbol)} → ${truncate(slotKey)}: ${limitProblem.group} would have ${limitProblem.count} modules but the ship allows ${limitProblem.limit}`,"moduleLimitExceeded",{group:limitProblem.group,count:limitProblem.count,limit:limitProblem.limit,slot:slot.key,symbol:module.symbol})}const key=this.#fittedKey(slotKey)??slot.key;this.#replaceModule(key,{Slot:key,Item:module.symbol},module);return this}removeModule(slotKey){const wanted=normalizeKey(slotKey,SLOT_KEY);if(wanted==="cargohatch"){throw new LoadoutEditError("ShipLoadout.removeModule: the cargoHatch slot cannot be changed","immutableSlot",{slot:"CargoHatch"})}const parsed=parseSlotName(slotKey);const slot=this.#layout().find(candidate=>normalizeKey(candidate.key,CATALOGUE_KEY)===wanted);if(parsed!==null&&fixedSlotReason(parsed)==="requiredSlot"){const fittedKey=this.#fittedKey(slotKey);const key2=slot?.key??fittedKey??slotKey;throw new LoadoutEditError(`ShipLoadout.removeModule: the ${truncate(key2)} slot is required and cannot be emptied`,"requiredSlot",{slot:key2})}const key=this.#fittedKey(slotKey);if(key!==null){const limitProblem=this.#moduleLimitRegression(key,null);if(limitProblem!==null){const fitted=this.#modules.get(key);throw new LoadoutEditError(`ShipLoadout.removeModule: ${truncate(slotKey)}: ${limitProblem.group} would have ${limitProblem.count} modules but the ship allows ${limitProblem.limit}`,"moduleLimitExceeded",{group:limitProblem.group,count:limitProblem.count,limit:limitProblem.limit,slot:key,...fitted===void 0?{}:{symbol:fitted.Item}})}this.#replaceModule(key,null)}return this}applyBlueprint(slotKey,blueprintSymbol,options){requireString(blueprintSymbol,"ShipLoadout.applyBlueprint: blueprintSymbol");if(options===null||typeof options!=="object"){throw new TypeError(`ShipLoadout.applyBlueprint: options must be an object with a grade, received ${describeValue(options)}`)}const wantedGrade=options.grade;const wantedQuality=options.quality;const wantedExperimental=options.experimentalEffectSymbol??void 0;requireStringIfPresent(wantedExperimental,"ShipLoadout.applyBlueprint: options.experimentalEffectSymbol");const module=this.#fittedModuleFor(slotKey);if(!module){throw new RangeError(`ShipLoadout.applyBlueprint: slot "${truncate(slotKey)}" is empty`)}const fittedStats=this.#statsFor(module);if(!fittedStats){throw new TypeError(`ShipLoadout.applyBlueprint: no stats for module "${truncate(module.Item)}"`)}const recipe=resolveBlueprintForModule(module.Item,blueprintSymbol);const named=recipe===blueprintSymbol?`"${truncate(blueprintSymbol)}"`:`"${truncate(blueprintSymbol)}" (${truncate(recipe)} on this module)`;const written=blueprintSymbol.trim().toLowerCase();const resolved=recipe.trim().toLowerCase();if(getPreEngineeredVariants(module.Item).some(variant=>variant.acquisition==="eventReward"&&(variant.blueprintSymbol.toLowerCase()===written||variant.blueprintSymbol.toLowerCase()===resolved))){throw new TypeError(`ShipLoadout.applyBlueprint: ${named} is a fixed pre-engineered identity, not a craftable blueprint; use setPreEngineeredVariant to fit its fixed article`)}if(!Number.isInteger(wantedGrade)||wantedGrade<1||wantedGrade>5){throw new RangeError(`ShipLoadout.applyBlueprint: no blueprint ${named} grade ${truncate(wantedGrade)}`)}const grade=getBlueprintGrade(recipe,wantedGrade);if(!grade){throw new RangeError(`ShipLoadout.applyBlueprint: no blueprint ${named} grade ${truncate(wantedGrade)}`)}let experimental;if(wantedExperimental!==void 0){experimental=getExperimentalEffect(wantedExperimental);if(!experimental){throw new RangeError(`ShipLoadout.applyBlueprint: unknown experimental effect "${truncate(wantedExperimental)}"`)}}const quality=wantedQuality??1;if(!Number.isFinite(quality)||quality<0||quality>1){throw new RangeError(`ShipLoadout.applyBlueprint: quality must be a finite number in [0, 1]`)}if(fittedStats.engineeringLocked){throw new TypeError(`ShipLoadout.applyBlueprint: module "${truncate(module.Item)}" is a final pre-engineered article and accepts no further engineering`)}if(!blueprintAvailableFor(module.Item,blueprintSymbol)){const offered=[...blueprintRoutesFor(module.Item)].map(([blueprint,route])=>`${blueprint} (${route})`);throw new TypeError(offered.length>0?`ShipLoadout.applyBlueprint: module "${truncate(module.Item)}" is not offered blueprint ${named}; available candidates are ${offered.join(", ")}`:`ShipLoadout.applyBlueprint: no registry lists an engineering menu for module "${truncate(module.Item)}"`)}if(wantedExperimental!==void 0&&!experimentalAvailableFor(module.Item,wantedExperimental)){const offered=getExperimentalsForModule(module.Item);throw new TypeError(`ShipLoadout.applyBlueprint: module "${truncate(module.Item)}" is not offered experimental effect "${truncate(wantedExperimental)}"; it takes ${offered.length>0?offered.join(", "):"no experimental effect"}`)}const stats=this.#engineeringBaseStats(module)??fittedStats;const base=baseStats(stats);const canonical=primitiveEngineeringInputsFor(stats,grade,experimental);const missing=missingBaseLabels(stats,base,canonical.grade.features,canonical.experimental?.modifiers);if(missing.length>0){throw new TypeError(`ShipLoadout.applyBlueprint: cannot compute ${named} for module "${truncate(module.Item)}"; missing base stats for ${missing.join(", ")}`)}const damageDistribution=experimental?.damageDistribution??grade.damageDistribution;const primitiveModifiers=computeModifiers(base,canonical.grade,quality,canonical.experimental);const modifiers=journalModifiersFor(stats,primitiveModifiers);if(damageDistribution){for(const type of["kinetic","thermal","explosive","absolute"]){const value=damageDistribution[type];if(value===void 0)continue;const label=labelsForDamageType(type)[0];if(label===void 0)continue;const damageModifier={Label:label,Value:value*scaleForLabel(label),OriginalValue:(stats.damageDistribution?.[type]??0)*scaleForLabel(label)};modifiers.push(damageModifier);primitiveModifiers.push(damageModifier)}}const engineering={BlueprintName:blueprintSymbol,Level:wantedGrade,Quality:quality,...wantedExperimental!==void 0?{ExperimentalEffect:wantedExperimental}:{},Modifiers:modifiers};this.#replaceModule(module.Slot,{...module,Engineering:engineering},stats,primitiveModifiers);return this}setExperimentalEffect(slotKey,experimental){if(experimental!==null){requireString(experimental,"ShipLoadout.setExperimentalEffect: experimental")}const wanted=experimental;const module=this.#fittedModuleFor(slotKey);if(!module)return experimentalEffectUnsupported("emptySlot",{slot:slotKey});const stats=this.#statsFor(module);if(!stats){return experimentalEffectUnsupported("unsupportedEngineering",{slot:module.Slot,symbol:module.Item})}const engineering=module.Engineering;if(!engineering){return experimentalEffectUnsupported("notEngineered",{slot:module.Slot,symbol:module.Item})}if(stats.engineeringLocked){return experimentalEffectUnsupported("finalArticle",{slot:module.Slot,symbol:module.Item})}const previous=engineering.ExperimentalEffect??null;if(previous===null&&wanted===null||previous!==null&&wanted!==null&&previous.trim().toLowerCase()===wanted.trim().toLowerCase()){return deepFreeze({kind:"unchanged",experimentalEffectSymbol:previous})}const variant=preEngineeredVariantFor(module);let effect;if(wanted!==null){effect=getExperimentalEffect(wanted);if(!effect){return experimentalEffectUnsupported("unknownExperimentalEffect",{slot:module.Slot,symbol:module.Item,experimental:wanted})}const restoresBakedEffect=variant?.experimentalEffectSymbol!==void 0&&variant.acquisition!=="mercenary"&&variant.experimentalEffectSymbol.trim().toLowerCase()===wanted.trim().toLowerCase();if(!experimentalAvailableFor(module.Item,wanted)&&!restoresBakedEffect){return experimentalEffectUnsupported("unsupportedExperimentalEffect",{slot:module.Slot,symbol:module.Item,experimental:wanted})}}if(variant&&variant.acquisition!=="mercenary"){const stock=this.#engineeringBaseStats(module);if(!stock){return experimentalEffectUnsupported("unsupportedEngineering",{slot:module.Slot,symbol:module.Item})}const missing=missingBaseLabels(stock,baseStats(stock),[],effect?.modifiers);if(missing.length>0){return experimentalEffectUnsupported("unresolvedModifiers",{slot:module.Slot,symbol:module.Item,labels:missing})}const{experimentalEffectSymbol:originalEffect,...withoutEffect}=variant;const adjusted=wanted===null?withoutEffect:{...withoutEffect,experimentalEffectSymbol:wanted};const resolved=getPreEngineeredStats(withoutEffect);if(!resolved){return experimentalEffectUnsupported("unsupportedEngineering",{slot:module.Slot,symbol:module.Item})}const replacement={BlueprintName:engineering.BlueprintName,Level:engineering.Level,Quality:engineering.Quality,...wanted===null?{}:{ExperimentalEffect:wanted},Modifiers:getPreEngineeredJournalModifiers(adjusted)};this.#replaceModule(module.Slot,{...module,Engineering:replacement},cloneModuleStats(resolved),getPreEngineeredModifiers(adjusted))}else{const blueprint=engineering.BlueprintName;const grade=engineering.Level;const quality=engineering.Quality;if(typeof blueprint!=="string"||!Number.isInteger(grade)||grade<1||grade>5){return experimentalEffectUnsupported("unsupportedEngineering",{slot:module.Slot,symbol:module.Item})}const currentEffect=previous===null?void 0:getExperimentalEffect(previous)??null;if(ordinaryEngineeringProof(module.Item,engineering,currentEffect)==="unproven"){return experimentalEffectUnsupported("unidentifiedPreEngineeredVariant",{slot:module.Slot,symbol:module.Item,blueprint:blueprint})}const recipe=resolveBlueprintForModule(module.Item,blueprint);const blueprintGrade=getBlueprintGrade(recipe,grade);if(!blueprintGrade||!blueprintAvailableFor(module.Item,blueprint)||!Number.isFinite(quality)||quality<0||quality>1){return experimentalEffectUnsupported("unsupportedEngineering",{slot:module.Slot,symbol:module.Item,blueprint:blueprint,grade:grade})}const base=this.#engineeringBaseStats(module)??stats;const canonical=primitiveEngineeringInputsFor(base,blueprintGrade,effect);const missing=missingBaseLabels(base,baseStats(base),canonical.grade.features,canonical.experimental?.modifiers);if(missing.length>0){return experimentalEffectUnsupported("unresolvedModifiers",{slot:module.Slot,symbol:module.Item,labels:missing})}this.applyBlueprint(module.Slot,blueprint,{grade:grade,quality:quality,...wanted===null?{}:{experimentalEffectSymbol:wanted}})}return deepFreeze({kind:"updated",previousExperimentalEffectSymbol:previous,experimentalEffectSymbol:wanted})}completeEngineeringGrade(slotKey){const module=this.#fittedModuleFor(slotKey);if(!module)return engineeringNormalizationUnsupported("emptySlot",{slot:slotKey});const stats=this.#statsFor(module);if(!stats){return engineeringNormalizationUnsupported("unsupportedEngineering",{slot:module.Slot,symbol:module.Item})}const engineering=module.Engineering;if(!engineering){return engineeringNormalizationUnsupported("notEngineered",{slot:module.Slot,symbol:module.Item})}if(stats.engineeringLocked){return engineeringNormalizationUnsupported("finalArticle",{slot:module.Slot,symbol:module.Item})}if(engineering.Quality===1&&engineering.Modifiers!==void 0){return deepFreeze({kind:"unchanged"})}const previousQuality=engineering.Quality;if(!Number.isFinite(previousQuality)||previousQuality<0||previousQuality>1){return engineeringNormalizationUnsupported("invalidQuality",{slot:module.Slot,symbol:module.Item})}const experimental=engineering.ExperimentalEffect??null;const effect=experimental===null?void 0:getExperimentalEffect(experimental)??void 0;if(experimental!==null&&!effect){return engineeringNormalizationUnsupported("unknownExperimentalEffect",{slot:module.Slot,symbol:module.Item,experimental:experimental})}const blueprint=engineering.BlueprintName;const grade=engineering.Level;if(typeof blueprint!=="string"||!Number.isInteger(grade)||grade<1||grade>5){return engineeringNormalizationUnsupported("unsupportedEngineering",{slot:module.Slot,symbol:module.Item})}const variant=preEngineeredVariantFor(module);const restoresBakedEffect=variant?.experimentalEffectSymbol!==void 0&&variant.acquisition!=="mercenary"&&variant.experimentalEffectSymbol.trim().toLowerCase()===experimental?.trim().toLowerCase();if(experimental!==null&&!experimentalAvailableFor(module.Item,experimental)&&!restoresBakedEffect){return engineeringNormalizationUnsupported("unsupportedExperimentalEffect",{slot:module.Slot,symbol:module.Item,experimental:experimental})}if(variant&&variant.acquisition!=="mercenary"){const stock=this.#engineeringBaseStats(module);if(!stock){return engineeringNormalizationUnsupported("unsupportedEngineering",{slot:module.Slot,symbol:module.Item})}const missing=missingBaseLabels(stock,baseStats(stock),[],effect?.modifiers);if(missing.length>0){return engineeringNormalizationUnsupported("unresolvedModifiers",{slot:module.Slot,symbol:module.Item,labels:missing})}const{experimentalEffectSymbol:originalEffect,...withoutEffect}=variant;const adjusted=experimental===null?withoutEffect:{...withoutEffect,experimentalEffectSymbol:experimental};const resolved=getPreEngineeredStats(withoutEffect);if(!resolved){return engineeringNormalizationUnsupported("unsupportedEngineering",{slot:module.Slot,symbol:module.Item})}const replacement={BlueprintName:engineering.BlueprintName,Level:engineering.Level,Quality:1,...experimental===null?{}:{ExperimentalEffect:experimental},Modifiers:getPreEngineeredJournalModifiers(adjusted)};this.#replaceModule(module.Slot,{...module,Engineering:replacement},cloneModuleStats(resolved),getPreEngineeredModifiers(adjusted))}else{const proof=ordinaryEngineeringProof(module.Item,engineering,effect);if(proof==="unproven"||proof==="proven"&&!blueprintAvailableFor(module.Item,blueprint)){return engineeringNormalizationUnsupported("unidentifiedPreEngineeredVariant",{slot:module.Slot,symbol:module.Item,blueprint:blueprint})}const recipe=resolveBlueprintForModule(module.Item,blueprint);const blueprintGrade=getBlueprintGrade(recipe,grade);if(!blueprintGrade||!blueprintAvailableFor(module.Item,blueprint)){return engineeringNormalizationUnsupported("unsupportedEngineering",{slot:module.Slot,symbol:module.Item,blueprint:blueprint,grade:grade})}const base=this.#engineeringBaseStats(module)??stats;const canonical=primitiveEngineeringInputsFor(base,blueprintGrade,effect);const missing=missingBaseLabels(base,baseStats(base),canonical.grade.features,canonical.experimental?.modifiers);if(missing.length>0){return engineeringNormalizationUnsupported("unresolvedModifiers",{slot:module.Slot,symbol:module.Item,labels:missing})}this.applyBlueprint(module.Slot,blueprint,{grade:grade,quality:1,...experimental===null?{}:{experimentalEffectSymbol:experimental}})}return deepFreeze({kind:"normalized",previousQuality:previousQuality,quality:1})}setPreEngineeredVariant(slotKey,variant){if(variant===null||typeof variant!=="object"){throw new TypeError(`ShipLoadout.setPreEngineeredVariant: variant must be a pre-engineered variant, received ${describeValue(variant)}`)}requireString(variant.symbol,"ShipLoadout.setPreEngineeredVariant: variant.symbol");requireString(variant.blueprintSymbol,"ShipLoadout.setPreEngineeredVariant: variant.blueprintSymbol");requireString(variant.acquisition,"ShipLoadout.setPreEngineeredVariant: variant.acquisition");requireStringIfPresent(variant.experimentalEffectSymbol,"ShipLoadout.setPreEngineeredVariant: variant.experimentalEffectSymbol");const known=getPreEngineeredVariants(variant.symbol).find(candidate=>candidate.blueprintSymbol.toLowerCase()===variant.blueprintSymbol.toLowerCase()&&candidate.grade===variant.grade&&(candidate.experimentalEffectSymbol?.toLowerCase()??"")===(variant.experimentalEffectSymbol?.toLowerCase()??"")&&candidate.acquisition===variant.acquisition);if(!known){throw new RangeError(`ShipLoadout.setPreEngineeredVariant: no catalogued variant "${truncate(variant.blueprintSymbol)}" for module "${truncate(variant.symbol)}"`)}const stats=getPreEngineeredStats(known);const unresolved=unresolvedModifiers(known);if(unresolved.length>0){throw new TypeError(`ShipLoadout.setPreEngineeredVariant: cannot resolve "${truncate(variant.blueprintSymbol)}" for module "${truncate(variant.symbol)}"; missing base stats for ${unresolved.join(", ")}`)}this.setModule(slotKey,stats);const module=this.#fittedModuleFor(slotKey);const journalModifiers=getPreEngineeredJournalModifiers(known);const engineering={BlueprintName:known.blueprintSymbol,Level:known.grade,Quality:1,...known.experimentalEffectSymbol===void 0?{}:{ExperimentalEffect:known.experimentalEffectSymbol},...journalModifiers.length>0?{Modifiers:journalModifiers}:{}};this.#replaceModule(module.Slot,{...module,Engineering:engineering},cloneModuleStats(stats),getPreEngineeredModifiers(known));return this}clearEngineering(slotKey){const module=this.#fittedModuleFor(slotKey);if(module&&this.#statsFor(module)?.engineeringLocked){throw new TypeError(`ShipLoadout.clearEngineering: module "${truncate(module.Item)}" is a final pre-engineered article and its engineering cannot be removed`)}if(module?.Engineering){const baseStats2=this.#engineeringBaseStats(module);const bare={Slot:module.Slot,Item:module.Item};if(module.On!==void 0)bare.On=module.On;if(module.Priority!==void 0){bare.Priority=module.Priority}if(module.Health!==void 0)bare.Health=module.Health;if(module.Value!==void 0)bare.Value=module.Value;this.#replaceModule(module.Slot,bare,baseStats2??void 0)}return this}setModuleEnabled(slotKey,on){this.#patchModule(slotKey,{On:on});return this}setModulePriority(slotKey,priority){if(!Number.isInteger(priority)||priority<0||priority>4){throw new RangeError(`ShipLoadout: power priority must be an integer 0-4, got ${truncate(priority)}`)}this.#patchModule(slotKey,{Priority:priority});return this}#patchModule(slotKey,patch){const module=this.#fittedModuleFor(slotKey);if(!module){throw new RangeError(`ShipLoadout: slot "${truncate(slotKey)}" is empty`)}this.#modules.set(module.Slot,cloneLoadoutModule({...module,...patch}));this.#slotCache.clear()}toLoadoutEvent(options={}){const unladenMass=this.#computedUnladenMass();const cargoCapacity=this.#computedCargoCapacity();const fuel=this.#computedFuelCapacity();const maxJumpRange=this.#exportableJumpRange(unladenMass);return exportLoadoutEvent({shipSymbol:this.#shipSymbol,...this.#top.ShipName===void 0?{}:{shipName:this.#top.ShipName},...this.#top.ShipIdent===void 0?{}:{shipIdent:this.#top.ShipIdent},modules:this.#modules,layout:this.#layout(),sourcePurchase:this.#sourcePurchase,retailHullValue:this.#ship.hullCost,unladenMass:unladenMass,cargoCapacity:cargoCapacity,fuelCapacity:fuel,maxJumpRange:maxJumpRange,sourceTotalsVoided:this.#importOutcomes.some(outcome=>outcome.sourceSymbol===null&&parseSlotName(outcome.slot)?.kind==="core"),statsFor:module=>this.#statsFor(module)},options)}toSlef(options){return toSlef(this.toLoadoutEvent(options),options.header)}toSlefString(options){return stringifySlef(this.toSlef(options),{indent:options.indent??0})}#exportableJumpRange(unladenMass){let drive;try{drive=this.#resolveDrive()}catch{return null}if(drive===null)return null;const tank=this.#computedFuelCapacity();return singleJumpRange(unladenMass,Math.min(tank.main,drive.maxFuel),drive)}#layout(){if(this.#layoutCache===void 0){this.#layoutCache=Object.freeze(enumerateSlots(this.#ship))}return this.#layoutCache}#requireSlot(slotKey){const wanted=normalizeKey(slotKey,SLOT_KEY);const slot=this.#layout().find(s=>normalizeKey(s.key,CATALOGUE_KEY)===wanted);if(!slot){throw new RangeError(`ShipLoadout: hull "${truncate(this.#shipSymbol)}" has no slot "${truncate(slotKey)}"`)}return slot}#fittedKey(slotKey){return matchingKeyIn(this.#modules,normalizeKey(slotKey,SLOT_KEY))}#fittedModuleFor(slotKey){const key=this.#fittedKey(slotKey);return key===null?void 0:this.#modules.get(key)}#calculationModules(){return[...this.#modules.values()].map(module=>({mass:this.#moduleMass(module),cargoCapacity:this.#moduleCapacity(module,"CargoCapacity","cargoCapacity"),fuelCapacity:this.#moduleCapacity(module,"FuelCapacity","fuelCapacity")}))}#moduleLimits(){const entries=[...this.#modules.values()].flatMap(module=>{const stats=this.#statsFor(module);return stats===null?[]:[stats]});return calculateModuleLimits(entries)}#moduleStatsAt(slotKey){const fitted=this.#fittedModuleFor(slotKey);return fitted===void 0?null:this.#statsFor(fitted)}#engineeringBaseStats(module){const fitted=this.#statsFor(module);if(!module.Engineering||preEngineeredVariantFor(module)===null)return fitted;const stock=builtInModuleBySymbol(module.Item,FITTED_ITEM);if(!stock)return fitted;return fitted?.engineeringLocked?cloneModuleStats({...stock,engineeringLocked:true}):stock}#moduleForEffectiveStats(module){const modifiers=this.#primitiveModifiers.get(module.Slot);if(modifiers===void 0||module.Engineering===void 0)return module;return{...module,Engineering:{...module.Engineering,Modifiers:modifiers}}}#modulesForEffectiveStats(){return[...this.#modules.values()].map(module=>this.#moduleForEffectiveStats(module))}#moduleLimitRegression(slotKey,replacement,current=this.#moduleLimits(),previous=this.#moduleStatsAt(slotKey)){if(previous?.limitGroup===void 0&&previous?.limitIncrease===void 0&&replacement?.limitGroup===void 0&&replacement?.limitIncrease===void 0){return null}for(const usage of current){const count=usage.count-Number(previous?.limitGroup===usage.group)+Number(replacement?.limitGroup===usage.group);const increase=usage.increase-(previous?.limitIncrease?.group===usage.group?previous.limitIncrease.amount:0)+(replacement?.limitIncrease?.group===usage.group?replacement.limitIncrease.amount:0);const limit=usage.baseLimit+increase;const excess=Math.max(0,count-limit);if(excess>usage.excess){return{...usage,increase:increase,limit:limit,count:count,excess:excess}}}return null}#replaceModule(slotKey,replacement,replacementStats,primitiveModifiers){const previous=this.#modules.get(slotKey)??null;this.#adjustImportedFigures(previous,replacement,replacementStats);if(replacement===null){this.#modules.delete(slotKey);this.#moduleStats.delete(slotKey);this.#primitiveModifiers.delete(slotKey)}else{this.#modules.set(slotKey,cloneLoadoutModule(replacement));if(replacementStats!==void 0)this.#moduleStats.set(slotKey,replacementStats);if(primitiveModifiers===void 0)this.#primitiveModifiers.delete(slotKey);else this.#primitiveModifiers.set(slotKey,primitiveModifiers)}this.#slotCache.clear()}#adjustImportedFigures(previous,next,nextStats){if(this.#top.UnladenMass!==void 0){this.#top.UnladenMass+=this.#moduleMass(next,nextStats)-this.#moduleMass(previous)}if(this.#top.CargoCapacity!==void 0){this.#top.CargoCapacity+=this.#moduleCapacity(next,"CargoCapacity","cargoCapacity",nextStats)-this.#moduleCapacity(previous,"CargoCapacity","cargoCapacity")}if(this.#top.FuelCapacity?.Main!==void 0){const reserve=this.#top.FuelCapacity.Reserve;this.#top.FuelCapacity={Main:this.#top.FuelCapacity.Main+this.#moduleCapacity(next,"FuelCapacity","fuelCapacity",nextStats)-this.#moduleCapacity(previous,"FuelCapacity","fuelCapacity"),...reserve===void 0?{}:{Reserve:reserve}}}if(normalizeKey(previous?.Item,FITTED_ITEM)===normalizeKey(next?.Item,FITTED_ITEM)){return}if(previous!==null&&isCargoHatchSlot(previous.Slot)||next!==null&&isCargoHatchSlot(next.Slot)){return}delete this.#top.ModulesValue;delete this.#top.Rebuy}#moduleMass(module,statsOverride){if(module===null)return 0;if(isCargoHatchSlot(module.Slot))return 0;const modified=getLoadoutModifier(module,"Mass");if(modified!==null)return modified;return(statsOverride??this.#statsFor(module))?.mass??0}#moduleCapacity(module,modifierLabel,field,statsOverride){if(module===null)return 0;if(isCargoHatchSlot(module.Slot))return 0;const modified=getLoadoutModifier(module,modifierLabel);if(modified!==null)return modified;return(statsOverride??this.#statsFor(module))?.[field]??0}#frameShiftDrive(){for(const m of this.#modules.values()){const stats=this.#statsFor(m);if(stats?.slot==="frameShiftDrive")return{module:m,stats:stats}}return void 0}#resolveDrive(){const fsd=this.#frameShiftDrive();if(!fsd)return null;const{module:fsdModule,stats:base}=fsd;if(base.fuelMul===void 0||base.fuelPower===void 0){throw new TypeError(`ShipLoadout: the fitted record for frame shift drive "${truncate(fsdModule.Item)}" has no jump constants`)}const optMass=getLoadoutModifier(fsdModule,"FSDOptimalMass")??base.optMass;const maxFuel=getLoadoutModifier(fsdModule,"MaxFuelPerJump")??base.maxFuel;if(optMass===void 0||maxFuel===void 0){const missing=[...optMass===void 0?["optMass"]:[],...maxFuel===void 0?["maxFuel"]:[]];throw new TypeError(`ShipLoadout: the fitted record for frame shift drive "${truncate(fsdModule.Item)}" has no ${missing.join(" or ")}`)}return{optMass:optMass,maxFuel:maxFuel,fuelMul:base.fuelMul,fuelPower:base.fuelPower,jumpBoost:this.#resolveJumpBoost()}}#resolveJumpBoost(){for(const m of this.#modules.values()){const stats=this.#statsFor(m);if(stats?.engineeringGroup!=="fsdBoosters"&&(stats?.jumpBoost===void 0||stats.jumpBoost===0)){continue}if(m.On===false)continue;if(stats?.jumpBoost===void 0){throw new TypeError(`ShipLoadout: the fitted record for FSD booster "${truncate(m.Item)}" has no jumpBoost`)}return stats.jumpBoost}return 0}#statsFor(module){if(module===null)return null;const stats=this.#moduleStats.get(module.Slot)??builtInModuleBySymbol(module.Item,FITTED_ITEM);if(stats)return stats;return isBuiltInHullModule(module)?builtInModuleBySymbol("ModularCargoBayDoor","ShipLoadout: built-in module"):null}};export{LoadoutEditError,ShipLoadout};//# sourceMappingURL=chunk-3P455LF4.js.map
|