From cbd1b75751cf7394b06fefaebad20ecf4ef1c760 Mon Sep 17 00:00:00 2001 From: hcg890 <53488436+hcg890@users.noreply.github.com> Date: Fri, 9 Oct 2026 21:24:11 -0700 Subject: [PATCH 1/4] Document PR277 checkpoint with functional and logical diagrams and reproducible build tools --- .../EXPECTED_ARTIFACTS.json | 147 + .../JOINT259_CONNECTION_BANK_MAP.json | 40015 ++++++++++++++++ .../JOINT259_CONNECTION_EXTRACT.py | 468 + .../JOINT259_CONNECTION_MANIFEST.json | 23 + .../JOINT259_CONNECTION_README.md | 105 + .../JOINT259_CONNECTION_SCHEMA.json | 51 + .../JOINT259_CONNECTION_SUMMARY.json | 425 + .../JOINT259_CONNECTION_TESTS.py | 186 + .../JOINT259_CONNECTION_VALIDATION.json | 30 + .../QA.json | 909 + .../README.md | 213 + .../complete_system.pdf | Bin 0 -> 916503 bytes .../connection_index.json | 1089 + .../diagram_model.json | 1105 + .../functional_architecture.pdf | Bin 0 -> 855232 bytes .../hierarchy_edges.json | 1778 + .../hierarchy_reconciliation.json | 5243 ++ .../incremental_receipt.json | 196 + .../joint259_system_docs_build.py | 352 + .../joint259_system_docs_evidence.json | 54 + .../joint259_system_docs_hierarchy.json | 5243 ++ .../joint259_system_docs_hierarchy_edges.json | 1778 + .../joint259_system_docs_hierarchy_views.py | 186 + .../joint259_system_docs_incremental.py | 425 + ...joint259_system_docs_incremental_README.md | 101 + .../joint259_system_docs_incremental_test.py | 272 + ...9_system_docs_incremental_test_report.json | 344 + ...int259_system_docs_independent_review.json | 145 + ...stem_docs_independent_review_addendum.json | 202 + .../joint259_system_docs_model.json | 1105 + .../joint259_system_docs_previews.py | 46 + .../joint259_system_docs_requirements.txt | 4 + .../joint259_system_docs_source_binding.json | 138 + .../joint259_system_docs_sources.py | 73 + .../logical_wiring.pdf | Bin 0 -> 870706 bytes .../requirement_traceability.json | 152 + .../scientific_reproduction.json | 54 + .../source_binding.json | 142 + .../source_index.json | 370 + .../summary-functional.svg | 47 + .../summary-logical.svg | 47 + 41 files changed, 63263 insertions(+) create mode 100644 docs/multicut-delayed-inverse-checkpoint/EXPECTED_ARTIFACTS.json create mode 100644 docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_BANK_MAP.json create mode 100644 docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_EXTRACT.py create mode 100644 docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_MANIFEST.json create mode 100644 docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_README.md create mode 100644 docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_SCHEMA.json create mode 100644 docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_SUMMARY.json create mode 100644 docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_TESTS.py create mode 100644 docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_VALIDATION.json create mode 100644 docs/multicut-delayed-inverse-checkpoint/QA.json create mode 100644 docs/multicut-delayed-inverse-checkpoint/README.md create mode 100644 docs/multicut-delayed-inverse-checkpoint/complete_system.pdf create mode 100644 docs/multicut-delayed-inverse-checkpoint/connection_index.json create mode 100644 docs/multicut-delayed-inverse-checkpoint/diagram_model.json create mode 100644 docs/multicut-delayed-inverse-checkpoint/functional_architecture.pdf create mode 100644 docs/multicut-delayed-inverse-checkpoint/hierarchy_edges.json create mode 100644 docs/multicut-delayed-inverse-checkpoint/hierarchy_reconciliation.json create mode 100644 docs/multicut-delayed-inverse-checkpoint/incremental_receipt.json create mode 100644 docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_build.py create mode 100644 docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_evidence.json create mode 100644 docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_hierarchy.json create mode 100644 docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_hierarchy_edges.json create mode 100644 docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_hierarchy_views.py create mode 100644 docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_incremental.py create mode 100644 docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_incremental_README.md create mode 100644 docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_incremental_test.py create mode 100644 docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_incremental_test_report.json create mode 100644 docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_independent_review.json create mode 100644 docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_independent_review_addendum.json create mode 100644 docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_model.json create mode 100644 docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_previews.py create mode 100644 docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_requirements.txt create mode 100644 docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_source_binding.json create mode 100644 docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_sources.py create mode 100644 docs/multicut-delayed-inverse-checkpoint/logical_wiring.pdf create mode 100644 docs/multicut-delayed-inverse-checkpoint/requirement_traceability.json create mode 100644 docs/multicut-delayed-inverse-checkpoint/scientific_reproduction.json create mode 100644 docs/multicut-delayed-inverse-checkpoint/source_binding.json create mode 100644 docs/multicut-delayed-inverse-checkpoint/source_index.json create mode 100644 docs/multicut-delayed-inverse-checkpoint/summary-functional.svg create mode 100644 docs/multicut-delayed-inverse-checkpoint/summary-logical.svg diff --git a/docs/multicut-delayed-inverse-checkpoint/EXPECTED_ARTIFACTS.json b/docs/multicut-delayed-inverse-checkpoint/EXPECTED_ARTIFACTS.json new file mode 100644 index 0000000000..32322d2d95 --- /dev/null +++ b/docs/multicut-delayed-inverse-checkpoint/EXPECTED_ARTIFACTS.json @@ -0,0 +1,147 @@ +{ + "schema": "joint259-documentation-expected-artifacts/1", + "public_source_manifest_sha256": "0af10dcca505cbd913cf1b9220a08b6a62687650ace4e3d1efd093e828e3990e", + "scientific_archive_manifest_sha256": "9f6d8637b9a119cfe4566a02ab2d704f23c502e5e4357b40c28ef85a3fd4de89", + "artifacts": { + "QA.json": { + "sha256": "44867c4224608cd3798b0a92948ffe3324d32ade838e0194f8b1db6b78739fb5", + "bytes": 23030 + }, + "complete_system.pdf": { + "sha256": "1db865c17ef25786c715a5c7bbaa58707a9b565303da6b4261134157d757ce20", + "bytes": 916503 + }, + "connection_index.json": { + "sha256": "f06a73754168e8208377f92fd986e00dd1e533609de81d3c8d556c069f3ceee9", + "bytes": 38083 + }, + "diagram_model.json": { + "sha256": "22842ec916058f0d8fa05d88f0ddc5ebac67e0b7af63d556c2913afec98760ad", + "bytes": 39792 + }, + "functional_architecture.pdf": { + "sha256": "4bbee6f185f11d8283b9432a2e8fb011f70c335defc881027220c3c90dcbc37c", + "bytes": 855232 + }, + "hierarchy_edges.json": { + "sha256": "67245af1a5fa49e41e1da97cb91852440462554bad24bc747b8cd606eb9589cc", + "bytes": 60136 + }, + "hierarchy_reconciliation.json": { + "sha256": "1c5c41d6375440ffc3074e39fbca92a785b7b335fc8a09afa4312395904ba8ec", + "bytes": 278089 + }, + "logical_wiring.pdf": { + "sha256": "f700f70c7192d57271fcb6434b16720b4f39d60850c72d76040b5d67cd9497f5", + "bytes": 870706 + }, + "requirement_traceability.json": { + "sha256": "bb30053247fbe438bd0efb43d48821b35b27d866ba1bd3698c02f0dd38ea3f4e", + "bytes": 3505 + }, + "scientific_reproduction.json": { + "sha256": "7e88f2e7bd1989ac4455586ae4fe23d270d9e8eb3f04b8205d5153150c429ee3", + "bytes": 2016 + }, + "source_binding.json": { + "sha256": "239c881aa348e078dc013ac6c8c7c26478ce7dcd1cf80f7c8015171e6106ee12", + "bytes": 14978 + }, + "source_index.json": { + "sha256": "c5a1d01d20529458312806c6271e8d0f9f83dbe6b7083799239b80beb3a0645d", + "bytes": 14010 + }, + "summary-functional.svg": { + "sha256": "478e620e928e23b78d5387de9570abe652380d7b2138fc3330564ba8f861bade", + "bytes": 5124 + }, + "summary-logical.svg": { + "sha256": "7cec439648a3b4f185048566fb3fb301f8f7d9cf35a5b08dcedd13d93f7a050b", + "bytes": 5117 + } + }, + "environment_note": "Expected PDF bytes use the pinned Python dependencies and bundled Vera font bytes. incremental_receipt.json records the actual runtime and is intentionally not pinned across machines. Linked per-page SVGs can be regenerated with --svg and are not part of the minimal publication allowlist.", + "release_note": "Bound to construction PR #277 after exact reproduction of all 14 pre-publication reviewed hashes. Only PR title/publication metadata changed. PDFs regenerated; 155 of 161 page drawings unchanged. All six changed pages rechecked; scientific source and nine other reviewed artifacts unchanged.", + "pre_publication_reviewed_artifacts": { + "QA.json": { + "sha256": "a643d0d62c1df25136aa9ea68aa75cf1369da02569f450ad319101bbfc3216b5", + "bytes": 23030 + }, + "complete_system.pdf": { + "sha256": "aff51810f707914258e675d58533db1081dca7f2ea5a43d48ff3232c06f6b157", + "bytes": 916405 + }, + "connection_index.json": { + "sha256": "f06a73754168e8208377f92fd986e00dd1e533609de81d3c8d556c069f3ceee9", + "bytes": 38083 + }, + "diagram_model.json": { + "sha256": "6238e4a76508ee536410cca104ca24491224039f24fba49a35a33de26e3249b3", + "bytes": 39756 + }, + "functional_architecture.pdf": { + "sha256": "1907edaf42049afe95c5de86e581feef299fade60f37e346cebfccd2392de38f", + "bytes": 855134 + }, + "hierarchy_edges.json": { + "sha256": "67245af1a5fa49e41e1da97cb91852440462554bad24bc747b8cd606eb9589cc", + "bytes": 60136 + }, + "hierarchy_reconciliation.json": { + "sha256": "1c5c41d6375440ffc3074e39fbca92a785b7b335fc8a09afa4312395904ba8ec", + "bytes": 278089 + }, + "logical_wiring.pdf": { + "sha256": "60d2833a8a5102ac072a5260d89c1139e89a13beb468cd6d24ff9a00a376826c", + "bytes": 870609 + }, + "requirement_traceability.json": { + "sha256": "bb30053247fbe438bd0efb43d48821b35b27d866ba1bd3698c02f0dd38ea3f4e", + "bytes": 3505 + }, + "scientific_reproduction.json": { + "sha256": "7e88f2e7bd1989ac4455586ae4fe23d270d9e8eb3f04b8205d5153150c429ee3", + "bytes": 2016 + }, + "source_binding.json": { + "sha256": "239c881aa348e078dc013ac6c8c7c26478ce7dcd1cf80f7c8015171e6106ee12", + "bytes": 14978 + }, + "source_index.json": { + "sha256": "c5a1d01d20529458312806c6271e8d0f9f83dbe6b7083799239b80beb3a0645d", + "bytes": 14010 + }, + "summary-functional.svg": { + "sha256": "478e620e928e23b78d5387de9570abe652380d7b2138fc3330564ba8f861bade", + "bytes": 5124 + }, + "summary-logical.svg": { + "sha256": "7cec439648a3b4f185048566fb3fb301f8f7d9cf35a5b08dcedd13d93f7a050b", + "bytes": 5117 + } + }, + "publication_binding": { + "construction_pr": "https://github.com/CrocSwap/integer-mult-bounds/pull/277", + "construction_commit": "c2f07d311bfdad0d89bf961e4da133ee97bb78de", + "original_expected_artifacts_sha256": "c4ab4fb7ee8cf07b4f1827b98a744251cf492ecc5ff69ea59069035ddbd42c3b", + "changed_source_files": [ + "README.md", + "joint259_system_docs_build.py", + "joint259_system_docs_model.json" + ], + "changed_drawing_pages": { + "functional_architecture.pdf": [ + 1, + 50 + ], + "logical_wiring.pdf": [ + 1, + 53 + ], + "complete_system.pdf": [ + 1, + 55 + ] + } + } +} diff --git a/docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_BANK_MAP.json b/docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_BANK_MAP.json new file mode 100644 index 0000000000..9d044b5067 --- /dev/null +++ b/docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_BANK_MAP.json @@ -0,0 +1,40015 @@ +{ + "schema": "joint259-parametric-bank-map/1", + "source_sha256": "e255bdc0c0aa4465485ee34ece7d1f04ce3ce363d8ac62edc9de5608e46f8965", + "stages": 5, + "replicas": 40, + "active_data_banks": [ + [ + 0, + 1 + ], + [ + 1, + 0 + ], + [ + 0, + 1 + ], + [ + 3, + 2 + ], + [ + 2, + 3 + ] + ], + "helper_roles": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 878, + 879, + 880, + 881, + 882, + 883, + 884, + 885, + 886, + 887, + 888, + 889, + 891, + 892, + 893, + 894, + 895, + 896, + 897, + 898, + 899, + 900, + 901, + 902, + 903, + 904, + 905, + 906, + 907, + 908, + 910, + 911, + 912, + 913, + 914, + 915, + 916, + 917, + 918, + 919, + 920, + 921, + 923, + 924, + 925, + 926, + 927, + 928, + 929, + 930, + 931, + 932, + 933, + 934, + 935, + 936, + 937, + 938, + 939, + 940, + 942, + 943, + 944, + 945, + 946, + 947, + 948, + 949, + 950, + 951, + 952, + 953, + 955, + 956, + 957, + 958, + 959, + 960, + 961, + 962, + 963, + 964, + 965, + 966, + 967, + 968, + 969, + 970, + 971, + 972, + 974, + 975, + 976, + 977, + 978, + 979, + 980, + 981, + 982, + 983, + 984, + 985, + 987, + 988, + 989, + 990, + 991, + 992, + 993, + 994, + 995, + 996, + 997, + 998, + 999, + 1000, + 1001, + 1002, + 1003, + 1004, + 1006, + 1007, + 1008, + 1009, + 1010, + 1011, + 1012, + 1013, + 1014, + 1015, + 1016, + 1017, + 1019, + 1020, + 1021, + 1022, + 1023, + 1024, + 1025, + 1026, + 1027, + 1028, + 1029, + 1030, + 1031, + 1032, + 1033, + 1034, + 1035, + 1036, + 1038, + 1039, + 1040, + 1041, + 1042, + 1043, + 1044, + 1045, + 1046, + 1047, + 1048, + 1049, + 1051, + 1052, + 1053, + 1054, + 1055, + 1056, + 1057, + 1058, + 1059, + 1060, + 1061, + 1062, + 1063, + 1064, + 1065, + 1066, + 1067, + 1068, + 1070, + 1071, + 1072, + 1073, + 1074, + 1075, + 1076, + 1077, + 1078, + 1079, + 1080, + 1081, + 1083, + 1084, + 1085, + 1086, + 1087, + 1088, + 1089, + 1090, + 1091, + 1092, + 1093, + 1094, + 1095, + 1096, + 1097, + 1098, + 1099, + 1100, + 1102, + 1103, + 1104, + 1105, + 1106, + 1107, + 1108, + 1109, + 1110, + 1111, + 1112, + 1113, + 1115, + 1116, + 1117, + 1118, + 1119, + 1120, + 1121, + 1122, + 1123, + 1124, + 1125, + 1126, + 1127, + 1128, + 1129, + 1130, + 1131, + 1132, + 1134, + 1135, + 1136, + 1137, + 1138, + 1139, + 1140, + 1141, + 1142, + 1143, + 1144, + 1145, + 1147, + 1148, + 1149, + 1150, + 1151, + 1152, + 1153, + 1154, + 1155, + 1156, + 1157, + 1158, + 1159, + 1160, + 1161, + 1162, + 1163, + 1164, + 1166, + 1167, + 1168, + 1169, + 1170, + 1171, + 1172, + 1173, + 1174, + 1175, + 1176, + 1177, + 1179, + 1180, + 1181, + 1182, + 1183, + 1184, + 1185, + 1186, + 1187, + 1188, + 1189, + 1190, + 1191, + 1192, + 1193, + 1194, + 1195, + 1196, + 1198, + 1199, + 1200, + 1201, + 1202, + 1203, + 1204, + 1205, + 1206, + 1207, + 1208, + 1209, + 1211, + 1212, + 1213, + 1214, + 1215, + 1216, + 1217, + 1218, + 1219, + 1220, + 1221, + 1222, + 1223, + 1224, + 1225, + 1226, + 1227, + 1228, + 1230, + 1231, + 1232, + 1233, + 1234, + 1235, + 1236, + 1237, + 1238, + 1239, + 1240, + 1241, + 1243, + 1244, + 1245, + 1246, + 1247, + 1248, + 1249, + 1250, + 1251, + 1252, + 1253, + 1254, + 1255, + 1256, + 1257, + 1258, + 1259, + 1260, + 1262, + 1263, + 1264, + 1265, + 1266, + 1267, + 1268, + 1269, + 1270, + 1271, + 1272, + 1273, + 1275, + 1276, + 1277, + 1278, + 1279, + 1280, + 1281, + 1282, + 1283, + 1284, + 1285, + 1286, + 1287, + 1288, + 1289, + 1290, + 1291, + 1292, + 1294, + 1295, + 1296, + 1297, + 1298, + 1299, + 1300, + 1301, + 1302, + 1303, + 1304, + 1305, + 1307, + 1308, + 1309, + 1310, + 1311, + 1312, + 1313, + 1314, + 1315, + 1316, + 1317, + 1318, + 1319, + 1320, + 1321, + 1322, + 1323, + 1324, + 1326, + 1327, + 1328, + 1329, + 1330, + 1331, + 1332, + 1333, + 1334, + 1335, + 1336, + 1337, + 1339, + 1340, + 1341, + 1342, + 1343, + 1344, + 1345, + 1346, + 1347, + 1348, + 1349, + 1350, + 1351, + 1352, + 1353, + 1354, + 1355, + 1356, + 1358, + 1359, + 1360, + 1361, + 1362, + 1363, + 1364, + 1365, + 1366, + 1367, + 1368, + 1369, + 1371, + 1372, + 1373, + 1374, + 1375, + 1376, + 1377, + 1378, + 1379, + 1380, + 1381, + 1382, + 1383, + 1384, + 1385, + 1386, + 1387, + 1388, + 1390, + 1391, + 1392, + 1393, + 1394, + 1395, + 1396, + 1397, + 1398, + 1399, + 1400, + 1401, + 1403, + 1404, + 1405, + 1406, + 1407, + 1408, + 1409, + 1410, + 1411, + 1412, + 1413, + 1414, + 1415, + 1416, + 1417, + 1418, + 1419, + 1420, + 1422, + 1423, + 1424, + 1425, + 1426, + 1427, + 1428, + 1429, + 1430, + 1431, + 1432, + 1433, + 1435, + 1436, + 1437, + 1438, + 1439, + 1440, + 1441, + 1442, + 1443, + 1444, + 1445, + 1446, + 1447, + 1448, + 1449, + 1450, + 1451, + 1452, + 1454, + 1455, + 1456, + 1457, + 1458, + 1459, + 1460, + 1461, + 1462, + 1463, + 1464, + 1465, + 1467, + 1468, + 1469, + 1470, + 1471, + 1472, + 1473, + 1474, + 1475, + 1476, + 1477, + 1478, + 1479, + 1480, + 1481, + 1482, + 1483, + 1484, + 1486, + 1487, + 1488, + 1489, + 1490, + 1491, + 1492, + 1493, + 1494, + 1495, + 1496, + 1497, + 1499, + 1500, + 1501, + 1502, + 1503, + 1504, + 1505, + 1506, + 1507, + 1508, + 1509, + 1510, + 1511, + 1512, + 1513, + 1514, + 1515, + 1516, + 1518, + 1519, + 1520, + 1521, + 1522, + 1523, + 1524, + 1525, + 1526, + 1527, + 1528, + 1529, + 1531, + 1532, + 1533, + 1534, + 1535, + 1536, + 1537, + 1538, + 1539, + 1540, + 1541, + 1542, + 1543, + 1544, + 1545, + 1546, + 1547, + 1548, + 1550, + 1551, + 1552, + 1553, + 1554, + 1555, + 1556, + 1557, + 1558, + 1559, + 1560, + 1561, + 1563, + 1564, + 1565, + 1566, + 1567, + 1568, + 1569, + 1570, + 1571, + 1572, + 1573, + 1574, + 1575, + 1576, + 1577, + 1578, + 1579, + 1580, + 1582, + 1583, + 1584, + 1585, + 1586, + 1587, + 1588, + 1589, + 1590, + 1591, + 1592, + 1593, + 1595, + 1596, + 1597, + 1598, + 1599, + 1600, + 1601, + 1602, + 1603, + 1604, + 1605, + 1606, + 1607, + 1608, + 1609, + 1610, + 1611, + 1612, + 1614, + 1615, + 1616, + 1617, + 1618, + 1619, + 1620, + 1621, + 1622, + 1623, + 1624, + 1625, + 1627, + 1628, + 1629, + 1630, + 1631, + 1632, + 1633, + 1634, + 1635, + 1636, + 1637, + 1638, + 1639, + 1640, + 1641, + 1642, + 1643, + 1644, + 1646, + 1647, + 1648, + 1649, + 1650, + 1651, + 1652, + 1653, + 1654, + 1655, + 1656, + 1657, + 1659, + 1660, + 1661, + 1662, + 1663, + 1664, + 1665, + 1666, + 1667, + 1668, + 1669, + 1670, + 1671, + 1672, + 1673, + 1674, + 1675, + 1676, + 1678, + 1679, + 1680, + 1681, + 1682, + 1683, + 1684, + 1685, + 1686, + 1687, + 1688, + 1689, + 1691, + 1692, + 1693, + 1694, + 1695, + 1696, + 1697, + 1698, + 1699, + 1700, + 1701, + 1702, + 1703, + 1704, + 1705, + 1706, + 1707, + 1708, + 1710, + 1711, + 1712, + 1713, + 1714, + 1715, + 1716, + 1717, + 1718, + 1719, + 1720, + 1721, + 1723, + 1724, + 1725, + 1726, + 1727, + 1728, + 1729, + 1730, + 1731, + 1732, + 1733, + 1734, + 1735, + 1736, + 1737, + 1738, + 1739, + 1740, + 1742, + 1743, + 1744, + 1745, + 1746, + 1747, + 1748, + 1749, + 1750, + 1751, + 1752, + 1753, + 1755, + 1756, + 1757, + 1758, + 1759, + 1760, + 1761, + 1762, + 1763, + 1764, + 1765, + 1766, + 1767, + 1768, + 1769, + 1770, + 1771, + 1772, + 1774, + 1775, + 1776, + 1777, + 1778, + 1779, + 1780, + 1781, + 1782, + 1783, + 1784, + 1785, + 1787, + 1788, + 1789, + 1790, + 1791, + 1792, + 1793, + 1794, + 1795, + 1796, + 1797, + 1798, + 1799, + 1800, + 1801, + 1802, + 1803, + 1804, + 1806, + 1807, + 1808, + 1809, + 1810, + 1811, + 1812, + 1813, + 1814, + 1815, + 1816, + 1817, + 1819, + 1820, + 1821, + 1822, + 1823, + 1824, + 1825, + 1826, + 1827, + 1828, + 1829, + 1830, + 1831, + 1832, + 1833, + 1834, + 1835, + 1836, + 1838, + 1839, + 1840, + 1841, + 1842, + 1843, + 1844, + 1845, + 1846, + 1847, + 1848, + 1849, + 1851, + 1852, + 1853, + 1854, + 1855, + 1856, + 1857, + 1858, + 1859, + 1860, + 1861, + 1862, + 1863, + 1864, + 1865, + 1866, + 1867, + 1868, + 1870, + 1871, + 1872, + 1873, + 1874, + 1875, + 1876, + 1877, + 1878, + 1879, + 1880, + 1881, + 1883, + 1884, + 1885, + 1886, + 1887, + 1888, + 1889, + 1890, + 1891, + 1892, + 1893, + 1894, + 1895, + 1896, + 1897, + 1898, + 1899, + 1900, + 1902, + 1903, + 1904, + 1905, + 1906, + 1907, + 1908, + 1909, + 1910, + 1911, + 1912, + 1913, + 1915, + 1916, + 1917, + 1918, + 1919, + 1920, + 1921, + 1922, + 1923, + 1924, + 1925, + 1926, + 1927, + 1928, + 1929, + 1930, + 1931, + 1932, + 1934, + 1935, + 1936, + 1937, + 1938, + 1939, + 1940, + 1941, + 1942, + 1943, + 1944, + 1945, + 1947, + 1948, + 1949, + 1950, + 1951, + 1952, + 1953, + 1954, + 1955, + 1956, + 1957, + 1958, + 1959, + 1960, + 1961, + 1962, + 1963, + 1964, + 1966, + 1967, + 1968, + 1969, + 1970, + 1971, + 1972, + 1973, + 1974, + 1975, + 1976, + 1977, + 1979, + 1980, + 1981, + 1982, + 1983, + 1984, + 1985, + 1986, + 1987, + 1988, + 1989, + 1990, + 1991, + 1992, + 1993, + 1994, + 1995, + 1996, + 1998, + 1999, + 2000, + 2001, + 2002, + 2003, + 2004, + 2005, + 2006, + 2007, + 2008, + 2009, + 2011, + 2012, + 2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026, + 2027, + 2028, + 2030, + 2031, + 2032, + 2033, + 2034, + 2035, + 2036, + 2037, + 2038, + 2039, + 2040, + 2041, + 2043, + 2044, + 2045, + 2046, + 2047, + 2048, + 2049, + 2050, + 2051, + 2052, + 2053, + 2054, + 2055, + 2056, + 2057, + 2058, + 2059, + 2060, + 2062, + 2063, + 2064, + 2065, + 2066, + 2067, + 2068, + 2069, + 2070, + 2071, + 2072, + 2073, + 2075, + 2076, + 2077, + 2078, + 2079, + 2080, + 2081, + 2082, + 2083, + 2084, + 2085, + 2086, + 2087, + 2088, + 2089, + 2090, + 2091, + 2092, + 2094, + 2095, + 2096, + 2097, + 2098, + 2099, + 2100, + 2101, + 2102, + 2103, + 2104, + 2105, + 2107, + 2108, + 2109, + 2110, + 2111, + 2112, + 2113, + 2114, + 2115, + 2116, + 2117, + 2118, + 2119, + 2120, + 2121, + 2122, + 2123, + 2124, + 2126, + 2127, + 2128, + 2129, + 2130, + 2131, + 2132, + 2133, + 2134, + 2135, + 2136, + 2137, + 2139, + 2140, + 2141, + 2142, + 2143, + 2144, + 2145, + 2146, + 2147, + 2148, + 2149, + 2150, + 2151, + 2152, + 2153, + 2154, + 2155, + 2156, + 2158, + 2159, + 2160, + 2161, + 2162, + 2163, + 2164, + 2165, + 2166, + 2167, + 2168, + 2169, + 2171, + 2172, + 2173, + 2174, + 2175, + 2176, + 2177, + 2178, + 2179, + 2180, + 2181, + 2182, + 2183, + 2184, + 2185, + 2186, + 2187, + 2188, + 2190, + 2191, + 2192, + 2193, + 2194, + 2195, + 2196, + 2197, + 2198, + 2199, + 2200, + 2201, + 2203, + 2204, + 2205, + 2206, + 2207, + 2208, + 2209, + 2210, + 2211, + 2212, + 2213, + 2214, + 2215, + 2216, + 2217, + 2218, + 2219, + 2220, + 2222, + 2223, + 2224, + 2225, + 2226, + 2227, + 2228, + 2229, + 2230, + 2231, + 2232, + 2233, + 2235, + 2236, + 2237, + 2238, + 2239, + 2240, + 2241, + 2242, + 2243, + 2244, + 2245, + 2246, + 2247, + 2248, + 2249, + 2250, + 2251, + 2252, + 2254, + 2255, + 2256, + 2257, + 2258, + 2259, + 2260, + 2261, + 2262, + 2263, + 2264, + 2265, + 2267, + 2268, + 2269, + 2270, + 2271, + 2272, + 2273, + 2274, + 2275, + 2276, + 2277, + 2278, + 2279, + 2280, + 2281, + 2282, + 2283, + 2284, + 2286, + 2287, + 2288, + 2289, + 2290, + 2291, + 2292, + 2293, + 2294, + 2295, + 2296, + 2297, + 2299, + 2300, + 2301, + 2302, + 2303, + 2304, + 2305, + 2306, + 2307, + 2308, + 2309, + 2310, + 2311, + 2312, + 2313, + 2314, + 2315, + 2316, + 2318, + 2319, + 2320, + 2321, + 2322, + 2323, + 2324, + 2325, + 2326, + 2327, + 2328, + 2329, + 2331, + 2332, + 2333, + 2334, + 2335, + 2336, + 2337, + 2338, + 2339, + 2340, + 2341, + 2342, + 2343, + 2344, + 2345, + 2346, + 2347, + 2348, + 2350, + 2351, + 2352, + 2353, + 2354, + 2355, + 2356, + 2357, + 2358, + 2359, + 2360, + 2361, + 2363, + 2364, + 2365, + 2366, + 2367, + 2368, + 2369, + 2370, + 2371, + 2372, + 2373, + 2374, + 2375, + 2376, + 2377, + 2378, + 2379, + 2380, + 2382, + 2383, + 2384, + 2385, + 2386, + 2387, + 2388, + 2389, + 2390, + 2391, + 2392, + 2393, + 2395, + 2396, + 2397, + 2398, + 2399, + 2400, + 2401, + 2402, + 2403, + 2404, + 2405, + 2406, + 2407, + 2408, + 2409, + 2410, + 2411, + 2412, + 2414, + 2415, + 2416, + 2417, + 2418, + 2419, + 2420, + 2421, + 2422, + 2423, + 2424, + 2425, + 2427, + 2428, + 2429, + 2430, + 2431, + 2432, + 2433, + 2434, + 2435, + 2436, + 2437, + 2438, + 2439, + 2440, + 2441, + 2442, + 2443, + 2444, + 2446, + 2447, + 2448, + 2449, + 2450, + 2451, + 2452, + 2453, + 2454, + 2455, + 2456, + 2457, + 2459, + 2460, + 2461, + 2462, + 2463, + 2464, + 2465, + 2466, + 2467, + 2468, + 2469, + 2470, + 2471, + 2472, + 2473, + 2474, + 2475, + 2476, + 2478, + 2479, + 2480, + 2481, + 2482, + 2483, + 2484, + 2485, + 2486, + 2487, + 2488, + 2489, + 2491, + 2492, + 2493, + 2494, + 2495, + 2496, + 2497, + 2498, + 2499, + 2500, + 2501, + 2502, + 2503, + 2504, + 2505, + 2506, + 2507, + 2508, + 2510, + 2511, + 2512, + 2513, + 2514, + 2515, + 2516, + 2517, + 2518, + 2519, + 2520, + 2521, + 2523, + 2524, + 2525, + 2526, + 2527, + 2528, + 2529, + 2530, + 2531, + 2532, + 2533, + 2534, + 2535, + 2536, + 2537, + 2538, + 2539, + 2540, + 2542, + 2543, + 2544, + 2545, + 2546, + 2547, + 2548, + 2549, + 2550, + 2551, + 2552, + 2553, + 2555, + 2556, + 2557, + 2558, + 2559, + 2560, + 2561, + 2562, + 2563, + 2564, + 2565, + 2566, + 2567, + 2568, + 2569, + 2570, + 2571, + 2572, + 2574, + 2575, + 2576, + 2577, + 2578, + 2579, + 2580, + 2581, + 2582, + 2583, + 2584, + 2585, + 2587, + 2588, + 2589, + 2590, + 2591, + 2592, + 2593, + 2594, + 2595, + 2596, + 2597, + 2598, + 2599, + 2600, + 2601, + 2602, + 2603, + 2604, + 2606, + 2607, + 2608, + 2609, + 2610, + 2611, + 2612, + 2613, + 2614, + 2615, + 2616, + 2617, + 2619, + 2620, + 2621, + 2622, + 2623, + 2624, + 2625, + 2626, + 2627, + 2628, + 2629, + 2630, + 2631, + 2632, + 2633, + 2634, + 2635, + 2636, + 2638, + 2639, + 2640, + 2641, + 2642, + 2643, + 2644, + 2645, + 2646, + 2647, + 2648, + 2649, + 2651, + 2652, + 2653, + 2654, + 2655, + 2656, + 2657, + 2658, + 2659, + 2660, + 2661, + 2662, + 2663, + 2664, + 2665, + 2666, + 2667, + 2668, + 2670, + 2671, + 2672, + 2673, + 2674, + 2675, + 2676, + 2677, + 2678, + 2679, + 2680, + 2681, + 2683, + 2684, + 2685, + 2686, + 2687, + 2688, + 2689, + 2690, + 2691, + 2692, + 2693, + 2694, + 2695, + 2696, + 2697, + 2698, + 2699, + 2700, + 2702, + 2703, + 2704, + 2705, + 2706, + 2707, + 2708, + 2709, + 2710, + 2711, + 2712, + 2713, + 2715, + 2716, + 2717, + 2718, + 2719, + 2720, + 2721, + 2722, + 2723, + 2724, + 2725, + 2726, + 2727, + 2728, + 2729, + 2730, + 2731, + 2732, + 2734, + 2735, + 2736, + 2737, + 2738, + 2739, + 2740, + 2741, + 2742, + 2743, + 2744, + 2745, + 2747, + 2748, + 2749, + 2750, + 2751, + 2752, + 2753, + 2754, + 2755, + 2756, + 2757, + 2758, + 2759, + 2760, + 2761, + 2762, + 2763, + 2764, + 2766, + 2767, + 2768, + 2769, + 2770, + 2771, + 2772, + 2773, + 2774, + 2775, + 2776, + 2777, + 2779, + 2780, + 2781, + 2782, + 2783, + 2784, + 2785, + 2786, + 2787, + 2788, + 2789, + 2790, + 2791, + 2792, + 2793, + 2794, + 2795, + 2796, + 2798, + 2799, + 2800, + 2801, + 2802, + 2803, + 2804, + 2805, + 2806, + 2807, + 2808, + 2809, + 2811, + 2812, + 2813, + 2814, + 2815, + 2816, + 2817, + 2818, + 2819, + 2820, + 2821, + 2822, + 2823, + 2824, + 2825, + 2826, + 2827, + 2828, + 2830, + 2831, + 2832, + 2833, + 2834, + 2835, + 2836, + 2837, + 2838, + 2839, + 2840, + 2841, + 2843, + 2844, + 2845, + 2846, + 2847, + 2848, + 2849, + 2850, + 2851, + 2852, + 2853, + 2854, + 2855, + 2856, + 2857, + 2858, + 2859, + 2860, + 2862, + 2863, + 2864, + 2865, + 2866, + 2867, + 2868, + 2869, + 2870, + 2871, + 2872, + 2873, + 2875, + 2876, + 2877, + 2878, + 2879, + 2880, + 2881, + 2882, + 2883, + 2884, + 2885, + 2886, + 2887, + 2888, + 2889, + 2890, + 2891, + 2892, + 2894, + 2895, + 2896, + 2897, + 2898, + 2899, + 2900, + 2901, + 2902, + 2903, + 2904, + 2905, + 2907, + 2908, + 2909, + 2910, + 2911, + 2912, + 2913, + 2914, + 2915, + 2916, + 2917, + 2918, + 2919, + 2920, + 2921, + 2922, + 2923, + 2924, + 2926, + 2927, + 2928, + 2929, + 2930, + 2931, + 2932, + 2933, + 2934, + 2935, + 2936, + 2937, + 2939, + 2940, + 2941, + 2942, + 2943, + 2944, + 2945, + 2946, + 2947, + 2948, + 2949, + 2950, + 2951, + 2952, + 2953, + 2954, + 2955, + 2956, + 2958, + 2959, + 2960, + 2961, + 2962, + 2963, + 2964, + 2965, + 2966, + 2967, + 2968, + 2969, + 2971, + 2972, + 2973, + 2974, + 2975, + 2976, + 2977, + 2978, + 2979, + 2980, + 2981, + 2982, + 2983, + 2984, + 2985, + 2986, + 2987, + 2988, + 2990, + 2991, + 2992, + 2993, + 2994, + 2995, + 2996, + 2997, + 2998, + 2999, + 3000, + 3001, + 3003, + 3004, + 3005, + 3006, + 3007, + 3008, + 3009, + 3010, + 3011, + 3012, + 3013, + 3014, + 3015, + 3016, + 3017, + 3018, + 3019, + 3020, + 3022, + 3023, + 3024, + 3025, + 3026, + 3027, + 3028, + 3029, + 3030, + 3031, + 3032, + 3033, + 3035, + 3036, + 3037, + 3038, + 3039, + 3040, + 3041, + 3042, + 3043, + 3044, + 3045, + 3046, + 3047, + 3048, + 3049, + 3050, + 3051, + 3052, + 3054, + 3055, + 3056, + 3057, + 3058, + 3059, + 3060, + 3061, + 3062, + 3063, + 3064, + 3065, + 3067, + 3068, + 3069, + 3070, + 3071, + 3072, + 3073, + 3074, + 3075, + 3076, + 3077, + 3078, + 3079, + 3080, + 3081, + 3082, + 3083, + 3084, + 3086, + 3087, + 3088, + 3089, + 3090, + 3091, + 3092, + 3093, + 3094, + 3095, + 3096, + 3097, + 3099, + 3100, + 3101, + 3102, + 3103, + 3104, + 3105, + 3106, + 3107, + 3108, + 3109, + 3110, + 3111, + 3112, + 3113, + 3114, + 3115, + 3116, + 3118, + 3119, + 3120, + 3121, + 3122, + 3123, + 3124, + 3125, + 3126, + 3127, + 3128, + 3129, + 3131, + 3132, + 3133, + 3134, + 3135, + 3136, + 3137, + 3138, + 3139, + 3140, + 3141, + 3142, + 3143, + 3144, + 3145, + 3146, + 3147, + 3148, + 3150, + 3151, + 3152, + 3153, + 3154, + 3155, + 3156, + 3157, + 3158, + 3159, + 3160, + 3161, + 3163, + 3164, + 3165, + 3166, + 3167, + 3168, + 3169, + 3170, + 3171, + 3172, + 3173, + 3174, + 3175, + 3176, + 3177, + 3178, + 3179, + 3180, + 3182, + 3183, + 3184, + 3185, + 3186, + 3187, + 3188, + 3189, + 3190, + 3191, + 3192, + 3193, + 3195, + 3196, + 3197, + 3198, + 3199, + 3200, + 3201, + 3202, + 3203, + 3204, + 3205, + 3206, + 3207, + 3208, + 3209, + 3210, + 3211, + 3212, + 3214, + 3215, + 3216, + 3217, + 3218, + 3219, + 3220, + 3221, + 3222, + 3223, + 3224, + 3225, + 3227, + 3228, + 3229, + 3230, + 3231, + 3232, + 3233, + 3234, + 3235, + 3236, + 3237, + 3238, + 3239, + 3240, + 3241, + 3242, + 3243, + 3244, + 3246, + 3247, + 3248, + 3249, + 3250, + 3251, + 3252, + 3253, + 3254, + 3255, + 3256, + 3257, + 3259, + 3260, + 3261, + 3262, + 3263, + 3264, + 3265, + 3266, + 3267, + 3268, + 3269, + 3270, + 3271, + 3272, + 3273, + 3274, + 3275, + 3276, + 3278, + 3279, + 3280, + 3281, + 3282, + 3283, + 3284, + 3285, + 3286, + 3287, + 3288, + 3289, + 3291, + 3292, + 3293, + 3294, + 3295, + 3296, + 3297, + 3298, + 3299, + 3300, + 3301, + 3302, + 3303, + 3304, + 3305, + 3306, + 3307, + 3308, + 3310, + 3311, + 3312, + 3313, + 3314, + 3315, + 3316, + 3317, + 3318, + 3319, + 3320, + 3321, + 3323, + 3324, + 3325, + 3326, + 3327, + 3328, + 3329, + 3330, + 3331, + 3332, + 3333, + 3334, + 3335, + 3336, + 3337, + 3338, + 3339, + 3340, + 3342, + 3343, + 3344, + 3345, + 3346, + 3347, + 3348, + 3349, + 3350, + 3351, + 3352, + 3353, + 3355, + 3356, + 3357, + 3358, + 3359, + 3360, + 3361, + 3362, + 3363, + 3364, + 3365, + 3366, + 3367, + 3368, + 3369, + 3370, + 3371, + 3372, + 3374, + 3375, + 3376, + 3377, + 3378, + 3379, + 3380, + 3381, + 3382, + 3383, + 3384, + 3385, + 3387, + 3388, + 3389, + 3390, + 3391, + 3392, + 3393, + 3394, + 3395, + 3396, + 3397, + 3398, + 3399, + 3400, + 3401, + 3402, + 3403, + 3404, + 3406, + 3407, + 3408, + 3409, + 3410, + 3411, + 3412, + 3413, + 3414, + 3415, + 3416, + 3417, + 3419, + 3420, + 3421, + 3422, + 3423, + 3424, + 3425, + 3426, + 3427, + 3428, + 3429, + 3430, + 3431, + 3432, + 3433, + 3434, + 3435, + 3436, + 3438, + 3439, + 3440, + 3441, + 3442, + 3443, + 3444, + 3445, + 3446, + 3447, + 3448, + 3449, + 3451, + 3452, + 3453, + 3454, + 3455, + 3456, + 3457, + 3458, + 3459, + 3460, + 3461, + 3462, + 3463, + 3464, + 3465, + 3466, + 3467, + 3468, + 3470, + 3471, + 3472, + 3473, + 3474, + 3475, + 3476, + 3477, + 3478, + 3479, + 3480, + 3481, + 3483, + 3484, + 3485, + 3486, + 3487, + 3488, + 3489, + 3490, + 3491, + 3492, + 3493, + 3494, + 3495, + 3496, + 3497, + 3498, + 3499, + 3500, + 3502, + 3503, + 3504, + 3505, + 3506, + 3507, + 3508, + 3509, + 3510, + 3511, + 3512, + 3513, + 3515, + 3516, + 3517, + 3518, + 3519, + 3520, + 3521, + 3522, + 3523, + 3524, + 3525, + 3526, + 3527, + 3528, + 3529, + 3530, + 3531, + 3532, + 3534, + 3535, + 3536, + 3537, + 3538, + 3539, + 3540, + 3541, + 3542, + 3543, + 3544, + 3545, + 3547, + 3548, + 3549, + 3550, + 3551, + 3552, + 3553, + 3554, + 3555, + 3556, + 3557, + 3558, + 3559, + 3560, + 3561, + 3562, + 3563, + 3564, + 3566, + 3567, + 3568, + 3569, + 3570, + 3571, + 3572, + 3573, + 3574, + 3575, + 3576, + 3577, + 3579, + 3580, + 3581, + 3582, + 3583, + 3584, + 3585, + 3586, + 3587, + 3588, + 3589, + 3590, + 3591, + 3592, + 3593, + 3594, + 3595, + 3596, + 3598, + 3599, + 3600, + 3601, + 3602, + 3603, + 3604, + 3605, + 3606, + 3607, + 3608, + 3609, + 3611, + 3612, + 3613, + 3614, + 3615, + 3616, + 3617, + 3618, + 3619, + 3620, + 3621, + 3622, + 3623, + 3624, + 3625, + 3626, + 3627, + 3628, + 3630, + 3631, + 3632, + 3633, + 3634, + 3635, + 3636, + 3637, + 3638, + 3639, + 3640, + 3641, + 3643, + 3644, + 3645, + 3646, + 3647, + 3648, + 3649, + 3650, + 3651, + 3652, + 3653, + 3654, + 3655, + 3656, + 3657, + 3658, + 3659, + 3660, + 3662, + 3663, + 3664, + 3665, + 3666, + 3667, + 3668, + 3669, + 3670, + 3671, + 3672, + 3673, + 3675, + 3676, + 3677, + 3678, + 3679, + 3680, + 3681, + 3682, + 3683, + 3684, + 3685, + 3686, + 3687, + 3688, + 3689, + 3690, + 3691, + 3692, + 3694, + 3695, + 3696, + 3697, + 3698, + 3699, + 3700, + 3701, + 3702, + 3703, + 3704, + 3705, + 3707, + 3708, + 3709, + 3710, + 3711, + 3712, + 3713, + 3714, + 3715, + 3716, + 3717, + 3718, + 3719, + 3720, + 3721, + 3722, + 3723, + 3724, + 3726, + 3727, + 3728, + 3729, + 3730, + 3731, + 3732, + 3733, + 3734, + 3735, + 3736, + 3737, + 3739, + 3740, + 3741, + 3742, + 3743, + 3744, + 3745, + 3746, + 3747, + 3748, + 3749, + 3750, + 3751, + 3752, + 3753, + 3754, + 3755, + 3756, + 3758, + 3759, + 3760, + 3761, + 3762, + 3763, + 3764, + 3765, + 3766, + 3767, + 3768, + 3769, + 3771, + 3772, + 3773, + 3774, + 3775, + 3776, + 3777, + 3778, + 3779, + 3780, + 3781, + 3782, + 3783, + 3784, + 3785, + 3786, + 3787, + 3788, + 3790, + 3791, + 3792, + 3793, + 3794, + 3795, + 3796, + 3797, + 3798, + 3799, + 3800, + 3801, + 3803, + 3804, + 3805, + 3806, + 3807, + 3808, + 3809, + 3810, + 3811, + 3812, + 3813, + 3814, + 3815, + 3816, + 3817, + 3818, + 3819, + 3820, + 3822, + 3823, + 3824, + 3825, + 3826, + 3827, + 3828, + 3829, + 3830, + 3831, + 3832, + 3833, + 3835, + 3836, + 3837, + 3838, + 3839, + 3840, + 3841, + 3842, + 3843, + 3844, + 3845, + 3846, + 3847, + 3848, + 3849, + 3850, + 3851, + 3852, + 3854, + 3855, + 3856, + 3857, + 3858, + 3859, + 3860, + 3861, + 3862, + 3863, + 3864, + 3865, + 3867, + 3868, + 3869, + 3870, + 3871, + 3872, + 3873, + 3874, + 3875, + 3876, + 3877, + 3878, + 3879, + 3880, + 3881, + 3882, + 3883, + 3884, + 3886, + 3887, + 3888, + 3889, + 3890, + 3891, + 3892, + 3893, + 3894, + 3895, + 3896, + 3897, + 3899, + 3900, + 3901, + 3902, + 3903, + 3904, + 3905, + 3906, + 3907, + 3908, + 3909, + 3910, + 3911, + 3912, + 3913, + 3914, + 3915, + 3916, + 3918, + 3919, + 3920, + 3921, + 3922, + 3923, + 3924, + 3925, + 3926, + 3927, + 3928, + 3929, + 3931, + 3932, + 3933, + 3934, + 3935, + 3936, + 3937, + 3938, + 3939, + 3940, + 3941, + 3942, + 3943, + 3944, + 3945, + 3946, + 3947, + 3948, + 3950, + 3951, + 3952, + 3953, + 3954, + 3955, + 3956, + 3957, + 3958, + 3959, + 3960, + 3961, + 3963, + 3964, + 3965, + 3966, + 3967, + 3968, + 3969, + 3970, + 3971, + 3972, + 3973, + 3974, + 3975, + 3976, + 3977, + 3978, + 3979, + 3980, + 3982, + 3983, + 3984, + 3985, + 3986, + 3987, + 3988, + 3989, + 3990, + 3991, + 3992, + 3993, + 3995, + 3996, + 3997, + 3998, + 3999, + 4000, + 4001, + 4002, + 4003, + 4004, + 4005, + 4006, + 4007, + 4008, + 4009, + 4010, + 4011, + 4012, + 4014, + 4015, + 4016, + 4017, + 4018, + 4019, + 4020, + 4021, + 4022, + 4023, + 4024, + 4025, + 4027, + 4028, + 4029, + 4030, + 4031, + 4032, + 4033, + 4034, + 4035, + 4036, + 4037, + 4038, + 4039, + 4040, + 4041, + 4042, + 4043, + 4044, + 4046, + 4047, + 4048, + 4049, + 4050, + 4051, + 4052, + 4053, + 4054, + 4055, + 4056, + 4057, + 4059, + 4060, + 4061, + 4062, + 4063, + 4064, + 4065, + 4066, + 4067, + 4068, + 4069, + 4070, + 4071, + 4072, + 4073, + 4074, + 4075, + 4076, + 4078, + 4079, + 4080, + 4081, + 4082, + 4083, + 4084, + 4085, + 4086, + 4087, + 4088, + 4089, + 4091, + 4092, + 4093, + 4094, + 4095, + 4096, + 4097, + 4098, + 4099, + 4100, + 4101, + 4102, + 4103, + 4104, + 4105, + 4106, + 4107, + 4108, + 4110, + 4111, + 4112, + 4113, + 4114, + 4115, + 4116, + 4117, + 4118, + 4119, + 4120, + 4121, + 4123, + 4124, + 4125, + 4126, + 4127, + 4128, + 4129, + 4130, + 4131, + 4132, + 4133, + 4134, + 4135, + 4136, + 4137, + 4138, + 4139, + 4140, + 4142, + 4143, + 4144, + 4145, + 4146, + 4147, + 4148, + 4149, + 4150, + 4151, + 4152, + 4153, + 4155, + 4156, + 4157, + 4158, + 4159, + 4160, + 4161, + 4162, + 4163, + 4164, + 4165, + 4166, + 4167, + 4168, + 4169, + 4170, + 4171, + 4172, + 4174, + 4175, + 4176, + 4177, + 4178, + 4179, + 4180, + 4181, + 4182, + 4183, + 4184, + 4185, + 4187, + 4188, + 4189, + 4190, + 4191, + 4192, + 4193, + 4194, + 4195, + 4196, + 4197, + 4198, + 4199, + 4200, + 4201, + 4202, + 4203, + 4204, + 4206, + 4207, + 4208, + 4209, + 4210, + 4211, + 4212, + 4213, + 4214, + 4215, + 4216, + 4217, + 4219, + 4220, + 4221, + 4222, + 4223, + 4224, + 4225, + 4226, + 4227, + 4228, + 4229, + 4230, + 4231, + 4232, + 4233, + 4234, + 4235, + 4236, + 4238, + 4239, + 4240, + 4241, + 4242, + 4243, + 4244, + 4245, + 4246, + 4247, + 4248, + 4249, + 4251, + 4252, + 4253, + 4254, + 4255, + 4256, + 4257, + 4258, + 4259, + 4260, + 4261, + 4262, + 4263, + 4264, + 4265, + 4266, + 4267, + 4268, + 4270, + 4271, + 4272, + 4273, + 4274, + 4275, + 4276, + 4277, + 4278, + 4279, + 4280, + 4281, + 4283, + 4284, + 4285, + 4286, + 4287, + 4288, + 4289, + 4290, + 4291, + 4292, + 4293, + 4294, + 4295, + 4296, + 4297, + 4298, + 4299, + 4300, + 4302, + 4303, + 4304, + 4305, + 4306, + 4307, + 4308, + 4309, + 4310, + 4311, + 4312, + 4313, + 4315, + 4316, + 4317, + 4318, + 4319, + 4320, + 4321, + 4322, + 4323, + 4324, + 4325, + 4326, + 4327, + 4328, + 4329, + 4330, + 4331, + 4332, + 4334, + 4335, + 4336, + 4337, + 4338, + 4339, + 4340, + 4341, + 4342, + 4343, + 4344, + 4345, + 4347, + 4348, + 4349, + 4350, + 4351, + 4352, + 4353, + 4354, + 4355, + 4356, + 4357, + 4358, + 4359, + 4360, + 4361, + 4362, + 4363, + 4364, + 4366, + 4367, + 4368, + 4369, + 4370, + 4371, + 4372, + 4373, + 4374, + 4375, + 4376, + 4377, + 4379, + 4380, + 4381, + 4382, + 4383, + 4384, + 4385, + 4386, + 4387, + 4388, + 4389, + 4390, + 4391, + 4392, + 4393, + 4394, + 4395, + 4396, + 4398, + 4399, + 4400, + 4401, + 4402, + 4403, + 4404, + 4405, + 4406, + 4407, + 4408, + 4409, + 4411, + 4412, + 4413, + 4414, + 4415, + 4416, + 4417, + 4418, + 4419, + 4420, + 4421, + 4422, + 4423, + 4424, + 4425, + 4426, + 4427, + 4428, + 4430, + 4431, + 4432, + 4433, + 4434, + 4435, + 4436, + 4437, + 4438, + 4439, + 4440, + 4441, + 4443, + 4444, + 4445, + 4446, + 4447, + 4448, + 4449, + 4450, + 4451, + 4452, + 4453, + 4454, + 4455, + 4456, + 4457, + 4458, + 4459, + 4460, + 4462, + 4463, + 4464, + 4465, + 4466, + 4467, + 4468, + 4469, + 4470, + 4471, + 4472, + 4473, + 4475, + 4476, + 4477, + 4478, + 4479, + 4480, + 4481, + 4482, + 4483, + 4484, + 4485, + 4486, + 4487, + 4488, + 4489, + 4490, + 4491, + 4492, + 4494, + 4495, + 4496, + 4497, + 4498, + 4499, + 4500, + 4501, + 4502, + 4503, + 4504, + 4505, + 4507, + 4508, + 4509, + 4510, + 4511, + 4512, + 4513, + 4514, + 4515, + 4516, + 4517, + 4518, + 4519, + 4520, + 4521, + 4522, + 4523, + 4524, + 4526, + 4527, + 4528, + 4529, + 4530, + 4531, + 4532, + 4533, + 4534, + 4535, + 4536, + 4537, + 4539, + 4540, + 4541, + 4542, + 4543, + 4544, + 4545, + 4546, + 4547, + 4548, + 4549, + 4550, + 4551, + 4552, + 4553, + 4554, + 4555, + 4556, + 4558, + 4559, + 4560, + 4561, + 4562, + 4563, + 4564, + 4565, + 4566, + 4567, + 4568, + 4569, + 4571, + 4572, + 4573, + 4574, + 4575, + 4576, + 4577, + 4578, + 4579, + 4580, + 4581, + 4582, + 4583, + 4584, + 4585, + 4586, + 4587, + 4588, + 4590, + 4591, + 4592, + 4593, + 4594, + 4595, + 4596, + 4597, + 4598, + 4599, + 4600, + 4601, + 4603, + 4604, + 4605, + 4606, + 4607, + 4608, + 4609, + 4610, + 4611, + 4612, + 4613, + 4614, + 4615, + 4616, + 4617, + 4618, + 4619, + 4620, + 4622, + 4623, + 4624, + 4625, + 4626, + 4627, + 4628, + 4629, + 4630, + 4631, + 4632, + 4633, + 4635, + 4636, + 4637, + 4638, + 4639, + 4640, + 4641, + 4642, + 4643, + 4644, + 4645, + 4646, + 4647, + 4648, + 4649, + 4650, + 4651, + 4652, + 4654, + 4655, + 4656, + 4657, + 4658, + 4659, + 4660, + 4661, + 4662, + 4663, + 4664, + 4665, + 4667, + 4668, + 4669, + 4670, + 4671, + 4672, + 4673, + 4674, + 4675, + 4676, + 4677, + 4678, + 4679, + 4680, + 4681, + 4682, + 4683, + 4684, + 4686, + 4687, + 4688, + 4689, + 4690, + 4691, + 4692, + 4693, + 4694, + 4695, + 4696, + 4697, + 4699, + 4700, + 4701, + 4702, + 4703, + 4704, + 4705, + 4706, + 4707, + 4708, + 4709, + 4710, + 4711, + 4712, + 4713, + 4714, + 4715, + 4716, + 4718, + 4719, + 4720, + 4721, + 4722, + 4723, + 4724, + 4725, + 4726, + 4727, + 4728, + 4729, + 4731, + 4732, + 4733, + 4734, + 4735, + 4736, + 4737, + 4738, + 4739, + 4740, + 4741, + 4742, + 4743, + 4744, + 4745, + 4746, + 4747, + 4748, + 4750, + 4751, + 4752, + 4753, + 4754, + 4755, + 4756, + 4757, + 4758, + 4759, + 4760, + 4761, + 4763, + 4764, + 4765, + 4766, + 4767, + 4768, + 4769, + 4770, + 4771, + 4772, + 4773, + 4774, + 4775, + 4776, + 4777, + 4778, + 4779, + 4780, + 4782, + 4783, + 4784, + 4785, + 4786, + 4787, + 4788, + 4789, + 4790, + 4791, + 4792, + 4793, + 4795, + 4796, + 4797, + 4798, + 4799, + 4800, + 4801, + 4802, + 4803, + 4804, + 4805, + 4806, + 4807, + 4808, + 4809, + 4810, + 4811, + 4812, + 4814, + 4815, + 4816, + 4817, + 4818, + 4819, + 4820, + 4821, + 4822, + 4823, + 4824, + 4825, + 4827, + 4828, + 4829, + 4830, + 4831, + 4832, + 4833, + 4834, + 4835, + 4836, + 4837, + 4838, + 4839, + 4840, + 4841, + 4842, + 4843, + 4844, + 4846, + 4847, + 4848, + 4849, + 4850, + 4851, + 4852, + 4853, + 4854, + 4855, + 4856, + 4857, + 4859, + 4860, + 4861, + 4862, + 4863, + 4864, + 4865, + 4866, + 4867, + 4868, + 4869, + 4870, + 4871, + 4872, + 4873, + 4874, + 4875, + 4876, + 4878, + 4879, + 4880, + 4881, + 4882, + 4883, + 4884, + 4885, + 4886, + 4887, + 4888, + 4889, + 4891, + 4892, + 4893, + 4894, + 4895, + 4896, + 4897, + 4898, + 4899, + 4900, + 4901, + 4902, + 4903, + 4904, + 4905, + 4906, + 4907, + 4908, + 4910, + 4911, + 4912, + 4913, + 4914, + 4915, + 4916, + 4917, + 4918, + 4919, + 4920, + 4921, + 4923, + 4924, + 4925, + 4926, + 4927, + 4928, + 4929, + 4930, + 4931, + 4932, + 4933, + 4934, + 4935, + 4936, + 4937, + 4938, + 4939, + 4940, + 4942, + 4943, + 4944, + 4945, + 4946, + 4947, + 4948, + 4949, + 4950, + 4951, + 4952, + 4953, + 4955, + 4956, + 4957, + 4958, + 4959, + 4960, + 4961, + 4962, + 4963, + 4964, + 4965, + 4966, + 4967, + 4968, + 4969, + 4970, + 4971, + 4972, + 4974, + 4975, + 4976, + 4977, + 4978, + 4979, + 4980, + 4981, + 4982, + 4983, + 4984, + 4985, + 4987, + 4988, + 4989, + 4990, + 4991, + 4992, + 4993, + 4994, + 4995, + 4996, + 4997, + 4998, + 4999, + 5000, + 5001, + 5002, + 5003, + 5004, + 5006, + 5007, + 5008, + 5009, + 5010, + 5011, + 5012, + 5013, + 5014, + 5015, + 5016, + 5017, + 5019, + 5020, + 5021, + 5022, + 5023, + 5024, + 5025, + 5026, + 5027, + 5028, + 5029, + 5030, + 5031, + 5032, + 5033, + 5034, + 5035, + 5036, + 5038, + 5039, + 5040, + 5041, + 5042, + 5043, + 5044, + 5045, + 5046, + 5047, + 5048, + 5049, + 5051, + 5052, + 5053, + 5054, + 5055, + 5056, + 5057, + 5058, + 5059, + 5060, + 5061, + 5062, + 5063, + 5064, + 5065, + 5066, + 5067, + 5068, + 5070, + 5071, + 5072, + 5073, + 5074, + 5075, + 5076, + 5077, + 5078, + 5079, + 5080, + 5081, + 5083, + 5084, + 5085, + 5086, + 5087, + 5088, + 5089, + 5090, + 5091, + 5092, + 5093, + 5094, + 5095, + 5096, + 5097, + 5098, + 5099, + 5100, + 5102, + 5103, + 5104, + 5105, + 5106, + 5107, + 5108, + 5109, + 5110, + 5111, + 5112, + 5113, + 5115, + 5116, + 5117, + 5118, + 5119, + 5120, + 5121, + 5122, + 5123, + 5124, + 5125, + 5126, + 5127, + 5128, + 5129, + 5130, + 5131, + 5132, + 5134, + 5135, + 5136, + 5137, + 5138, + 5139, + 5140, + 5141, + 5142, + 5143, + 5144, + 5145, + 5147, + 5148, + 5149, + 5150, + 5151, + 5152, + 5153, + 5154, + 5155, + 5156, + 5157, + 5158, + 5159, + 5160, + 5161, + 5162, + 5163, + 5164, + 5166, + 5167, + 5168, + 5169, + 5170, + 5171, + 5172, + 5173, + 5174, + 5175, + 5176, + 5177, + 5179, + 5180, + 5181, + 5182, + 5183, + 5184, + 5185, + 5186, + 5187, + 5188, + 5189, + 5190, + 5191, + 5192, + 5193, + 5194, + 5195, + 5196, + 5198, + 5199, + 5200, + 5201, + 5202, + 5203, + 5204, + 5205, + 5206, + 5207, + 5208, + 5209, + 5211, + 5212, + 5213, + 5214, + 5215, + 5216, + 5217, + 5218, + 5219, + 5220, + 5221, + 5222, + 5223, + 5224, + 5225, + 5226, + 5227, + 5228, + 5230, + 5231, + 5232, + 5233, + 5234, + 5235, + 5236, + 5237, + 5238, + 5239, + 5240, + 5241, + 5243, + 5244, + 5245, + 5246, + 5247, + 5248, + 5249, + 5250, + 5251, + 5252, + 5253, + 5254, + 5255, + 5256, + 5257, + 5258, + 5259, + 5260, + 5262, + 5263, + 5264, + 5265, + 5266, + 5267, + 5268, + 5269, + 5270, + 5271, + 5272, + 5273, + 5275, + 5276, + 5277, + 5278, + 5279, + 5280, + 5281, + 5282, + 5283, + 5284, + 5285, + 5286, + 5287, + 5288, + 5289, + 5290, + 5291, + 5292, + 5294, + 5295, + 5296, + 5297, + 5298, + 5299, + 5300, + 5301, + 5302, + 5303, + 5304, + 5305, + 5307, + 5308, + 5309, + 5310, + 5311, + 5312, + 5313, + 5314, + 5315, + 5316, + 5317, + 5318, + 5319, + 5320, + 5321, + 5322, + 5323, + 5324, + 5326, + 5327, + 5328, + 5329, + 5330, + 5331, + 5332, + 5333, + 5334, + 5335, + 5336, + 5337, + 5339, + 5340, + 5341, + 5342, + 5343, + 5344, + 5345, + 5346, + 5347, + 5348, + 5349, + 5350, + 5351, + 5352, + 5353, + 5354, + 5355, + 5356, + 5358, + 5359, + 5360, + 5361, + 5362, + 5363, + 5364, + 5365, + 5366, + 5367, + 5368, + 5369, + 5371, + 5372, + 5373, + 5374, + 5375, + 5376, + 5377, + 5378, + 5379, + 5380, + 5381, + 5382, + 5383, + 5384, + 5385, + 5386, + 5387, + 5388, + 5390, + 5391, + 5392, + 5393, + 5394, + 5395, + 5396, + 5397, + 5398, + 5399, + 5400, + 5401, + 5403, + 5404, + 5405, + 5406, + 5407, + 5408, + 5409, + 5410, + 5411, + 5412, + 5413, + 5414, + 5415, + 5416, + 5417, + 5418, + 5419, + 5420, + 5422, + 5423, + 5424, + 5425, + 5426, + 5427, + 5428, + 5429, + 5430, + 5431, + 5432, + 5433, + 5435, + 5436, + 5437, + 5438, + 5439, + 5440, + 5441, + 5442, + 5443, + 5444, + 5445, + 5446, + 5447, + 5448, + 5449, + 5450, + 5451, + 5452, + 5454, + 5455, + 5456, + 5457, + 5458, + 5459, + 5460, + 5461, + 5462, + 5463, + 5464, + 5465, + 5467, + 5468, + 5469, + 5470, + 5471, + 5472, + 5473, + 5474, + 5475, + 5476, + 5477, + 5478, + 5479, + 5480, + 5481, + 5482, + 5483, + 5484, + 5486, + 5487, + 5488, + 5489, + 5490, + 5491, + 5492, + 5493, + 5494, + 5495, + 5496, + 5497, + 5499, + 5500, + 5501, + 5502, + 5503, + 5504, + 5505, + 5506, + 5507, + 5508, + 5509, + 5510, + 5511, + 5512, + 5513, + 5514, + 5515, + 5516, + 5518, + 5519, + 5520, + 5521, + 5522, + 5523, + 5524, + 5525, + 5526, + 5527, + 5528, + 5529, + 5531, + 5532, + 5533, + 5534, + 5535, + 5536, + 5537, + 5538, + 5539, + 5540, + 5541, + 5542, + 5543, + 5544, + 5545, + 5546, + 5547, + 5548, + 5550, + 5551, + 5552, + 5553, + 5554, + 5555, + 5556, + 5557, + 5558, + 5559, + 5560, + 5561, + 5563, + 5564, + 5565, + 5566, + 5567, + 5568, + 5569, + 5570, + 5571, + 5572, + 5573, + 5574, + 5575, + 5576, + 5577, + 5578, + 5579, + 5580, + 5582, + 5583, + 5584, + 5585, + 5586, + 5587, + 5588, + 5589, + 5590, + 5591, + 5592, + 5593, + 5595, + 5596, + 5597, + 5598, + 5599, + 5600, + 5601, + 5602, + 5603, + 5604, + 5605, + 5606, + 5607, + 5608, + 5609, + 5610, + 5611, + 5612, + 5614, + 5615, + 5616, + 5617, + 5618, + 5619, + 5620, + 5621, + 5622, + 5623, + 5624, + 5625, + 5627, + 5628, + 5629, + 5630, + 5631, + 5632, + 5633, + 5634, + 5635, + 5636, + 5637, + 5638, + 5639, + 5640, + 5641, + 5642, + 5643, + 5644, + 5646, + 5647, + 5648, + 5649, + 5650, + 5651, + 5652, + 5653, + 5654, + 5655, + 5656, + 5657, + 5659, + 5660, + 5661, + 5662, + 5663, + 5664, + 5665, + 5666, + 5667, + 5668, + 5669, + 5670, + 5671, + 5672, + 5673, + 5674, + 5675, + 5676, + 5678, + 5679, + 5680, + 5681, + 5682, + 5683, + 5684, + 5685, + 5686, + 5687, + 5688, + 5689, + 5691, + 5692, + 5693, + 5694, + 5695, + 5696, + 5697, + 5698, + 5699, + 5700, + 5701, + 5702, + 5703, + 5704, + 5705, + 5706, + 5707, + 5708, + 5710, + 5711, + 5712, + 5713, + 5714, + 5715, + 5716, + 5717, + 5718, + 5719, + 5720, + 5721, + 5723, + 5724, + 5725, + 5726, + 5727, + 5728, + 5729, + 5730, + 5731, + 5732, + 5733, + 5734, + 5735, + 5736, + 5737, + 5738, + 5739, + 5740, + 5742, + 5743, + 5744, + 5745, + 5746, + 5747, + 5748, + 5749, + 5750, + 5751, + 5752, + 5753, + 5755, + 5756, + 5757, + 5758, + 5759, + 5760, + 5761, + 5762, + 5763, + 5764, + 5765, + 5766, + 5767, + 5768, + 5769, + 5770, + 5771, + 5772, + 5774, + 5775, + 5776, + 5777, + 5778, + 5779, + 5780, + 5781, + 5782, + 5783, + 5784, + 5785, + 5787, + 5788, + 5789, + 5790, + 5791, + 5792, + 5793, + 5794, + 5795, + 5796, + 5797, + 5798, + 5799, + 5800, + 5801, + 5802, + 5803, + 5804, + 5806, + 5807, + 5808, + 5809, + 5810, + 5811, + 5812, + 5813, + 5814, + 5815, + 5816, + 5817, + 5819, + 5820, + 5821, + 5822, + 5823, + 5824, + 5825, + 5826, + 5827, + 5828, + 5829, + 5830, + 5831, + 5832, + 5833, + 5834, + 5835, + 5836, + 5838, + 5839, + 5840, + 5841, + 5842, + 5843, + 5844, + 5845, + 5846, + 5847, + 5848, + 5849, + 5851, + 5852, + 5853, + 5854, + 5855, + 5856, + 5857, + 5858, + 5859, + 5860, + 5861, + 5862, + 5863, + 5864, + 5865, + 5866, + 5867, + 5868, + 5870, + 5871, + 5872, + 5873, + 5874, + 5875, + 5876, + 5877, + 5878, + 5879, + 5880, + 5881, + 5883, + 5884, + 5885, + 5886, + 5887, + 5888, + 5889, + 5890, + 5891, + 5892, + 5893, + 5894, + 5895, + 5896, + 5897, + 5898, + 5899, + 5900, + 5902, + 5903, + 5904, + 5905, + 5906, + 5907, + 5908, + 5909, + 5910, + 5911, + 5912, + 5913, + 5915, + 5916, + 5917, + 5918, + 5919, + 5920, + 5921, + 5922, + 5923, + 5924, + 5925, + 5926, + 5927, + 5928, + 5929, + 5930, + 5931, + 5932, + 5934, + 5935, + 5936, + 5937, + 5938, + 5939, + 5940, + 5941, + 5942, + 5943, + 5944, + 5945, + 5947, + 5948, + 5949, + 5950, + 5951, + 5952, + 5953, + 5954, + 5955, + 5956, + 5957, + 5958, + 5959, + 5960, + 5961, + 5962, + 5963, + 5964, + 5966, + 5967, + 5968, + 5969, + 5970, + 5971, + 5972, + 5973, + 5974, + 5975, + 5976, + 5977, + 5979, + 5980, + 5981, + 5982, + 5983, + 5984, + 5985, + 5986, + 5987, + 5988, + 5989, + 5990, + 5991, + 5992, + 5993, + 5994, + 5995, + 5996, + 5998, + 5999, + 6000, + 6001, + 6002, + 6003, + 6004, + 6005, + 6006, + 6007, + 6008, + 6009, + 6011, + 6012, + 6013, + 6014, + 6015, + 6016, + 6017, + 6018, + 6019, + 6020, + 6021, + 6022, + 6023, + 6024, + 6025, + 6026, + 6027, + 6028, + 6030, + 6031, + 6032, + 6033, + 6034, + 6035, + 6036, + 6037, + 6038, + 6039, + 6040, + 6041, + 6043, + 6044, + 6045, + 6046, + 6047, + 6048, + 6049, + 6050, + 6051, + 6052, + 6053, + 6054, + 6055, + 6056, + 6057, + 6058, + 6059, + 6060, + 6062, + 6063, + 6064, + 6065, + 6066, + 6067, + 6068, + 6069, + 6070, + 6071, + 6072, + 6073, + 6075, + 6076, + 6077, + 6078, + 6079, + 6080, + 6081, + 6082, + 6083, + 6084, + 6085, + 6086, + 6087, + 6088, + 6089, + 6090, + 6091, + 6092, + 6094, + 6095, + 6096, + 6097, + 6098, + 6099, + 6100, + 6101, + 6102, + 6103, + 6104, + 6105, + 6107, + 6108, + 6109, + 6110, + 6111, + 6112, + 6113, + 6114, + 6115, + 6116, + 6117, + 6118, + 6119, + 6120, + 6121, + 6122, + 6123, + 6124, + 6126, + 6127, + 6128, + 6129, + 6130, + 6131, + 6132, + 6133, + 6134, + 6135, + 6136, + 6137, + 6139, + 6140, + 6141, + 6142, + 6143, + 6144, + 6145, + 6146, + 6147, + 6148, + 6149, + 6150, + 6151, + 6152, + 6153, + 6154, + 6155, + 6156, + 6158, + 6159, + 6160, + 6161, + 6162, + 6163, + 6164, + 6165, + 6166, + 6167, + 6168, + 6169, + 6171, + 6172, + 6173, + 6174, + 6175, + 6176, + 6177, + 6178, + 6179, + 6180, + 6181, + 6182, + 6183, + 6184, + 6185, + 6186, + 6187, + 6188, + 6190, + 6191, + 6192, + 6193, + 6194, + 6195, + 6196, + 6197, + 6198, + 6199, + 6200, + 6201, + 6203, + 6204, + 6205, + 6206, + 6207, + 6208, + 6209, + 6210, + 6211, + 6212, + 6213, + 6214, + 6215, + 6216, + 6217, + 6218, + 6219, + 6220, + 6222, + 6223, + 6224, + 6225, + 6226, + 6227, + 6228, + 6229, + 6230, + 6231, + 6232, + 6233, + 6235, + 6236, + 6237, + 6238, + 6239, + 6240, + 6241, + 6242, + 6243, + 6244, + 6245, + 6246, + 6247, + 6248, + 6249, + 6250, + 6251, + 6252, + 6254, + 6255, + 6256, + 6257, + 6258, + 6259, + 6260, + 6261, + 6262, + 6263, + 6264, + 6265, + 6267, + 6268, + 6269, + 6270, + 6271, + 6272, + 6273, + 6274, + 6275, + 6276, + 6277, + 6278, + 6279, + 6280, + 6281, + 6282, + 6283, + 6284, + 6286, + 6287, + 6288, + 6289, + 6290, + 6291, + 6292, + 6293, + 6294, + 6295, + 6296, + 6297, + 6299, + 6300, + 6301, + 6302, + 6303, + 6304, + 6305, + 6306, + 6307, + 6308, + 6309, + 6310, + 6311, + 6312, + 6313, + 6314, + 6315, + 6316, + 6318, + 6319, + 6320, + 6321, + 6322, + 6323, + 6324, + 6325, + 6326, + 6327, + 6328, + 6329, + 6331, + 6332, + 6333, + 6334, + 6335, + 6336, + 6337, + 6338, + 6339, + 6340, + 6341, + 6342, + 6343, + 6344, + 6345, + 6346, + 6347, + 6348, + 6350, + 6351, + 6352, + 6353, + 6354, + 6355, + 6356, + 6357, + 6358, + 6359, + 6360, + 6361, + 6363, + 6364, + 6365, + 6366, + 6367, + 6368, + 6369, + 6370, + 6371, + 6372, + 6373, + 6374, + 6375, + 6376, + 6377, + 6378, + 6379, + 6380, + 6382, + 6383, + 6384, + 6385, + 6386, + 6387, + 6388, + 6389, + 6390, + 6391, + 6392, + 6393, + 6395, + 6396, + 6397, + 6398, + 6399, + 6400, + 6401, + 6402, + 6403, + 6404, + 6405, + 6406, + 6407, + 6408, + 6409, + 6410, + 6411, + 6412, + 6414, + 6415, + 6416, + 6417, + 6418, + 6419, + 6420, + 6421, + 6422, + 6423, + 6424, + 6425, + 6427, + 6428, + 6429, + 6430, + 6431, + 6432, + 6433, + 6434, + 6435, + 6436, + 6437, + 6438, + 6439, + 6440, + 6441, + 6442, + 6443, + 6444, + 6446, + 6447, + 6448, + 6449, + 6450, + 6451, + 6452, + 6453, + 6454, + 6455, + 6456, + 6457, + 6459, + 6460, + 6461, + 6462, + 6463, + 6464, + 6465, + 6466, + 6467, + 6468, + 6469, + 6470, + 6471, + 6472, + 6473, + 6474, + 6475, + 6476, + 6478, + 6479, + 6480, + 6481, + 6482, + 6483, + 6484, + 6485, + 6486, + 6487, + 6488, + 6489, + 6491, + 6492, + 6493, + 6494, + 6495, + 6496, + 6497, + 6498, + 6499, + 6500, + 6501, + 6502, + 6503, + 6504, + 6505, + 6506, + 6507, + 6508, + 6510, + 6511, + 6512, + 6513, + 6514, + 6515, + 6516, + 6517, + 6518, + 6519, + 6520, + 6521, + 6523, + 6524, + 6525, + 6526, + 6527, + 6528, + 6529, + 6530, + 6531, + 6532, + 6533, + 6534, + 6535, + 6536, + 6537, + 6538, + 6539, + 6540, + 6542, + 6543, + 6544, + 6545, + 6546, + 6547, + 6548, + 6549, + 6550, + 6551, + 6552, + 6553, + 6555, + 6556, + 6557, + 6558, + 6559, + 6560, + 6561, + 6562, + 6563, + 6564, + 6565, + 6566, + 6567, + 6568, + 6569, + 6570, + 6571, + 6572, + 6574, + 6575, + 6576, + 6577, + 6578, + 6579, + 6580, + 6581, + 6582, + 6583, + 6584, + 6585, + 6587, + 6588, + 6589, + 6590, + 6591, + 6592, + 6593, + 6594, + 6595, + 6596, + 6597, + 6598, + 6599, + 6600, + 6601, + 6602, + 6603, + 6604, + 6606, + 6607, + 6608, + 6609, + 6610, + 6611, + 6612, + 6613, + 6614, + 6615, + 6616, + 6617, + 6619, + 6620, + 6621, + 6622, + 6623, + 6624, + 6625, + 6626, + 6627, + 6628, + 6629, + 6630, + 6631, + 6632, + 6633, + 6634, + 6635, + 6636, + 6638, + 6639, + 6640, + 6641, + 6642, + 6643, + 6644, + 6645, + 6646, + 6647, + 6648, + 6649, + 6651, + 6652, + 6653, + 6654, + 6655, + 6656, + 6657, + 6658, + 6659, + 6660, + 6661, + 6662, + 6663, + 6664, + 6665, + 6666, + 6667, + 6668, + 6670, + 6671, + 6672, + 6673, + 6674, + 6675, + 6676, + 6677, + 6678, + 6679, + 6680, + 6681, + 6683, + 6684, + 6685, + 6686, + 6687, + 6688, + 6689, + 6690, + 6691, + 6692, + 6693, + 6694, + 6695, + 6696, + 6697, + 6698, + 6699, + 6700, + 6702, + 6703, + 6704, + 6705, + 6706, + 6707, + 6708, + 6709, + 6710, + 6711, + 6712, + 6713, + 6715, + 6716, + 6717, + 6718, + 6719, + 6720, + 6721, + 6722, + 6723, + 6724, + 6725, + 6726, + 6727, + 6728, + 6729, + 6730, + 6731, + 6732, + 6734, + 6735, + 6736, + 6737, + 6738, + 6739, + 6740, + 6741, + 6742, + 6743, + 6744, + 6745, + 6747, + 6748, + 6749, + 6750, + 6751, + 6752, + 6753, + 6754, + 6755, + 6756, + 6757, + 6758, + 6759, + 6760, + 6761, + 6762, + 6763, + 6764, + 6766, + 6767, + 6768, + 6769, + 6770, + 6771, + 6772, + 6773, + 6774, + 6775, + 6776, + 6777, + 6779, + 6780, + 6781, + 6782, + 6783, + 6784, + 6785, + 6786, + 6787, + 6788, + 6789, + 6790, + 6791, + 6792, + 6793, + 6794, + 6795, + 6796, + 6798, + 6799, + 6800, + 6801, + 6802, + 6803, + 6804, + 6805, + 6806, + 6807, + 6808, + 6809, + 6811, + 6812, + 6813, + 6814, + 6815, + 6816, + 6817, + 6818, + 6819, + 6820, + 6821, + 6822, + 6823, + 6824, + 6825, + 6826, + 6827, + 6828, + 6830, + 6831, + 6832, + 6833, + 6834, + 6835, + 6836, + 6837, + 6838, + 6839, + 6840, + 6841, + 6843, + 6844, + 6845, + 6846, + 6847, + 6848, + 6849, + 6850, + 6851, + 6852, + 6853, + 6854, + 6855, + 6856, + 6857, + 6858, + 6859, + 6860, + 6862, + 6863, + 6864, + 6865, + 6866, + 6867, + 6868, + 6869, + 6870, + 6871, + 6872, + 6873, + 6875, + 6876, + 6877, + 6878, + 6879, + 6880, + 6881, + 6882, + 6883, + 6884, + 6885, + 6886, + 6887, + 6888, + 6889, + 6890, + 6891, + 6892, + 6894, + 6895, + 6896, + 6897, + 6898, + 6899, + 6900, + 6901, + 6902, + 6903, + 6904, + 6905, + 6907, + 6908, + 6909, + 6910, + 6911, + 6912, + 6913, + 6914, + 6915, + 6916, + 6917, + 6918, + 6919, + 6920, + 6921, + 6922, + 6923, + 6924, + 6926, + 6927, + 6928, + 6929, + 6930, + 6931, + 6932, + 6933, + 6934, + 6935, + 6936, + 6937, + 6939, + 6940, + 6941, + 6942, + 6943, + 6944, + 6945, + 6946, + 6947, + 6948, + 6949, + 6950, + 6951, + 6952, + 6953, + 6954, + 6955, + 6956, + 6958, + 6959, + 6960, + 6961, + 6962, + 6963, + 6964, + 6965, + 6966, + 6967, + 6968, + 6969, + 6971, + 6972, + 6973, + 6974, + 6975, + 6976, + 6977, + 6978, + 6979, + 6980, + 6981, + 6982, + 6983, + 6984, + 6985, + 6986, + 6987, + 6988, + 6990, + 6991, + 6992, + 6993, + 6994, + 6995, + 6996, + 6997, + 6998, + 6999, + 7000, + 7001, + 7003, + 7004, + 7005, + 7006, + 7007, + 7008, + 7009, + 7010, + 7011, + 7012, + 7013, + 7014, + 7015, + 7016, + 7017, + 7018, + 7019, + 7020, + 7022, + 7023, + 7024, + 7025, + 7026, + 7027, + 7028, + 7029, + 7030, + 7031, + 7032, + 7033, + 7035, + 7036, + 7037, + 7038, + 7039, + 7040, + 7041, + 7042, + 7043, + 7044, + 7045, + 7046, + 7047, + 7048, + 7049, + 7050, + 7051, + 7052, + 7053, + 7054, + 7055, + 7056, + 7057, + 7058, + 7059, + 7060, + 7061, + 7062, + 7063, + 7064, + 7065, + 7066, + 7067, + 7068, + 7069, + 7070, + 7071, + 7072, + 7073, + 7074, + 7075, + 7076, + 7077, + 7078, + 7079, + 7080, + 7081, + 7082, + 7083, + 7084, + 7085, + 7086, + 7087, + 7088, + 7089, + 7090, + 7091, + 7092, + 7093, + 7094, + 7095, + 7096, + 7097, + 7098, + 7099, + 7100, + 7101, + 7102, + 7103, + 7104, + 7105, + 7106, + 7107, + 7108, + 7109, + 7110, + 7111, + 7112, + 7113, + 7114, + 7115, + 7116, + 7117, + 7118, + 7119, + 7120, + 7121, + 7122, + 7123, + 7124, + 7125, + 7126, + 7127, + 7128, + 7129, + 7130, + 7131, + 7132, + 7133, + 7134, + 7135, + 7136, + 7137, + 7138, + 7139, + 7140, + 7141, + 7142, + 7143, + 7144, + 7145, + 7146, + 7147, + 7148, + 7149, + 7150, + 7151, + 7152, + 7153, + 7154, + 7155, + 7156, + 7157, + 7158, + 7159, + 7160, + 7161, + 7162, + 7163, + 7164, + 7165, + 7166, + 7167, + 7168, + 7169, + 7170, + 7171, + 7172, + 7173, + 7174, + 7175, + 7176, + 7177, + 7178, + 7179, + 7180, + 7181, + 7182, + 7183, + 7184, + 7185, + 7186, + 7187, + 7188, + 7189, + 7190, + 7191, + 7192, + 7193, + 7194, + 7195, + 7196, + 7197, + 7198, + 7199, + 7200, + 7201, + 7202, + 7203, + 7204, + 7205, + 7206, + 7207, + 7208, + 7209, + 7210, + 7211, + 7212, + 7213, + 7214, + 7215, + 7216, + 7217, + 7218, + 7219, + 7220, + 7221, + 7222, + 7223, + 7224, + 7225, + 7226, + 7227, + 7228, + 7229, + 7230, + 7231, + 7232, + 7233, + 7234, + 7235, + 7236, + 7237, + 7238, + 7239, + 7240, + 7241, + 7242, + 7243, + 7244, + 7245, + 7246, + 7247, + 7248, + 7249, + 7250, + 7251, + 7252, + 7253, + 7254, + 7255, + 7256, + 7257, + 7258, + 7259, + 7260, + 7261, + 7262, + 7263, + 7264, + 7265, + 7266, + 7267, + 7268, + 7269, + 7270, + 7271, + 7272, + 7273, + 7274, + 7275, + 7276, + 7277, + 7278, + 7279, + 7280, + 7281, + 7282, + 7283, + 7284, + 7285, + 7286, + 7287, + 7288, + 7289, + 7290, + 7291, + 7292, + 7293, + 7294, + 7295, + 7296, + 7297, + 7298, + 7299, + 7300, + 7301, + 7302, + 7303, + 7304, + 7305, + 7306, + 7307, + 7308, + 7309, + 7310, + 7311, + 7312, + 7313, + 7314, + 7315, + 7316, + 7317, + 7318, + 7319, + 7320, + 7321, + 7322, + 7323, + 7324, + 7325, + 7326, + 7327, + 7328, + 7329, + 7330, + 7331, + 7332, + 7333, + 7334, + 7335, + 7336, + 7337, + 7338, + 7339, + 7340, + 7341, + 7342, + 7343, + 7344, + 7345, + 7346, + 7347, + 7348, + 7349, + 7350, + 7351, + 7352, + 7353, + 7354, + 7355, + 7356, + 7357, + 7358, + 7359, + 7360, + 7361, + 7362, + 7363, + 7364, + 7365, + 7366, + 7367, + 7368, + 7369, + 7370, + 7371, + 7372, + 7373, + 7374, + 7375, + 7376, + 7377, + 7378, + 7379, + 7380, + 7381, + 7382, + 7383, + 7384, + 7385, + 7386, + 7387, + 7388, + 7389, + 7390, + 7391, + 7392, + 7393, + 7394, + 7395, + 7396, + 7397, + 7398, + 7399, + 7400, + 7401, + 7402, + 7403, + 7404, + 7405, + 7406, + 7407, + 7408, + 7409, + 7410, + 7411, + 7412, + 7413, + 7414, + 7415, + 7416, + 7417, + 7418, + 7419, + 7420, + 7421, + 7422, + 7423, + 7424, + 7425, + 7426, + 7427, + 7428, + 7429, + 7430, + 7431, + 7432, + 7433, + 7434, + 7435, + 7436, + 7437, + 7438, + 7439, + 7440, + 7441, + 7442, + 7443, + 7444, + 7445, + 7446, + 7447, + 7448, + 7449, + 7450, + 7451, + 7452, + 7453, + 7454, + 7455, + 7456, + 7457, + 7458, + 7459, + 7460, + 7461, + 7462, + 7463, + 7464, + 7465, + 7466, + 7467, + 7468, + 7469, + 7470, + 7471, + 7472, + 7473, + 7474, + 7475, + 7476, + 7477, + 7478, + 7479, + 7480, + 7481, + 7482, + 7483, + 7484, + 7485, + 7486, + 7487, + 7488, + 7489, + 7490, + 7491, + 7492, + 7493, + 7494, + 7495, + 7496, + 7497, + 7498, + 7499, + 7500, + 7501, + 7502, + 7503, + 7504, + 7505, + 7506, + 7507, + 7508, + 7509, + 7510, + 7511, + 7512, + 7513, + 7514, + 7515, + 7516, + 7517, + 7518, + 7519, + 7520, + 7521, + 7522, + 7523, + 7524, + 7525, + 7526, + 7527, + 7528, + 7529, + 7530, + 7531, + 7532, + 7533, + 7534, + 7535, + 7536, + 7537, + 7538, + 7539, + 7540, + 7541, + 7542, + 7543, + 7544, + 7545, + 7546, + 7547, + 7548, + 7549, + 7550, + 7551, + 7552, + 7553, + 7554, + 7555, + 7556, + 7557, + 7558, + 7559, + 7560, + 7561, + 7562, + 7563, + 7564, + 7565, + 7566, + 7567, + 7568, + 7569, + 7570, + 7571, + 7572, + 7573, + 7574, + 7575, + 7576, + 7577, + 7578, + 7579, + 7580, + 7581, + 7582, + 7583, + 7584, + 7585, + 7586, + 7587, + 7588, + 7589, + 7590, + 7591, + 7592, + 7593, + 7594, + 7595, + 7596, + 7597, + 7598, + 7599, + 7600, + 7601, + 7602, + 7603, + 7604, + 7605, + 7606, + 7607, + 7608, + 7609, + 7610, + 7611, + 7612, + 7613, + 7614, + 7615, + 7616, + 7617, + 7618, + 7619, + 7620, + 7621, + 7622, + 7623, + 7624, + 7625, + 7626, + 7627, + 7628, + 7629, + 7630, + 7631, + 7632, + 7633, + 7634, + 7635, + 7636, + 7637, + 7638, + 7639, + 7640, + 7641, + 7642, + 7643, + 7644, + 7645, + 7646, + 7647, + 7648, + 7649, + 7650, + 7651, + 7652, + 7653, + 7654, + 7655, + 7656, + 7657, + 7658, + 7659, + 7660, + 7661, + 7662, + 7663, + 7664, + 7665, + 7666, + 7667, + 7668, + 7669, + 7670, + 7671, + 7672, + 7673, + 7674, + 7675, + 7676, + 7677, + 7678, + 7679, + 7680, + 7681, + 7682, + 7683, + 7684, + 7685, + 7686, + 7687, + 7688, + 7689, + 7690, + 7691, + 7692, + 7693, + 7694, + 7695, + 7696, + 7697, + 7698, + 7699, + 7700, + 7701, + 7702, + 7703, + 7704, + 7705, + 7706, + 7707, + 7708, + 7709, + 7710, + 7711, + 7712, + 7713, + 7714, + 7715, + 7716, + 7717, + 7718, + 7719, + 7720, + 7721, + 7722, + 7723, + 7724, + 7725, + 7726, + 7727, + 7728, + 7729, + 7730, + 7731, + 7732, + 7733, + 7734, + 7735, + 7736, + 7737, + 7738, + 7739, + 7740, + 7741, + 7742, + 7743, + 7744, + 7745, + 7746, + 7747, + 7748, + 7749, + 7750, + 7751, + 7752, + 7753, + 7754, + 7755, + 7756, + 7757, + 7758, + 7759, + 7760, + 7761, + 7762, + 7763, + 7764, + 7765, + 7766, + 7767, + 7768, + 7769, + 7770, + 7771, + 7772, + 7773, + 7774, + 7775, + 7776, + 7777, + 7778, + 7779, + 7780, + 7781, + 7782, + 7783, + 7784, + 7785, + 7786, + 7787, + 7788, + 7789, + 7790, + 7791, + 7792, + 7793, + 7794, + 7795, + 7796, + 7797, + 7798, + 7799, + 7800, + 7801, + 7802, + 7803, + 7804, + 7805, + 7806, + 7807, + 7808, + 7809, + 7810, + 7811, + 7812, + 7813, + 7814, + 7815, + 7816, + 7817, + 7818, + 7819, + 7820, + 7821, + 7822, + 7823, + 7824, + 7825, + 7826, + 7827, + 7828, + 7829, + 7830, + 7831, + 7832, + 7833, + 7834, + 7835, + 7836, + 7837, + 7838, + 7839, + 7840, + 7841, + 7842, + 7843, + 7844, + 7845, + 7846, + 7847, + 7848, + 7849, + 7850, + 7851, + 7852, + 7853, + 7854, + 7855, + 7856, + 7857, + 7858, + 7859, + 7860, + 7861, + 7862, + 7863, + 7864, + 7865, + 7866, + 7867, + 7868, + 7869, + 7870, + 7871, + 7872, + 7873, + 7874, + 7875, + 7876, + 7877, + 7878, + 7879, + 7880, + 7881, + 7882, + 7883, + 7884, + 7885, + 7886, + 7887, + 7888, + 7889, + 7890, + 7891, + 7892, + 7893, + 7894, + 7895, + 7896, + 7897, + 7898, + 7899, + 7900, + 7901, + 7902, + 7903, + 7904, + 7905, + 7906, + 7907, + 7908, + 7909, + 7910, + 7911, + 7912, + 7913, + 7914, + 7915, + 7916, + 7917, + 7918, + 7919, + 7920, + 7921, + 7922, + 7923, + 7924, + 7925, + 7926, + 7927, + 7928, + 7929, + 7930, + 7931, + 7932, + 7933, + 7934, + 7935, + 7936, + 7937, + 7938, + 7939, + 7940, + 7941, + 7942, + 7943, + 7944, + 7945, + 7946, + 7947, + 7948, + 7949, + 7950, + 7951, + 7952, + 7953, + 7954, + 7955, + 7956, + 7957, + 7958, + 7959, + 7960, + 7961, + 7962, + 7963, + 7964, + 7965, + 7966, + 7967, + 7968, + 7969, + 7970, + 7971, + 7972, + 7973, + 7974, + 7975, + 7976, + 7977, + 7978, + 7979, + 7980, + 7981, + 7982, + 7983, + 7984, + 7985, + 7986, + 7987, + 7988, + 7989, + 7990, + 7991, + 7992, + 7993, + 7994, + 7995, + 7996, + 7997, + 7998, + 7999, + 8000, + 8001, + 8002, + 8003, + 8004, + 8005, + 8006, + 8007, + 8008, + 8009, + 8010, + 8011, + 8012, + 8013, + 8014, + 8015, + 8016, + 8017, + 8018, + 8019, + 8020, + 8021, + 8022, + 8023, + 8024, + 8025, + 8026, + 8027, + 8028, + 8029, + 8030, + 8031, + 8032, + 8033, + 8034, + 8035, + 8036, + 8037, + 8038, + 8039, + 8040, + 8041, + 8042, + 8043, + 8044, + 8045, + 8046, + 8047, + 8048, + 8049, + 8050, + 8051, + 8052, + 8053, + 8054, + 8055, + 8056, + 8057, + 8058, + 8059, + 8060, + 8061, + 8062, + 8063, + 8064, + 8065, + 8066, + 8067, + 8068, + 8069, + 8070, + 8071, + 8072, + 8073, + 8074, + 8075, + 8076, + 8077, + 8078, + 8079, + 8080, + 8081, + 8082, + 8083, + 8084, + 8085, + 8086, + 8087, + 8088, + 8089, + 8090, + 8091, + 8092, + 8093, + 8094, + 8095, + 8096, + 8097, + 8098, + 8099, + 8100, + 8101, + 8102, + 8103, + 8104, + 8105, + 8106, + 8107, + 8108, + 8109, + 8110, + 8111, + 8112, + 8113, + 8114, + 8115, + 8116, + 8117, + 8118, + 8119, + 8120, + 8121, + 8122, + 8123, + 8124, + 8125, + 8126, + 8127, + 8128, + 8129, + 8130, + 8131, + 8132, + 8133, + 8134, + 8135, + 8136, + 8137, + 8138, + 8139, + 8140, + 8141, + 8142, + 8143, + 8144, + 8145, + 8146, + 8147, + 8148, + 8149, + 8150, + 8151, + 8152, + 8153, + 8154, + 8155, + 8156, + 8157, + 8158, + 8159, + 8160, + 8161, + 8162, + 8163, + 8164, + 8165, + 8166, + 8167, + 8168, + 8169, + 8170, + 8171, + 8172, + 8173, + 8174, + 8175, + 8176, + 8177, + 8178, + 8179, + 8180, + 8181, + 8182, + 8183, + 8184, + 8185, + 8186, + 8187, + 8188, + 8189, + 8190, + 8191, + 8192, + 8193, + 8194, + 8195, + 8196, + 8197, + 8198, + 8199, + 8200, + 8201, + 8202, + 8203, + 8204, + 8205, + 8206, + 8207, + 8208, + 8209, + 8210, + 8211, + 8212, + 8213, + 8214, + 8215, + 8216, + 8217, + 8218, + 8219, + 8220, + 8221, + 8222, + 8223, + 8224, + 8225, + 8226, + 8227, + 8228, + 8229, + 8230, + 8231, + 8232, + 8233, + 8234, + 8235, + 8236, + 8237, + 8238, + 8239, + 8240, + 8241, + 8242, + 8243, + 8244, + 8245, + 8246, + 8247, + 8248, + 8249, + 8250, + 8251, + 8252, + 8253, + 8254, + 8255, + 8256, + 8257, + 8258, + 8259, + 8260, + 8261, + 8262, + 8263, + 8264, + 8265, + 8266, + 8267, + 8268, + 8269, + 8270, + 8271, + 8272, + 8273, + 8274, + 8275, + 8276, + 8277, + 8278, + 8279, + 8280, + 8281, + 8282, + 8283, + 8284, + 8285, + 8286, + 8287, + 8288, + 8289, + 8290, + 8291, + 8292, + 8293, + 8294, + 8295, + 8296, + 8297, + 8298, + 8299, + 8300, + 8301, + 8302, + 8303, + 8304, + 8305, + 8306, + 8307, + 8308, + 8309, + 8310, + 8311, + 8312, + 8313, + 8314, + 8315, + 8316, + 8317, + 8318, + 8319, + 8320, + 8321, + 8322, + 8323, + 8324, + 8325, + 8326, + 8327, + 8328, + 8329, + 8330, + 8331, + 8332, + 8333, + 8334, + 8335, + 8336, + 8337, + 8338, + 8339, + 8340, + 8341, + 8342, + 8343, + 8344, + 8345, + 8346, + 8347, + 8348, + 8349, + 8350, + 8351, + 8352, + 8353, + 8354, + 8355, + 8356, + 8357, + 8358, + 8359, + 8360, + 8361, + 8362, + 8363, + 8364, + 8365, + 8366, + 8367, + 8368, + 8369, + 8370, + 8371, + 8372, + 8373, + 8374, + 8375, + 8376, + 8377, + 8378, + 8379, + 8380, + 8381, + 8382, + 8383, + 8384, + 8385, + 8386, + 8387, + 8388, + 8389, + 8390, + 8391, + 8392, + 8393, + 8394, + 8395, + 8396, + 8397, + 8398, + 8399, + 8400, + 8401, + 8402, + 8403, + 8404, + 8405, + 8406, + 8407, + 8408, + 8409, + 8410, + 8411, + 8412, + 8413, + 8414, + 8415, + 8416, + 8417, + 8418, + 8419, + 8420, + 8421, + 8422, + 8423, + 8424, + 8425, + 8426, + 8427, + 8428, + 8429, + 8430, + 8431, + 8432, + 8433, + 8434, + 8435, + 8436, + 8437, + 8438, + 8439, + 8440, + 8441, + 8442, + 8443, + 8444, + 8445, + 8446, + 8447, + 8448, + 8449, + 8450, + 8451, + 8452, + 8453, + 8454, + 8455, + 8456, + 8457, + 8458, + 8459, + 8460, + 8461, + 8462, + 8463, + 8464, + 8465, + 8466, + 8467, + 8468, + 8469, + 8470, + 8471, + 8472, + 8473, + 8474, + 8475, + 8476, + 8477, + 8478, + 8479, + 8480, + 8481, + 8482, + 8483, + 8484, + 8485, + 8486, + 8487, + 8488, + 8489, + 8490, + 8491, + 8492, + 8493, + 8494, + 8495, + 8496, + 8497, + 8498, + 8499, + 8500, + 8501, + 8502, + 8503, + 8504, + 8505, + 8506, + 8507, + 8508, + 8509, + 8510, + 8511, + 8512, + 8513, + 8514, + 8515, + 8516, + 8517, + 8518, + 8519, + 8520, + 8521, + 8522, + 8523, + 8524, + 8525, + 8526, + 8527, + 8528, + 8529, + 8530, + 8531, + 8532, + 8533, + 8534, + 8535, + 8536, + 8537, + 8538, + 8539, + 8540, + 8541, + 8542, + 8543, + 8544, + 8545, + 8546, + 8547, + 8548, + 8549, + 8550, + 8551, + 8552, + 8553, + 8554, + 8555, + 8556, + 8557, + 8558, + 8559, + 8560, + 8561, + 8562, + 8563, + 8564, + 8565, + 8566, + 8567, + 8568, + 8569, + 8570, + 8571, + 8572, + 8573, + 8574, + 8575, + 8576, + 8577, + 8578, + 8579, + 8580, + 8581, + 8582, + 8583, + 8585, + 8586, + 8587, + 8588, + 8589, + 8590, + 8591, + 8592, + 8593, + 8594, + 8595, + 8596, + 8597, + 8598, + 8599, + 8600, + 8601, + 8602, + 8603, + 8604, + 8605, + 8606, + 8607, + 8608, + 8609, + 8610, + 8611, + 8612, + 8613, + 8614, + 8615, + 8616, + 8617, + 8618, + 8619, + 8620, + 8621, + 8622, + 8623, + 8624, + 8625, + 8626, + 8627, + 8628, + 8629, + 8630, + 8631, + 8632, + 8633, + 8634, + 8635, + 8636, + 8637, + 8638, + 8639, + 8640, + 8641, + 8642, + 8643, + 8644, + 8645, + 8646, + 8647, + 8648, + 8649, + 8650, + 8651, + 8652, + 8653, + 8654, + 8655, + 8656, + 8657, + 8658, + 8659, + 8661, + 8662, + 8663, + 8664, + 8665, + 8666, + 8667, + 8668, + 8669, + 8670, + 8671, + 8672, + 8673, + 8674, + 8675, + 8676, + 8677, + 8678, + 8679, + 8680, + 8681, + 8682, + 8683, + 8684, + 8685, + 8686, + 8687, + 8688, + 8689, + 8690, + 8691, + 8692, + 8693, + 8694, + 8695, + 8696, + 8697, + 8698, + 8699, + 8700, + 8701, + 8702, + 8703, + 8704, + 8705, + 8706, + 8707, + 8708, + 8709, + 8710, + 8711, + 8712, + 8713, + 8714, + 8715, + 8716, + 8717, + 8718, + 8719, + 8720, + 8721, + 8722, + 8723, + 8724, + 8725, + 8726, + 8727, + 8728, + 8729, + 8730, + 8731, + 8732, + 8733, + 8734, + 8735, + 8736, + 8737, + 8738, + 8739, + 8740, + 8741, + 8742, + 8743, + 8744, + 8745, + 8746, + 8747, + 8748, + 8749, + 8750, + 8751, + 8752, + 8753, + 8754, + 8755, + 8756, + 8757, + 8758, + 8759, + 8760, + 8761, + 8762, + 8763, + 8764, + 8765, + 8766, + 8767, + 8768, + 8769, + 8770, + 8771, + 8772, + 8773, + 8774, + 8775, + 8776, + 8777, + 8778, + 8779, + 8780, + 8781, + 8782, + 8783, + 8784, + 8785, + 8786, + 8787, + 8788, + 8789, + 8790, + 8791, + 8792, + 8793, + 8794, + 8795, + 8796, + 8797, + 8798, + 8799, + 8800, + 8801, + 8802, + 8803, + 8804, + 8805, + 8806, + 8807, + 8808, + 8809, + 8810, + 8811, + 8812, + 8813, + 8814, + 8815, + 8816, + 8817, + 8818, + 8819, + 8820, + 8821, + 8822, + 8823, + 8824, + 8825, + 8826, + 8827, + 8828, + 8829, + 8830, + 8831, + 8832, + 8833, + 8834, + 8835, + 8836, + 8837, + 8838, + 8839, + 8840, + 8841, + 8842, + 8843, + 8844, + 8845, + 8846, + 8847, + 8848, + 8849, + 8850, + 8851, + 8852, + 8853, + 8854, + 8855, + 8856, + 8857, + 8858, + 8859, + 8860, + 8861, + 8862, + 8863, + 8864, + 8865, + 8866, + 8867, + 8868, + 8869, + 8870, + 8871, + 8872, + 8873, + 8874, + 8875, + 8876, + 8877, + 8878, + 8879, + 8880, + 8881, + 8882, + 8883, + 8884, + 8885, + 8886, + 8887, + 8888, + 8889, + 8890, + 8891, + 8892, + 8893, + 8894, + 8895, + 8896, + 8897, + 8898, + 8899, + 8900, + 8901, + 8902, + 8903, + 8904, + 8905, + 8906, + 8907, + 8908, + 8909, + 8910, + 8911, + 8912, + 8913, + 8914, + 8915, + 8916, + 8917, + 8918, + 8919, + 8920, + 8921, + 8922, + 8923, + 8924, + 8925, + 8926, + 8927, + 8928, + 8929, + 8930, + 8931, + 8932, + 8933, + 8934, + 8935, + 8936, + 8937, + 8938, + 8940, + 8941, + 8942, + 8943, + 8944, + 8945, + 8946, + 8947, + 8948, + 8949, + 8950, + 8951, + 8952, + 8953, + 8954, + 8955, + 8956, + 8957, + 8958, + 8959, + 8960, + 8961, + 8962, + 8963, + 8964, + 8965, + 8966, + 8967, + 8968, + 8969, + 8970, + 8971, + 8972, + 8973, + 8974, + 8975, + 8976, + 8977, + 8978, + 8979, + 8980, + 8981, + 8982, + 8983, + 8984, + 8985, + 8986, + 8987, + 8988, + 8989, + 8990, + 8991, + 8992, + 8993, + 8994, + 8995, + 8996, + 8997, + 8998, + 8999, + 9000, + 9001, + 9002, + 9003, + 9004, + 9005, + 9006, + 9007, + 9008, + 9009, + 9010, + 9011, + 9012, + 9013, + 9014, + 9015, + 9016, + 9017, + 9018, + 9019, + 9020, + 9021, + 9022, + 9023, + 9024, + 9025, + 9026, + 9027, + 9028, + 9029, + 9030, + 9031, + 9032, + 9033, + 9034, + 9035, + 9036, + 9037, + 9038, + 9039, + 9040, + 9041, + 9042, + 9043, + 9044, + 9045, + 9046, + 9047, + 9048, + 9049, + 9050, + 9051, + 9052, + 9053, + 9054, + 9055, + 9056, + 9057, + 9058, + 9059, + 9060, + 9061, + 9062, + 9063, + 9064, + 9065, + 9066, + 9067, + 9068, + 9069, + 9070, + 9071, + 9072, + 9073, + 9074, + 9075, + 9076, + 9077, + 9078, + 9079, + 9080, + 9081, + 9082, + 9083, + 9084, + 9085, + 9086, + 9087, + 9088, + 9089, + 9090, + 9091, + 9092, + 9093, + 9094, + 9095, + 9096, + 9097, + 9098, + 9099, + 9100, + 9101, + 9102, + 9103, + 9104, + 9105, + 9106, + 9107, + 9108, + 9109, + 9110, + 9111, + 9112, + 9113, + 9114, + 9115, + 9116, + 9117, + 9118, + 9119, + 9120, + 9121, + 9122, + 9123, + 9124, + 9125, + 9126, + 9127, + 9128, + 9129, + 9130, + 9131, + 9132, + 9133, + 9134, + 9135, + 9136, + 9137, + 9138, + 9139, + 9140, + 9141, + 9142, + 9143, + 9144, + 9145, + 9146, + 9147, + 9148, + 9149, + 9150, + 9151, + 9152, + 9153, + 9154, + 9155, + 9156, + 9157, + 9158, + 9159, + 9160, + 9161, + 9162, + 9163, + 9164, + 9165, + 9166, + 9167, + 9168, + 9169, + 9170, + 9171, + 9172, + 9173, + 9174, + 9175, + 9176, + 9177, + 9178, + 9179, + 9180, + 9181, + 9182, + 9183, + 9184, + 9185, + 9186, + 9187, + 9188, + 9189, + 9190, + 9191, + 9192, + 9193, + 9194, + 9195, + 9196, + 9197, + 9198, + 9199, + 9200, + 9201, + 9202, + 9203, + 9204, + 9205, + 9206, + 9207, + 9208, + 9209, + 9210, + 9211, + 9212, + 9213, + 9214, + 9215, + 9216, + 9217, + 9218, + 9219, + 9220, + 9221, + 9222, + 9223, + 9224, + 9225, + 9226, + 9227, + 9228, + 9229, + 9230, + 9231, + 9232, + 9233, + 9234, + 9235, + 9236, + 9237, + 9238, + 9239, + 9240, + 9241, + 9242, + 9243, + 9244, + 9245, + 9246, + 9247, + 9248, + 9249, + 9250, + 9251, + 9252, + 9253, + 9254, + 9255, + 9256, + 9257, + 9258, + 9259, + 9260, + 9261, + 9262, + 9263, + 9264, + 9265, + 9266, + 9267, + 9268, + 9269, + 9270, + 9271, + 9272, + 9273, + 9274, + 9275, + 9276, + 9277, + 9278, + 9279, + 9280, + 9281, + 9282, + 9283, + 9284, + 9285, + 9286, + 9287, + 9288, + 9289, + 9290, + 9291, + 9292, + 9293, + 9294, + 9295, + 9296, + 9297, + 9298, + 9299, + 9300, + 9301, + 9302, + 9303, + 9304, + 9305, + 9306, + 9307, + 9308, + 9309, + 9310, + 9311, + 9312, + 9313, + 9314, + 9315, + 9316, + 9317, + 9318, + 9319, + 9320, + 9321, + 9322, + 9323, + 9324, + 9325, + 9326, + 9327, + 9328, + 9329, + 9330, + 9331, + 9332, + 9333, + 9334, + 9335, + 9336, + 9337, + 9338, + 9339, + 9340, + 9341, + 9342, + 9343, + 9344, + 9345, + 9346, + 9347, + 9348, + 9349, + 9350, + 9351, + 9352, + 9353, + 9354, + 9355, + 9356, + 9357, + 9358, + 9359, + 9360, + 9361, + 9362, + 9363, + 9364, + 9365, + 9366, + 9367, + 9368, + 9369, + 9370, + 9371, + 9372, + 9373, + 9374, + 9375, + 9376, + 9377, + 9378, + 9379, + 9380, + 9381, + 9382, + 9383, + 9384, + 9385, + 9386, + 9387, + 9388, + 9389, + 9390, + 9391, + 9392, + 9393, + 9394, + 9395, + 9396, + 9397, + 9398, + 9399, + 9400, + 9401, + 9402, + 9403, + 9404, + 9405, + 9406, + 9407, + 9408, + 9409, + 9410, + 9411, + 9412, + 9413, + 9414, + 9415, + 9416, + 9417, + 9418, + 9419, + 9420, + 9421, + 9422, + 9423, + 9425, + 9426, + 9427, + 9428, + 9429, + 9430, + 9431, + 9432, + 9433, + 9434, + 9435, + 9436, + 9437, + 9438, + 9439, + 9440, + 9441, + 9442, + 9443, + 9444, + 9445, + 9446, + 9447, + 9448, + 9449, + 9450, + 9451, + 9452, + 9453, + 9454, + 9455, + 9456, + 9457, + 9458, + 9459, + 9460, + 9461, + 9462, + 9463, + 9464, + 9465, + 9466, + 9467, + 9468, + 9469, + 9470, + 9471, + 9472, + 9473, + 9474, + 9475, + 9476, + 9477, + 9478, + 9479, + 9480, + 9481, + 9482, + 9483, + 9484, + 9485, + 9486, + 9487, + 9488, + 9489, + 9490, + 9491, + 9492, + 9493, + 9494, + 9495, + 9496, + 9497, + 9498, + 9499, + 9500, + 9501, + 9502, + 9503, + 9504, + 9505, + 9506, + 9507, + 9508, + 9509, + 9510, + 9511, + 9512, + 9513, + 9514, + 9515, + 9516, + 9517, + 9518, + 9519, + 9520, + 9521, + 9522, + 9523, + 9524, + 9525, + 9526, + 9527, + 9528, + 9529, + 9530, + 9531, + 9532, + 9533, + 9534, + 9535, + 9536, + 9537, + 9538, + 9539, + 9540, + 9541, + 9542, + 9543, + 9544, + 9545, + 9546, + 9547, + 9548, + 9549, + 9550, + 9551, + 9552, + 9553, + 9554, + 9555, + 9556, + 9557, + 9558, + 9559, + 9560, + 9561, + 9562, + 9563, + 9564, + 9565, + 9566, + 9567, + 9568, + 9569, + 9570, + 9571, + 9572, + 9573, + 9574, + 9575, + 9576, + 9577, + 9578, + 9579, + 9580, + 9581, + 9582, + 9583, + 9584, + 9585, + 9586, + 9587, + 9588, + 9589, + 9590, + 9591, + 9592, + 9593, + 9594, + 9595, + 9596, + 9597, + 9598, + 9599, + 9600, + 9601, + 9602, + 9603, + 9604, + 9605, + 9606, + 9607, + 9608, + 9609, + 9610, + 9611, + 9612, + 9613, + 9614, + 9615, + 9616, + 9617, + 9618, + 9619, + 9620, + 9621, + 9622, + 9623, + 9624, + 9625, + 9626, + 9627, + 9628, + 9629, + 9630, + 9631, + 9632, + 9633, + 9634, + 9635, + 9636, + 9637, + 9638, + 9639, + 9640, + 9641, + 9642, + 9643, + 9644, + 9645, + 9646, + 9647, + 9648, + 9649, + 9650, + 9651, + 9652, + 9653, + 9654, + 9655, + 9656, + 9657, + 9658, + 9659, + 9660, + 9661, + 9662, + 9663, + 9664, + 9665, + 9666, + 9667, + 9668, + 9669, + 9670, + 9671, + 9672, + 9673, + 9674, + 9675, + 9676, + 9677, + 9678, + 9679, + 9680, + 9681, + 9682, + 9683, + 9684, + 9685, + 9686, + 9687, + 9688, + 9689, + 9690, + 9691, + 9692, + 9693, + 9694, + 9695, + 9696, + 9697, + 9698, + 9699, + 9700, + 9701, + 9702, + 9703, + 9704, + 9705, + 9706, + 9707, + 9708, + 9709, + 9710, + 9711, + 9712, + 9713, + 9714, + 9715, + 9716, + 9717, + 9718, + 9719, + 9720, + 9721, + 9722, + 9723, + 9724, + 9725, + 9726, + 9727, + 9728, + 9729, + 9730, + 9731, + 9732, + 9733, + 9734, + 9735, + 9736, + 9737, + 9738, + 9739, + 9740, + 9741, + 9742, + 9743, + 9744, + 9745, + 9746, + 9747, + 9748, + 9749, + 9750, + 9751, + 9752, + 9753, + 9754, + 9755, + 9756, + 9757, + 9758, + 9759, + 9760, + 9761, + 9762, + 9763, + 9764, + 9765, + 9766, + 9767, + 9768, + 9769, + 9770, + 9771, + 9772, + 9773, + 9774, + 9775, + 9776, + 9777, + 9778, + 9779, + 9780, + 9781, + 9782, + 9783, + 9784, + 9785, + 9786, + 9787, + 9788, + 9789, + 9790, + 9791, + 9792, + 9793, + 9794, + 9795, + 9796, + 9797, + 9798, + 9799, + 9800, + 9801, + 9802, + 9803, + 9804, + 9805, + 9806, + 9807, + 9808, + 9809, + 9810, + 9812, + 9813, + 9814, + 9815, + 9816, + 9817, + 9818, + 9819, + 9820, + 9821, + 9822, + 9823, + 9824, + 9825, + 9826, + 9827, + 9828, + 9829, + 9830, + 9831, + 9832, + 9833, + 9834, + 9835, + 9836, + 9837, + 9838, + 9839, + 9840, + 9841, + 9842, + 9843, + 9844, + 9845, + 9846, + 9847, + 9848, + 9849, + 9850, + 9851, + 9852, + 9853, + 9854, + 9855, + 9856, + 9857, + 9858, + 9859, + 9860, + 9861, + 9862, + 9863, + 9864, + 9865, + 9866, + 9867, + 9868, + 9869, + 9870, + 9871, + 9872, + 9873, + 9874, + 9875, + 9876, + 9877, + 9878, + 9879, + 9880, + 9881, + 9882, + 9883, + 9884, + 9885, + 9886, + 9887, + 9888, + 9889, + 9890, + 9891, + 9892, + 9893, + 9894, + 9895, + 9896, + 9897, + 9898, + 9899, + 9900, + 9901, + 9902, + 9903, + 9904, + 9905, + 9906, + 9907, + 9908, + 9909, + 9910, + 9911, + 9912, + 9913, + 9914, + 9915, + 9916, + 9917, + 9918, + 9919, + 9920, + 9921, + 9922, + 9923, + 9924, + 9925, + 9926, + 9927, + 9928, + 9929, + 9930, + 9931, + 9932, + 9933, + 9934, + 9935, + 9936, + 9937, + 9938, + 9939, + 9940, + 9941, + 9942, + 9943, + 9944, + 9945, + 9946, + 9947, + 9948, + 9949, + 9950, + 9951, + 9952, + 9953, + 9954, + 9955, + 9956, + 9957, + 9958, + 9959, + 9960, + 9961, + 9962, + 9963, + 9964, + 9965, + 9966, + 9967, + 9968, + 9969, + 9970, + 9971, + 9972, + 9973, + 9974, + 9975, + 9976, + 9977, + 9978, + 9979, + 9980, + 9981, + 9982, + 9983, + 9984, + 9985, + 9986, + 9987, + 9988, + 9989, + 9990, + 9991, + 9992, + 9993, + 9994, + 9995, + 9996, + 9997, + 9998, + 9999, + 10000, + 10001, + 10002, + 10003, + 10004, + 10005, + 10006, + 10007, + 10008, + 10009, + 10010, + 10011, + 10012, + 10013, + 10014, + 10015, + 10016, + 10017, + 10018, + 10019, + 10020, + 10021, + 10022, + 10023, + 10024, + 10025, + 10026, + 10027, + 10028, + 10029, + 10030, + 10031, + 10032, + 10033, + 10034, + 10035, + 10036, + 10037, + 10038, + 10039, + 10040, + 10041, + 10042, + 10043, + 10044, + 10045, + 10046, + 10047, + 10048, + 10049, + 10050, + 10051, + 10052, + 10053, + 10054, + 10055, + 10056, + 10057, + 10058, + 10059, + 10060, + 10061, + 10062, + 10063, + 10064, + 10065, + 10066, + 10067, + 10068, + 10069, + 10070, + 10071, + 10072, + 10073, + 10074, + 10075, + 10076, + 10077, + 10078, + 10079, + 10080, + 10081, + 10082, + 10083, + 10084, + 10085, + 10086, + 10087, + 10088, + 10089, + 10090, + 10091, + 10092, + 10093, + 10094, + 10095, + 10096, + 10097, + 10098, + 10099, + 10100, + 10101, + 10102, + 10103, + 10104, + 10105, + 10106, + 10107, + 10108, + 10109, + 10110, + 10111, + 10112, + 10113, + 10114, + 10115, + 10116, + 10117, + 10118, + 10119, + 10120, + 10121, + 10122, + 10123, + 10124, + 10125, + 10126, + 10127, + 10128, + 10129, + 10130, + 10131, + 10132, + 10133, + 10134, + 10135, + 10136, + 10137, + 10138, + 10139, + 10140, + 10141, + 10142, + 10143, + 10144, + 10145, + 10146, + 10147, + 10148, + 10149, + 10150, + 10151, + 10152, + 10153, + 10154, + 10155, + 10156, + 10157, + 10158, + 10159, + 10160, + 10161, + 10162, + 10163, + 10164, + 10165, + 10166, + 10167, + 10168, + 10169, + 10170, + 10171, + 10172, + 10173, + 10174, + 10175, + 10176, + 10177, + 10178, + 10179, + 10180, + 10181, + 10182, + 10183, + 10184, + 10185, + 10186, + 10187, + 10188, + 10189, + 10190, + 10191, + 10192, + 10193, + 10194, + 10195, + 10196, + 10197, + 10198, + 10199, + 10200, + 10201, + 10202, + 10203, + 10204, + 10205, + 10206, + 10207, + 10208, + 10209, + 10210, + 10211, + 10212, + 10213, + 10214, + 10215, + 10216, + 10217, + 10218, + 10219, + 10220, + 10221, + 10222, + 10223, + 10224, + 10225, + 10226, + 10227, + 10228, + 10229, + 10230, + 10231, + 10232, + 10233, + 10234, + 10235, + 10236, + 10237, + 10238, + 10239, + 10240, + 10241, + 10242, + 10243, + 10244, + 10245, + 10246, + 10247, + 10248, + 10249, + 10250, + 10251, + 10252, + 10253, + 10254, + 10255, + 10256, + 10257, + 10258, + 10259, + 10260, + 10261, + 10262, + 10263, + 10264, + 10265, + 10266, + 10267, + 10268, + 10269, + 10270, + 10271, + 10272, + 10273, + 10274, + 10275, + 10276, + 10277, + 10278, + 10279, + 10280, + 10281, + 10282, + 10283, + 10284, + 10285, + 10286, + 10287, + 10288, + 10289, + 10290, + 10291, + 10292, + 10293, + 10294, + 10295, + 10296, + 10297, + 10298, + 10299, + 10300, + 10301, + 10302, + 10303, + 10304, + 10305, + 10306, + 10307, + 10308, + 10309, + 10310, + 10311, + 10312, + 10313, + 10314, + 10315, + 10316, + 10317, + 10318, + 10319, + 10320, + 10321, + 10322, + 10323, + 10324, + 10325, + 10326, + 10327, + 10328, + 10329, + 10330, + 10331, + 10332, + 10333, + 10334, + 10335, + 10336, + 10337, + 10338, + 10339, + 10340, + 10341, + 10342, + 10343, + 10344, + 10345, + 10346, + 10347, + 10348, + 10349, + 10350, + 10351, + 10352, + 10353, + 10354, + 10355, + 10356, + 10357, + 10358, + 10359, + 10360, + 10361, + 10362, + 10363, + 10364, + 10365, + 10366, + 10367, + 10368, + 10369, + 10370, + 10371, + 10372, + 10373, + 10374, + 10375, + 10376, + 10377, + 10378, + 10379, + 10380, + 10381, + 10382, + 10383, + 10384, + 10385, + 10386, + 10387, + 10388, + 10389, + 10390, + 10391, + 10392, + 10393, + 10394, + 10395, + 10396, + 10397, + 10398, + 10399, + 10400, + 10401, + 10402, + 10403, + 10404, + 10405, + 10406, + 10407, + 10408, + 10409, + 10410, + 10411, + 10412, + 10413, + 10414, + 10415, + 10416, + 10417, + 10418, + 10419, + 10420, + 10421, + 10422, + 10423, + 10424, + 10425, + 10426, + 10427, + 10428, + 10429, + 10430, + 10431, + 10432, + 10433, + 10434, + 10435, + 10436, + 10437, + 10438, + 10439, + 10440, + 10441, + 10442, + 10443, + 10444, + 10445, + 10446, + 10447, + 10448, + 10449, + 10450, + 10451, + 10452, + 10453, + 10454, + 10455, + 10456, + 10457, + 10458, + 10459, + 10460, + 10461, + 10462, + 10463, + 10464, + 10465, + 10466, + 10467, + 10468, + 10469, + 10470, + 10471, + 10472, + 10473, + 10474, + 10475, + 10476, + 10477, + 10478, + 10479, + 10480, + 10481, + 10482, + 10483, + 10484, + 10485, + 10486, + 10487, + 10488, + 10489, + 10490, + 10491, + 10492, + 10493, + 10494, + 10495, + 10496, + 10497, + 10498, + 10499, + 10500, + 10501, + 10502, + 10503, + 10504, + 10505, + 10506, + 10507, + 10508, + 10509, + 10510, + 10511, + 10512, + 10513, + 10514, + 10515, + 10516, + 10517, + 10518, + 10519, + 10520, + 10521, + 10522, + 10523, + 10524, + 10526, + 10527, + 10528, + 10529, + 10530, + 10531, + 10532, + 10533, + 10534, + 10535, + 10536, + 10537, + 10538, + 10539, + 10540, + 10541, + 10542, + 10543, + 10544, + 10545, + 10546, + 10547, + 10548, + 10549, + 10550, + 10551, + 10552, + 10553, + 10554, + 10555, + 10556, + 10557, + 10558, + 10559, + 10560, + 10561, + 10562, + 10563, + 10564, + 10565, + 10566, + 10567, + 10568, + 10569, + 10570, + 10571, + 10572, + 10573, + 10574, + 10575, + 10576, + 10577, + 10578, + 10579, + 10580, + 10581, + 10582, + 10583, + 10584, + 10585, + 10586, + 10587, + 10588, + 10589, + 10590, + 10591, + 10592, + 10593, + 10594, + 10595, + 10596, + 10597, + 10598, + 10599, + 10600, + 10601, + 10602, + 10603, + 10604, + 10605, + 10606, + 10607, + 10608, + 10609, + 10610, + 10611, + 10612, + 10613, + 10614, + 10615, + 10616, + 10617, + 10618, + 10619, + 10620, + 10621, + 10622, + 10623, + 10624, + 10625, + 10626, + 10627, + 10628, + 10629, + 10630, + 10631, + 10632, + 10633, + 10634, + 10635, + 10636, + 10637, + 10638, + 10639, + 10640, + 10641, + 10642, + 10643, + 10644, + 10645, + 10646, + 10647, + 10648, + 10649, + 10650, + 10651, + 10652, + 10653, + 10654, + 10655, + 10656, + 10657, + 10658, + 10659, + 10660, + 10661, + 10662, + 10663, + 10664, + 10665, + 10666, + 10667, + 10668, + 10669, + 10670, + 10671, + 10672, + 10673, + 10674, + 10675, + 10676, + 10677, + 10678, + 10679, + 10680, + 10681, + 10682, + 10683, + 10684, + 10685, + 10686, + 10687, + 10688, + 10689, + 10690, + 10691, + 10692, + 10693, + 10694, + 10695, + 10696, + 10697, + 10698, + 10699, + 10700, + 10701, + 10702, + 10703, + 10704, + 10705, + 10706, + 10707, + 10708, + 10709, + 10710, + 10711, + 10712, + 10713, + 10714, + 10715, + 10716, + 10717, + 10718, + 10719, + 10720, + 10721, + 10722, + 10723, + 10724, + 10725, + 10726, + 10727, + 10728, + 10729, + 10730, + 10731, + 10732, + 10733, + 10734, + 10735, + 10736, + 10737, + 10738, + 10739, + 10740, + 10741, + 10742, + 10743, + 10744, + 10745, + 10746, + 10747, + 10748, + 10749, + 10750, + 10751, + 10752, + 10753, + 10754, + 10755, + 10756, + 10757, + 10758, + 10759, + 10760, + 10761, + 10762, + 10763, + 10764, + 10765, + 10766, + 10767, + 10768, + 10769, + 10770, + 10771, + 10772, + 10773, + 10774, + 10775, + 10776, + 10777, + 10778, + 10779, + 10780, + 10781, + 10782, + 10783, + 10784, + 10785, + 10786, + 10787, + 10788, + 10789, + 10790, + 10791, + 10792, + 10793, + 10794, + 10795, + 10796, + 10797, + 10798, + 10799, + 10800, + 10801, + 10802, + 10803, + 10804, + 10805, + 10806, + 10807, + 10808, + 10809, + 10810, + 10811, + 10812, + 10813, + 10814, + 10815, + 10816, + 10817, + 10818, + 10819, + 10820, + 10821, + 10822, + 10823, + 10824, + 10825, + 10826, + 10827, + 10828, + 10829, + 10830, + 10831, + 10832, + 10833, + 10834, + 10835, + 10836, + 10837, + 10838, + 10839, + 10840, + 10841, + 10842, + 10843, + 10844, + 10845, + 10846, + 10847, + 10848, + 10849, + 10850, + 10851, + 10852, + 10853, + 10854, + 10855, + 10856, + 10857, + 10858, + 10859, + 10860, + 10861, + 10862, + 10863, + 10864, + 10865, + 10866, + 10867, + 10868, + 10869, + 10870, + 10871, + 10872, + 10873, + 10874, + 10875, + 10876, + 10877, + 10878, + 10879, + 10880, + 10881, + 10882, + 10883, + 10884, + 10885, + 10886, + 10887, + 10888, + 10889, + 10890, + 10891, + 10892, + 10893, + 10894, + 10895, + 10896, + 10897, + 10898, + 10899, + 10900, + 10901, + 10902, + 10903, + 10904, + 10905, + 10906, + 10907, + 10908, + 10909, + 10910, + 10911, + 10912, + 10913, + 10914, + 10915, + 10916, + 10917, + 10918, + 10919, + 10920, + 10921, + 10922, + 10923, + 10924, + 10925, + 10926, + 10927, + 10928, + 10929, + 10930, + 10931, + 10932, + 10933, + 10934, + 10935, + 10936, + 10937, + 10938, + 10939, + 10940, + 10941, + 10942, + 10943, + 10944, + 10945, + 10946, + 10947, + 10948, + 10949, + 10950, + 10951, + 10952, + 10953, + 10954, + 10955, + 10956, + 10957, + 10958, + 10959, + 10960, + 10961, + 10962, + 10963, + 10964, + 10965, + 10966, + 10967, + 10968, + 10969, + 10970, + 10971, + 10972, + 10973, + 10974, + 10975, + 10976, + 10977, + 10978, + 10979, + 10980, + 10981, + 10982, + 10983, + 10984, + 10985, + 10986, + 10987, + 10988, + 10989, + 10990, + 10991, + 10992, + 10993, + 10994, + 10995, + 10996, + 10997, + 10998, + 10999, + 11000, + 11001, + 11002, + 11003, + 11004, + 11005, + 11006, + 11007, + 11008, + 11009, + 11010, + 11011, + 11012, + 11013, + 11014, + 11015, + 11016, + 11017, + 11018, + 11019, + 11020, + 11021, + 11022, + 11023, + 11024, + 11025, + 11026, + 11027, + 11028, + 11029, + 11030, + 11031, + 11032, + 11033, + 11034, + 11035, + 11036, + 11037, + 11038, + 11039, + 11040, + 11041, + 11042, + 11043, + 11044, + 11045, + 11046, + 11047, + 11048, + 11049, + 11050, + 11051, + 11052, + 11053, + 11054, + 11055, + 11056, + 11057, + 11058, + 11059, + 11060, + 11061, + 11062, + 11063, + 11064, + 11065, + 11066, + 11067, + 11068, + 11069, + 11070, + 11071, + 11072, + 11073, + 11074, + 11075, + 11076, + 11077, + 11078, + 11079, + 11080, + 11081, + 11082, + 11083, + 11084, + 11086, + 11087, + 11088, + 11090, + 11091, + 11092, + 11093, + 11094, + 11095, + 11096, + 11097, + 11098, + 11099, + 11100, + 11101, + 11102, + 11103, + 11104, + 11105, + 11106, + 11107, + 11108, + 11109, + 11110, + 11111, + 11112, + 11113, + 11114, + 11115, + 11116, + 11117, + 11118, + 11119, + 11120, + 11121, + 11122, + 11123, + 11124, + 11125, + 11126, + 11127, + 11128, + 11129, + 11130, + 11131, + 11132, + 11133, + 11134, + 11135, + 11136, + 11137, + 11138, + 11139, + 11140, + 11141, + 11142, + 11143, + 11144, + 11145, + 11146, + 11147, + 11148, + 11149, + 11150, + 11151, + 11152, + 11153, + 11154, + 11155, + 11156, + 11157, + 11158, + 11159, + 11160, + 11161, + 11162, + 11163, + 11164, + 11165, + 11166, + 11167, + 11168, + 11169, + 11170, + 11171, + 11172, + 11173, + 11174, + 11175, + 11176, + 11177, + 11178, + 11179, + 11180, + 11181, + 11182, + 11183, + 11184, + 11185, + 11186, + 11187, + 11188, + 11189, + 11190, + 11191, + 11192, + 11193, + 11194, + 11195, + 11196, + 11197, + 11198, + 11199, + 11200, + 11201, + 11202, + 11203, + 11204, + 11205, + 11206, + 11207, + 11208, + 11209, + 11210, + 11211, + 11212, + 11213, + 11214, + 11215, + 11216, + 11217, + 11218, + 11219, + 11220, + 11221, + 11222, + 11223, + 11224, + 11225, + 11226, + 11227, + 11228, + 11229, + 11230, + 11231, + 11232, + 11233, + 11234, + 11235, + 11236, + 11237, + 11238, + 11239, + 11240, + 11241, + 11242, + 11243, + 11244, + 11245, + 11246, + 11247, + 11248, + 11249, + 11250, + 11251, + 11252, + 11253, + 11254, + 11255, + 11256, + 11257, + 11258, + 11259, + 11260, + 11261, + 11262, + 11263, + 11264, + 11265, + 11266, + 11267, + 11268, + 11269, + 11270, + 11271, + 11272, + 11273, + 11274, + 11275, + 11276, + 11277, + 11278, + 11279, + 11280, + 11281, + 11282, + 11283, + 11284, + 11285, + 11286, + 11287, + 11288, + 11289, + 11290, + 11291, + 11292, + 11293, + 11294, + 11295, + 11296, + 11297, + 11298, + 11299, + 11300, + 11301, + 11302, + 11303, + 11304, + 11305, + 11306, + 11307, + 11308, + 11309, + 11310, + 11311, + 11312, + 11313, + 11314, + 11315, + 11316, + 11317, + 11318, + 11319, + 11320, + 11321, + 11322, + 11323, + 11324, + 11325, + 11326, + 11327, + 11328, + 11329, + 11330, + 11331, + 11332, + 11333, + 11334, + 11335, + 11336, + 11337, + 11338, + 11339, + 11340, + 11341, + 11342, + 11343, + 11344, + 11345, + 11346, + 11347, + 11348, + 11349, + 11350, + 11351, + 11352, + 11353, + 11354, + 11355, + 11356, + 11357, + 11358, + 11359, + 11360, + 11361, + 11362, + 11363, + 11364, + 11365, + 11366, + 11367, + 11368, + 11369, + 11370, + 11371, + 11372, + 11373, + 11374, + 11375, + 11376, + 11377, + 11378, + 11379, + 11380, + 11381, + 11382, + 11383, + 11384, + 11385, + 11386, + 11387, + 11388, + 11389, + 11390, + 11391, + 11392, + 11393, + 11394, + 11395, + 11396, + 11397, + 11398, + 11399, + 11400, + 11401, + 11402, + 11403, + 11404, + 11405, + 11406, + 11407, + 11408, + 11409, + 11410, + 11411, + 11412, + 11413, + 11414, + 11415, + 11416, + 11417, + 11418, + 11419, + 11420, + 11421, + 11422, + 11423, + 11424, + 11425, + 11426, + 11427, + 11428, + 11429, + 11430, + 11431, + 11432, + 11433, + 11434, + 11435, + 11436, + 11437, + 11438, + 11439, + 11440, + 11441, + 11442, + 11443, + 11444, + 11445, + 11446, + 11447, + 11448, + 11449, + 11450, + 11451, + 11452, + 11453, + 11454, + 11455, + 11456, + 11457, + 11458, + 11459, + 11460, + 11461, + 11462, + 11463, + 11464, + 11465, + 11466, + 11467, + 11468, + 11469, + 11470, + 11471, + 11472, + 11473, + 11474, + 11475, + 11476, + 11477, + 11478, + 11479, + 11480, + 11481, + 11482, + 11483, + 11484, + 11485, + 11486, + 11487, + 11488, + 11489, + 11490, + 11491, + 11492, + 11493, + 11494, + 11495, + 11496, + 11497, + 11498, + 11499, + 11500, + 11501, + 11502, + 11503, + 11504, + 11505, + 11506, + 11507, + 11508, + 11509, + 11510, + 11511, + 11512, + 11513, + 11514, + 11515, + 11516, + 11517, + 11518, + 11519, + 11520, + 11521, + 11522, + 11523, + 11524, + 11525, + 11526, + 11527, + 11528, + 11529, + 11530, + 11531, + 11532, + 11533, + 11534, + 11535, + 11536, + 11537, + 11538, + 11539, + 11540, + 11541, + 11542, + 11543, + 11544, + 11545, + 11546, + 11547, + 11548, + 11549, + 11550, + 11551, + 11552, + 11553, + 11554, + 11555, + 11556, + 11557, + 11558, + 11559, + 11560, + 11561, + 11562, + 11563, + 11564, + 11565, + 11566, + 11567, + 11568, + 11569, + 11570, + 11571, + 11572, + 11573, + 11574, + 11575, + 11576, + 11577, + 11578, + 11579, + 11580, + 11581, + 11582, + 11583, + 11584, + 11585, + 11586, + 11587, + 11588, + 11589, + 11590, + 11591, + 11592, + 11593, + 11594, + 11595, + 11596, + 11597, + 11598, + 11599, + 11600, + 11601, + 11602, + 11603, + 11604, + 11605, + 11606, + 11607, + 11608, + 11609, + 11610, + 11611, + 11612, + 11613, + 11614, + 11615, + 11616, + 11617, + 11618, + 11619, + 11620, + 11621, + 11622, + 11623, + 11624, + 11625, + 11626, + 11627, + 11628, + 11629, + 11630, + 11631, + 11632, + 11633, + 11634, + 11635, + 11636, + 11637, + 11638, + 11639, + 11640, + 11641, + 11642, + 11643, + 11644, + 11645, + 11646, + 11647, + 11648, + 11649, + 11650, + 11651, + 11652, + 11653, + 11654, + 11655, + 11656, + 11657, + 11658, + 11659, + 11660, + 11661, + 11662, + 11663, + 11664, + 11665, + 11666, + 11667, + 11668, + 11669, + 11670, + 11671, + 11672, + 11673, + 11674, + 11675, + 11676, + 11677, + 11678, + 11679, + 11680, + 11681, + 11682, + 11683, + 11684, + 11685, + 11686, + 11687, + 11688, + 11689, + 11690, + 11691, + 11692, + 11693, + 11694, + 11695, + 11696, + 11697, + 11698, + 11699, + 11700, + 11701, + 11702, + 11703, + 11704, + 11705, + 11706, + 11707, + 11708, + 11709, + 11710, + 11711, + 11712, + 11713, + 11714, + 11715, + 11716, + 11717, + 11718, + 11719, + 11720, + 11721, + 11722, + 11723, + 11724, + 11725, + 11726, + 11727, + 11728, + 11729, + 11730, + 11731, + 11732, + 11733, + 11734, + 11735, + 11736, + 11737, + 11738, + 11739, + 11740, + 11741, + 11742, + 11743, + 11744, + 11745, + 11746, + 11747, + 11748, + 11749, + 11750, + 11751, + 11752, + 11753, + 11754, + 11755, + 11756, + 11757, + 11758, + 11759, + 11760, + 11761, + 11762, + 11763, + 11764, + 11765, + 11766, + 11767, + 11768, + 11769, + 11770, + 11771, + 11772, + 11773, + 11774, + 11775, + 11776, + 11777, + 11778, + 11779, + 11780, + 11781, + 11782, + 11783, + 11784, + 11785, + 11786, + 11787, + 11788, + 11789, + 11790, + 11791, + 11792, + 11793, + 11794, + 11795, + 11796, + 11797, + 11798, + 11799, + 11800, + 11801, + 11802, + 11803, + 11804, + 11805, + 11806, + 11807, + 11808, + 11809, + 11810, + 11811, + 11812, + 11813, + 11814, + 11815, + 11816, + 11817, + 11818, + 11819, + 11820, + 11821, + 11822, + 11823, + 11824, + 11825, + 11826, + 11827, + 11828, + 11829, + 11830, + 11831, + 11832, + 11833, + 11834, + 11835, + 11836, + 11837, + 11838, + 11839, + 11840, + 11841, + 11842, + 11843, + 11844, + 11845, + 11846, + 11847, + 11848, + 11849, + 11850, + 11851, + 11852, + 11853, + 11854, + 11855, + 11856, + 11857, + 11858, + 11859, + 11860, + 11861, + 11862, + 11863, + 11864, + 11865, + 11866, + 11867, + 11868, + 11869, + 11870, + 11871, + 11872, + 11873, + 11874, + 11875, + 11876, + 11877, + 11878, + 11879, + 11880, + 11881, + 11882, + 11883, + 11884, + 11885, + 11886, + 11887, + 11888, + 11889, + 11890, + 11891, + 11892, + 11893, + 11894, + 11895, + 11896, + 11897, + 11898, + 11899, + 11900, + 11901, + 11902, + 11903, + 11904, + 11905, + 11906, + 11907, + 11908, + 11909, + 11910, + 11911, + 11912, + 11913, + 11914, + 11915, + 11916, + 11917, + 11918, + 11919, + 11920, + 11921, + 11922, + 11923, + 11924, + 11925, + 11926, + 11927, + 11928, + 11929, + 11930, + 11931, + 11932, + 11933, + 11934, + 11935, + 11936, + 11937, + 11938, + 11939, + 11940, + 11941, + 11942, + 11943, + 11944, + 11945, + 11946, + 11947, + 11948, + 11949, + 11950, + 11951, + 11952, + 11953, + 11954, + 11955, + 11956, + 11957, + 11958, + 11959, + 11960, + 11961, + 11962, + 11963, + 11964, + 11965, + 11966, + 11967, + 11968, + 11969, + 11970, + 11971, + 11972, + 11973, + 11974, + 11975, + 11976, + 11977, + 11978, + 11979, + 11980, + 11981, + 11982, + 11983, + 11984, + 11985, + 11986, + 11987, + 11988, + 11989, + 11990, + 11991, + 11992, + 11993, + 11994, + 11995, + 11996, + 11997, + 11998, + 11999, + 12000, + 12001, + 12002, + 12003, + 12004, + 12005, + 12006, + 12007, + 12008, + 12009, + 12010, + 12011, + 12012, + 12013, + 12014, + 12015, + 12016, + 12017, + 12018, + 12019, + 12020, + 12021, + 12022, + 12023, + 12024, + 12025, + 12026, + 12027, + 12028, + 12029, + 12030, + 12031, + 12032, + 12033, + 12034, + 12035, + 12036, + 12037, + 12038, + 12039, + 12040, + 12041, + 12042, + 12043, + 12044, + 12045, + 12046, + 12047, + 12048, + 12049, + 12050, + 12051, + 12052, + 12053, + 12054, + 12055, + 12056, + 12057, + 12058, + 12059, + 12060, + 12061, + 12062, + 12063, + 12064, + 12065, + 12066, + 12067, + 12068, + 12069, + 12070, + 12071, + 12072, + 12073, + 12074, + 12075, + 12076, + 12077, + 12078, + 12079, + 12080, + 12081, + 12082, + 12083, + 12084, + 12085, + 12086, + 12087, + 12088, + 12089, + 12090, + 12091, + 12092, + 12093, + 12094, + 12095, + 12096, + 12097, + 12098, + 12099, + 12100, + 12101, + 12102, + 12103, + 12104, + 12105, + 12106, + 12107, + 12108, + 12109, + 12110, + 12111, + 12112, + 12113, + 12114, + 12115, + 12116, + 12117, + 12118, + 12119, + 12120, + 12121, + 12122, + 12123, + 12124, + 12125, + 12126, + 12127, + 12128, + 12129, + 12130, + 12131, + 12132, + 12133, + 12134, + 12135, + 12136, + 12137, + 12138, + 12139, + 12140, + 12141, + 12142, + 12143, + 12144, + 12145, + 12146, + 12147, + 12148, + 12149, + 12150, + 12151, + 12152, + 12153, + 12154, + 12155, + 12156, + 12157, + 12158, + 12159, + 12160, + 12161, + 12162, + 12163, + 12164, + 12165, + 12166, + 12167, + 12168, + 12169, + 12170, + 12171, + 12172, + 12173, + 12174, + 12175, + 12176, + 12177, + 12178, + 12179, + 12180, + 12181, + 12182, + 12183, + 12184, + 12185, + 12186, + 12187, + 12188, + 12189, + 12190, + 12191, + 12192, + 12193, + 12194, + 12195, + 12196, + 12197, + 12198, + 12199, + 12200, + 12201, + 12202, + 12203, + 12204, + 12205, + 12206, + 12207, + 12208, + 12209, + 12210, + 12211, + 12212, + 12213, + 12214, + 12215, + 12216, + 12217, + 12218, + 12219, + 12220, + 12221, + 12222, + 12223, + 12224, + 12225, + 12226, + 12227, + 12228, + 12229, + 12230, + 12231, + 12232, + 12233, + 12234, + 12235, + 12236, + 12237, + 12238, + 12239, + 12240, + 12241, + 12242, + 12243, + 12244, + 12245, + 12246, + 12247, + 12248, + 12249, + 12250, + 12251, + 12252, + 12253, + 12254, + 12255, + 12256, + 12257, + 12258, + 12259, + 12260, + 12261, + 12262, + 12263, + 12264, + 12265, + 12266, + 12267, + 12268, + 12269, + 12270, + 12271, + 12272, + 12273, + 12274, + 12275, + 12276, + 12277, + 12278, + 12279, + 12280, + 12281, + 12282, + 12283, + 12284, + 12285, + 12286, + 12287, + 12288, + 12289, + 12290, + 12291, + 12292, + 12293, + 12294, + 12295, + 12296, + 12297, + 12298, + 12299, + 12300, + 12301, + 12302, + 12303, + 12304, + 12305, + 12306, + 12307, + 12308, + 12309, + 12310, + 12311, + 12312, + 12313, + 12314, + 12315, + 12316, + 12317, + 12318, + 12319, + 12320, + 12321, + 12322, + 12323, + 12324, + 12325, + 12326, + 12327, + 12328, + 12329, + 12330, + 12331, + 12332, + 12333, + 12334, + 12335, + 12336, + 12337, + 12338, + 12339, + 12340, + 12341, + 12342, + 12343, + 12344, + 12345, + 12346, + 12347, + 12348, + 12349, + 12350, + 12351, + 12352, + 12353, + 12354, + 12355, + 12356, + 12357, + 12358, + 12359, + 12360, + 12361, + 12362, + 12363, + 12364, + 12365, + 12366, + 12367, + 12368, + 12369, + 12370, + 12371, + 12372, + 12373, + 12374, + 12375, + 12376, + 12377, + 12378, + 12379, + 12380, + 12381, + 12382, + 12383, + 12384, + 12385, + 12386, + 12387, + 12388, + 12389, + 12390, + 12391, + 12392, + 12393, + 12394, + 12395, + 12396, + 12397, + 12398, + 12399, + 12400, + 12401, + 12402, + 12403, + 12404, + 12405, + 12406, + 12407, + 12408, + 12409, + 12410, + 12411, + 12412, + 12413, + 12414, + 12415, + 12416, + 12417, + 12418, + 12419, + 12420, + 12421, + 12422, + 12423, + 12424, + 12425, + 12426, + 12427, + 12428, + 12429, + 12430, + 12431, + 12432, + 12433, + 12434, + 12435, + 12436, + 12437, + 12438, + 12439, + 12440, + 12441, + 12442, + 12443, + 12444, + 12445, + 12446, + 12447, + 12448, + 12449, + 12450, + 12451, + 12452, + 12453, + 12454, + 12455, + 12456, + 12457, + 12458, + 12459, + 12460, + 12461, + 12462, + 12463, + 12464, + 12465, + 12466, + 12467, + 12468, + 12469, + 12470, + 12471, + 12472, + 12473, + 12474, + 12475, + 12476, + 12477, + 12478, + 12479, + 12480, + 12481, + 12482, + 12483, + 12484, + 12485, + 12486, + 12487, + 12488, + 12489, + 12490, + 12491, + 12492, + 12493, + 12494, + 12495, + 12496, + 12497, + 12498, + 12499, + 12500, + 12501, + 12502, + 12503, + 12504, + 12505, + 12506, + 12507, + 12508, + 12509, + 12510, + 12511, + 12512, + 12513, + 12514, + 12515, + 12516, + 12517, + 12518, + 12519, + 12520, + 12521, + 12522, + 12523, + 12524, + 12525, + 12526, + 12527, + 12528, + 12529, + 12530, + 12531, + 12532, + 12533, + 12534, + 12535, + 12536, + 12537, + 12538, + 12539, + 12540, + 12541, + 12542, + 12543, + 12544, + 12545, + 12546, + 12547, + 12548, + 12549, + 12550, + 12551, + 12552, + 12553, + 12554, + 12555, + 12556, + 12557, + 12558, + 12559, + 12560, + 12561, + 12562, + 12563, + 12564, + 12565, + 12566, + 12567, + 12568, + 12569, + 12570, + 12571, + 12572, + 12573, + 12574, + 12575, + 12576, + 12577, + 12578, + 12579, + 12580, + 12581, + 12582, + 12583, + 12584, + 12585, + 12586, + 12587, + 12588, + 12589, + 12590, + 12591, + 12592, + 12593, + 12594, + 12595, + 12596, + 12597, + 12598, + 12599, + 12600, + 12601, + 12602, + 12603, + 12604, + 12605, + 12606, + 12607, + 12608, + 12609, + 12610, + 12611, + 12612, + 12613, + 12614, + 12615, + 12616, + 12617, + 12618, + 12619, + 12620, + 12621, + 12622, + 12623, + 12624, + 12625, + 12626, + 12628, + 12629, + 12630, + 12632, + 12633, + 12635, + 12637, + 12638, + 12639, + 12640, + 12641, + 12642, + 12643, + 12645, + 12646, + 12647, + 12648, + 12649, + 12650, + 12651, + 12652, + 12653, + 12654, + 12655, + 12656, + 12657, + 12658, + 12659, + 12660, + 12661, + 12662, + 12663, + 12664, + 12665, + 12666, + 12667, + 12668, + 12669, + 12670, + 12671, + 12672, + 12673, + 12674, + 12675, + 12676, + 12677, + 12678, + 12679, + 12680, + 12681, + 12682, + 12683, + 12684, + 12685, + 12686, + 12687, + 12688, + 12689, + 12690, + 12691, + 12692, + 12693, + 12694, + 12695, + 12696, + 12697, + 12698, + 12699, + 12700, + 12701, + 12702, + 12703, + 12704, + 12706, + 12707, + 12709, + 12711, + 12712, + 12713, + 12714, + 12715, + 12716, + 12717, + 12719, + 12720, + 12721, + 12722, + 12723, + 12724, + 12725, + 12726, + 12727, + 12728, + 12729, + 12730, + 12731, + 12732, + 12733, + 12734, + 12735, + 12736, + 12737, + 12738, + 12739, + 12740, + 12741, + 12742, + 12743, + 12744, + 12745, + 12746, + 12747, + 12748, + 12749, + 12750, + 12751, + 12752, + 12753, + 12754, + 12755, + 12756, + 12757, + 12758, + 12759, + 12760, + 12761, + 12762, + 12763, + 12764, + 12765, + 12766, + 12767, + 12768, + 12769, + 12770, + 12771, + 12772, + 12773, + 12774, + 12775, + 12776, + 12777, + 12778, + 12779, + 12780, + 12781, + 12783, + 12784, + 12785, + 12786, + 12787, + 12788, + 12789, + 12790, + 12791, + 12793, + 12794, + 12795, + 12796, + 12797, + 12798, + 12799, + 12800, + 12801, + 12802, + 12803, + 12804, + 12805, + 12806, + 12807, + 12808, + 12809, + 12810, + 12811, + 12812, + 12813, + 12814, + 12815, + 12816, + 12817, + 12818, + 12819, + 12820, + 12821, + 12822, + 12823, + 12824, + 12825, + 12826, + 12827, + 12828, + 12829, + 12830, + 12831, + 12832, + 12833, + 12834, + 12835, + 12836, + 12837, + 12838, + 12839, + 12840, + 12841, + 12842, + 12843, + 12844, + 12845, + 12846, + 12847, + 12848, + 12849, + 12850, + 12851, + 12852, + 12853, + 12854, + 12855, + 12857, + 12858, + 12859, + 12860, + 12861, + 12862, + 12863, + 12865, + 12867, + 12868, + 12869, + 12870, + 12871, + 12872, + 12873, + 12874, + 12875, + 12876, + 12877, + 12878, + 12879, + 12880, + 12881, + 12882, + 12883, + 12884, + 12885, + 12886, + 12887, + 12888, + 12889, + 12890, + 12891, + 12892, + 12893, + 12894, + 12895, + 12896, + 12897, + 12898, + 12899, + 12900, + 12901, + 12902, + 12903, + 12904, + 12905, + 12906, + 12907, + 12908, + 12909, + 12910, + 12911, + 12912, + 12913, + 12914, + 12915, + 12916, + 12917, + 12918, + 12919, + 12920, + 12921, + 12922, + 12923, + 12924, + 12925, + 12926, + 12927, + 12928, + 12929, + 12931, + 12932, + 12933, + 12934, + 12935, + 12936, + 12937, + 12938, + 12939, + 12941, + 12942, + 12943, + 12944, + 12945, + 12946, + 12947, + 12948, + 12949, + 12950, + 12951, + 12952, + 12953, + 12954, + 12955, + 12956, + 12957, + 12958, + 12959, + 12960, + 12961, + 12962, + 12963, + 12964, + 12965, + 12966, + 12967, + 12968, + 12969, + 12970, + 12971, + 12972, + 12973, + 12974, + 12975, + 12976, + 12977, + 12978, + 12979, + 12980, + 12981, + 12982, + 12983, + 12984, + 12985, + 12986, + 12987, + 12988, + 12989, + 12990, + 12991, + 12992, + 12993, + 12994, + 12995, + 12996, + 12997, + 12998, + 12999, + 13000, + 13001, + 13002, + 13003, + 13005, + 13006, + 13007, + 13008, + 13009, + 13010, + 13011, + 13012, + 13013, + 13015, + 13016, + 13017, + 13018, + 13019, + 13020, + 13021, + 13022, + 13023, + 13024, + 13025, + 13026, + 13027, + 13028, + 13029, + 13030, + 13031, + 13032, + 13033, + 13034, + 13035, + 13036, + 13037, + 13038, + 13039, + 13040, + 13041, + 13042, + 13043, + 13044, + 13045, + 13046, + 13047, + 13048, + 13049, + 13050, + 13051, + 13052, + 13053, + 13054, + 13055, + 13056, + 13057, + 13058, + 13059, + 13060, + 13061, + 13062, + 13063, + 13064, + 13065, + 13066, + 13067, + 13068, + 13069, + 13070, + 13071, + 13072, + 13073, + 13074, + 13075, + 13076, + 13077, + 13078, + 13079, + 13080, + 13081, + 13082, + 13083, + 13084, + 13085, + 13086, + 13087, + 13089, + 13090, + 13091, + 13092, + 13093, + 13094, + 13095, + 13096, + 13097, + 13098, + 13099, + 13100, + 13101, + 13102, + 13103, + 13104, + 13105, + 13106, + 13107, + 13108, + 13109, + 13110, + 13111, + 13112, + 13113, + 13114, + 13115, + 13116, + 13117, + 13118, + 13119, + 13120, + 13121, + 13122, + 13123, + 13124, + 13125, + 13126, + 13127, + 13128, + 13129, + 13130, + 13131, + 13132, + 13133, + 13134, + 13135, + 13136, + 13137, + 13138, + 13139, + 13140, + 13141, + 13142, + 13143, + 13144, + 13145, + 13146, + 13147, + 13148, + 13149, + 13150, + 13151, + 13152, + 13153, + 13154, + 13155, + 13156, + 13157, + 13158, + 13159, + 13160, + 13161, + 13162, + 13163, + 13164, + 13165, + 13166, + 13167, + 13168, + 13169, + 13170, + 13171, + 13172, + 13173, + 13174, + 13175, + 13176, + 13177, + 13178, + 13179, + 13180, + 13181, + 13182, + 13183, + 13184, + 13185, + 13186, + 13187, + 13188, + 13189, + 13190, + 13191, + 13192, + 13193, + 13194, + 13195, + 13196, + 13197, + 13198, + 13199, + 13200, + 13201, + 13202, + 13203, + 13204, + 13205, + 13206, + 13207, + 13208, + 13209, + 13210, + 13211, + 13212, + 13213, + 13214, + 13215, + 13216, + 13217, + 13218, + 13219, + 13220, + 13221, + 13222, + 13223, + 13224, + 13225, + 13226, + 13227, + 13228, + 13229, + 13230, + 13231, + 13232, + 13233, + 13234, + 13235, + 13236, + 13237, + 13238, + 13239, + 13240, + 13241, + 13242, + 13243, + 13244, + 13245, + 13246, + 13247, + 13248, + 13249, + 13250, + 13251, + 13252, + 13253, + 13254, + 13255, + 13256, + 13257, + 13258, + 13259, + 13260, + 13261, + 13262, + 13263, + 13264, + 13265, + 13266, + 13267, + 13268, + 13269, + 13270, + 13271, + 13272, + 13273, + 13274, + 13275, + 13276, + 13277, + 13278, + 13279, + 13280, + 13281, + 13282, + 13283, + 13284, + 13285, + 13286, + 13287, + 13288, + 13289, + 13290, + 13291, + 13292, + 13293, + 13294, + 13295, + 13296, + 13297, + 13298, + 13299, + 13300, + 13301, + 13302, + 13303, + 13304, + 13305, + 13306, + 13307, + 13308, + 13309, + 13310, + 13311, + 13312, + 13313, + 13314, + 13315, + 13316, + 13317, + 13318, + 13319, + 13320, + 13321, + 13322, + 13323, + 13324, + 13325, + 13326, + 13327, + 13328, + 13329, + 13330, + 13331, + 13332, + 13333, + 13334, + 13335, + 13336, + 13337, + 13338, + 13339, + 13340, + 13341, + 13342, + 13343, + 13344, + 13345, + 13346, + 13347, + 13348, + 13349, + 13350, + 13351, + 13352, + 13353, + 13354, + 13355, + 13356, + 13357, + 13358, + 13359, + 13360, + 13361, + 13362, + 13363, + 13364, + 13365, + 13366, + 13367, + 13368, + 13369, + 13370, + 13371, + 13372, + 13373, + 13374, + 13375, + 13376, + 13377, + 13378, + 13379, + 13380, + 13381, + 13382, + 13383, + 13384, + 13385, + 13386, + 13387, + 13388, + 13389, + 13390, + 13391, + 13392, + 13393, + 13394, + 13395, + 13396, + 13397, + 13398, + 13399, + 13400, + 13401, + 13402, + 13403, + 13404, + 13405, + 13406, + 13407, + 13408, + 13409, + 13410, + 13411, + 13412, + 13413, + 13414, + 13415, + 13416, + 13417, + 13418, + 13419, + 13420, + 13421, + 13422, + 13423, + 13424, + 13425, + 13426, + 13427, + 13428, + 13429, + 13430, + 13431, + 13432, + 13433, + 13434, + 13435, + 13436, + 13437, + 13438, + 13439, + 13440, + 13441, + 13442, + 13443, + 13444, + 13445, + 13446, + 13447, + 13448, + 13449, + 13450, + 13451, + 13452, + 13453, + 13454, + 13455, + 13456, + 13457, + 13458, + 13459, + 13460, + 13461, + 13462, + 13463, + 13464, + 13465, + 13466, + 13467, + 13468, + 13469, + 13470, + 13471, + 13472, + 13473, + 13474, + 13475, + 13476, + 13477, + 13478, + 13479, + 13480, + 13481, + 13482, + 13483, + 13484, + 13485, + 13486, + 13487, + 13488, + 13489, + 13490, + 13491, + 13492, + 13493, + 13494, + 13495, + 13496, + 13497, + 13498, + 13499, + 13500, + 13501, + 13502, + 13503, + 13504, + 13505, + 13506, + 13507, + 13508, + 13509, + 13510, + 13511, + 13512, + 13513, + 13514, + 13515, + 13516, + 13517, + 13518, + 13519, + 13520, + 13521, + 13522, + 13523, + 13524, + 13525, + 13526, + 13527, + 13528, + 13529, + 13530, + 13531, + 13532, + 13533, + 13534, + 13535, + 13536, + 13537, + 13538, + 13539, + 13540, + 13541, + 13542, + 13543, + 13544, + 13545, + 13546, + 13547, + 13548, + 13549, + 13550, + 13551, + 13552, + 13553, + 13554, + 13555, + 13556, + 13557, + 13558, + 13559, + 13560, + 13561, + 13562, + 13563, + 13564, + 13565, + 13566, + 13567, + 13568, + 13569, + 13570, + 13571, + 13572, + 13573, + 13574, + 13575, + 13576, + 13577, + 13578, + 13579, + 13580, + 13581, + 13582, + 13583, + 13584, + 13585, + 13586, + 13587, + 13588, + 13589, + 13590, + 13591, + 13592, + 13593, + 13594, + 13595, + 13596, + 13597, + 13598, + 13599, + 13600, + 13601, + 13602, + 13603, + 13604, + 13605, + 13606, + 13607, + 13608, + 13609, + 13610, + 13611, + 13612, + 13613, + 13614, + 13615, + 13616, + 13617, + 13618, + 13619, + 13620, + 13621, + 13622, + 13623, + 13624, + 13625, + 13626, + 13627, + 13628, + 13629, + 13630, + 13631, + 13632, + 13633, + 13634, + 13635, + 13636, + 13637, + 13638, + 13639, + 13640, + 13641, + 13642, + 13643, + 13644, + 13645, + 13646, + 13647, + 13648, + 13649, + 13650, + 13651, + 13652, + 13653, + 13654, + 13655, + 13656, + 13657, + 13658, + 13659, + 13660, + 13661, + 13662, + 13663, + 13664, + 13665, + 13666, + 13667, + 13668, + 13669, + 13670, + 13671, + 13672, + 13673, + 13674, + 13675, + 13676, + 13677, + 13678, + 13679, + 13680, + 13681, + 13682, + 13683, + 13684, + 13685, + 13686, + 13687, + 13688, + 13689, + 13690, + 13691, + 13692, + 13693, + 13694, + 13695, + 13696, + 13697, + 13698, + 13699, + 13700, + 13701, + 13702, + 13703, + 13704, + 13705, + 13706, + 13707, + 13708, + 13709, + 13710, + 13711, + 13712, + 13713, + 13714, + 13715, + 13716, + 13717, + 13718, + 13719, + 13720, + 13721, + 13722, + 13723, + 13724, + 13725, + 13726, + 13727, + 13728, + 13729, + 13730, + 13731, + 13732, + 13733, + 13734, + 13735, + 13736, + 13737, + 13738, + 13739, + 13740, + 13741, + 13742, + 13743, + 13744, + 13745, + 13746, + 13747, + 13748, + 13749, + 13750, + 13751, + 13752, + 13753, + 13754, + 13755, + 13756, + 13757, + 13758, + 13759, + 13760, + 13761, + 13762, + 13763, + 13764, + 13765, + 13766, + 13767, + 13768, + 13769, + 13770, + 13771, + 13772, + 13773, + 13774, + 13775, + 13776, + 13777, + 13778, + 13779, + 13780, + 13781, + 13782, + 13783, + 13784, + 13785, + 13786, + 13787, + 13788, + 13789, + 13790, + 13791, + 13792, + 13793, + 13794, + 13795, + 13796, + 13797, + 13798, + 13799, + 13800, + 13801, + 13802, + 13803, + 13804, + 13805, + 13806, + 13807, + 13808, + 13809, + 13810, + 13811, + 13812, + 13813, + 13814, + 13815, + 13816, + 13817, + 13818, + 13819, + 13820, + 13821, + 13822, + 13823, + 13824, + 13825, + 13826, + 13827, + 13828, + 13829, + 13830, + 13831, + 13832, + 13833, + 13834, + 13835, + 13836, + 13837, + 13838, + 13839, + 13840, + 13841, + 13842, + 13843, + 13844, + 13845, + 13846, + 13847, + 13848, + 13849, + 13850, + 13851, + 13852, + 13853, + 13854, + 13855, + 13856, + 13857, + 13858, + 13859, + 13860, + 13861, + 13862, + 13863, + 13864, + 13865, + 13866, + 13867, + 13868, + 13869, + 13870, + 13871, + 13872, + 13873, + 13874, + 13875, + 13876, + 13877, + 13878, + 13879, + 13880, + 13882, + 13883, + 13884, + 13885, + 13886, + 13888, + 13889, + 13890, + 13891, + 13892, + 13893, + 13894, + 13895, + 13896, + 13898, + 13899, + 13900, + 13901, + 13902, + 13903, + 13904, + 13905, + 13906, + 13907, + 13908, + 13909, + 13910, + 13911, + 13912, + 13914, + 13915, + 13916, + 13917, + 13918, + 13919, + 13920, + 13921, + 13922, + 13923, + 13924, + 13925, + 13926, + 13927, + 13928, + 13929, + 13930, + 13931, + 13932, + 13933, + 13934, + 13935, + 13936, + 13937, + 13938, + 13939, + 13940, + 13941, + 13942, + 13943, + 13944, + 13945, + 13946, + 13947, + 13948, + 13949, + 13950, + 13951, + 13952, + 13953, + 13954, + 13955, + 13956, + 13957, + 13958, + 13959, + 13960, + 13961, + 13962, + 13963, + 13964, + 13965, + 13966, + 13967, + 13968, + 13969, + 13970, + 13971, + 13972, + 13973, + 13974, + 13975, + 13976, + 13977, + 13978, + 13979, + 13980, + 13981, + 13982, + 13983, + 13984, + 13985, + 13986, + 13987, + 13988, + 13989, + 13990, + 13991, + 13992, + 13993, + 13994, + 13995, + 13996, + 13997, + 13998, + 13999, + 14000, + 14001, + 14002, + 14003, + 14004, + 14005, + 14006, + 14007, + 14008, + 14009, + 14010, + 14011, + 14012, + 14013, + 14014, + 14015, + 14016, + 14017, + 14018, + 14019, + 14020, + 14021, + 14022, + 14023, + 14024, + 14025, + 14026, + 14027, + 14028, + 14029, + 14030, + 14031, + 14032, + 14033, + 14034, + 14035, + 14036, + 14037, + 14038, + 14039, + 14040, + 14041, + 14042, + 14043, + 14044, + 14045, + 14046, + 14047, + 14048, + 14049, + 14050, + 14051, + 14052, + 14053, + 14054, + 14055, + 14056, + 14057, + 14058, + 14059, + 14060, + 14061, + 14062, + 14063, + 14064, + 14065, + 14066, + 14067, + 14068, + 14069, + 14070, + 14071, + 14081, + 14083, + 14084, + 14085, + 14086, + 14087, + 14089, + 14093, + 14095, + 14096, + 14099, + 14101, + 14102, + 14103, + 14104, + 14105, + 14107, + 14110, + 14111, + 14113, + 14114, + 14117, + 14119, + 14120, + 14121, + 14122, + 14123, + 14125, + 14127, + 14128, + 14129, + 14131, + 14132, + 14135, + 14137, + 14138, + 14139, + 14140, + 14141, + 14143, + 14146, + 14147, + 14149, + 14150, + 14151, + 14153, + 14155, + 14156, + 14157, + 14158, + 14159, + 14160, + 14161, + 14162, + 14163, + 14164, + 14165, + 14167, + 14168, + 14169, + 14171, + 14173, + 14174, + 14175, + 14176, + 14177, + 14178, + 14179, + 14180, + 14182, + 14183, + 14185, + 14186, + 14188, + 14189, + 14191, + 14192, + 14193, + 14194, + 14195, + 14197, + 14198, + 14200, + 14201, + 14203, + 14204, + 14205, + 14206, + 14207, + 14209, + 14210, + 14211, + 14212, + 14213, + 14214, + 14215, + 14216, + 14218, + 14219, + 14221, + 14222, + 14223, + 14224, + 14225, + 14227, + 14228, + 14229, + 14230, + 14231, + 14232, + 14233, + 14234, + 14236, + 14237, + 14238, + 14239, + 14240, + 14241, + 14242, + 14243, + 14245, + 14246, + 14247, + 14248, + 14249, + 14250, + 14251, + 14252, + 14253, + 14254, + 14255, + 14256, + 14257, + 14258, + 14259, + 14260, + 14261, + 14262, + 14263, + 14264, + 14265, + 14266, + 14267, + 14268, + 14269, + 14270, + 14271, + 14272, + 14273, + 14274, + 14275, + 14276, + 14277, + 14278, + 14279, + 14280, + 14281, + 14282, + 14283, + 14284, + 14285, + 14286, + 14287, + 14288, + 14289, + 14290, + 14291, + 14292, + 14293, + 14294, + 14295, + 14296, + 14297, + 14298, + 14299, + 14300, + 14301, + 14302, + 14303, + 14304, + 14305, + 14306, + 14307, + 14308, + 14309, + 14310, + 14311, + 14312, + 14313, + 14314, + 14315, + 14316, + 14317, + 14318, + 14319, + 14320, + 14321, + 14322, + 14323, + 14324, + 14325, + 14326, + 14327, + 14328, + 14329, + 14330, + 14331, + 14332, + 14333, + 14334, + 14335, + 14336, + 14337, + 14338, + 14339, + 14340, + 14341, + 14342, + 14343, + 14344, + 14345, + 14346, + 14347, + 14348, + 14349, + 14350, + 14351, + 14352, + 14353, + 14354, + 14355, + 14356, + 14357, + 14358, + 14359, + 14360, + 14361, + 14362, + 14363, + 14364, + 14365, + 14366, + 14367, + 14368, + 14369, + 14370, + 14371, + 14372, + 14373, + 14374, + 14375, + 14376, + 14377, + 14378, + 14379, + 14380, + 14381, + 14382, + 14383, + 14384, + 14385, + 14386, + 14387, + 14388, + 14389, + 14390, + 14391, + 14392, + 14393, + 14394, + 14395, + 14396, + 14397, + 14398, + 14399, + 14400, + 14401, + 14402, + 14403, + 14404, + 14405, + 14406, + 14407, + 14408, + 14409, + 14410, + 14411, + 14412, + 14413, + 14414, + 14415, + 14416, + 14417, + 14418, + 14419, + 14426, + 14427, + 14428, + 14429, + 14430, + 14431, + 14438, + 14439, + 14440, + 14441, + 14442, + 14443, + 14444, + 14446, + 14447, + 14448, + 14450, + 14451, + 14452, + 14453, + 14454, + 14455, + 14458, + 14459, + 14460, + 14461, + 14462, + 14463, + 14464, + 14465, + 14466, + 14467, + 14468, + 14470, + 14471, + 14472, + 14473, + 14474, + 14475, + 14476, + 14477, + 14478, + 14479, + 14480, + 14482, + 14483, + 14484, + 14485, + 14486, + 14487, + 14488, + 14489, + 14490, + 14491, + 14492, + 14493, + 14494, + 14495, + 14496, + 14497, + 14498, + 14499, + 14500, + 14501, + 14502, + 14503, + 14504, + 14505, + 14506, + 14507, + 14508, + 14509, + 14510, + 14511, + 14512, + 14513, + 14514, + 14515, + 14516, + 14517, + 14518, + 14519, + 14520, + 14521, + 14522, + 14523, + 14524, + 14525, + 14526, + 14527, + 14528, + 14529, + 14530, + 14531, + 14532, + 14533, + 14534, + 14535, + 14536, + 14537, + 14538, + 14539, + 14540, + 14541, + 14542, + 14543, + 14544, + 14545, + 14546, + 14547, + 14548, + 14549, + 14550, + 14551, + 14552, + 14553, + 14554, + 14555, + 14556, + 14557, + 14558, + 14559, + 14560, + 14561, + 14562, + 14563, + 14564, + 14565, + 14566, + 14567, + 14568, + 14569, + 14570, + 14571, + 14572, + 14573, + 14574, + 14575, + 14576, + 14577, + 14578, + 14579, + 14580, + 14581, + 14582, + 14583, + 14584, + 14585, + 14586, + 14587, + 14588, + 14589, + 14590, + 14591, + 14592, + 14593, + 14594, + 14595, + 14596, + 14597, + 14598, + 14599, + 14600, + 14601, + 14602, + 14603, + 14604, + 14605, + 14606, + 14607, + 14608, + 14609, + 14610, + 14611, + 14612, + 14613, + 14614, + 14615, + 14616, + 14617, + 14618, + 14619, + 14620, + 14621, + 14622, + 14623, + 14624, + 14625, + 14626, + 14627, + 14628, + 14629, + 14630, + 14631, + 14632, + 14633, + 14634, + 14635, + 14636, + 14637, + 14638, + 14639, + 14640, + 14641, + 14642, + 14643, + 14644, + 14645, + 14646, + 14647, + 14648, + 14649, + 14650, + 14651, + 14652, + 14653, + 14654, + 14655, + 14656, + 14657, + 14658, + 14659, + 14660, + 14661, + 14662, + 14663, + 14664, + 14665, + 14666, + 14667, + 14668, + 14669, + 14670, + 14671, + 14672, + 14673, + 14674, + 14675, + 14676, + 14677, + 14678, + 14679, + 14680, + 14681, + 14682, + 14683, + 14684, + 14685, + 14686, + 14687, + 14688, + 14689, + 14690, + 14691, + 14692, + 14693, + 14694, + 14695, + 14701, + 14702, + 14703, + 14704, + 14706, + 14707, + 14709, + 14711, + 14712, + 14713, + 14714, + 14716, + 14717, + 14719, + 14721, + 14722, + 14723, + 14724, + 14726, + 14727, + 14729, + 14731, + 14732, + 14733, + 14734, + 14736, + 14737, + 14739, + 14740, + 14741, + 14742, + 14743, + 14744, + 14745, + 14746, + 14747, + 14749, + 14750, + 14751, + 14752, + 14753, + 14754, + 14755, + 14756, + 14757, + 14759, + 14760, + 14761, + 14762, + 14763, + 14764, + 14765, + 14766, + 14767, + 14769, + 14770, + 14771, + 14772, + 14773, + 14774, + 14775, + 14776, + 14777, + 14778, + 14779, + 14780, + 14781, + 14782, + 14783, + 14784, + 14785, + 14786, + 14787, + 14788, + 14789, + 14790, + 14791, + 14792, + 14793, + 14794, + 14795, + 14796, + 14797, + 14798, + 14799, + 14800, + 14801, + 14802, + 14803, + 14804, + 14805, + 14806, + 14807, + 14808, + 14809, + 14810, + 14811, + 14812, + 14813, + 14814, + 14815, + 14816, + 14817, + 14818, + 14819, + 14820, + 14821, + 14822, + 14823, + 14824, + 14825, + 14826, + 14827, + 14828, + 14829, + 14830, + 14831, + 14832, + 14833, + 14834, + 14835, + 14836, + 14837, + 14838, + 14839, + 14840, + 14841, + 14842, + 14843, + 14844, + 14845, + 14846, + 14847, + 14848, + 14849, + 14850, + 14851, + 14852, + 14853, + 14854, + 14855, + 14856, + 14857, + 14858, + 14859, + 14860, + 14861, + 14862, + 14863, + 14864, + 14865, + 14866, + 14867, + 14868, + 14869, + 14870, + 14871, + 14872, + 14873, + 14874, + 14875, + 14876, + 14877, + 14878, + 14879, + 14880, + 14881, + 14882, + 14883, + 14884, + 14885, + 14886, + 14887, + 14888, + 14889, + 14890, + 14891, + 14892, + 14893, + 14894, + 14895, + 14896, + 14897, + 14898, + 14899, + 14900, + 14901, + 14902, + 14903, + 14904, + 14905, + 14906, + 14907, + 14908, + 14909, + 14910, + 14911, + 14912, + 14913, + 14914, + 14915, + 14916, + 14917, + 14918, + 14919, + 14920, + 14921, + 14922, + 14923, + 14924, + 14925, + 14926, + 14927, + 14928, + 14929, + 14930, + 14931, + 14932, + 14933, + 14934, + 14935, + 14936, + 14937, + 14938, + 14939, + 14940, + 14941, + 14942, + 14943, + 14944, + 14945, + 14946, + 14947, + 14948, + 14949, + 14950, + 14951, + 14952, + 14953, + 14954, + 14955, + 14956, + 14957, + 14958, + 14959, + 14960, + 14961, + 14962, + 14963, + 14964, + 14965, + 14966, + 14967, + 14968, + 14969, + 14970, + 14971, + 14972, + 14973, + 14974, + 14975, + 14976, + 14977, + 14978, + 14979, + 14980, + 14981, + 14982, + 14983, + 14984, + 14985, + 14986, + 14987, + 14988, + 14989, + 14990, + 14991, + 14992, + 14993, + 14994, + 14995, + 14996, + 14997, + 14998, + 14999, + 15000, + 15001, + 15002, + 15003, + 15004, + 15005, + 15006, + 15007, + 15008, + 15009, + 15010, + 15011, + 15012, + 15013, + 15014, + 15015, + 15016, + 15017, + 15018, + 15019, + 15020, + 15021, + 15022, + 15023, + 15024, + 15025, + 15026, + 15027, + 15028, + 15029, + 15030, + 15031, + 15032, + 15033, + 15034, + 15035, + 15036, + 15037, + 15038, + 15039, + 15040, + 15041, + 15042, + 15043, + 15044, + 15045, + 15046, + 15047, + 15048, + 15049, + 15050, + 15051, + 15052, + 15053, + 15054, + 15055, + 15056, + 15057, + 15058, + 15059, + 15060, + 15061, + 15062, + 15063, + 15064, + 15065, + 15066, + 15067, + 15068, + 15069, + 15070, + 15071, + 15072, + 15073, + 15074, + 15075, + 15076, + 15077, + 15078, + 15079, + 15080, + 15081, + 15082, + 15083, + 15084, + 15085, + 15086, + 15087, + 15088, + 15089, + 15090, + 15091, + 15092, + 15093, + 15094, + 15095, + 15096, + 15097, + 15098, + 15099, + 15100, + 15101, + 15102, + 15103, + 15104, + 15105, + 15106, + 15107, + 15108, + 15109, + 15110, + 15111, + 15112, + 15113, + 15114, + 15115, + 15116, + 15117, + 15118, + 15119, + 15120, + 15121, + 15122, + 15123, + 15124, + 15125, + 15126, + 15127, + 15128, + 15129, + 15130, + 15131, + 15132, + 15133, + 15134, + 15135, + 15136, + 15137, + 15138, + 15139, + 15140, + 15141, + 15142, + 15143, + 15144, + 15145, + 15146, + 15147, + 15148, + 15149, + 15150, + 15151, + 15152, + 15153, + 15154, + 15155, + 15156, + 15157, + 15158, + 15159, + 15160, + 15161, + 15162, + 15163, + 15164, + 15165, + 15166, + 15167, + 15168, + 15169, + 15170, + 15171, + 15172, + 15173, + 15174, + 15175, + 15176, + 15177, + 15178, + 15179, + 15180, + 15181, + 15182, + 15183, + 15184, + 15185, + 15186, + 15187, + 15188, + 15189, + 15190, + 15191, + 15192, + 15193, + 15194, + 15195, + 15196, + 15197, + 15198, + 15199, + 15200, + 15201, + 15202, + 15203, + 15204, + 15205, + 15206, + 15207, + 15208, + 15209, + 15210, + 15211, + 15212, + 15213, + 15214, + 15215, + 15216, + 15217, + 15218, + 15219, + 15220, + 15221, + 15222, + 15223, + 15224, + 15225, + 15226, + 15227, + 15228, + 15229, + 15230, + 15231, + 15232, + 15233, + 15234, + 15235, + 15236, + 15237, + 15238, + 15239, + 15240, + 15241, + 15242, + 15243, + 15244, + 15245, + 15246, + 15247, + 15248, + 15249, + 15250, + 15251, + 15252, + 15253, + 15254, + 15255, + 15256, + 15257, + 15258, + 15259, + 15260, + 15261, + 15262, + 15263, + 15264, + 15265, + 15266, + 15267, + 15268, + 15269, + 15270, + 15271, + 15272, + 15273, + 15274, + 15275, + 15276, + 15277, + 15278, + 15279, + 15280, + 15281, + 15282, + 15283, + 15284, + 15285, + 15286, + 15287, + 15288, + 15289, + 15290, + 15291, + 15292, + 15293, + 15294, + 15295, + 15296, + 15297, + 15298, + 15299, + 15300, + 15301, + 15302, + 15303, + 15304, + 15305, + 15306, + 15307, + 15308, + 15309, + 15310, + 15311, + 15312, + 15313, + 15314, + 15315, + 15316, + 15317, + 15318, + 15319, + 15320, + 15321, + 15322, + 15323, + 15324, + 15325, + 15326, + 15327, + 15328, + 15329, + 15330, + 15331, + 15332, + 15333, + 15334, + 15335, + 15336, + 15337, + 15338, + 15339, + 15340, + 15341, + 15342, + 15343, + 15344, + 15345, + 15346, + 15347, + 15348, + 15349, + 15350, + 15351, + 15352, + 15353, + 15354, + 15355, + 15356, + 15357, + 15358, + 15359, + 15360, + 15361, + 15362, + 15363, + 15364, + 15365, + 15366, + 15367, + 15368, + 15369, + 15370, + 15371, + 15372, + 15373, + 15374, + 15375, + 15376, + 15377, + 15378, + 15379, + 15380, + 15381, + 15382, + 15383, + 15384, + 15385, + 15386, + 15387, + 15388, + 15389, + 15390, + 15391, + 15392, + 15393, + 15394, + 15395, + 15396, + 15397, + 15398, + 15399, + 15400, + 15401, + 15402, + 15403, + 15404, + 15405, + 15406, + 15407, + 15408, + 15409, + 15410, + 15411, + 15412, + 15413, + 15414, + 15415, + 15416, + 15417, + 15418, + 15419, + 15420, + 15421, + 15422, + 15423, + 15424, + 15425, + 15426, + 15427, + 15428, + 15429, + 15430, + 15431, + 15432, + 15433, + 15434, + 15435, + 15436, + 15437, + 15438, + 15439, + 15440, + 15441, + 15442, + 15443, + 15444, + 15445, + 15446, + 15447, + 15448, + 15449, + 15450, + 15451, + 15452, + 15453, + 15454, + 15455, + 15456, + 15457, + 15458, + 15459, + 15460, + 15461, + 15462, + 15463, + 15464, + 15465, + 15466, + 15467, + 15468, + 15469, + 15470, + 15471, + 15472, + 15473, + 15474, + 15475, + 15476, + 15477, + 15478, + 15479, + 15480, + 15481, + 15482, + 15483, + 15484, + 15485, + 15486, + 15487, + 15488, + 15489, + 15490, + 15491, + 15492, + 15493, + 15494, + 15495, + 15496, + 15497, + 15498, + 15499, + 15500, + 15501, + 15502, + 15503, + 15504, + 15505, + 15506, + 15507, + 15508, + 15509, + 15510, + 15511, + 15512, + 15513, + 15514, + 15515, + 15516, + 15517, + 15518, + 15519, + 15520, + 15521, + 15522, + 15523, + 15524, + 15525, + 15526, + 15527, + 15528, + 15529, + 15530, + 15531, + 15532, + 15533, + 15534, + 15535, + 15536, + 15537, + 15538, + 15539, + 15540, + 15541, + 15542, + 15543, + 15544, + 15545, + 15546, + 15547, + 15548, + 15549, + 15550, + 15551, + 15552, + 15553, + 15554, + 15555, + 15556, + 15557, + 15558, + 15559, + 15560, + 15561, + 15562, + 15563, + 15564, + 15565, + 15566, + 15567, + 15568, + 15569, + 15570, + 15571, + 15572, + 15573, + 15574, + 15575, + 15576, + 15577, + 15578, + 15579, + 15580, + 15581, + 15582, + 15583, + 15584, + 15585, + 15586, + 15587, + 15588, + 15589, + 15590, + 15591, + 15592, + 15593, + 15594, + 15595, + 15596, + 15597, + 15598, + 15599, + 15600, + 15601, + 15602, + 15603, + 15604, + 15605, + 15606, + 15607, + 15608, + 15609, + 15610, + 15611, + 15612, + 15613, + 15614, + 15615, + 15616, + 15617, + 15618, + 15619, + 15620, + 15621, + 15622, + 15623, + 15624, + 15625, + 15626, + 15627, + 15628, + 15629, + 15630, + 15631, + 15632, + 15633, + 15634, + 15635, + 15636, + 15637, + 15638, + 15639, + 15640, + 15641, + 15642, + 15643, + 15644, + 15645, + 15646, + 15647, + 15648, + 15649, + 15650, + 15651, + 15652, + 15653, + 15654, + 15655, + 15656, + 15657, + 15658, + 15659, + 15660, + 15661, + 15662, + 15663, + 15664, + 15665, + 15666, + 15667, + 15668, + 15669, + 15670, + 15671, + 15672, + 15673, + 15674, + 15675, + 15676, + 15677, + 15678, + 15679, + 15680, + 15681, + 15682, + 15683, + 15684, + 15685, + 15686, + 15687, + 15688, + 15689, + 15690, + 15691, + 15692, + 15693, + 15694, + 15695, + 15696, + 15697, + 15698, + 15699, + 15700, + 15701, + 15702, + 15703, + 15704, + 15705, + 15706, + 15707, + 15708, + 15709, + 15710, + 15711, + 15712, + 15713, + 15714, + 15715, + 15716, + 15717, + 15718, + 15719, + 15720, + 15721, + 15722, + 15723, + 15724, + 15725, + 15726, + 15727, + 15728, + 15729, + 15730, + 15731, + 15732, + 15733, + 15734, + 15735, + 15736, + 15737, + 15738, + 15739, + 15740, + 15741, + 15742, + 15743, + 15744, + 15745, + 15746, + 15747, + 15748, + 15749, + 15750, + 15751, + 15752, + 15753, + 15754, + 15755, + 15756, + 15757, + 15758, + 15759, + 15760, + 15761, + 15762, + 15763, + 15764, + 15765, + 15766, + 15767, + 15768, + 15769, + 15770, + 15771, + 15772, + 15773, + 15774, + 15775, + 15776, + 15777, + 15778, + 15779, + 15780, + 15781, + 15782, + 15783, + 15784, + 15785, + 15786, + 15787, + 15788, + 15789, + 15790, + 15791, + 15792, + 15793, + 15794, + 15795, + 15796, + 15797, + 15798, + 15799, + 15800, + 15801, + 15802, + 15803, + 15804, + 15805, + 15806, + 15807, + 15808, + 15809, + 15810, + 15811, + 15812, + 15813, + 15814, + 15815, + 15816, + 15817, + 15818, + 15819, + 15820, + 15821, + 15822, + 15823, + 15824, + 15825, + 15826, + 15827, + 15828, + 15829, + 15830, + 15831, + 15832, + 15833, + 15834, + 15835, + 15836, + 15837, + 15838, + 15839, + 15840, + 15841, + 15842, + 15843, + 15844, + 15845, + 15846, + 15847, + 15848, + 15849, + 15850, + 15851, + 15852, + 15853, + 15854, + 15855, + 15856, + 15857, + 15858, + 15859, + 15860, + 15861, + 15862, + 15863, + 15864, + 15865, + 15866, + 15867, + 15868, + 15869, + 15870, + 15871, + 15872, + 15873, + 15874, + 15875, + 15876, + 15877, + 15878, + 15879, + 15880, + 15881, + 15882, + 15883, + 15884, + 15885, + 15886, + 15887, + 15888, + 15889, + 15890, + 15891, + 15892, + 15893, + 15894, + 15895, + 15896, + 15897, + 15898, + 15899, + 15900, + 15901, + 15902, + 15903, + 15904, + 15905, + 15906, + 15907, + 15908, + 15909, + 15910, + 15911, + 15912, + 15913, + 15914, + 15915, + 15916, + 15917, + 15918, + 15919, + 15920, + 15921, + 15922, + 15923, + 15924, + 15925, + 15926, + 15927, + 15928, + 15929, + 15930, + 15931, + 15932, + 15933, + 15934, + 15935, + 15936, + 15937, + 15938, + 15939, + 15940, + 15941, + 15942, + 15943, + 15944, + 15945, + 15946, + 15947, + 15948, + 15949, + 15950, + 15951, + 15952, + 15953, + 15954, + 15955, + 15956, + 15957, + 15958, + 15959, + 15960, + 15961, + 15962, + 15963, + 15964, + 15965, + 15966, + 15967, + 15968, + 15969, + 15970, + 15971, + 15972, + 15973, + 15974, + 15975, + 15976, + 15977, + 15978, + 15979, + 15980, + 15981, + 15982, + 15983, + 15984, + 15985, + 15986, + 15987, + 15988, + 15989, + 15990, + 15991, + 15992, + 15993, + 15994, + 15995, + 15996, + 15997, + 15998, + 15999, + 16000, + 16001, + 16002, + 16003, + 16004, + 16005, + 16006, + 16007, + 16008, + 16009, + 16010, + 16011, + 16012, + 16013, + 16014, + 16015, + 16016, + 16017, + 16018, + 16019, + 16020, + 16021, + 16022, + 16023, + 16024, + 16025, + 16026, + 16027, + 16028, + 16029, + 16030, + 16031, + 16032, + 16033, + 16034, + 16035, + 16036, + 16037, + 16038, + 16039, + 16040, + 16041, + 16042, + 16043, + 16044, + 16045, + 16046, + 16047, + 16048, + 16049, + 16050, + 16051, + 16052, + 16053, + 16054, + 16055, + 16056, + 16057, + 16058, + 16059, + 16060, + 16061, + 16062, + 16063, + 16064, + 16065, + 16066, + 16067, + 16068, + 16069, + 16070, + 16071, + 16072, + 16073, + 16074, + 16075, + 16076, + 16077, + 16078, + 16079, + 16080, + 16081, + 16082, + 16083, + 16084, + 16085, + 16086, + 16087, + 16088, + 16089, + 16090, + 16091, + 16092, + 16093, + 16094, + 16095, + 16096, + 16097, + 16098, + 16099, + 16100, + 16101, + 16102, + 16103, + 16104, + 16105, + 16106, + 16107, + 16108, + 16109, + 16110, + 16111, + 16112, + 16113, + 16114, + 16115, + 16116, + 16117, + 16118, + 16119, + 16120, + 16121, + 16122, + 16123, + 16124, + 16125, + 16126, + 16127, + 16128, + 16129, + 16130, + 16131, + 16132, + 16133, + 16134, + 16135, + 16136, + 16137, + 16138, + 16139, + 16140, + 16141, + 16142, + 16143, + 16144, + 16145, + 16146, + 16147, + 16148, + 16149, + 16150, + 16151, + 16152, + 16153, + 16154, + 16155, + 16156, + 16157, + 16158, + 16159, + 16160, + 16161, + 16162, + 16163, + 16164, + 16165, + 16166, + 16167, + 16168, + 16169, + 16170, + 16171, + 16172, + 16173, + 16174, + 16175, + 16176, + 16177, + 16178, + 16179, + 16180, + 16181, + 16182, + 16183, + 16184, + 16185, + 16186, + 16187, + 16188, + 16189, + 16190, + 16191, + 16192, + 16193, + 16194, + 16195, + 16196, + 16197, + 16198, + 16199, + 16200, + 16201, + 16202, + 16203, + 16204, + 16205, + 16206, + 16207, + 16208, + 16209, + 16210, + 16211, + 16212, + 16213, + 16214, + 16215, + 16216, + 16217, + 16218, + 16219, + 16220, + 16221, + 16222, + 16223, + 16224, + 16225, + 16226, + 16227, + 16228, + 16229, + 16230, + 16231, + 16232, + 16233, + 16234, + 16235, + 16236, + 16237, + 16238, + 16239, + 16240, + 16241, + 16242, + 16243, + 16244, + 16245, + 16246, + 16247, + 16248, + 16249, + 16250, + 16251, + 16252, + 16253, + 16254, + 16255, + 16256, + 16257, + 16258, + 16259, + 16260, + 16261, + 16262, + 16263, + 16264, + 16265, + 16266, + 16267, + 16268, + 16269, + 16270, + 16271, + 16272, + 16273, + 16274, + 16275, + 16276, + 16277, + 16278, + 16279, + 16280, + 16281, + 16282, + 16283, + 16284, + 16285, + 16286, + 16287, + 16288, + 16289, + 16290, + 16291, + 16292, + 16293, + 16294, + 16295, + 16296, + 16297, + 16298, + 16299, + 16300, + 16301, + 16302, + 16303, + 16304, + 16305, + 16306, + 16307, + 16308, + 16309, + 16310, + 16311, + 16312, + 16313, + 16314, + 16315, + 16316, + 16317, + 16318, + 16319, + 16320, + 16321, + 16322, + 16323, + 16324, + 16325, + 16326, + 16327, + 16328, + 16329, + 16330, + 16331, + 16332, + 16333, + 16334, + 16335, + 16336, + 16337, + 16338, + 16339, + 16340, + 16341, + 16342, + 16343, + 16344, + 16345, + 16346, + 16347, + 16348, + 16349, + 16350, + 16351, + 16352, + 16353, + 16354, + 16355, + 16356, + 16357, + 16358, + 16359, + 16360, + 16361, + 16362, + 16363, + 16364, + 16365, + 16366, + 16367, + 16368, + 16369, + 16370, + 16371, + 16372, + 16373, + 16374, + 16375, + 16376, + 16377, + 16378, + 16379, + 16380, + 16381, + 16382, + 16383, + 16384, + 16385, + 16386, + 16387, + 16388, + 16389, + 16390, + 16391, + 16392, + 16393, + 16394, + 16395, + 16396, + 16397, + 16398, + 16399, + 16400, + 16401, + 16402, + 16403, + 16404, + 16405, + 16406, + 16407, + 16408, + 16409, + 16410, + 16411, + 16412, + 16413, + 16414, + 16415, + 16416, + 16417, + 16418, + 16419, + 16420, + 16421, + 16422, + 16423, + 16424, + 16425, + 16426, + 16427, + 16428, + 16429, + 16430, + 16431, + 16432, + 16433, + 16434, + 16435, + 16436, + 16437, + 16438, + 16439, + 16440, + 16441, + 16442, + 16443, + 16444, + 16445, + 16446, + 16447, + 16448, + 16449, + 16450, + 16451, + 16452, + 16453, + 16454, + 16455, + 16456, + 16457, + 16458, + 16459, + 16460, + 16461, + 16462, + 16463, + 16464, + 16465, + 16466, + 16467, + 16468, + 16469, + 16470, + 16471, + 16472, + 16473, + 16474, + 16475, + 16476, + 16477, + 16478, + 16479, + 16480, + 16481, + 16482, + 16483, + 16484, + 16485, + 16486, + 16487, + 16488, + 16489, + 16490, + 16491, + 16492, + 16493, + 16494, + 16495, + 16496, + 16497, + 16498, + 16499, + 16500, + 16501, + 16502, + 16503, + 16504, + 16505, + 16506, + 16507, + 16508, + 16509, + 16510, + 16511, + 16512, + 16513, + 16514, + 16515, + 16516, + 16517, + 16518, + 16519, + 16520, + 16521, + 16522, + 16523, + 16524, + 16525, + 16526, + 16527, + 16528, + 16529, + 16530, + 16531, + 16532, + 16533, + 16534, + 16535, + 16536, + 16537, + 16538, + 16539, + 16540, + 16541, + 16542, + 16543, + 16544, + 16545, + 16546, + 16547, + 16548, + 16549, + 16550, + 16551, + 16552, + 16553, + 16554, + 16555, + 16556, + 16557, + 16558, + 16559, + 16560, + 16561, + 16562, + 16563, + 16564, + 16565, + 16566, + 16567, + 16568, + 16569, + 16570, + 16571, + 16572, + 16573, + 16574, + 16575, + 16576, + 16577, + 16578, + 16579, + 16580, + 16581, + 16582, + 16583, + 16584, + 16585, + 16586, + 16587, + 16588, + 16589, + 16590, + 16591, + 16592, + 16593, + 16594, + 16595, + 16596, + 16597, + 16598, + 16599, + 16600, + 16601, + 16602, + 16603, + 16604, + 16605, + 16606, + 16607, + 16608, + 16609, + 16610, + 16611, + 16612, + 16613, + 16614, + 16615, + 16616, + 16617, + 16618, + 16619, + 16620, + 16621, + 16622, + 16623, + 16624, + 16625, + 16626, + 16627, + 16628, + 16629, + 16630, + 16631, + 16632, + 16633, + 16634, + 16635, + 16636, + 16637, + 16638, + 16639, + 16640, + 16641, + 16642, + 16643, + 16644, + 16645, + 16646, + 16647, + 16648, + 16649, + 16650, + 16651, + 16652, + 16653, + 16654, + 16655, + 16656, + 16657, + 16658, + 16659, + 16660, + 16661, + 16662, + 16663, + 16664, + 16665, + 16666, + 16667, + 16668, + 16669, + 16670, + 16671, + 16672, + 16673, + 16674, + 16675, + 16676, + 16677, + 16678, + 16679, + 16680, + 16681, + 16682, + 16683, + 16684, + 16685, + 16686, + 16687, + 16688, + 16689, + 16690, + 16691, + 16692, + 16693, + 16694, + 16695, + 16696, + 16697, + 16698, + 16699, + 16700, + 16701, + 16702, + 16703, + 16704, + 16705, + 16706, + 16707, + 16708, + 16709, + 16710, + 16711, + 16712, + 16713, + 16714, + 16715, + 16716, + 16717, + 16718, + 16719, + 16720, + 16721, + 16722, + 16723, + 16724, + 16725, + 16726, + 16727, + 16728, + 16729, + 16730, + 16731, + 16732, + 16733, + 16734, + 16735, + 16736, + 16737, + 16738, + 16739, + 16740, + 16741, + 16742, + 16743, + 16744, + 16745, + 16746, + 16747, + 16748, + 16749, + 16750, + 16751, + 16752, + 16753, + 16754, + 16755, + 16756, + 16757, + 16758, + 16759, + 16760, + 16761, + 16762, + 16763, + 16764, + 16765, + 16766, + 16767, + 16768, + 16769, + 16770, + 16771, + 16772, + 16773, + 16774, + 16775, + 16776, + 16777, + 16778, + 16779, + 16780, + 16781, + 16782, + 16783, + 16784, + 16785, + 16786, + 16787, + 16788, + 16789, + 16790, + 16791, + 16792, + 16793, + 16794, + 16795, + 16796, + 16797, + 16798, + 16799, + 16800, + 16801, + 16802, + 16803, + 16804, + 16805, + 16806, + 16807, + 16808, + 16809, + 16810, + 16811, + 16812, + 16813, + 16814, + 16815, + 16816, + 16817, + 16818, + 16819, + 16820, + 16821, + 16822, + 16823, + 16824, + 16825, + 16826, + 16827, + 16828, + 16829, + 16830, + 16831, + 16832, + 16833, + 16834, + 16835, + 16836, + 16837, + 16838, + 16839, + 16840, + 16841, + 16842, + 16843, + 16844, + 16845, + 16846, + 16847, + 16848, + 16849, + 16850, + 16851, + 16852, + 16853, + 16854, + 16855, + 16856, + 16857, + 16858, + 16859, + 16860, + 16861, + 16862, + 16863, + 16864, + 16865, + 16866, + 16867, + 16868, + 16869, + 16870, + 16871, + 16872, + 16873, + 16874, + 16875, + 16876, + 16877, + 16878, + 16879, + 16880, + 16881, + 16882, + 16883, + 16884, + 16885, + 16886, + 16887, + 16888, + 16889, + 16890, + 16891, + 16892, + 16893, + 16894, + 16895, + 16896, + 16897, + 16898, + 16899, + 16900, + 16901, + 16902, + 16903, + 16904, + 16905, + 16906, + 16907, + 16908, + 16909, + 16910, + 16911, + 16912, + 16913, + 16914, + 16915, + 16916, + 16917, + 16918, + 16919, + 16920, + 16921, + 16922, + 16923, + 16924, + 16925, + 16926, + 16927, + 16928, + 16929, + 16930, + 16931, + 16932, + 16933, + 16934, + 16935, + 16936, + 16937, + 16938, + 16939, + 16940, + 16941, + 16942, + 16943, + 16944, + 16945, + 16946, + 16947, + 16948, + 16949, + 16950, + 16951, + 16952, + 16953, + 16954, + 16955, + 16956, + 16957, + 16958, + 16959, + 16960, + 16961, + 16962, + 16963, + 16964, + 16965, + 16966, + 16967, + 16968, + 16969, + 16970, + 16971, + 16972, + 16973, + 16974, + 16975, + 16976, + 16977, + 16978, + 16979, + 16980, + 16981, + 16982, + 16983, + 16984, + 16985, + 16986, + 16987, + 16988, + 16989, + 16990, + 16991, + 16992, + 16993, + 16994, + 16995, + 16996, + 16997, + 16998, + 16999, + 17000, + 17001, + 17002, + 17003, + 17004, + 17005, + 17006, + 17007, + 17008, + 17009, + 17010, + 17011, + 17012, + 17013, + 17014, + 17015, + 17016, + 17017, + 17018, + 17019, + 17020, + 17021, + 17022, + 17023, + 17024, + 17025, + 17026, + 17027, + 17028, + 17029, + 17030, + 17031, + 17032, + 17033, + 17034, + 17035, + 17036, + 17037, + 17038, + 17039, + 17040, + 17041, + 17042, + 17043, + 17044, + 17045, + 17046, + 17047, + 17048, + 17049, + 17050, + 17051, + 17052, + 17053, + 17054, + 17055, + 17056, + 17057, + 17058, + 17059, + 17060, + 17061, + 17062, + 17063, + 17064, + 17065, + 17066, + 17067, + 17068, + 17069, + 17070, + 17071, + 17072, + 17073, + 17074, + 17075, + 17076, + 17077, + 17078, + 17079, + 17080, + 17081, + 17082, + 17083, + 17084, + 17085, + 17086, + 17087, + 17088, + 17089, + 17090, + 17091, + 17092, + 17093, + 17094, + 17095, + 17096, + 17097, + 17098, + 17099, + 17100, + 17101, + 17102, + 17103, + 17104, + 17105, + 17106, + 17107, + 17108, + 17109, + 17110, + 17111, + 17112, + 17113, + 17114, + 17115, + 17116, + 17117, + 17118, + 17119, + 17120, + 17121, + 17122, + 17123, + 17124, + 17125, + 17126, + 17127, + 17128, + 17129, + 17130, + 17131, + 17132, + 17133, + 17134, + 17135, + 17136, + 17137, + 17138, + 17139, + 17140, + 17141, + 17142, + 17143, + 17144, + 17145, + 17146, + 17147 + ], + "residual_rank_families": { + "24": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 27, + 28, + 29, + 30, + 31, + 32, + 33, + 34, + 35, + 36, + 37, + 38, + 39, + 40, + 41, + 42, + 43, + 44, + 46, + 47, + 48, + 49, + 50, + 51, + 52, + 53, + 54, + 55, + 56, + 57, + 59, + 60, + 61, + 62, + 63, + 64, + 65, + 66, + 67, + 68, + 69, + 70, + 71, + 72, + 73, + 74, + 75, + 76, + 78, + 79, + 80, + 81, + 82, + 83, + 84, + 85, + 86, + 87, + 88, + 89, + 91, + 92, + 93, + 94, + 95, + 96, + 97, + 98, + 99, + 100, + 101, + 102, + 103, + 104, + 105, + 106, + 107, + 108, + 110, + 111, + 112, + 113, + 114, + 115, + 116, + 117, + 118, + 119, + 120, + 121, + 123, + 124, + 125, + 126, + 127, + 128, + 129, + 130, + 131, + 132, + 133, + 134, + 135, + 136, + 137, + 138, + 139, + 140, + 142, + 143, + 144, + 145, + 146, + 147, + 148, + 149, + 150, + 151, + 152, + 153, + 155, + 156, + 157, + 158, + 159, + 160, + 161, + 162, + 163, + 164, + 165, + 166, + 167, + 168, + 169, + 170, + 171, + 172, + 174, + 175, + 176, + 177, + 178, + 179, + 180, + 181, + 182, + 183, + 184, + 185, + 187, + 188, + 189, + 190, + 191, + 192, + 193, + 194, + 195, + 196, + 197, + 198, + 199, + 200, + 201, + 202, + 203, + 204, + 206, + 207, + 208, + 209, + 210, + 211, + 212, + 213, + 214, + 215, + 216, + 217, + 219, + 220, + 221, + 222, + 223, + 224, + 225, + 226, + 227, + 228, + 229, + 230, + 231, + 232, + 233, + 234, + 235, + 236, + 238, + 239, + 240, + 241, + 242, + 243, + 244, + 245, + 246, + 247, + 248, + 249, + 251, + 252, + 253, + 254, + 255, + 256, + 257, + 258, + 259, + 260, + 261, + 262, + 263, + 264, + 265, + 266, + 267, + 268, + 270, + 271, + 272, + 273, + 274, + 275, + 276, + 277, + 278, + 279, + 280, + 281, + 283, + 284, + 285, + 286, + 287, + 288, + 289, + 290, + 291, + 292, + 293, + 294, + 295, + 296, + 297, + 298, + 299, + 300, + 302, + 303, + 304, + 305, + 306, + 307, + 308, + 309, + 310, + 311, + 312, + 313, + 315, + 316, + 317, + 318, + 319, + 320, + 321, + 322, + 323, + 324, + 325, + 326, + 327, + 328, + 329, + 330, + 331, + 332, + 334, + 335, + 336, + 337, + 338, + 339, + 340, + 341, + 342, + 343, + 344, + 345, + 347, + 348, + 349, + 350, + 351, + 352, + 353, + 354, + 355, + 356, + 357, + 358, + 359, + 360, + 361, + 362, + 363, + 364, + 366, + 367, + 368, + 369, + 370, + 371, + 372, + 373, + 374, + 375, + 376, + 377, + 379, + 380, + 381, + 382, + 383, + 384, + 385, + 386, + 387, + 388, + 389, + 390, + 391, + 392, + 393, + 394, + 395, + 396, + 398, + 399, + 400, + 401, + 402, + 403, + 404, + 405, + 406, + 407, + 408, + 409, + 411, + 412, + 413, + 414, + 415, + 416, + 417, + 418, + 419, + 420, + 421, + 422, + 423, + 424, + 425, + 426, + 427, + 428, + 430, + 431, + 432, + 433, + 434, + 435, + 436, + 437, + 438, + 439, + 440, + 441, + 443, + 444, + 445, + 446, + 447, + 448, + 449, + 450, + 451, + 452, + 453, + 454, + 455, + 456, + 457, + 458, + 459, + 460, + 462, + 463, + 464, + 465, + 466, + 467, + 468, + 469, + 470, + 471, + 472, + 473, + 475, + 476, + 477, + 478, + 479, + 480, + 481, + 482, + 483, + 484, + 485, + 486, + 487, + 488, + 489, + 490, + 491, + 492, + 494, + 495, + 496, + 497, + 498, + 499, + 500, + 501, + 502, + 503, + 504, + 505, + 507, + 508, + 509, + 510, + 511, + 512, + 513, + 514, + 515, + 516, + 517, + 518, + 519, + 520, + 521, + 522, + 523, + 524, + 526, + 527, + 528, + 529, + 530, + 531, + 532, + 533, + 534, + 535, + 536, + 537, + 539, + 540, + 541, + 542, + 543, + 544, + 545, + 546, + 547, + 548, + 549, + 550, + 551, + 552, + 553, + 554, + 555, + 556, + 558, + 559, + 560, + 561, + 562, + 563, + 564, + 565, + 566, + 567, + 568, + 569, + 571, + 572, + 573, + 574, + 575, + 576, + 577, + 578, + 579, + 580, + 581, + 582, + 583, + 584, + 585, + 586, + 587, + 588, + 590, + 591, + 592, + 593, + 594, + 595, + 596, + 597, + 598, + 599, + 600, + 601, + 603, + 604, + 605, + 606, + 607, + 608, + 609, + 610, + 611, + 612, + 613, + 614, + 615, + 616, + 617, + 618, + 619, + 620, + 622, + 623, + 624, + 625, + 626, + 627, + 628, + 629, + 630, + 631, + 632, + 633, + 635, + 636, + 637, + 638, + 639, + 640, + 641, + 642, + 643, + 644, + 645, + 646, + 647, + 648, + 649, + 650, + 651, + 652, + 654, + 655, + 656, + 657, + 658, + 659, + 660, + 661, + 662, + 663, + 664, + 665, + 667, + 668, + 669, + 670, + 671, + 672, + 673, + 674, + 675, + 676, + 677, + 678, + 679, + 680, + 681, + 682, + 683, + 684, + 686, + 687, + 688, + 689, + 690, + 691, + 692, + 693, + 694, + 695, + 696, + 697, + 699, + 700, + 701, + 702, + 703, + 704, + 705, + 706, + 707, + 708, + 709, + 710, + 711, + 712, + 713, + 714, + 715, + 716, + 718, + 719, + 720, + 721, + 722, + 723, + 724, + 725, + 726, + 727, + 728, + 729, + 731, + 732, + 733, + 734, + 735, + 736, + 737, + 738, + 739, + 740, + 741, + 742, + 743, + 744, + 745, + 746, + 747, + 748, + 750, + 751, + 752, + 753, + 754, + 755, + 756, + 757, + 758, + 759, + 760, + 761, + 763, + 764, + 765, + 766, + 767, + 768, + 769, + 770, + 771, + 772, + 773, + 774, + 775, + 776, + 777, + 778, + 779, + 780, + 782, + 783, + 784, + 785, + 786, + 787, + 788, + 789, + 790, + 791, + 792, + 793, + 795, + 796, + 797, + 798, + 799, + 800, + 801, + 802, + 803, + 804, + 805, + 806, + 807, + 808, + 809, + 810, + 811, + 812, + 814, + 815, + 816, + 817, + 818, + 819, + 820, + 821, + 822, + 823, + 824, + 825, + 827, + 828, + 829, + 830, + 831, + 832, + 833, + 834, + 835, + 836, + 837, + 838, + 839, + 840, + 841, + 842, + 843, + 844, + 846, + 847, + 848, + 849, + 850, + 851, + 852, + 853, + 854, + 855, + 856, + 857, + 859, + 860, + 861, + 862, + 863, + 864, + 865, + 866, + 867, + 868, + 869, + 870, + 871, + 872, + 873, + 874, + 875, + 876, + 878, + 879, + 880, + 881, + 882, + 883, + 884, + 885, + 886, + 887, + 888, + 889, + 891, + 892, + 893, + 894, + 895, + 896, + 897, + 898, + 899, + 900, + 901, + 902, + 903, + 904, + 905, + 906, + 907, + 908, + 910, + 911, + 912, + 913, + 914, + 915, + 916, + 917, + 918, + 919, + 920, + 921, + 923, + 924, + 925, + 926, + 927, + 928, + 929, + 930, + 931, + 932, + 933, + 934, + 935, + 936, + 937, + 938, + 939, + 940, + 942, + 943, + 944, + 945, + 946, + 947, + 948, + 949, + 950, + 951, + 952, + 953, + 955, + 956, + 957, + 958, + 959, + 960, + 961, + 962, + 963, + 964, + 965, + 966, + 967, + 968, + 969, + 970, + 971, + 972, + 974, + 975, + 976, + 977, + 978, + 979, + 980, + 981, + 982, + 983, + 984, + 985, + 987, + 988, + 989, + 990, + 991, + 992, + 993, + 994, + 995, + 996, + 997, + 998, + 999, + 1000, + 1001, + 1002, + 1003, + 1004, + 1006, + 1007, + 1008, + 1009, + 1010, + 1011, + 1012, + 1013, + 1014, + 1015, + 1016, + 1017, + 1019, + 1020, + 1021, + 1022, + 1023, + 1024, + 1025, + 1026, + 1027, + 1028, + 1029, + 1030, + 1031, + 1032, + 1033, + 1034, + 1035, + 1036, + 1038, + 1039, + 1040, + 1041, + 1042, + 1043, + 1044, + 1045, + 1046, + 1047, + 1048, + 1049, + 1051, + 1052, + 1053, + 1054, + 1055, + 1056, + 1057, + 1058, + 1059, + 1060, + 1061, + 1062, + 1063, + 1064, + 1065, + 1066, + 1067, + 1068, + 1070, + 1071, + 1072, + 1073, + 1074, + 1075, + 1076, + 1077, + 1078, + 1079, + 1080, + 1081, + 1083, + 1084, + 1085, + 1086, + 1087, + 1088, + 1089, + 1090, + 1091, + 1092, + 1093, + 1094, + 1095, + 1096, + 1097, + 1098, + 1099, + 1100, + 1102, + 1103, + 1104, + 1105, + 1106, + 1107, + 1108, + 1109, + 1110, + 1111, + 1112, + 1113, + 1115, + 1116, + 1117, + 1118, + 1119, + 1120, + 1121, + 1122, + 1123, + 1124, + 1125, + 1126, + 1127, + 1128, + 1129, + 1130, + 1131, + 1132, + 1134, + 1135, + 1136, + 1137, + 1138, + 1139, + 1140, + 1141, + 1142, + 1143, + 1144, + 1145, + 1147, + 1148, + 1149, + 1150, + 1151, + 1152, + 1153, + 1154, + 1155, + 1156, + 1157, + 1158, + 1159, + 1160, + 1161, + 1162, + 1163, + 1164, + 1166, + 1167, + 1168, + 1169, + 1170, + 1171, + 1172, + 1173, + 1174, + 1175, + 1176, + 1177, + 1179, + 1180, + 1181, + 1182, + 1183, + 1184, + 1185, + 1186, + 1187, + 1188, + 1189, + 1190, + 1191, + 1192, + 1193, + 1194, + 1195, + 1196, + 1198, + 1199, + 1200, + 1201, + 1202, + 1203, + 1204, + 1205, + 1206, + 1207, + 1208, + 1209, + 1211, + 1212, + 1213, + 1214, + 1215, + 1216, + 1217, + 1218, + 1219, + 1220, + 1221, + 1222, + 1223, + 1224, + 1225, + 1226, + 1227, + 1228, + 1230, + 1231, + 1232, + 1233, + 1234, + 1235, + 1236, + 1237, + 1238, + 1239, + 1240, + 1241, + 1243, + 1244, + 1245, + 1246, + 1247, + 1248, + 1249, + 1250, + 1251, + 1252, + 1253, + 1254, + 1255, + 1256, + 1257, + 1258, + 1259, + 1260, + 1262, + 1263, + 1264, + 1265, + 1266, + 1267, + 1268, + 1269, + 1270, + 1271, + 1272, + 1273, + 1275, + 1276, + 1277, + 1278, + 1279, + 1280, + 1281, + 1282, + 1283, + 1284, + 1285, + 1286, + 1287, + 1288, + 1289, + 1290, + 1291, + 1292, + 1294, + 1295, + 1296, + 1297, + 1298, + 1299, + 1300, + 1301, + 1302, + 1303, + 1304, + 1305, + 1307, + 1308, + 1309, + 1310, + 1311, + 1312, + 1313, + 1314, + 1315, + 1316, + 1317, + 1318, + 1319, + 1320, + 1321, + 1322, + 1323, + 1324, + 1326, + 1327, + 1328, + 1329, + 1330, + 1331, + 1332, + 1333, + 1334, + 1335, + 1336, + 1337, + 1339, + 1340, + 1341, + 1342, + 1343, + 1344, + 1345, + 1346, + 1347, + 1348, + 1349, + 1350, + 1351, + 1352, + 1353, + 1354, + 1355, + 1356, + 1358, + 1359, + 1360, + 1361, + 1362, + 1363, + 1364, + 1365, + 1366, + 1367, + 1368, + 1369, + 1371, + 1372, + 1373, + 1374, + 1375, + 1376, + 1377, + 1378, + 1379, + 1380, + 1381, + 1382, + 1383, + 1384, + 1385, + 1386, + 1387, + 1388, + 1390, + 1391, + 1392, + 1393, + 1394, + 1395, + 1396, + 1397, + 1398, + 1399, + 1400, + 1401, + 1403, + 1404, + 1405, + 1406, + 1407, + 1408, + 1409, + 1410, + 1411, + 1412, + 1413, + 1414, + 1415, + 1416, + 1417, + 1418, + 1419, + 1420, + 1422, + 1423, + 1424, + 1425, + 1426, + 1427, + 1428, + 1429, + 1430, + 1431, + 1432, + 1433, + 1435, + 1436, + 1437, + 1438, + 1439, + 1440, + 1441, + 1442, + 1443, + 1444, + 1445, + 1446, + 1447, + 1448, + 1449, + 1450, + 1451, + 1452, + 1454, + 1455, + 1456, + 1457, + 1458, + 1459, + 1460, + 1461, + 1462, + 1463, + 1464, + 1465, + 1467, + 1468, + 1469, + 1470, + 1471, + 1472, + 1473, + 1474, + 1475, + 1476, + 1477, + 1478, + 1479, + 1480, + 1481, + 1482, + 1483, + 1484, + 1486, + 1487, + 1488, + 1489, + 1490, + 1491, + 1492, + 1493, + 1494, + 1495, + 1496, + 1497, + 1499, + 1500, + 1501, + 1502, + 1503, + 1504, + 1505, + 1506, + 1507, + 1508, + 1509, + 1510, + 1511, + 1512, + 1513, + 1514, + 1515, + 1516, + 1518, + 1519, + 1520, + 1521, + 1522, + 1523, + 1524, + 1525, + 1526, + 1527, + 1528, + 1529, + 1531, + 1532, + 1533, + 1534, + 1535, + 1536, + 1537, + 1538, + 1539, + 1540, + 1541, + 1542, + 1543, + 1544, + 1545, + 1546, + 1547, + 1548, + 1550, + 1551, + 1552, + 1553, + 1554, + 1555, + 1556, + 1557, + 1558, + 1559, + 1560, + 1561, + 1563, + 1564, + 1565, + 1566, + 1567, + 1568, + 1569, + 1570, + 1571, + 1572, + 1573, + 1574, + 1575, + 1576, + 1577, + 1578, + 1579, + 1580, + 1582, + 1583, + 1584, + 1585, + 1586, + 1587, + 1588, + 1589, + 1590, + 1591, + 1592, + 1593, + 1595, + 1596, + 1597, + 1598, + 1599, + 1600, + 1601, + 1602, + 1603, + 1604, + 1605, + 1606, + 1607, + 1608, + 1609, + 1610, + 1611, + 1612, + 1614, + 1615, + 1616, + 1617, + 1618, + 1619, + 1620, + 1621, + 1622, + 1623, + 1624, + 1625, + 1627, + 1628, + 1629, + 1630, + 1631, + 1632, + 1633, + 1634, + 1635, + 1636, + 1637, + 1638, + 1639, + 1640, + 1641, + 1642, + 1643, + 1644, + 1646, + 1647, + 1648, + 1649, + 1650, + 1651, + 1652, + 1653, + 1654, + 1655, + 1656, + 1657, + 1659, + 1660, + 1661, + 1662, + 1663, + 1664, + 1665, + 1666, + 1667, + 1668, + 1669, + 1670, + 1671, + 1672, + 1673, + 1674, + 1675, + 1676, + 1678, + 1679, + 1680, + 1681, + 1682, + 1683, + 1684, + 1685, + 1686, + 1687, + 1688, + 1689, + 1691, + 1692, + 1693, + 1694, + 1695, + 1696, + 1697, + 1698, + 1699, + 1700, + 1701, + 1702, + 1703, + 1704, + 1705, + 1706, + 1707, + 1708, + 1710, + 1711, + 1712, + 1713, + 1714, + 1715, + 1716, + 1717, + 1718, + 1719, + 1720, + 1721, + 1723, + 1724, + 1725, + 1726, + 1727, + 1728, + 1729, + 1730, + 1731, + 1732, + 1733, + 1734, + 1735, + 1736, + 1737, + 1738, + 1739, + 1740, + 1742, + 1743, + 1744, + 1745, + 1746, + 1747, + 1748, + 1749, + 1750, + 1751, + 1752, + 1753, + 1755, + 1756, + 1757, + 1758, + 1759, + 1760, + 1761, + 1762, + 1763, + 1764, + 1765, + 1766, + 1767, + 1768, + 1769, + 1770, + 1771, + 1772, + 1774, + 1775, + 1776, + 1777, + 1778, + 1779, + 1780, + 1781, + 1782, + 1783, + 1784, + 1785, + 1787, + 1788, + 1789, + 1790, + 1791, + 1792, + 1793, + 1794, + 1795, + 1796, + 1797, + 1798, + 1799, + 1800, + 1801, + 1802, + 1803, + 1804, + 1806, + 1807, + 1808, + 1809, + 1810, + 1811, + 1812, + 1813, + 1814, + 1815, + 1816, + 1817, + 1819, + 1820, + 1821, + 1822, + 1823, + 1824, + 1825, + 1826, + 1827, + 1828, + 1829, + 1830, + 1831, + 1832, + 1833, + 1834, + 1835, + 1836, + 1838, + 1839, + 1840, + 1841, + 1842, + 1843, + 1844, + 1845, + 1846, + 1847, + 1848, + 1849, + 1851, + 1852, + 1853, + 1854, + 1855, + 1856, + 1857, + 1858, + 1859, + 1860, + 1861, + 1862, + 1863, + 1864, + 1865, + 1866, + 1867, + 1868, + 1870, + 1871, + 1872, + 1873, + 1874, + 1875, + 1876, + 1877, + 1878, + 1879, + 1880, + 1881, + 1883, + 1884, + 1885, + 1886, + 1887, + 1888, + 1889, + 1890, + 1891, + 1892, + 1893, + 1894, + 1895, + 1896, + 1897, + 1898, + 1899, + 1900, + 1902, + 1903, + 1904, + 1905, + 1906, + 1907, + 1908, + 1909, + 1910, + 1911, + 1912, + 1913, + 1915, + 1916, + 1917, + 1918, + 1919, + 1920, + 1921, + 1922, + 1923, + 1924, + 1925, + 1926, + 1927, + 1928, + 1929, + 1930, + 1931, + 1932, + 1934, + 1935, + 1936, + 1937, + 1938, + 1939, + 1940, + 1941, + 1942, + 1943, + 1944, + 1945, + 1947, + 1948, + 1949, + 1950, + 1951, + 1952, + 1953, + 1954, + 1955, + 1956, + 1957, + 1958, + 1959, + 1960, + 1961, + 1962, + 1963, + 1964, + 1966, + 1967, + 1968, + 1969, + 1970, + 1971, + 1972, + 1973, + 1974, + 1975, + 1976, + 1977, + 1979, + 1980, + 1981, + 1982, + 1983, + 1984, + 1985, + 1986, + 1987, + 1988, + 1989, + 1990, + 1991, + 1992, + 1993, + 1994, + 1995, + 1996, + 1998, + 1999, + 2000, + 2001, + 2002, + 2003, + 2004, + 2005, + 2006, + 2007, + 2008, + 2009, + 2011, + 2012, + 2013, + 2014, + 2015, + 2016, + 2017, + 2018, + 2019, + 2020, + 2021, + 2022, + 2023, + 2024, + 2025, + 2026, + 2027, + 2028, + 2030, + 2031, + 2032, + 2033, + 2034, + 2035, + 2036, + 2037, + 2038, + 2039, + 2040, + 2041, + 2043, + 2044, + 2045, + 2046, + 2047, + 2048, + 2049, + 2050, + 2051, + 2052, + 2053, + 2054, + 2055, + 2056, + 2057, + 2058, + 2059, + 2060, + 2062, + 2063, + 2064, + 2065, + 2066, + 2067, + 2068, + 2069, + 2070, + 2071, + 2072, + 2073, + 2075, + 2076, + 2077, + 2078, + 2079, + 2080, + 2081, + 2082, + 2083, + 2084, + 2085, + 2086, + 2087, + 2088, + 2089, + 2090, + 2091, + 2092, + 2094, + 2095, + 2096, + 2097, + 2098, + 2099, + 2100, + 2101, + 2102, + 2103, + 2104, + 2105, + 2107, + 2108, + 2109, + 2110, + 2111, + 2112, + 2113, + 2114, + 2115, + 2116, + 2117, + 2118, + 2119, + 2120, + 2121, + 2122, + 2123, + 2124, + 2126, + 2127, + 2128, + 2129, + 2130, + 2131, + 2132, + 2133, + 2134, + 2135, + 2136, + 2137, + 2139, + 2140, + 2141, + 2142, + 2143, + 2144, + 2145, + 2146, + 2147, + 2148, + 2149, + 2150, + 2151, + 2152, + 2153, + 2154, + 2155, + 2156, + 2158, + 2159, + 2160, + 2161, + 2162, + 2163, + 2164, + 2165, + 2166, + 2167, + 2168, + 2169, + 2171, + 2172, + 2173, + 2174, + 2175, + 2176, + 2177, + 2178, + 2179, + 2180, + 2181, + 2182, + 2183, + 2184, + 2185, + 2186, + 2187, + 2188, + 2190, + 2191, + 2192, + 2193, + 2194, + 2195, + 2196, + 2197, + 2198, + 2199, + 2200, + 2201, + 2203, + 2204, + 2205, + 2206, + 2207, + 2208, + 2209, + 2210, + 2211, + 2212, + 2213, + 2214, + 2215, + 2216, + 2217, + 2218, + 2219, + 2220, + 2222, + 2223, + 2224, + 2225, + 2226, + 2227, + 2228, + 2229, + 2230, + 2231, + 2232, + 2233, + 2235, + 2236, + 2237, + 2238, + 2239, + 2240, + 2241, + 2242, + 2243, + 2244, + 2245, + 2246, + 2247, + 2248, + 2249, + 2250, + 2251, + 2252, + 2254, + 2255, + 2256, + 2257, + 2258, + 2259, + 2260, + 2261, + 2262, + 2263, + 2264, + 2265, + 2267, + 2268, + 2269, + 2270, + 2271, + 2272, + 2273, + 2274, + 2275, + 2276, + 2277, + 2278, + 2279, + 2280, + 2281, + 2282, + 2283, + 2284, + 2286, + 2287, + 2288, + 2289, + 2290, + 2291, + 2292, + 2293, + 2294, + 2295, + 2296, + 2297, + 2299, + 2300, + 2301, + 2302, + 2303, + 2304, + 2305, + 2306, + 2307, + 2308, + 2309, + 2310, + 2311, + 2312, + 2313, + 2314, + 2315, + 2316, + 2318, + 2319, + 2320, + 2321, + 2322, + 2323, + 2324, + 2325, + 2326, + 2327, + 2328, + 2329, + 2331, + 2332, + 2333, + 2334, + 2335, + 2336, + 2337, + 2338, + 2339, + 2340, + 2341, + 2342, + 2343, + 2344, + 2345, + 2346, + 2347, + 2348, + 2350, + 2351, + 2352, + 2353, + 2354, + 2355, + 2356, + 2357, + 2358, + 2359, + 2360, + 2361, + 2363, + 2364, + 2365, + 2366, + 2367, + 2368, + 2369, + 2370, + 2371, + 2372, + 2373, + 2374, + 2375, + 2376, + 2377, + 2378, + 2379, + 2380, + 2382, + 2383, + 2384, + 2385, + 2386, + 2387, + 2388, + 2389, + 2390, + 2391, + 2392, + 2393, + 2395, + 2396, + 2397, + 2398, + 2399, + 2400, + 2401, + 2402, + 2403, + 2404, + 2405, + 2406, + 2407, + 2408, + 2409, + 2410, + 2411, + 2412, + 2414, + 2415, + 2416, + 2417, + 2418, + 2419, + 2420, + 2421, + 2422, + 2423, + 2424, + 2425, + 2427, + 2428, + 2429, + 2430, + 2431, + 2432, + 2433, + 2434, + 2435, + 2436, + 2437, + 2438, + 2439, + 2440, + 2441, + 2442, + 2443, + 2444, + 2446, + 2447, + 2448, + 2449, + 2450, + 2451, + 2452, + 2453, + 2454, + 2455, + 2456, + 2457, + 2459, + 2460, + 2461, + 2462, + 2463, + 2464, + 2465, + 2466, + 2467, + 2468, + 2469, + 2470, + 2471, + 2472, + 2473, + 2474, + 2475, + 2476, + 2478, + 2479, + 2480, + 2481, + 2482, + 2483, + 2484, + 2485, + 2486, + 2487, + 2488, + 2489, + 2491, + 2492, + 2493, + 2494, + 2495, + 2496, + 2497, + 2498, + 2499, + 2500, + 2501, + 2502, + 2503, + 2504, + 2505, + 2506, + 2507, + 2508, + 2510, + 2511, + 2512, + 2513, + 2514, + 2515, + 2516, + 2517, + 2518, + 2519, + 2520, + 2521, + 2523, + 2524, + 2525, + 2526, + 2527, + 2528, + 2529, + 2530, + 2531, + 2532, + 2533, + 2534, + 2535, + 2536, + 2537, + 2538, + 2539, + 2540, + 2542, + 2543, + 2544, + 2545, + 2546, + 2547, + 2548, + 2549, + 2550, + 2551, + 2552, + 2553, + 2555, + 2556, + 2557, + 2558, + 2559, + 2560, + 2561, + 2562, + 2563, + 2564, + 2565, + 2566, + 2567, + 2568, + 2569, + 2570, + 2571, + 2572, + 2574, + 2575, + 2576, + 2577, + 2578, + 2579, + 2580, + 2581, + 2582, + 2583, + 2584, + 2585, + 2587, + 2588, + 2589, + 2590, + 2591, + 2592, + 2593, + 2594, + 2595, + 2596, + 2597, + 2598, + 2599, + 2600, + 2601, + 2602, + 2603, + 2604, + 2606, + 2607, + 2608, + 2609, + 2610, + 2611, + 2612, + 2613, + 2614, + 2615, + 2616, + 2617, + 2619, + 2620, + 2621, + 2622, + 2623, + 2624, + 2625, + 2626, + 2627, + 2628, + 2629, + 2630, + 2631, + 2632, + 2633, + 2634, + 2635, + 2636, + 2638, + 2639, + 2640, + 2641, + 2642, + 2643, + 2644, + 2645, + 2646, + 2647, + 2648, + 2649, + 2651, + 2652, + 2653, + 2654, + 2655, + 2656, + 2657, + 2658, + 2659, + 2660, + 2661, + 2662, + 2663, + 2664, + 2665, + 2666, + 2667, + 2668, + 2670, + 2671, + 2672, + 2673, + 2674, + 2675, + 2676, + 2677, + 2678, + 2679, + 2680, + 2681, + 2683, + 2684, + 2685, + 2686, + 2687, + 2688, + 2689, + 2690, + 2691, + 2692, + 2693, + 2694, + 2695, + 2696, + 2697, + 2698, + 2699, + 2700, + 2702, + 2703, + 2704, + 2705, + 2706, + 2707, + 2708, + 2709, + 2710, + 2711, + 2712, + 2713, + 2715, + 2716, + 2717, + 2718, + 2719, + 2720, + 2721, + 2722, + 2723, + 2724, + 2725, + 2726, + 2727, + 2728, + 2729, + 2730, + 2731, + 2732, + 2734, + 2735, + 2736, + 2737, + 2738, + 2739, + 2740, + 2741, + 2742, + 2743, + 2744, + 2745, + 2747, + 2748, + 2749, + 2750, + 2751, + 2752, + 2753, + 2754, + 2755, + 2756, + 2757, + 2758, + 2759, + 2760, + 2761, + 2762, + 2763, + 2764, + 2766, + 2767, + 2768, + 2769, + 2770, + 2771, + 2772, + 2773, + 2774, + 2775, + 2776, + 2777, + 2779, + 2780, + 2781, + 2782, + 2783, + 2784, + 2785, + 2786, + 2787, + 2788, + 2789, + 2790, + 2791, + 2792, + 2793, + 2794, + 2795, + 2796, + 2798, + 2799, + 2800, + 2801, + 2802, + 2803, + 2804, + 2805, + 2806, + 2807, + 2808, + 2809, + 2811, + 2812, + 2813, + 2814, + 2815, + 2816, + 2817, + 2818, + 2819, + 2820, + 2821, + 2822, + 2823, + 2824, + 2825, + 2826, + 2827, + 2828, + 2830, + 2831, + 2832, + 2833, + 2834, + 2835, + 2836, + 2837, + 2838, + 2839, + 2840, + 2841, + 2843, + 2844, + 2845, + 2846, + 2847, + 2848, + 2849, + 2850, + 2851, + 2852, + 2853, + 2854, + 2855, + 2856, + 2857, + 2858, + 2859, + 2860, + 2862, + 2863, + 2864, + 2865, + 2866, + 2867, + 2868, + 2869, + 2870, + 2871, + 2872, + 2873, + 2875, + 2876, + 2877, + 2878, + 2879, + 2880, + 2881, + 2882, + 2883, + 2884, + 2885, + 2886, + 2887, + 2888, + 2889, + 2890, + 2891, + 2892, + 2894, + 2895, + 2896, + 2897, + 2898, + 2899, + 2900, + 2901, + 2902, + 2903, + 2904, + 2905, + 2907, + 2908, + 2909, + 2910, + 2911, + 2912, + 2913, + 2914, + 2915, + 2916, + 2917, + 2918, + 2919, + 2920, + 2921, + 2922, + 2923, + 2924, + 2926, + 2927, + 2928, + 2929, + 2930, + 2931, + 2932, + 2933, + 2934, + 2935, + 2936, + 2937, + 2939, + 2940, + 2941, + 2942, + 2943, + 2944, + 2945, + 2946, + 2947, + 2948, + 2949, + 2950, + 2951, + 2952, + 2953, + 2954, + 2955, + 2956, + 2958, + 2959, + 2960, + 2961, + 2962, + 2963, + 2964, + 2965, + 2966, + 2967, + 2968, + 2969, + 2971, + 2972, + 2973, + 2974, + 2975, + 2976, + 2977, + 2978, + 2979, + 2980, + 2981, + 2982, + 2983, + 2984, + 2985, + 2986, + 2987, + 2988, + 2990, + 2991, + 2992, + 2993, + 2994, + 2995, + 2996, + 2997, + 2998, + 2999, + 3000, + 3001, + 3003, + 3004, + 3005, + 3006, + 3007, + 3008, + 3009, + 3010, + 3011, + 3012, + 3013, + 3014, + 3015, + 3016, + 3017, + 3018, + 3019, + 3020, + 3022, + 3023, + 3024, + 3025, + 3026, + 3027, + 3028, + 3029, + 3030, + 3031, + 3032, + 3033, + 3035, + 3036, + 3037, + 3038, + 3039, + 3040, + 3041, + 3042, + 3043, + 3044, + 3045, + 3046, + 3047, + 3048, + 3049, + 3050, + 3051, + 3052, + 3054, + 3055, + 3056, + 3057, + 3058, + 3059, + 3060, + 3061, + 3062, + 3063, + 3064, + 3065, + 3067, + 3068, + 3069, + 3070, + 3071, + 3072, + 3073, + 3074, + 3075, + 3076, + 3077, + 3078, + 3079, + 3080, + 3081, + 3082, + 3083, + 3084, + 3086, + 3087, + 3088, + 3089, + 3090, + 3091, + 3092, + 3093, + 3094, + 3095, + 3096, + 3097, + 3099, + 3100, + 3101, + 3102, + 3103, + 3104, + 3105, + 3106, + 3107, + 3108, + 3109, + 3110, + 3111, + 3112, + 3113, + 3114, + 3115, + 3116, + 3118, + 3119, + 3120, + 3121, + 3122, + 3123, + 3124, + 3125, + 3126, + 3127, + 3128, + 3129, + 3131, + 3132, + 3133, + 3134, + 3135, + 3136, + 3137, + 3138, + 3139, + 3140, + 3141, + 3142, + 3143, + 3144, + 3145, + 3146, + 3147, + 3148, + 3150, + 3151, + 3152, + 3153, + 3154, + 3155, + 3156, + 3157, + 3158, + 3159, + 3160, + 3161, + 3163, + 3164, + 3165, + 3166, + 3167, + 3168, + 3169, + 3170, + 3171, + 3172, + 3173, + 3174, + 3175, + 3176, + 3177, + 3178, + 3179, + 3180, + 3182, + 3183, + 3184, + 3185, + 3186, + 3187, + 3188, + 3189, + 3190, + 3191, + 3192, + 3193, + 3195, + 3196, + 3197, + 3198, + 3199, + 3200, + 3201, + 3202, + 3203, + 3204, + 3205, + 3206, + 3207, + 3208, + 3209, + 3210, + 3211, + 3212, + 3214, + 3215, + 3216, + 3217, + 3218, + 3219, + 3220, + 3221, + 3222, + 3223, + 3224, + 3225, + 3227, + 3228, + 3229, + 3230, + 3231, + 3232, + 3233, + 3234, + 3235, + 3236, + 3237, + 3238, + 3239, + 3240, + 3241, + 3242, + 3243, + 3244, + 3246, + 3247, + 3248, + 3249, + 3250, + 3251, + 3252, + 3253, + 3254, + 3255, + 3256, + 3257, + 3259, + 3260, + 3261, + 3262, + 3263, + 3264, + 3265, + 3266, + 3267, + 3268, + 3269, + 3270, + 3271, + 3272, + 3273, + 3274, + 3275, + 3276, + 3278, + 3279, + 3280, + 3281, + 3282, + 3283, + 3284, + 3285, + 3286, + 3287, + 3288, + 3289, + 3291, + 3292, + 3293, + 3294, + 3295, + 3296, + 3297, + 3298, + 3299, + 3300, + 3301, + 3302, + 3303, + 3304, + 3305, + 3306, + 3307, + 3308, + 3310, + 3311, + 3312, + 3313, + 3314, + 3315, + 3316, + 3317, + 3318, + 3319, + 3320, + 3321, + 3323, + 3324, + 3325, + 3326, + 3327, + 3328, + 3329, + 3330, + 3331, + 3332, + 3333, + 3334, + 3335, + 3336, + 3337, + 3338, + 3339, + 3340, + 3342, + 3343, + 3344, + 3345, + 3346, + 3347, + 3348, + 3349, + 3350, + 3351, + 3352, + 3353, + 3355, + 3356, + 3357, + 3358, + 3359, + 3360, + 3361, + 3362, + 3363, + 3364, + 3365, + 3366, + 3367, + 3368, + 3369, + 3370, + 3371, + 3372, + 3374, + 3375, + 3376, + 3377, + 3378, + 3379, + 3380, + 3381, + 3382, + 3383, + 3384, + 3385, + 3387, + 3388, + 3389, + 3390, + 3391, + 3392, + 3393, + 3394, + 3395, + 3396, + 3397, + 3398, + 3399, + 3400, + 3401, + 3402, + 3403, + 3404, + 3406, + 3407, + 3408, + 3409, + 3410, + 3411, + 3412, + 3413, + 3414, + 3415, + 3416, + 3417, + 3419, + 3420, + 3421, + 3422, + 3423, + 3424, + 3425, + 3426, + 3427, + 3428, + 3429, + 3430, + 3431, + 3432, + 3433, + 3434, + 3435, + 3436, + 3438, + 3439, + 3440, + 3441, + 3442, + 3443, + 3444, + 3445, + 3446, + 3447, + 3448, + 3449, + 3451, + 3452, + 3453, + 3454, + 3455, + 3456, + 3457, + 3458, + 3459, + 3460, + 3461, + 3462, + 3463, + 3464, + 3465, + 3466, + 3467, + 3468, + 3470, + 3471, + 3472, + 3473, + 3474, + 3475, + 3476, + 3477, + 3478, + 3479, + 3480, + 3481, + 3483, + 3484, + 3485, + 3486, + 3487, + 3488, + 3489, + 3490, + 3491, + 3492, + 3493, + 3494, + 3495, + 3496, + 3497, + 3498, + 3499, + 3500, + 3502, + 3503, + 3504, + 3505, + 3506, + 3507, + 3508, + 3509, + 3510, + 3511, + 3512, + 3513, + 3515, + 3516, + 3517, + 3518, + 3519, + 3520, + 3521, + 3522, + 3523, + 3524, + 3525, + 3526, + 3527, + 3528, + 3529, + 3530, + 3531, + 3532, + 3534, + 3535, + 3536, + 3537, + 3538, + 3539, + 3540, + 3541, + 3542, + 3543, + 3544, + 3545, + 3547, + 3548, + 3549, + 3550, + 3551, + 3552, + 3553, + 3554, + 3555, + 3556, + 3557, + 3558, + 3559, + 3560, + 3561, + 3562, + 3563, + 3564, + 3566, + 3567, + 3568, + 3569, + 3570, + 3571, + 3572, + 3573, + 3574, + 3575, + 3576, + 3577, + 3579, + 3580, + 3581, + 3582, + 3583, + 3584, + 3585, + 3586, + 3587, + 3588, + 3589, + 3590, + 3591, + 3592, + 3593, + 3594, + 3595, + 3596, + 3598, + 3599, + 3600, + 3601, + 3602, + 3603, + 3604, + 3605, + 3606, + 3607, + 3608, + 3609, + 3611, + 3612, + 3613, + 3614, + 3615, + 3616, + 3617, + 3618, + 3619, + 3620, + 3621, + 3622, + 3623, + 3624, + 3625, + 3626, + 3627, + 3628, + 3630, + 3631, + 3632, + 3633, + 3634, + 3635, + 3636, + 3637, + 3638, + 3639, + 3640, + 3641, + 3643, + 3644, + 3645, + 3646, + 3647, + 3648, + 3649, + 3650, + 3651, + 3652, + 3653, + 3654, + 3655, + 3656, + 3657, + 3658, + 3659, + 3660, + 3662, + 3663, + 3664, + 3665, + 3666, + 3667, + 3668, + 3669, + 3670, + 3671, + 3672, + 3673, + 3675, + 3676, + 3677, + 3678, + 3679, + 3680, + 3681, + 3682, + 3683, + 3684, + 3685, + 3686, + 3687, + 3688, + 3689, + 3690, + 3691, + 3692, + 3694, + 3695, + 3696, + 3697, + 3698, + 3699, + 3700, + 3701, + 3702, + 3703, + 3704, + 3705, + 3707, + 3708, + 3709, + 3710, + 3711, + 3712, + 3713, + 3714, + 3715, + 3716, + 3717, + 3718, + 3719, + 3720, + 3721, + 3722, + 3723, + 3724, + 3726, + 3727, + 3728, + 3729, + 3730, + 3731, + 3732, + 3733, + 3734, + 3735, + 3736, + 3737, + 3739, + 3740, + 3741, + 3742, + 3743, + 3744, + 3745, + 3746, + 3747, + 3748, + 3749, + 3750, + 3751, + 3752, + 3753, + 3754, + 3755, + 3756, + 3758, + 3759, + 3760, + 3761, + 3762, + 3763, + 3764, + 3765, + 3766, + 3767, + 3768, + 3769, + 3771, + 3772, + 3773, + 3774, + 3775, + 3776, + 3777, + 3778, + 3779, + 3780, + 3781, + 3782, + 3783, + 3784, + 3785, + 3786, + 3787, + 3788, + 3790, + 3791, + 3792, + 3793, + 3794, + 3795, + 3796, + 3797, + 3798, + 3799, + 3800, + 3801, + 3803, + 3804, + 3805, + 3806, + 3807, + 3808, + 3809, + 3810, + 3811, + 3812, + 3813, + 3814, + 3815, + 3816, + 3817, + 3818, + 3819, + 3820, + 3822, + 3823, + 3824, + 3825, + 3826, + 3827, + 3828, + 3829, + 3830, + 3831, + 3832, + 3833, + 3835, + 3836, + 3837, + 3838, + 3839, + 3840, + 3841, + 3842, + 3843, + 3844, + 3845, + 3846, + 3847, + 3848, + 3849, + 3850, + 3851, + 3852, + 3854, + 3855, + 3856, + 3857, + 3858, + 3859, + 3860, + 3861, + 3862, + 3863, + 3864, + 3865, + 3867, + 3868, + 3869, + 3870, + 3871, + 3872, + 3873, + 3874, + 3875, + 3876, + 3877, + 3878, + 3879, + 3880, + 3881, + 3882, + 3883, + 3884, + 3886, + 3887, + 3888, + 3889, + 3890, + 3891, + 3892, + 3893, + 3894, + 3895, + 3896, + 3897, + 3899, + 3900, + 3901, + 3902, + 3903, + 3904, + 3905, + 3906, + 3907, + 3908, + 3909, + 3910, + 3911, + 3912, + 3913, + 3914, + 3915, + 3916, + 3918, + 3919, + 3920, + 3921, + 3922, + 3923, + 3924, + 3925, + 3926, + 3927, + 3928, + 3929, + 3931, + 3932, + 3933, + 3934, + 3935, + 3936, + 3937, + 3938, + 3939, + 3940, + 3941, + 3942, + 3943, + 3944, + 3945, + 3946, + 3947, + 3948, + 3950, + 3951, + 3952, + 3953, + 3954, + 3955, + 3956, + 3957, + 3958, + 3959, + 3960, + 3961, + 3963, + 3964, + 3965, + 3966, + 3967, + 3968, + 3969, + 3970, + 3971, + 3972, + 3973, + 3974, + 3975, + 3976, + 3977, + 3978, + 3979, + 3980, + 3982, + 3983, + 3984, + 3985, + 3986, + 3987, + 3988, + 3989, + 3990, + 3991, + 3992, + 3993, + 3995, + 3996, + 3997, + 3998, + 3999, + 4000, + 4001, + 4002, + 4003, + 4004, + 4005, + 4006, + 4007, + 4008, + 4009, + 4010, + 4011, + 4012, + 4014, + 4015, + 4016, + 4017, + 4018, + 4019, + 4020, + 4021, + 4022, + 4023, + 4024, + 4025, + 4027, + 4028, + 4029, + 4030, + 4031, + 4032, + 4033, + 4034, + 4035, + 4036, + 4037, + 4038, + 4039, + 4040, + 4041, + 4042, + 4043, + 4044, + 4046, + 4047, + 4048, + 4049, + 4050, + 4051, + 4052, + 4053, + 4054, + 4055, + 4056, + 4057, + 4059, + 4060, + 4061, + 4062, + 4063, + 4064, + 4065, + 4066, + 4067, + 4068, + 4069, + 4070, + 4071, + 4072, + 4073, + 4074, + 4075, + 4076, + 4078, + 4079, + 4080, + 4081, + 4082, + 4083, + 4084, + 4085, + 4086, + 4087, + 4088, + 4089, + 4091, + 4092, + 4093, + 4094, + 4095, + 4096, + 4097, + 4098, + 4099, + 4100, + 4101, + 4102, + 4103, + 4104, + 4105, + 4106, + 4107, + 4108, + 4110, + 4111, + 4112, + 4113, + 4114, + 4115, + 4116, + 4117, + 4118, + 4119, + 4120, + 4121, + 4123, + 4124, + 4125, + 4126, + 4127, + 4128, + 4129, + 4130, + 4131, + 4132, + 4133, + 4134, + 4135, + 4136, + 4137, + 4138, + 4139, + 4140, + 4142, + 4143, + 4144, + 4145, + 4146, + 4147, + 4148, + 4149, + 4150, + 4151, + 4152, + 4153, + 4155, + 4156, + 4157, + 4158, + 4159, + 4160, + 4161, + 4162, + 4163, + 4164, + 4165, + 4166, + 4167, + 4168, + 4169, + 4170, + 4171, + 4172, + 4174, + 4175, + 4176, + 4177, + 4178, + 4179, + 4180, + 4181, + 4182, + 4183, + 4184, + 4185, + 4187, + 4188, + 4189, + 4190, + 4191, + 4192, + 4193, + 4194, + 4195, + 4196, + 4197, + 4198, + 4199, + 4200, + 4201, + 4202, + 4203, + 4204, + 4206, + 4207, + 4208, + 4209, + 4210, + 4211, + 4212, + 4213, + 4214, + 4215, + 4216, + 4217, + 4219, + 4220, + 4221, + 4222, + 4223, + 4224, + 4225, + 4226, + 4227, + 4228, + 4229, + 4230, + 4231, + 4232, + 4233, + 4234, + 4235, + 4236, + 4238, + 4239, + 4240, + 4241, + 4242, + 4243, + 4244, + 4245, + 4246, + 4247, + 4248, + 4249, + 4251, + 4252, + 4253, + 4254, + 4255, + 4256, + 4257, + 4258, + 4259, + 4260, + 4261, + 4262, + 4263, + 4264, + 4265, + 4266, + 4267, + 4268, + 4270, + 4271, + 4272, + 4273, + 4274, + 4275, + 4276, + 4277, + 4278, + 4279, + 4280, + 4281, + 4283, + 4284, + 4285, + 4286, + 4287, + 4288, + 4289, + 4290, + 4291, + 4292, + 4293, + 4294, + 4295, + 4296, + 4297, + 4298, + 4299, + 4300, + 4302, + 4303, + 4304, + 4305, + 4306, + 4307, + 4308, + 4309, + 4310, + 4311, + 4312, + 4313, + 4315, + 4316, + 4317, + 4318, + 4319, + 4320, + 4321, + 4322, + 4323, + 4324, + 4325, + 4326, + 4327, + 4328, + 4329, + 4330, + 4331, + 4332, + 4334, + 4335, + 4336, + 4337, + 4338, + 4339, + 4340, + 4341, + 4342, + 4343, + 4344, + 4345, + 4347, + 4348, + 4349, + 4350, + 4351, + 4352, + 4353, + 4354, + 4355, + 4356, + 4357, + 4358, + 4359, + 4360, + 4361, + 4362, + 4363, + 4364, + 4366, + 4367, + 4368, + 4369, + 4370, + 4371, + 4372, + 4373, + 4374, + 4375, + 4376, + 4377, + 4379, + 4380, + 4381, + 4382, + 4383, + 4384, + 4385, + 4386, + 4387, + 4388, + 4389, + 4390, + 4391, + 4392, + 4393, + 4394, + 4395, + 4396, + 4398, + 4399, + 4400, + 4401, + 4402, + 4403, + 4404, + 4405, + 4406, + 4407, + 4408, + 4409, + 4411, + 4412, + 4413, + 4414, + 4415, + 4416, + 4417, + 4418, + 4419, + 4420, + 4421, + 4422, + 4423, + 4424, + 4425, + 4426, + 4427, + 4428, + 4430, + 4431, + 4432, + 4433, + 4434, + 4435, + 4436, + 4437, + 4438, + 4439, + 4440, + 4441, + 4443, + 4444, + 4445, + 4446, + 4447, + 4448, + 4449, + 4450, + 4451, + 4452, + 4453, + 4454, + 4455, + 4456, + 4457, + 4458, + 4459, + 4460, + 4462, + 4463, + 4464, + 4465, + 4466, + 4467, + 4468, + 4469, + 4470, + 4471, + 4472, + 4473, + 4475, + 4476, + 4477, + 4478, + 4479, + 4480, + 4481, + 4482, + 4483, + 4484, + 4485, + 4486, + 4487, + 4488, + 4489, + 4490, + 4491, + 4492, + 4494, + 4495, + 4496, + 4497, + 4498, + 4499, + 4500, + 4501, + 4502, + 4503, + 4504, + 4505, + 4507, + 4508, + 4509, + 4510, + 4511, + 4512, + 4513, + 4514, + 4515, + 4516, + 4517, + 4518, + 4519, + 4520, + 4521, + 4522, + 4523, + 4524, + 4526, + 4527, + 4528, + 4529, + 4530, + 4531, + 4532, + 4533, + 4534, + 4535, + 4536, + 4537, + 4539, + 4540, + 4541, + 4542, + 4543, + 4544, + 4545, + 4546, + 4547, + 4548, + 4549, + 4550, + 4551, + 4552, + 4553, + 4554, + 4555, + 4556, + 4558, + 4559, + 4560, + 4561, + 4562, + 4563, + 4564, + 4565, + 4566, + 4567, + 4568, + 4569, + 4571, + 4572, + 4573, + 4574, + 4575, + 4576, + 4577, + 4578, + 4579, + 4580, + 4581, + 4582, + 4583, + 4584, + 4585, + 4586, + 4587, + 4588, + 4590, + 4591, + 4592, + 4593, + 4594, + 4595, + 4596, + 4597, + 4598, + 4599, + 4600, + 4601, + 4603, + 4604, + 4605, + 4606, + 4607, + 4608, + 4609, + 4610, + 4611, + 4612, + 4613, + 4614, + 4615, + 4616, + 4617, + 4618, + 4619, + 4620, + 4622, + 4623, + 4624, + 4625, + 4626, + 4627, + 4628, + 4629, + 4630, + 4631, + 4632, + 4633, + 4635, + 4636, + 4637, + 4638, + 4639, + 4640, + 4641, + 4642, + 4643, + 4644, + 4645, + 4646, + 4647, + 4648, + 4649, + 4650, + 4651, + 4652, + 4654, + 4655, + 4656, + 4657, + 4658, + 4659, + 4660, + 4661, + 4662, + 4663, + 4664, + 4665, + 4667, + 4668, + 4669, + 4670, + 4671, + 4672, + 4673, + 4674, + 4675, + 4676, + 4677, + 4678, + 4679, + 4680, + 4681, + 4682, + 4683, + 4684, + 4686, + 4687, + 4688, + 4689, + 4690, + 4691, + 4692, + 4693, + 4694, + 4695, + 4696, + 4697, + 4699, + 4700, + 4701, + 4702, + 4703, + 4704, + 4705, + 4706, + 4707, + 4708, + 4709, + 4710, + 4711, + 4712, + 4713, + 4714, + 4715, + 4716, + 4718, + 4719, + 4720, + 4721, + 4722, + 4723, + 4724, + 4725, + 4726, + 4727, + 4728, + 4729, + 4731, + 4732, + 4733, + 4734, + 4735, + 4736, + 4737, + 4738, + 4739, + 4740, + 4741, + 4742, + 4743, + 4744, + 4745, + 4746, + 4747, + 4748, + 4750, + 4751, + 4752, + 4753, + 4754, + 4755, + 4756, + 4757, + 4758, + 4759, + 4760, + 4761, + 4763, + 4764, + 4765, + 4766, + 4767, + 4768, + 4769, + 4770, + 4771, + 4772, + 4773, + 4774, + 4775, + 4776, + 4777, + 4778, + 4779, + 4780, + 4782, + 4783, + 4784, + 4785, + 4786, + 4787, + 4788, + 4789, + 4790, + 4791, + 4792, + 4793, + 4795, + 4796, + 4797, + 4798, + 4799, + 4800, + 4801, + 4802, + 4803, + 4804, + 4805, + 4806, + 4807, + 4808, + 4809, + 4810, + 4811, + 4812, + 4814, + 4815, + 4816, + 4817, + 4818, + 4819, + 4820, + 4821, + 4822, + 4823, + 4824, + 4825, + 4827, + 4828, + 4829, + 4830, + 4831, + 4832, + 4833, + 4834, + 4835, + 4836, + 4837, + 4838, + 4839, + 4840, + 4841, + 4842, + 4843, + 4844, + 4846, + 4847, + 4848, + 4849, + 4850, + 4851, + 4852, + 4853, + 4854, + 4855, + 4856, + 4857, + 4859, + 4860, + 4861, + 4862, + 4863, + 4864, + 4865, + 4866, + 4867, + 4868, + 4869, + 4870, + 4871, + 4872, + 4873, + 4874, + 4875, + 4876, + 4878, + 4879, + 4880, + 4881, + 4882, + 4883, + 4884, + 4885, + 4886, + 4887, + 4888, + 4889, + 4891, + 4892, + 4893, + 4894, + 4895, + 4896, + 4897, + 4898, + 4899, + 4900, + 4901, + 4902, + 4903, + 4904, + 4905, + 4906, + 4907, + 4908, + 4910, + 4911, + 4912, + 4913, + 4914, + 4915, + 4916, + 4917, + 4918, + 4919, + 4920, + 4921, + 4923, + 4924, + 4925, + 4926, + 4927, + 4928, + 4929, + 4930, + 4931, + 4932, + 4933, + 4934, + 4935, + 4936, + 4937, + 4938, + 4939, + 4940, + 4942, + 4943, + 4944, + 4945, + 4946, + 4947, + 4948, + 4949, + 4950, + 4951, + 4952, + 4953, + 4955, + 4956, + 4957, + 4958, + 4959, + 4960, + 4961, + 4962, + 4963, + 4964, + 4965, + 4966, + 4967, + 4968, + 4969, + 4970, + 4971, + 4972, + 4974, + 4975, + 4976, + 4977, + 4978, + 4979, + 4980, + 4981, + 4982, + 4983, + 4984, + 4985, + 4987, + 4988, + 4989, + 4990, + 4991, + 4992, + 4993, + 4994, + 4995, + 4996, + 4997, + 4998, + 4999, + 5000, + 5001, + 5002, + 5003, + 5004, + 5006, + 5007, + 5008, + 5009, + 5010, + 5011, + 5012, + 5013, + 5014, + 5015, + 5016, + 5017, + 5019, + 5020, + 5021, + 5022, + 5023, + 5024, + 5025, + 5026, + 5027, + 5028, + 5029, + 5030, + 5031, + 5032, + 5033, + 5034, + 5035, + 5036, + 5038, + 5039, + 5040, + 5041, + 5042, + 5043, + 5044, + 5045, + 5046, + 5047, + 5048, + 5049, + 5051, + 5052, + 5053, + 5054, + 5055, + 5056, + 5057, + 5058, + 5059, + 5060, + 5061, + 5062, + 5063, + 5064, + 5065, + 5066, + 5067, + 5068, + 5070, + 5071, + 5072, + 5073, + 5074, + 5075, + 5076, + 5077, + 5078, + 5079, + 5080, + 5081, + 5083, + 5084, + 5085, + 5086, + 5087, + 5088, + 5089, + 5090, + 5091, + 5092, + 5093, + 5094, + 5095, + 5096, + 5097, + 5098, + 5099, + 5100, + 5102, + 5103, + 5104, + 5105, + 5106, + 5107, + 5108, + 5109, + 5110, + 5111, + 5112, + 5113, + 5115, + 5116, + 5117, + 5118, + 5119, + 5120, + 5121, + 5122, + 5123, + 5124, + 5125, + 5126, + 5127, + 5128, + 5129, + 5130, + 5131, + 5132, + 5134, + 5135, + 5136, + 5137, + 5138, + 5139, + 5140, + 5141, + 5142, + 5143, + 5144, + 5145, + 5147, + 5148, + 5149, + 5150, + 5151, + 5152, + 5153, + 5154, + 5155, + 5156, + 5157, + 5158, + 5159, + 5160, + 5161, + 5162, + 5163, + 5164, + 5166, + 5167, + 5168, + 5169, + 5170, + 5171, + 5172, + 5173, + 5174, + 5175, + 5176, + 5177, + 5179, + 5180, + 5181, + 5182, + 5183, + 5184, + 5185, + 5186, + 5187, + 5188, + 5189, + 5190, + 5191, + 5192, + 5193, + 5194, + 5195, + 5196, + 5198, + 5199, + 5200, + 5201, + 5202, + 5203, + 5204, + 5205, + 5206, + 5207, + 5208, + 5209, + 5211, + 5212, + 5213, + 5214, + 5215, + 5216, + 5217, + 5218, + 5219, + 5220, + 5221, + 5222, + 5223, + 5224, + 5225, + 5226, + 5227, + 5228, + 5230, + 5231, + 5232, + 5233, + 5234, + 5235, + 5236, + 5237, + 5238, + 5239, + 5240, + 5241, + 5243, + 5244, + 5245, + 5246, + 5247, + 5248, + 5249, + 5250, + 5251, + 5252, + 5253, + 5254, + 5255, + 5256, + 5257, + 5258, + 5259, + 5260, + 5262, + 5263, + 5264, + 5265, + 5266, + 5267, + 5268, + 5269, + 5270, + 5271, + 5272, + 5273, + 5275, + 5276, + 5277, + 5278, + 5279, + 5280, + 5281, + 5282, + 5283, + 5284, + 5285, + 5286, + 5287, + 5288, + 5289, + 5290, + 5291, + 5292, + 5294, + 5295, + 5296, + 5297, + 5298, + 5299, + 5300, + 5301, + 5302, + 5303, + 5304, + 5305, + 5307, + 5308, + 5309, + 5310, + 5311, + 5312, + 5313, + 5314, + 5315, + 5316, + 5317, + 5318, + 5319, + 5320, + 5321, + 5322, + 5323, + 5324, + 5326, + 5327, + 5328, + 5329, + 5330, + 5331, + 5332, + 5333, + 5334, + 5335, + 5336, + 5337, + 5339, + 5340, + 5341, + 5342, + 5343, + 5344, + 5345, + 5346, + 5347, + 5348, + 5349, + 5350, + 5351, + 5352, + 5353, + 5354, + 5355, + 5356, + 5358, + 5359, + 5360, + 5361, + 5362, + 5363, + 5364, + 5365, + 5366, + 5367, + 5368, + 5369, + 5371, + 5372, + 5373, + 5374, + 5375, + 5376, + 5377, + 5378, + 5379, + 5380, + 5381, + 5382, + 5383, + 5384, + 5385, + 5386, + 5387, + 5388, + 5390, + 5391, + 5392, + 5393, + 5394, + 5395, + 5396, + 5397, + 5398, + 5399, + 5400, + 5401, + 5403, + 5404, + 5405, + 5406, + 5407, + 5408, + 5409, + 5410, + 5411, + 5412, + 5413, + 5414, + 5415, + 5416, + 5417, + 5418, + 5419, + 5420, + 5422, + 5423, + 5424, + 5425, + 5426, + 5427, + 5428, + 5429, + 5430, + 5431, + 5432, + 5433, + 5435, + 5436, + 5437, + 5438, + 5439, + 5440, + 5441, + 5442, + 5443, + 5444, + 5445, + 5446, + 5447, + 5448, + 5449, + 5450, + 5451, + 5452, + 5454, + 5455, + 5456, + 5457, + 5458, + 5459, + 5460, + 5461, + 5462, + 5463, + 5464, + 5465, + 5467, + 5468, + 5469, + 5470, + 5471, + 5472, + 5473, + 5474, + 5475, + 5476, + 5477, + 5478, + 5479, + 5480, + 5481, + 5482, + 5483, + 5484, + 5486, + 5487, + 5488, + 5489, + 5490, + 5491, + 5492, + 5493, + 5494, + 5495, + 5496, + 5497, + 5499, + 5500, + 5501, + 5502, + 5503, + 5504, + 5505, + 5506, + 5507, + 5508, + 5509, + 5510, + 5511, + 5512, + 5513, + 5514, + 5515, + 5516, + 5518, + 5519, + 5520, + 5521, + 5522, + 5523, + 5524, + 5525, + 5526, + 5527, + 5528, + 5529, + 5531, + 5532, + 5533, + 5534, + 5535, + 5536, + 5537, + 5538, + 5539, + 5540, + 5541, + 5542, + 5543, + 5544, + 5545, + 5546, + 5547, + 5548, + 5550, + 5551, + 5552, + 5553, + 5554, + 5555, + 5556, + 5557, + 5558, + 5559, + 5560, + 5561, + 5563, + 5564, + 5565, + 5566, + 5567, + 5568, + 5569, + 5570, + 5571, + 5572, + 5573, + 5574, + 5575, + 5576, + 5577, + 5578, + 5579, + 5580, + 5582, + 5583, + 5584, + 5585, + 5586, + 5587, + 5588, + 5589, + 5590, + 5591, + 5592, + 5593, + 5595, + 5596, + 5597, + 5598, + 5599, + 5600, + 5601, + 5602, + 5603, + 5604, + 5605, + 5606, + 5607, + 5608, + 5609, + 5610, + 5611, + 5612, + 5614, + 5615, + 5616, + 5617, + 5618, + 5619, + 5620, + 5621, + 5622, + 5623, + 5624, + 5625, + 5627, + 5628, + 5629, + 5630, + 5631, + 5632, + 5633, + 5634, + 5635, + 5636, + 5637, + 5638, + 5639, + 5640, + 5641, + 5642, + 5643, + 5644, + 5646, + 5647, + 5648, + 5649, + 5650, + 5651, + 5652, + 5653, + 5654, + 5655, + 5656, + 5657, + 5659, + 5660, + 5661, + 5662, + 5663, + 5664, + 5665, + 5666, + 5667, + 5668, + 5669, + 5670, + 5671, + 5672, + 5673, + 5674, + 5675, + 5676, + 5678, + 5679, + 5680, + 5681, + 5682, + 5683, + 5684, + 5685, + 5686, + 5687, + 5688, + 5689, + 5691, + 5692, + 5693, + 5694, + 5695, + 5696, + 5697, + 5698, + 5699, + 5700, + 5701, + 5702, + 5703, + 5704, + 5705, + 5706, + 5707, + 5708, + 5710, + 5711, + 5712, + 5713, + 5714, + 5715, + 5716, + 5717, + 5718, + 5719, + 5720, + 5721, + 5723, + 5724, + 5725, + 5726, + 5727, + 5728, + 5729, + 5730, + 5731, + 5732, + 5733, + 5734, + 5735, + 5736, + 5737, + 5738, + 5739, + 5740, + 5742, + 5743, + 5744, + 5745, + 5746, + 5747, + 5748, + 5749, + 5750, + 5751, + 5752, + 5753, + 5755, + 5756, + 5757, + 5758, + 5759, + 5760, + 5761, + 5762, + 5763, + 5764, + 5765, + 5766, + 5767, + 5768, + 5769, + 5770, + 5771, + 5772, + 5774, + 5775, + 5776, + 5777, + 5778, + 5779, + 5780, + 5781, + 5782, + 5783, + 5784, + 5785, + 5787, + 5788, + 5789, + 5790, + 5791, + 5792, + 5793, + 5794, + 5795, + 5796, + 5797, + 5798, + 5799, + 5800, + 5801, + 5802, + 5803, + 5804, + 5806, + 5807, + 5808, + 5809, + 5810, + 5811, + 5812, + 5813, + 5814, + 5815, + 5816, + 5817, + 5819, + 5820, + 5821, + 5822, + 5823, + 5824, + 5825, + 5826, + 5827, + 5828, + 5829, + 5830, + 5831, + 5832, + 5833, + 5834, + 5835, + 5836, + 5838, + 5839, + 5840, + 5841, + 5842, + 5843, + 5844, + 5845, + 5846, + 5847, + 5848, + 5849, + 5851, + 5852, + 5853, + 5854, + 5855, + 5856, + 5857, + 5858, + 5859, + 5860, + 5861, + 5862, + 5863, + 5864, + 5865, + 5866, + 5867, + 5868, + 5870, + 5871, + 5872, + 5873, + 5874, + 5875, + 5876, + 5877, + 5878, + 5879, + 5880, + 5881, + 5883, + 5884, + 5885, + 5886, + 5887, + 5888, + 5889, + 5890, + 5891, + 5892, + 5893, + 5894, + 5895, + 5896, + 5897, + 5898, + 5899, + 5900, + 5902, + 5903, + 5904, + 5905, + 5906, + 5907, + 5908, + 5909, + 5910, + 5911, + 5912, + 5913, + 5915, + 5916, + 5917, + 5918, + 5919, + 5920, + 5921, + 5922, + 5923, + 5924, + 5925, + 5926, + 5927, + 5928, + 5929, + 5930, + 5931, + 5932, + 5934, + 5935, + 5936, + 5937, + 5938, + 5939, + 5940, + 5941, + 5942, + 5943, + 5944, + 5945, + 5947, + 5948, + 5949, + 5950, + 5951, + 5952, + 5953, + 5954, + 5955, + 5956, + 5957, + 5958, + 5959, + 5960, + 5961, + 5962, + 5963, + 5964, + 5966, + 5967, + 5968, + 5969, + 5970, + 5971, + 5972, + 5973, + 5974, + 5975, + 5976, + 5977, + 5979, + 5980, + 5981, + 5982, + 5983, + 5984, + 5985, + 5986, + 5987, + 5988, + 5989, + 5990, + 5991, + 5992, + 5993, + 5994, + 5995, + 5996, + 5998, + 5999, + 6000, + 6001, + 6002, + 6003, + 6004, + 6005, + 6006, + 6007, + 6008, + 6009, + 6011, + 6012, + 6013, + 6014, + 6015, + 6016, + 6017, + 6018, + 6019, + 6020, + 6021, + 6022, + 6023, + 6024, + 6025, + 6026, + 6027, + 6028, + 6030, + 6031, + 6032, + 6033, + 6034, + 6035, + 6036, + 6037, + 6038, + 6039, + 6040, + 6041, + 6043, + 6044, + 6045, + 6046, + 6047, + 6048, + 6049, + 6050, + 6051, + 6052, + 6053, + 6054, + 6055, + 6056, + 6057, + 6058, + 6059, + 6060, + 6062, + 6063, + 6064, + 6065, + 6066, + 6067, + 6068, + 6069, + 6070, + 6071, + 6072, + 6073, + 6075, + 6076, + 6077, + 6078, + 6079, + 6080, + 6081, + 6082, + 6083, + 6084, + 6085, + 6086, + 6087, + 6088, + 6089, + 6090, + 6091, + 6092, + 6094, + 6095, + 6096, + 6097, + 6098, + 6099, + 6100, + 6101, + 6102, + 6103, + 6104, + 6105, + 6107, + 6108, + 6109, + 6110, + 6111, + 6112, + 6113, + 6114, + 6115, + 6116, + 6117, + 6118, + 6119, + 6120, + 6121, + 6122, + 6123, + 6124, + 6126, + 6127, + 6128, + 6129, + 6130, + 6131, + 6132, + 6133, + 6134, + 6135, + 6136, + 6137, + 6139, + 6140, + 6141, + 6142, + 6143, + 6144, + 6145, + 6146, + 6147, + 6148, + 6149, + 6150, + 6151, + 6152, + 6153, + 6154, + 6155, + 6156, + 6158, + 6159, + 6160, + 6161, + 6162, + 6163, + 6164, + 6165, + 6166, + 6167, + 6168, + 6169, + 6171, + 6172, + 6173, + 6174, + 6175, + 6176, + 6177, + 6178, + 6179, + 6180, + 6181, + 6182, + 6183, + 6184, + 6185, + 6186, + 6187, + 6188, + 6190, + 6191, + 6192, + 6193, + 6194, + 6195, + 6196, + 6197, + 6198, + 6199, + 6200, + 6201, + 6203, + 6204, + 6205, + 6206, + 6207, + 6208, + 6209, + 6210, + 6211, + 6212, + 6213, + 6214, + 6215, + 6216, + 6217, + 6218, + 6219, + 6220, + 6222, + 6223, + 6224, + 6225, + 6226, + 6227, + 6228, + 6229, + 6230, + 6231, + 6232, + 6233, + 6235, + 6236, + 6237, + 6238, + 6239, + 6240, + 6241, + 6242, + 6243, + 6244, + 6245, + 6246, + 6247, + 6248, + 6249, + 6250, + 6251, + 6252, + 6254, + 6255, + 6256, + 6257, + 6258, + 6259, + 6260, + 6261, + 6262, + 6263, + 6264, + 6265, + 6267, + 6268, + 6269, + 6270, + 6271, + 6272, + 6273, + 6274, + 6275, + 6276, + 6277, + 6278, + 6279, + 6280, + 6281, + 6282, + 6283, + 6284, + 6286, + 6287, + 6288, + 6289, + 6290, + 6291, + 6292, + 6293, + 6294, + 6295, + 6296, + 6297, + 6299, + 6300, + 6301, + 6302, + 6303, + 6304, + 6305, + 6306, + 6307, + 6308, + 6309, + 6310, + 6311, + 6312, + 6313, + 6314, + 6315, + 6316, + 6318, + 6319, + 6320, + 6321, + 6322, + 6323, + 6324, + 6325, + 6326, + 6327, + 6328, + 6329, + 6331, + 6332, + 6333, + 6334, + 6335, + 6336, + 6337, + 6338, + 6339, + 6340, + 6341, + 6342, + 6343, + 6344, + 6345, + 6346, + 6347, + 6348, + 6350, + 6351, + 6352, + 6353, + 6354, + 6355, + 6356, + 6357, + 6358, + 6359, + 6360, + 6361, + 6363, + 6364, + 6365, + 6366, + 6367, + 6368, + 6369, + 6370, + 6371, + 6372, + 6373, + 6374, + 6375, + 6376, + 6377, + 6378, + 6379, + 6380, + 6382, + 6383, + 6384, + 6385, + 6386, + 6387, + 6388, + 6389, + 6390, + 6391, + 6392, + 6393, + 6395, + 6396, + 6397, + 6398, + 6399, + 6400, + 6401, + 6402, + 6403, + 6404, + 6405, + 6406, + 6407, + 6408, + 6409, + 6410, + 6411, + 6412, + 6414, + 6415, + 6416, + 6417, + 6418, + 6419, + 6420, + 6421, + 6422, + 6423, + 6424, + 6425, + 6427, + 6428, + 6429, + 6430, + 6431, + 6432, + 6433, + 6434, + 6435, + 6436, + 6437, + 6438, + 6439, + 6440, + 6441, + 6442, + 6443, + 6444, + 6446, + 6447, + 6448, + 6449, + 6450, + 6451, + 6452, + 6453, + 6454, + 6455, + 6456, + 6457, + 6459, + 6460, + 6461, + 6462, + 6463, + 6464, + 6465, + 6466, + 6467, + 6468, + 6469, + 6470, + 6471, + 6472, + 6473, + 6474, + 6475, + 6476, + 6478, + 6479, + 6480, + 6481, + 6482, + 6483, + 6484, + 6485, + 6486, + 6487, + 6488, + 6489, + 6491, + 6492, + 6493, + 6494, + 6495, + 6496, + 6497, + 6498, + 6499, + 6500, + 6501, + 6502, + 6503, + 6504, + 6505, + 6506, + 6507, + 6508, + 6510, + 6511, + 6512, + 6513, + 6514, + 6515, + 6516, + 6517, + 6518, + 6519, + 6520, + 6521, + 6523, + 6524, + 6525, + 6526, + 6527, + 6528, + 6529, + 6530, + 6531, + 6532, + 6533, + 6534, + 6535, + 6536, + 6537, + 6538, + 6539, + 6540, + 6542, + 6543, + 6544, + 6545, + 6546, + 6547, + 6548, + 6549, + 6550, + 6551, + 6552, + 6553, + 6555, + 6556, + 6557, + 6558, + 6559, + 6560, + 6561, + 6562, + 6563, + 6564, + 6565, + 6566, + 6567, + 6568, + 6569, + 6570, + 6571, + 6572, + 6574, + 6575, + 6576, + 6577, + 6578, + 6579, + 6580, + 6581, + 6582, + 6583, + 6584, + 6585, + 6587, + 6588, + 6589, + 6590, + 6591, + 6592, + 6593, + 6594, + 6595, + 6596, + 6597, + 6598, + 6599, + 6600, + 6601, + 6602, + 6603, + 6604, + 6606, + 6607, + 6608, + 6609, + 6610, + 6611, + 6612, + 6613, + 6614, + 6615, + 6616, + 6617, + 6619, + 6620, + 6621, + 6622, + 6623, + 6624, + 6625, + 6626, + 6627, + 6628, + 6629, + 6630, + 6631, + 6632, + 6633, + 6634, + 6635, + 6636, + 6638, + 6639, + 6640, + 6641, + 6642, + 6643, + 6644, + 6645, + 6646, + 6647, + 6648, + 6649, + 6651, + 6652, + 6653, + 6654, + 6655, + 6656, + 6657, + 6658, + 6659, + 6660, + 6661, + 6662, + 6663, + 6664, + 6665, + 6666, + 6667, + 6668, + 6670, + 6671, + 6672, + 6673, + 6674, + 6675, + 6676, + 6677, + 6678, + 6679, + 6680, + 6681, + 6683, + 6684, + 6685, + 6686, + 6687, + 6688, + 6689, + 6690, + 6691, + 6692, + 6693, + 6694, + 6695, + 6696, + 6697, + 6698, + 6699, + 6700, + 6702, + 6703, + 6704, + 6705, + 6706, + 6707, + 6708, + 6709, + 6710, + 6711, + 6712, + 6713, + 6715, + 6716, + 6717, + 6718, + 6719, + 6720, + 6721, + 6722, + 6723, + 6724, + 6725, + 6726, + 6727, + 6728, + 6729, + 6730, + 6731, + 6732, + 6734, + 6735, + 6736, + 6737, + 6738, + 6739, + 6740, + 6741, + 6742, + 6743, + 6744, + 6745, + 6747, + 6748, + 6749, + 6750, + 6751, + 6752, + 6753, + 6754, + 6755, + 6756, + 6757, + 6758, + 6759, + 6760, + 6761, + 6762, + 6763, + 6764, + 6766, + 6767, + 6768, + 6769, + 6770, + 6771, + 6772, + 6773, + 6774, + 6775, + 6776, + 6777, + 6779, + 6780, + 6781, + 6782, + 6783, + 6784, + 6785, + 6786, + 6787, + 6788, + 6789, + 6790, + 6791, + 6792, + 6793, + 6794, + 6795, + 6796, + 6798, + 6799, + 6800, + 6801, + 6802, + 6803, + 6804, + 6805, + 6806, + 6807, + 6808, + 6809, + 6811, + 6812, + 6813, + 6814, + 6815, + 6816, + 6817, + 6818, + 6819, + 6820, + 6821, + 6822, + 6823, + 6824, + 6825, + 6826, + 6827, + 6828, + 6830, + 6831, + 6832, + 6833, + 6834, + 6835, + 6836, + 6837, + 6838, + 6839, + 6840, + 6841, + 6843, + 6844, + 6845, + 6846, + 6847, + 6848, + 6849, + 6850, + 6851, + 6852, + 6853, + 6854, + 6855, + 6856, + 6857, + 6858, + 6859, + 6860, + 6862, + 6863, + 6864, + 6865, + 6866, + 6867, + 6868, + 6869, + 6870, + 6871, + 6872, + 6873, + 6875, + 6876, + 6877, + 6878, + 6879, + 6880, + 6881, + 6882, + 6883, + 6884, + 6885, + 6886, + 6887, + 6888, + 6889, + 6890, + 6891, + 6892, + 6894, + 6895, + 6896, + 6897, + 6898, + 6899, + 6900, + 6901, + 6902, + 6903, + 6904, + 6905, + 6907, + 6908, + 6909, + 6910, + 6911, + 6912, + 6913, + 6914, + 6915, + 6916, + 6917, + 6918, + 6919, + 6920, + 6921, + 6922, + 6923, + 6924, + 6926, + 6927, + 6928, + 6929, + 6930, + 6931, + 6932, + 6933, + 6934, + 6935, + 6936, + 6937, + 6939, + 6940, + 6941, + 6942, + 6943, + 6944, + 6945, + 6946, + 6947, + 6948, + 6949, + 6950, + 6951, + 6952, + 6953, + 6954, + 6955, + 6956, + 6958, + 6959, + 6960, + 6961, + 6962, + 6963, + 6964, + 6965, + 6966, + 6967, + 6968, + 6969, + 6971, + 6972, + 6973, + 6974, + 6975, + 6976, + 6977, + 6978, + 6979, + 6980, + 6981, + 6982, + 6983, + 6984, + 6985, + 6986, + 6987, + 6988, + 6990, + 6991, + 6992, + 6993, + 6994, + 6995, + 6996, + 6997, + 6998, + 6999, + 7000, + 7001, + 7003, + 7004, + 7005, + 7006, + 7007, + 7008, + 7009, + 7010, + 7011, + 7012, + 7013, + 7014, + 7015, + 7016, + 7017, + 7018, + 7019, + 7020, + 7022, + 7023, + 7024, + 7025, + 7026, + 7027, + 7028, + 7029, + 7030, + 7031, + 7032, + 7033, + 7035, + 7036, + 7037, + 7038, + 7039, + 7040, + 7041, + 7042, + 7044, + 7045, + 7046, + 7047, + 7048, + 7049, + 7050, + 7051, + 7053, + 7054, + 7055, + 7056, + 7057, + 7058, + 7059, + 7060, + 7061, + 7062, + 7063, + 7064, + 7065, + 7066, + 7067, + 7068, + 7069, + 7070, + 7072, + 7073, + 7074, + 7077, + 7078, + 7080, + 7082, + 7083, + 7084, + 7085, + 7087, + 7088, + 7089, + 7090, + 7092, + 7093, + 7094, + 7095, + 7097, + 7098, + 7099, + 7100, + 7101, + 7102, + 7103, + 7105, + 7106, + 7107, + 7108, + 7109, + 7110, + 7111, + 7112, + 7113, + 7114, + 7116, + 7117, + 7118, + 7119, + 7122, + 7123, + 7124, + 7125, + 7126, + 7127, + 7128, + 7129, + 7131, + 7132, + 7135, + 7136, + 7137, + 7138, + 7139, + 7141, + 7142, + 7143, + 7144, + 7145, + 7146, + 7147, + 7148, + 7149, + 7150, + 7151, + 7152, + 7154, + 7155, + 7156, + 7157, + 7158, + 7159, + 7160, + 7162, + 7163, + 7164, + 7165, + 7166, + 7167, + 7168, + 7169, + 7170, + 7171, + 7172, + 7174, + 7175, + 7176, + 7178, + 7179, + 7180, + 7181, + 7182, + 7184, + 7185, + 7188, + 7189, + 7190, + 7191, + 7193, + 7194, + 7195, + 7196, + 7197, + 7199, + 7200, + 7201, + 7202, + 7203, + 7204, + 7205, + 7206, + 7207, + 7208, + 7210, + 7211, + 7212, + 7213, + 7214, + 7215, + 7217, + 7218, + 7219, + 7220, + 7221, + 7223, + 7224, + 7225, + 7226, + 7227, + 7228, + 7229, + 7230, + 7231, + 7232, + 7233, + 7234, + 7235, + 7236, + 7237, + 7238, + 7239, + 7240, + 7241, + 7242, + 7243, + 7245, + 7246, + 7248, + 7249, + 7250, + 7251, + 7252, + 7253, + 7254, + 7255, + 7256, + 7257, + 7259, + 7260, + 7261, + 7262, + 7264, + 7265, + 7266, + 7267, + 7268, + 7269, + 7270, + 7271, + 7273, + 7274, + 7275, + 7276, + 7277, + 7278, + 7280, + 7281, + 7282, + 7283, + 7284, + 7286, + 7287, + 7288, + 7289, + 7290, + 7291, + 7292, + 7293, + 7294, + 7296, + 7297, + 7298, + 7299, + 7300, + 7302, + 7303, + 7304, + 7305, + 7306, + 7307, + 7308, + 7309, + 7310, + 7311, + 7313, + 7314, + 7315, + 7316, + 7317, + 7319, + 7321, + 7322, + 7323, + 7325, + 7326, + 7328, + 7329, + 7331, + 7332, + 7333, + 7334, + 7335, + 7336, + 7337, + 7338, + 7339, + 7340, + 7341, + 7342, + 7343, + 7344, + 7345, + 7348, + 7349, + 7350, + 7351, + 7352, + 7354, + 7355, + 7356, + 7357, + 7358, + 7361, + 7362, + 7363, + 7364, + 7365, + 7367, + 7368, + 7369, + 7370, + 7371, + 7372, + 7373, + 7374, + 7375, + 7376, + 7377, + 7378, + 7379, + 7380, + 7381, + 7382, + 7383, + 7384, + 7385, + 7386, + 7387, + 7388, + 7389, + 7390, + 7392, + 7393, + 7394, + 7395, + 7396, + 7397, + 7398, + 7399, + 7400, + 7401, + 7402, + 7403, + 7405, + 7406, + 7407, + 7408, + 7409, + 7410, + 7412, + 7413, + 7414, + 7417, + 7418, + 7419, + 7420, + 7421, + 7422, + 7423, + 7424, + 7425, + 7426, + 7427, + 7428, + 7429, + 7431, + 7432, + 7433, + 7434, + 7435, + 7436, + 7438, + 7439, + 7440, + 7441, + 7442, + 7443, + 7444, + 7445, + 7446, + 7447, + 7448, + 7449, + 7450, + 7451, + 7452, + 7453, + 7454, + 7455, + 7456, + 7457, + 7458, + 7459, + 7460, + 7461, + 7462, + 7464, + 7465, + 7466, + 7467, + 7468, + 7469, + 7471, + 7472, + 7473, + 7474, + 7475, + 7476, + 7478, + 7479, + 7480, + 7481, + 7482, + 7483, + 7484, + 7485, + 7486, + 7487, + 7489, + 7490, + 7491, + 7492, + 7494, + 7495, + 7496, + 7497, + 7498, + 7499, + 7500, + 7501, + 7502, + 7503, + 7504, + 7505, + 7507, + 7508, + 7509, + 7510, + 7511, + 7512, + 7513, + 7514, + 7515, + 7516, + 7517, + 7518, + 7519, + 7520, + 7521, + 7522, + 7523, + 7524, + 7525, + 7526, + 7527, + 7528, + 7529, + 7530, + 7531, + 7532, + 7533, + 7534, + 7535, + 7536, + 7537, + 7538, + 7540, + 7541, + 7542, + 7544, + 7545, + 7546, + 7547, + 7548, + 7549, + 7550, + 7551, + 7552, + 7553, + 7554, + 7555, + 7556, + 7557, + 7558, + 7559, + 7560, + 7561, + 7562, + 7564, + 7565, + 7567, + 7568, + 7569, + 7570, + 7573, + 7574, + 7575, + 7576, + 7577, + 7578, + 7580, + 7581, + 7582, + 7583, + 7585, + 7586, + 7589, + 7590, + 7592, + 7595, + 7596, + 7597, + 7599, + 7601, + 7602, + 7603, + 7604, + 7605, + 7606, + 7608, + 7609, + 7610, + 7612, + 7613, + 7614, + 7615, + 7616, + 7618, + 7619, + 7620, + 7621, + 7622, + 7623, + 7625, + 7626, + 7627, + 7628, + 7629, + 7630, + 7631, + 7632, + 7633, + 7635, + 7636, + 7637, + 7638, + 7639, + 7640, + 7641, + 7644, + 7645, + 7646, + 7647, + 7648, + 7649, + 7651, + 7652, + 7653, + 7654, + 7655, + 7656, + 7657, + 7658, + 7660, + 7661, + 7662, + 7664, + 7665, + 7666, + 7667, + 7669, + 7670, + 7672, + 7673, + 7674, + 7675, + 7676, + 7677, + 7678, + 7679, + 7680, + 7681, + 7682, + 7683, + 7684, + 7685, + 7686, + 7687, + 7688, + 7689, + 7690, + 7691, + 7692, + 7693, + 7694, + 7695, + 7696, + 7697, + 7698, + 7699, + 7701, + 7702, + 7703, + 7704, + 7705, + 7706, + 7707, + 7708, + 7709, + 7710, + 7711, + 7712, + 7713, + 7714, + 7715, + 7716, + 7717, + 7718, + 7719, + 7722, + 7723, + 7724, + 7725, + 7726, + 7727, + 7728, + 7729, + 7732, + 7733, + 7734, + 7736, + 7737, + 7738, + 7739, + 7740, + 7741, + 7742, + 7744, + 7745, + 7746, + 7747, + 7748, + 7749, + 7750, + 7751, + 7752, + 7753, + 7754, + 7756, + 7758, + 7759, + 7760, + 7761, + 7762, + 7763, + 7764, + 7765, + 7766, + 7767, + 7768, + 7769, + 7770, + 7771, + 7772, + 7773, + 7774, + 7775, + 7777, + 7778, + 7779, + 7780, + 7781, + 7782, + 7784, + 7785, + 7786, + 7787, + 7788, + 7789, + 7790, + 7792, + 7793, + 7794, + 7795, + 7796, + 7797, + 7798, + 7799, + 7800, + 7801, + 7802, + 7803, + 7804, + 7805, + 7806, + 7807, + 7808, + 7809, + 7812, + 7813, + 7814, + 7816, + 7817, + 7818, + 7820, + 7821, + 7823, + 7824, + 7825, + 7826, + 7827, + 7828, + 7829, + 7830, + 7831, + 7832, + 7833, + 7834, + 7835, + 7836, + 7837, + 7838, + 7840, + 7842, + 7843, + 7844, + 7845, + 7846, + 7847, + 7848, + 7849, + 7850, + 7851, + 7852, + 7853, + 7855, + 7856, + 7857, + 7858, + 7859, + 7860, + 7861, + 7864, + 7865, + 7866, + 7867, + 7869, + 7870, + 7871, + 7873, + 7874, + 7877, + 7878, + 7879, + 7880, + 7881, + 7882, + 7884, + 7885, + 7886, + 7887, + 7888, + 7890, + 7891, + 7892, + 7893, + 7894, + 7895, + 7896, + 7897, + 7899, + 7900, + 7901, + 7903, + 7904, + 7905, + 7906, + 7907, + 7908, + 7909, + 7910, + 7911, + 7912, + 7913, + 7914, + 7915, + 7916, + 7917, + 7918, + 7919, + 7920, + 7921, + 7922, + 7923, + 7924, + 7925, + 7926, + 7927, + 7928, + 7929, + 7930, + 7931, + 7932, + 7933, + 7934, + 7935, + 7936, + 7937, + 7938, + 7939, + 7940, + 7941, + 7942, + 7943, + 7944, + 7945, + 7946, + 7947, + 7948, + 7949, + 7950, + 7951, + 7952, + 7953, + 7954, + 7955, + 7956, + 7957, + 7958, + 7959, + 7960, + 7961, + 7962, + 7963, + 7964, + 7965, + 7966, + 7967, + 7968, + 7969, + 7970, + 7971, + 7972, + 7973, + 7974, + 7975, + 7976, + 7977, + 7978, + 7979, + 7980, + 7981, + 7982, + 7983, + 7984, + 7985, + 7986, + 7987, + 7988, + 7989, + 7990, + 7991, + 7992, + 7993, + 7994, + 7995, + 7996, + 7997, + 7998, + 7999, + 8000, + 8001, + 8002, + 8003, + 8004, + 8005, + 8006, + 8007, + 8008, + 8009, + 8010, + 8011, + 8012, + 8013, + 8014, + 8015, + 8016, + 8017, + 8018, + 8019, + 8020, + 8021, + 8022, + 8023, + 8024, + 8025, + 8026, + 8027, + 8028, + 8029, + 8030, + 8031, + 8032, + 8033, + 8034, + 8035, + 8036, + 8037, + 8038, + 8039, + 8040, + 8041, + 8042, + 8043, + 8044, + 8045, + 8046, + 8047, + 8048, + 8049, + 8050, + 8051, + 8052, + 8053, + 8054, + 8055, + 8056, + 8057, + 8058, + 8059, + 8060, + 8061, + 8062, + 8063, + 8064, + 8065, + 8066, + 8067, + 8068, + 8069, + 8070, + 8071, + 8072, + 8073, + 8074, + 8075, + 8076, + 8077, + 8078, + 8079, + 8080, + 8081, + 8082, + 8083, + 8084, + 8085, + 8086, + 8087, + 8088, + 8089, + 8090, + 8091, + 8092, + 8093, + 8094, + 8095, + 8096, + 8097, + 8098, + 8099, + 8100, + 8101, + 8102, + 8103, + 8104, + 8105, + 8106, + 8107, + 8108, + 8109, + 8110, + 8111, + 8112, + 8113, + 8114, + 8115, + 8116, + 8117, + 8118, + 8119, + 8120, + 8121, + 8122, + 8123, + 8124, + 8125, + 8126, + 8127, + 8128, + 8129, + 8130, + 8131, + 8132, + 8133, + 8134, + 8135, + 8136, + 8137, + 8138, + 8139, + 8140, + 8141, + 8142, + 8143, + 8144, + 8145, + 8146, + 8147, + 8148, + 8149, + 8150, + 8151, + 8152, + 8153, + 8154, + 8155, + 8156, + 8157, + 8158, + 8159, + 8160, + 8161, + 8162, + 8163, + 8164, + 8165, + 8166, + 8167, + 8168, + 8169, + 8170, + 8171, + 8172, + 8173, + 8174, + 8175, + 8176, + 8177, + 8178, + 8179, + 8180, + 8181, + 8182, + 8183, + 8184, + 8185, + 8186, + 8187, + 8188, + 8189, + 8190, + 8191, + 8192, + 8193, + 8194, + 8195, + 8196, + 8197, + 8198, + 8199, + 8200, + 8201, + 8202, + 8203, + 8204, + 8205, + 8206, + 8207, + 8208, + 8209, + 8210, + 8211, + 8212, + 8213, + 8214, + 8215, + 8216, + 8217, + 8218, + 8219, + 8220, + 8221, + 8222, + 8223, + 8224, + 8225, + 8226, + 8227, + 8228, + 8229, + 8230, + 8231, + 8232, + 8233, + 8234, + 8235, + 8236, + 8237, + 8238, + 8239, + 8240, + 8241, + 8242, + 8243, + 8244, + 8245, + 8246, + 8247, + 8248, + 8249, + 8250, + 8251, + 8252, + 8253, + 8254, + 8255, + 8256, + 8257, + 8258, + 8259, + 8260, + 8261, + 8262, + 8263, + 8264, + 8265, + 8266, + 8267, + 8268, + 8269, + 8270, + 8271, + 8272, + 8273, + 8274, + 8275, + 8276, + 8277, + 8278, + 8279, + 8280, + 8281, + 8282, + 8283, + 8284, + 8285, + 8286, + 8287, + 8288, + 8289, + 8290, + 8291, + 8292, + 8293, + 8294, + 8295, + 8296, + 8297, + 8298, + 8299, + 8300, + 8301, + 8302, + 8303, + 8304, + 8305, + 8306, + 8307, + 8308, + 8309, + 8310, + 8311, + 8312, + 8313, + 8314, + 8315, + 8316, + 8317, + 8318, + 8319, + 8320, + 8321, + 8322, + 8323, + 8324, + 8325, + 8326, + 8327, + 8328, + 8329, + 8330, + 8331, + 8332, + 8333, + 8334, + 8335, + 8336, + 8337, + 8338, + 8339, + 8340, + 8341, + 8342, + 8343, + 8344, + 8345, + 8346, + 8347, + 8348, + 8349, + 8350, + 8351, + 8352, + 8353, + 8354, + 8355, + 8356, + 8357, + 8358, + 8359, + 8360, + 8361, + 8362, + 8363, + 8364, + 8365, + 8366, + 8367, + 8368, + 8369, + 8370, + 8371, + 8372, + 8373, + 8374, + 8375, + 8376, + 8377, + 8378, + 8379, + 8380, + 8381, + 8382, + 8383, + 8384, + 8385, + 8386, + 8387, + 8388, + 8389, + 8390, + 8391, + 8392, + 8393, + 8394, + 8395, + 8396, + 8397, + 8398, + 8399, + 8400, + 8401, + 8402, + 8403, + 8404, + 8405, + 8406, + 8407, + 8408, + 8409, + 8410, + 8411, + 8412, + 8413, + 8414, + 8415, + 8416, + 8417, + 8418, + 8419, + 8420, + 8421, + 8422, + 8423, + 8424, + 8425, + 8426, + 8427, + 8428, + 8429, + 8430, + 8431, + 8432, + 8433, + 8434, + 8435, + 8436, + 8437, + 8438, + 8439, + 8440, + 8441, + 8442, + 8443, + 8444, + 8445, + 8446, + 8447, + 8448, + 8449, + 8450, + 8451, + 8452, + 8453, + 8454, + 8455, + 8456, + 8457, + 8458, + 8459, + 8460, + 8461, + 8462, + 8463, + 8464, + 8465, + 8466, + 8467, + 8468, + 8469, + 8470, + 8471, + 8472, + 8473, + 8474, + 8475, + 8476, + 8477, + 8478, + 8479, + 8480, + 8481, + 8482, + 8483, + 8484, + 8485, + 8486, + 8487, + 8488, + 8489, + 8490, + 8491, + 8492, + 8493, + 8494, + 8495, + 8496, + 8497, + 8498, + 8499, + 8500, + 8501, + 8502, + 8503, + 8504, + 8505, + 8506, + 8507, + 8508, + 8509, + 8510, + 8511, + 8512, + 8513, + 8514, + 8515, + 8516, + 8517, + 8518, + 8519, + 8520, + 8521, + 8522, + 8523, + 8524, + 8525, + 8526, + 8527, + 8528, + 8530, + 8532, + 8534, + 8536, + 8537, + 8538, + 8539, + 8540, + 8541, + 8542, + 8543, + 8544, + 8545, + 8546, + 8547, + 8548, + 8549, + 8551, + 8552, + 8554, + 8555, + 8556, + 8557, + 8558, + 8559, + 8560, + 8561, + 8562, + 8563, + 8564, + 8565, + 8566, + 8567, + 8568, + 8569, + 8570, + 8571, + 8572, + 8573, + 8574, + 8575, + 8576, + 8577, + 8578, + 8579, + 8580, + 8581, + 8582, + 8583, + 8585, + 8586, + 8587, + 8589, + 8590, + 8591, + 8592, + 8593, + 8594, + 8595, + 8596, + 8597, + 8598, + 8599, + 8600, + 8601, + 8602, + 8603, + 8604, + 8605, + 8606, + 8607, + 8608, + 8609, + 8610, + 8611, + 8612, + 8613, + 8614, + 8615, + 8616, + 8617, + 8618, + 8619, + 8620, + 8621, + 8622, + 8623, + 8624, + 8625, + 8626, + 8627, + 8628, + 8629, + 8630, + 8631, + 8632, + 8633, + 8634, + 8635, + 8636, + 8637, + 8638, + 8639, + 8640, + 8641, + 8642, + 8643, + 8644, + 8645, + 8646, + 8647, + 8648, + 8649, + 8650, + 8651, + 8654, + 8655, + 8656, + 8657, + 8658, + 8659, + 8661, + 8662, + 8663, + 8664, + 8665, + 8666, + 8667, + 8668, + 8669, + 8670, + 8671, + 8672, + 8673, + 8674, + 8675, + 8676, + 8677, + 8678, + 8679, + 8680, + 8681, + 8682, + 8683, + 8684, + 8685, + 8686, + 8687, + 8688, + 8689, + 8690, + 8691, + 8692, + 8693, + 8694, + 8695, + 8696, + 8697, + 8698, + 8699, + 8700, + 8702, + 8703, + 8704, + 8705, + 8706, + 8707, + 8708, + 8709, + 8710, + 8711, + 8712, + 8713, + 8714, + 8715, + 8716, + 8717, + 8718, + 8719, + 8720, + 8721, + 8722, + 8723, + 8724, + 8725, + 8726, + 8727, + 8728, + 8729, + 8730, + 8731, + 8732, + 8733, + 8734, + 8735, + 8736, + 8737, + 8738, + 8739, + 8740, + 8741, + 8743, + 8744, + 8745, + 8746, + 8747, + 8748, + 8749, + 8750, + 8751, + 8752, + 8753, + 8754, + 8755, + 8756, + 8757, + 8758, + 8759, + 8760, + 8761, + 8762, + 8763, + 8764, + 8765, + 8766, + 8767, + 8768, + 8769, + 8770, + 8771, + 8772, + 8773, + 8774, + 8775, + 8776, + 8777, + 8778, + 8779, + 8780, + 8781, + 8782, + 8783, + 8784, + 8785, + 8786, + 8787, + 8788, + 8790, + 8791, + 8792, + 8793, + 8794, + 8795, + 8796, + 8797, + 8798, + 8799, + 8800, + 8801, + 8804, + 8805, + 8806, + 8807, + 8808, + 8809, + 8810, + 8811, + 8812, + 8813, + 8814, + 8815, + 8816, + 8817, + 8818, + 8819, + 8820, + 8821, + 8822, + 8823, + 8824, + 8825, + 8826, + 8827, + 8828, + 8829, + 8830, + 8831, + 8832, + 8833, + 8834, + 8835, + 8836, + 8837, + 8838, + 8839, + 8840, + 8841, + 8842, + 8843, + 8844, + 8845, + 8846, + 8847, + 8848, + 8849, + 8850, + 8851, + 8852, + 8854, + 8856, + 8857, + 8858, + 8859, + 8860, + 8861, + 8862, + 8863, + 8864, + 8865, + 8866, + 8867, + 8868, + 8869, + 8870, + 8871, + 8872, + 8873, + 8874, + 8875, + 8876, + 8877, + 8878, + 8879, + 8880, + 8881, + 8882, + 8883, + 8884, + 8885, + 8886, + 8887, + 8888, + 8889, + 8890, + 8891, + 8892, + 8893, + 8894, + 8895, + 8896, + 8897, + 8898, + 8899, + 8900, + 8901, + 8902, + 8903, + 8904, + 8905, + 8906, + 8907, + 8908, + 8909, + 8910, + 8911, + 8912, + 8913, + 8914, + 8915, + 8916, + 8917, + 8918, + 8919, + 8920, + 8921, + 8922, + 8923, + 8924, + 8925, + 8926, + 8927, + 8928, + 8929, + 8930, + 8931, + 8934, + 8935, + 8936, + 8937, + 8938, + 8940, + 8941, + 8942, + 8943, + 8944, + 8945, + 8946, + 8947, + 8948, + 8949, + 8950, + 8951, + 8952, + 8953, + 8954, + 8955, + 8956, + 8958, + 8959, + 8960, + 8961, + 8962, + 8963, + 8964, + 8965, + 8966, + 8967, + 8968, + 8969, + 8970, + 8971, + 8972, + 8973, + 8974, + 8975, + 8976, + 8977, + 8978, + 8980, + 8982, + 8983, + 8984, + 8985, + 8986, + 8987, + 8988, + 8989, + 8990, + 8991, + 8992, + 8993, + 8994, + 8995, + 8996, + 8997, + 8998, + 8999, + 9000, + 9001, + 9003, + 9004, + 9005, + 9006, + 9007, + 9008, + 9009, + 9010, + 9011, + 9012, + 9013, + 9014, + 9015, + 9016, + 9017, + 9018, + 9019, + 9020, + 9021, + 9022, + 9023, + 9024, + 9025, + 9026, + 9027, + 9028, + 9029, + 9030, + 9031, + 9032, + 9033, + 9034, + 9035, + 9036, + 9037, + 9038, + 9039, + 9042, + 9043, + 9044, + 9045, + 9046, + 9047, + 9048, + 9049, + 9050, + 9051, + 9052, + 9053, + 9054, + 9055, + 9056, + 9057, + 9058, + 9059, + 9060, + 9061, + 9062, + 9063, + 9064, + 9065, + 9066, + 9067, + 9068, + 9069, + 9070, + 9071, + 9072, + 9073, + 9074, + 9075, + 9076, + 9077, + 9078, + 9079, + 9080, + 9081, + 9082, + 9083, + 9084, + 9085, + 9086, + 9087, + 9088, + 9090, + 9092, + 9093, + 9094, + 9095, + 9096, + 9097, + 9098, + 9099, + 9100, + 9101, + 9102, + 9103, + 9104, + 9105, + 9106, + 9108, + 9109, + 9110, + 9111, + 9112, + 9113, + 9114, + 9115, + 9116, + 9117, + 9118, + 9119, + 9120, + 9121, + 9122, + 9123, + 9124, + 9125, + 9126, + 9127, + 9128, + 9129, + 9130, + 9131, + 9132, + 9133, + 9136, + 9137, + 9138, + 9139, + 9140, + 9141, + 9142, + 9143, + 9144, + 9145, + 9146, + 9147, + 9148, + 9149, + 9150, + 9151, + 9152, + 9153, + 9154, + 9155, + 9156, + 9157, + 9158, + 9159, + 9160, + 9161, + 9162, + 9163, + 9164, + 9165, + 9166, + 9167, + 9168, + 9169, + 9170, + 9171, + 9172, + 9173, + 9174, + 9175, + 9176, + 9177, + 9178, + 9179, + 9180, + 9181, + 9182, + 9184, + 9186, + 9187, + 9188, + 9189, + 9190, + 9191, + 9192, + 9193, + 9194, + 9195, + 9196, + 9197, + 9198, + 9199, + 9200, + 9201, + 9202, + 9203, + 9204, + 9205, + 9206, + 9207, + 9208, + 9209, + 9212, + 9213, + 9214, + 9215, + 9216, + 9217, + 9218, + 9219, + 9220, + 9221, + 9222, + 9223, + 9224, + 9225, + 9226, + 9227, + 9228, + 9229, + 9230, + 9231, + 9232, + 9233, + 9235, + 9236, + 9237, + 9238, + 9239, + 9240, + 9241, + 9242, + 9243, + 9244, + 9245, + 9246, + 9247, + 9248, + 9249, + 9250, + 9251, + 9252, + 9253, + 9254, + 9255, + 9256, + 9257, + 9258, + 9260, + 9262, + 9263, + 9264, + 9265, + 9270, + 9271, + 9272, + 9273, + 9274, + 9275, + 9276, + 9277, + 9278, + 9279, + 9280, + 9281, + 9282, + 9283, + 9284, + 9285, + 9288, + 9289, + 9290, + 9291, + 9292, + 9293, + 9294, + 9295, + 9296, + 9297, + 9298, + 9299, + 9300, + 9301, + 9302, + 9303, + 9306, + 9307, + 9308, + 9309, + 9310, + 9311, + 9312, + 9314, + 9316, + 9317, + 9318, + 9319, + 9320, + 9321, + 9322, + 9323, + 9324, + 9325, + 9326, + 9327, + 9328, + 9329, + 9330, + 9331, + 9332, + 9333, + 9334, + 9335, + 9336, + 9337, + 9338, + 9339, + 9340, + 9341, + 9342, + 9343, + 9344, + 9345, + 9346, + 9347, + 9348, + 9349, + 9350, + 9351, + 9352, + 9353, + 9354, + 9355, + 9356, + 9357, + 9358, + 9359, + 9360, + 9361, + 9362, + 9363, + 9364, + 9365, + 9366, + 9367, + 9368, + 9369, + 9370, + 9372, + 9373, + 9374, + 9375, + 9376, + 9377, + 9378, + 9379, + 9380, + 9381, + 9382, + 9383, + 9386, + 9387, + 9388, + 9389, + 9390, + 9391, + 9392, + 9394, + 9395, + 9397, + 9398, + 9399, + 9400, + 9401, + 9402, + 9403, + 9404, + 9405, + 9406, + 9407, + 9408, + 9409, + 9410, + 9411, + 9412, + 9413, + 9414, + 9415, + 9416, + 9417, + 9418, + 9419, + 9420, + 9421, + 9422, + 9423, + 9426, + 9427, + 9428, + 9432, + 9433, + 9434, + 9435, + 9436, + 9437, + 9438, + 9439, + 9440, + 9441, + 9442, + 9443, + 9444, + 9445, + 9446, + 9447, + 9448, + 9449, + 9450, + 9451, + 9452, + 9453, + 9454, + 9455, + 9456, + 9457, + 9458, + 9459, + 9460, + 9461, + 9462, + 9463, + 9464, + 9465, + 9466, + 9467, + 9468, + 9469, + 9470, + 9471, + 9472, + 9473, + 9474, + 9475, + 9476, + 9477, + 9478, + 9479, + 9480, + 9481, + 9482, + 9483, + 9484, + 9485, + 9486, + 9487, + 9488, + 9489, + 9490, + 9491, + 9492, + 9493, + 9494, + 9495, + 9496, + 9497, + 9498, + 9499, + 9500, + 9501, + 9504, + 9505, + 9506, + 9507, + 9508, + 9510, + 9511, + 9512, + 9513, + 9514, + 9515, + 9517, + 9518, + 9519, + 9520, + 9521, + 9522, + 9523, + 9524, + 9525, + 9526, + 9527, + 9528, + 9529, + 9530, + 9531, + 9532, + 9533, + 9534, + 9535, + 9537, + 9538, + 9539, + 9540, + 9541, + 9542, + 9543, + 9544, + 9545, + 9546, + 9547, + 9548, + 9549, + 9550, + 9551, + 9552, + 9553, + 9554, + 9555, + 9556, + 9557, + 9558, + 9559, + 9560, + 9561, + 9562, + 9563, + 9564, + 9565, + 9566, + 9567, + 9568, + 9569, + 9570, + 9571, + 9572, + 9573, + 9574, + 9575, + 9576, + 9577, + 9578, + 9579, + 9580, + 9581, + 9582, + 9583, + 9584, + 9586, + 9587, + 9588, + 9589, + 9590, + 9591, + 9592, + 9593, + 9595, + 9596, + 9597, + 9598, + 9599, + 9601, + 9602, + 9603, + 9604, + 9605, + 9606, + 9607, + 9608, + 9609, + 9610, + 9611, + 9612, + 9613, + 9614, + 9615, + 9616, + 9617, + 9618, + 9619, + 9620, + 9621, + 9622, + 9623, + 9624, + 9625, + 9626, + 9627, + 9628, + 9629, + 9630, + 9631, + 9632, + 9633, + 9634, + 9635, + 9636, + 9637, + 9638, + 9639, + 9640, + 9641, + 9642, + 9643, + 9644, + 9645, + 9646, + 9647, + 9648, + 9649, + 9650, + 9651, + 9652, + 9653, + 9654, + 9655, + 9656, + 9657, + 9658, + 9659, + 9660, + 9661, + 9664, + 9665, + 9666, + 9667, + 9668, + 9669, + 9670, + 9671, + 9672, + 9673, + 9674, + 9675, + 9676, + 9677, + 9678, + 9679, + 9680, + 9681, + 9682, + 9683, + 9684, + 9685, + 9686, + 9687, + 9690, + 9691, + 9693, + 9694, + 9695, + 9696, + 9697, + 9698, + 9699, + 9700, + 9701, + 9702, + 9703, + 9704, + 9705, + 9706, + 9707, + 9708, + 9709, + 9710, + 9711, + 9712, + 9713, + 9714, + 9715, + 9716, + 9718, + 9719, + 9720, + 9721, + 9722, + 9723, + 9724, + 9725, + 9726, + 9727, + 9728, + 9729, + 9730, + 9731, + 9732, + 9733, + 9734, + 9735, + 9736, + 9737, + 9738, + 9739, + 9740, + 9741, + 9744, + 9745, + 9746, + 9747, + 9748, + 9749, + 9750, + 9751, + 9752, + 9753, + 9754, + 9755, + 9756, + 9757, + 9758, + 9759, + 9761, + 9763, + 9764, + 9765, + 9766, + 9767, + 9768, + 9769, + 9770, + 9771, + 9772, + 9773, + 9774, + 9775, + 9776, + 9777, + 9778, + 9779, + 9780, + 9781, + 9783, + 9784, + 9785, + 9786, + 9787, + 9788, + 9789, + 9790, + 9791, + 9792, + 9793, + 9794, + 9795, + 9796, + 9797, + 9798, + 9800, + 9801, + 9802, + 9803, + 9806, + 9807, + 9808, + 9809, + 9810, + 9812, + 9813, + 9814, + 9816, + 9817, + 9819, + 9820, + 9821, + 9823, + 9824, + 9825, + 9826, + 9827, + 9828, + 9829, + 9830, + 9831, + 9832, + 9833, + 9834, + 9836, + 9837, + 9838, + 9839, + 9840, + 9841, + 9843, + 9844, + 9845, + 9846, + 9847, + 9848, + 9849, + 9850, + 9851, + 9852, + 9853, + 9854, + 9855, + 9856, + 9857, + 9858, + 9859, + 9860, + 9861, + 9862, + 9865, + 9866, + 9867, + 9868, + 9869, + 9870, + 9871, + 9872, + 9873, + 9874, + 9875, + 9876, + 9877, + 9878, + 9879, + 9880, + 9881, + 9882, + 9883, + 9884, + 9885, + 9886, + 9887, + 9888, + 9889, + 9890, + 9891, + 9892, + 9893, + 9894, + 9895, + 9896, + 9897, + 9898, + 9899, + 9900, + 9901, + 9902, + 9903, + 9904, + 9905, + 9906, + 9907, + 9908, + 9909, + 9910, + 9911, + 9912, + 9913, + 9914, + 9915, + 9916, + 9917, + 9918, + 9919, + 9922, + 9923, + 9924, + 9925, + 9926, + 9927, + 9928, + 9929, + 9930, + 9931, + 9932, + 9933, + 9934, + 9935, + 9936, + 9937, + 9938, + 9939, + 9940, + 9941, + 9942, + 9943, + 9944, + 9945, + 9946, + 9947, + 9948, + 9949, + 9950, + 9951, + 9952, + 9953, + 9954, + 9955, + 9956, + 9957, + 9958, + 9959, + 9960, + 9961, + 9962, + 9963, + 9964, + 9965, + 9966, + 9967, + 9968, + 9969, + 9970, + 9972, + 9973, + 9974, + 9975, + 9976, + 9977, + 9978, + 9979, + 9980, + 9981, + 9982, + 9983, + 9985, + 9988, + 9989, + 9990, + 9991, + 9992, + 9993, + 9994, + 9995, + 9996, + 9997, + 9998, + 9999, + 10000, + 10001, + 10002, + 10003, + 10004, + 10005, + 10006, + 10007, + 10008, + 10009, + 10010, + 10011, + 10012, + 10013, + 10014, + 10015, + 10018, + 10019, + 10020, + 10021, + 10022, + 10023, + 10024, + 10025, + 10026, + 10027, + 10028, + 10029, + 10030, + 10031, + 10033, + 10034, + 10035, + 10036, + 10037, + 10038, + 10039, + 10040, + 10041, + 10042, + 10043, + 10044, + 10045, + 10046, + 10047, + 10048, + 10049, + 10050, + 10051, + 10052, + 10053, + 10054, + 10055, + 10056, + 10057, + 10058, + 10059, + 10060, + 10061, + 10062, + 10063, + 10064, + 10065, + 10066, + 10067, + 10068, + 10069, + 10070, + 10071, + 10072, + 10073, + 10074, + 10075, + 10076, + 10077, + 10078, + 10079, + 10080, + 10081, + 10082, + 10083, + 10084, + 10085, + 10086, + 10087, + 10088, + 10089, + 10090, + 10091, + 10092, + 10093, + 10096, + 10097, + 10098, + 10099, + 10100, + 10101, + 10102, + 10103, + 10104, + 10106, + 10107, + 10108, + 10109, + 10110, + 10111, + 10112, + 10113, + 10114, + 10115, + 10116, + 10117, + 10118, + 10119, + 10120, + 10121, + 10122, + 10123, + 10124, + 10125, + 10126, + 10127, + 10128, + 10129, + 10130, + 10131, + 10132, + 10133, + 10134, + 10135, + 10136, + 10137, + 10138, + 10139, + 10140, + 10141, + 10142, + 10143, + 10144, + 10145, + 10146, + 10147, + 10148, + 10149, + 10150, + 10151, + 10156, + 10157, + 10158, + 10159, + 10160, + 10161, + 10162, + 10164, + 10165, + 10167, + 10168, + 10169, + 10170, + 10171, + 10173, + 10174, + 10175, + 10178, + 10179, + 10180, + 10181, + 10182, + 10183, + 10184, + 10185, + 10186, + 10187, + 10188, + 10189, + 10190, + 10191, + 10193, + 10194, + 10195, + 10198, + 10199, + 10200, + 10201, + 10202, + 10203, + 10204, + 10205, + 10206, + 10207, + 10208, + 10209, + 10210, + 10211, + 10213, + 10214, + 10215, + 10216, + 10217, + 10218, + 10219, + 10220, + 10221, + 10222, + 10223, + 10224, + 10225, + 10226, + 10227, + 10228, + 10229, + 10230, + 10231, + 10232, + 10233, + 10234, + 10235, + 10236, + 10237, + 10238, + 10239, + 10240, + 10241, + 10242, + 10243, + 10244, + 10245, + 10246, + 10247, + 10248, + 10249, + 10250, + 10251, + 10252, + 10253, + 10254, + 10255, + 10256, + 10257, + 10258, + 10259, + 10260, + 10261, + 10262, + 10263, + 10264, + 10265, + 10266, + 10267, + 10268, + 10269, + 10270, + 10271, + 10272, + 10273, + 10274, + 10275, + 10276, + 10277, + 10278, + 10279, + 10280, + 10281, + 10282, + 10283, + 10284, + 10285, + 10286, + 10287, + 10288, + 10289, + 10290, + 10291, + 10292, + 10293, + 10294, + 10295, + 10296, + 10297, + 10298, + 10299, + 10301, + 10303, + 10304, + 10305, + 10306, + 10307, + 10308, + 10309, + 10310, + 10311, + 10312, + 10313, + 10314, + 10315, + 10316, + 10317, + 10318, + 10319, + 10320, + 10321, + 10322, + 10323, + 10324, + 10325, + 10326, + 10327, + 10328, + 10329, + 10330, + 10331, + 10332, + 10333, + 10334, + 10335, + 10336, + 10337, + 10338, + 10339, + 10340, + 10341, + 10342, + 10343, + 10344, + 10345, + 10346, + 10347, + 10348, + 10349, + 10350, + 10351, + 10352, + 10353, + 10354, + 10355, + 10356, + 10357, + 10358, + 10359, + 10360, + 10361, + 10362, + 10363, + 10364, + 10365, + 10366, + 10367, + 10368, + 10369, + 10370, + 10371, + 10372, + 10373, + 10374, + 10375, + 10378, + 10379, + 10380, + 10381, + 10382, + 10383, + 10384, + 10385, + 10386, + 10387, + 10388, + 10389, + 10390, + 10391, + 10392, + 10393, + 10394, + 10395, + 10396, + 10397, + 10398, + 10399, + 10400, + 10401, + 10402, + 10404, + 10405, + 10407, + 10408, + 10410, + 10411, + 10413, + 10414, + 10415, + 10416, + 10417, + 10418, + 10419, + 10420, + 10421, + 10422, + 10423, + 10424, + 10425, + 10426, + 10427, + 10428, + 10429, + 10430, + 10431, + 10432, + 10433, + 10434, + 10435, + 10436, + 10437, + 10438, + 10439, + 10440, + 10441, + 10442, + 10443, + 10444, + 10445, + 10446, + 10447, + 10448, + 10449, + 10450, + 10451, + 10452, + 10453, + 10454, + 10455, + 10457, + 10459, + 10460, + 10461, + 10462, + 10463, + 10464, + 10465, + 10466, + 10467, + 10468, + 10469, + 10470, + 10471, + 10472, + 10473, + 10474, + 10475, + 10476, + 10477, + 10478, + 10479, + 10480, + 10481, + 10482, + 10483, + 10484, + 10485, + 10486, + 10487, + 10488, + 10489, + 10490, + 10491, + 10492, + 10493, + 10495, + 10496, + 10497, + 10498, + 10499, + 10500, + 10501, + 10502, + 10503, + 10504, + 10505, + 10506, + 10507, + 10508, + 10509, + 10510, + 10511, + 10512, + 10513, + 10514, + 10515, + 10516, + 10517, + 10520, + 10521, + 10522, + 10523, + 10524, + 10526, + 10527, + 10528, + 10529, + 10530, + 10531, + 10533, + 10535, + 10536, + 10537, + 10538, + 10539, + 10540, + 10541, + 10542, + 10544, + 10545, + 10546, + 10548, + 10549, + 10551, + 10553, + 10555, + 10556, + 10557, + 10558, + 10559, + 10560, + 10561, + 10562, + 10563, + 10564, + 10565, + 10566, + 10567, + 10568, + 10569, + 10570, + 10571, + 10572, + 10573, + 10574, + 10575, + 10576, + 10577, + 10578, + 10579, + 10580, + 10581, + 10582, + 10583, + 10584, + 10585, + 10586, + 10587, + 10588, + 10589, + 10590, + 10591, + 10592, + 10593, + 10594, + 10595, + 10596, + 10597, + 10598, + 10599, + 10600, + 10601, + 10602, + 10603, + 10604, + 10605, + 10606, + 10607, + 10608, + 10609, + 10610, + 10611, + 10612, + 10613, + 10614, + 10615, + 10616, + 10617, + 10618, + 10619, + 10620, + 10621, + 10622, + 10624, + 10625, + 10627, + 10628, + 10629, + 10630, + 10631, + 10634, + 10635, + 10636, + 10637, + 10638, + 10639, + 10640, + 10641, + 10642, + 10643, + 10644, + 10645, + 10646, + 10647, + 10648, + 10649, + 10650, + 10651, + 10652, + 10653, + 10654, + 10655, + 10656, + 10657, + 10658, + 10659, + 10660, + 10661, + 10662, + 10663, + 10664, + 10665, + 10666, + 10667, + 10668, + 10669, + 10670, + 10671, + 10672, + 10673, + 10674, + 10675, + 10676, + 10677, + 10678, + 10679, + 10680, + 10681, + 10682, + 10683, + 10684, + 10685, + 10686, + 10687, + 10688, + 10689, + 10690, + 10691, + 10692, + 10693, + 10694, + 10695, + 10696, + 10697, + 10699, + 10700, + 10702, + 10703, + 10704, + 10705, + 10706, + 10707, + 10708, + 10709, + 10710, + 10711, + 10712, + 10713, + 10714, + 10715, + 10716, + 10717, + 10718, + 10719, + 10720, + 10721, + 10722, + 10723, + 10724, + 10725, + 10727, + 10728, + 10729, + 10730, + 10731, + 10734, + 10735, + 10736, + 10737, + 10738, + 10739, + 10741, + 10742, + 10744, + 10745, + 10746, + 10747, + 10748, + 10749, + 10750, + 10751, + 10752, + 10753, + 10754, + 10755, + 10756, + 10757, + 10758, + 10759, + 10760, + 10761, + 10762, + 10763, + 10764, + 10765, + 10766, + 10767, + 10768, + 10769, + 10770, + 10771, + 10772, + 10773, + 10774, + 10775, + 10776, + 10777, + 10778, + 10779, + 10780, + 10781, + 10782, + 10783, + 10784, + 10785, + 10786, + 10787, + 10788, + 10789, + 10790, + 10791, + 10792, + 10793, + 10794, + 10795, + 10796, + 10797, + 10798, + 10799, + 10800, + 10801, + 10802, + 10803, + 10804, + 10805, + 10806, + 10807, + 10808, + 10809, + 10810, + 10811, + 10812, + 10813, + 10814, + 10815, + 10818, + 10819, + 10820, + 10821, + 10822, + 10823, + 10824, + 10825, + 10826, + 10827, + 10828, + 10829, + 10830, + 10832, + 10833, + 10834, + 10835, + 10836, + 10837, + 10838, + 10839, + 10840, + 10841, + 10843, + 10844, + 10845, + 10846, + 10847, + 10848, + 10850, + 10851, + 10853, + 10854, + 10855, + 10856, + 10857, + 10858, + 10859, + 10860, + 10861, + 10862, + 10863, + 10864, + 10865, + 10866, + 10867, + 10868, + 10869, + 10870, + 10871, + 10872, + 10873, + 10874, + 10875, + 10876, + 10878, + 10879, + 10880, + 10881, + 10886, + 10887, + 10888, + 10889, + 10890, + 10891, + 10892, + 10893, + 10894, + 10895, + 10896, + 10897, + 10898, + 10899, + 10900, + 10901, + 10904, + 10905, + 10906, + 10907, + 10908, + 10909, + 10910, + 10911, + 10912, + 10913, + 10915, + 10916, + 10917, + 10918, + 10919, + 10920, + 10921, + 10924, + 10925, + 10926, + 10927, + 10928, + 10929, + 10930, + 10931, + 10932, + 10933, + 10934, + 10935, + 10936, + 10937, + 10938, + 10939, + 10940, + 10941, + 10942, + 10943, + 10944, + 10945, + 10946, + 10947, + 10948, + 10949, + 10950, + 10951, + 10952, + 10953, + 10954, + 10955, + 10956, + 10957, + 10958, + 10959, + 10961, + 10962, + 10963, + 10964, + 10965, + 10966, + 10967, + 10968, + 10969, + 10970, + 10971, + 10972, + 10973, + 10974, + 10975, + 10976, + 10977, + 10978, + 10979, + 10980, + 10981, + 10982, + 10983, + 10984, + 10985, + 10986, + 10987, + 10988, + 10989, + 10990, + 10991, + 10992, + 10993, + 10994, + 10995, + 10996, + 10997, + 10998, + 10999, + 11000, + 11001, + 11002, + 11003, + 11004, + 11005, + 11006, + 11007, + 11008, + 11009, + 11010, + 11011, + 11012, + 11013, + 11014, + 11015, + 11016, + 11017, + 11018, + 11019, + 11020, + 11021, + 11022, + 11023, + 11024, + 11025, + 11026, + 11027, + 11028, + 11029, + 11030, + 11031, + 11032, + 11033, + 11034, + 11035, + 11036, + 11037, + 11038, + 11039, + 11040, + 11041, + 11042, + 11043, + 11044, + 11045, + 11046, + 11047, + 11048, + 11049, + 11050, + 11051, + 11052, + 11053, + 11054, + 11055, + 11056, + 11057, + 11058, + 11059, + 11060, + 11061, + 11062, + 11063, + 11064, + 11065, + 11066, + 11067, + 11068, + 11069, + 11070, + 11071, + 11072, + 11073, + 11074, + 11075, + 11076, + 11077, + 11080, + 11081, + 11082, + 11083, + 11084, + 11086, + 11087, + 11088, + 11090, + 11091, + 11092, + 11093, + 11094, + 11095, + 11096, + 11097, + 11098, + 11099, + 11100, + 11101, + 11102, + 11103, + 11104, + 11106, + 11107, + 11108, + 11109, + 11110, + 11111, + 11112, + 11113, + 11114, + 11115, + 11116, + 11117, + 11118, + 11119, + 11120, + 11121, + 11122, + 11123, + 11124, + 11125, + 11126, + 11127, + 11128, + 11129, + 11130, + 11131, + 11132, + 11133, + 11134, + 11135, + 11136, + 11137, + 11138, + 11139, + 11140, + 11141, + 11142, + 11143, + 11144, + 11145, + 11146, + 11147, + 11148, + 11149, + 11150, + 11151, + 11152, + 11153, + 11154, + 11155, + 11156, + 11157, + 11158, + 11159, + 11160, + 11161, + 11162, + 11163, + 11164, + 11165, + 11166, + 11167, + 11168, + 11169, + 11170, + 11171, + 11172, + 11173, + 11174, + 11175, + 11176, + 11177, + 11178, + 11179, + 11180, + 11181, + 11182, + 11183, + 11184, + 11185, + 11188, + 11189, + 11190, + 11191, + 11192, + 11193, + 11194, + 11195, + 11196, + 11197, + 11198, + 11199, + 11200, + 11201, + 11202, + 11203, + 11204, + 11205, + 11206, + 11207, + 11208, + 11209, + 11210, + 11211, + 11212, + 11213, + 11214, + 11215, + 11216, + 11217, + 11218, + 11219, + 11220, + 11221, + 11222, + 11223, + 11224, + 11225, + 11226, + 11227, + 11228, + 11229, + 11230, + 11231, + 11232, + 11233, + 11234, + 11235, + 11236, + 11237, + 11238, + 11239, + 11240, + 11241, + 11242, + 11243, + 11244, + 11245, + 11246, + 11247, + 11249, + 11251, + 11252, + 11253, + 11254, + 11255, + 11256, + 11257, + 11258, + 11259, + 11260, + 11261, + 11262, + 11263, + 11264, + 11265, + 11266, + 11267, + 11268, + 11269, + 11270, + 11271, + 11272, + 11273, + 11274, + 11275, + 11276, + 11277, + 11278, + 11279, + 11282, + 11283, + 11284, + 11285, + 11286, + 11287, + 11288, + 11289, + 11290, + 11291, + 11292, + 11293, + 11294, + 11295, + 11296, + 11297, + 11298, + 11299, + 11300, + 11301, + 11302, + 11303, + 11304, + 11305, + 11306, + 11307, + 11308, + 11309, + 11310, + 11312, + 11313, + 11314, + 11315, + 11316, + 11317, + 11318, + 11319, + 11320, + 11321, + 11322, + 11323, + 11324, + 11325, + 11326, + 11327, + 11328, + 11329, + 11330, + 11331, + 11332, + 11333, + 11334, + 11335, + 11336, + 11337, + 11338, + 11339, + 11340, + 11341, + 11342, + 11343, + 11344, + 11345, + 11346, + 11347, + 11348, + 11349, + 11350, + 11351, + 11352, + 11353, + 11354, + 11355, + 11358, + 11359, + 11360, + 11361, + 11362, + 11363, + 11364, + 11365, + 11366, + 11368, + 11369, + 11370, + 11371, + 11372, + 11373, + 11374, + 11375, + 11376, + 11377, + 11378, + 11379, + 11380, + 11381, + 11382, + 11383, + 11384, + 11385, + 11386, + 11387, + 11388, + 11389, + 11390, + 11391, + 11392, + 11393, + 11394, + 11395, + 11396, + 11397, + 11398, + 11399, + 11400, + 11401, + 11402, + 11403, + 11404, + 11405, + 11406, + 11407, + 11408, + 11409, + 11410, + 11411, + 11416, + 11417, + 11418, + 11419, + 11420, + 11421, + 11422, + 11423, + 11424, + 11425, + 11426, + 11427, + 11428, + 11429, + 11430, + 11431, + 11434, + 11435, + 11436, + 11437, + 11438, + 11439, + 11440, + 11441, + 11442, + 11443, + 11444, + 11445, + 11446, + 11447, + 11448, + 11449, + 11452, + 11453, + 11454, + 11455, + 11456, + 11457, + 11458, + 11459, + 11460, + 11461, + 11462, + 11463, + 11464, + 11465, + 11466, + 11467, + 11468, + 11469, + 11470, + 11471, + 11472, + 11473, + 11474, + 11475, + 11476, + 11477, + 11478, + 11480, + 11481, + 11482, + 11483, + 11484, + 11485, + 11486, + 11487, + 11488, + 11489, + 11490, + 11491, + 11492, + 11493, + 11494, + 11495, + 11496, + 11497, + 11498, + 11500, + 11501, + 11502, + 11503, + 11504, + 11505, + 11506, + 11507, + 11508, + 11509, + 11510, + 11511, + 11512, + 11513, + 11514, + 11515, + 11516, + 11517, + 11518, + 11519, + 11520, + 11521, + 11522, + 11523, + 11524, + 11525, + 11526, + 11527, + 11528, + 11529, + 11530, + 11531, + 11532, + 11533, + 11534, + 11535, + 11536, + 11537, + 11538, + 11539, + 11540, + 11541, + 11542, + 11543, + 11544, + 11546, + 11547, + 11548, + 11549, + 11550, + 11551, + 11552, + 11553, + 11554, + 11555, + 11556, + 11557, + 11558, + 11559, + 11560, + 11561, + 11562, + 11563, + 11564, + 11565, + 11566, + 11567, + 11568, + 11569, + 11570, + 11571, + 11572, + 11573, + 11576, + 11577, + 11578, + 11579, + 11580, + 11581, + 11582, + 11583, + 11584, + 11585, + 11586, + 11587, + 11588, + 11589, + 11590, + 11591, + 11592, + 11593, + 11594, + 11595, + 11596, + 11597, + 11598, + 11599, + 11600, + 11601, + 11602, + 11603, + 11604, + 11605, + 11606, + 11607, + 11608, + 11609, + 11610, + 11611, + 11612, + 11613, + 11614, + 11615, + 11616, + 11617, + 11618, + 11619, + 11620, + 11621, + 11622, + 11623, + 11624, + 11625, + 11626, + 11627, + 11628, + 11629, + 11630, + 11631, + 11632, + 11633, + 11634, + 11635, + 11636, + 11637, + 11639, + 11640, + 11642, + 11643, + 11644, + 11645, + 11646, + 11647, + 11648, + 11649, + 11650, + 11651, + 11652, + 11653, + 11654, + 11655, + 11656, + 11657, + 11658, + 11659, + 11660, + 11661, + 11662, + 11663, + 11664, + 11665, + 11666, + 11667, + 11668, + 11669, + 11672, + 11673, + 11674, + 11675, + 11676, + 11677, + 11678, + 11679, + 11680, + 11681, + 11682, + 11683, + 11684, + 11685, + 11686, + 11687, + 11688, + 11689, + 11690, + 11691, + 11692, + 11693, + 11694, + 11695, + 11696, + 11697, + 11698, + 11699, + 11700, + 11701, + 11702, + 11703, + 11704, + 11705, + 11706, + 11707, + 11708, + 11709, + 11710, + 11711, + 11712, + 11713, + 11714, + 11715, + 11716, + 11717, + 11718, + 11719, + 11720, + 11721, + 11722, + 11723, + 11724, + 11725, + 11726, + 11727, + 11728, + 11729, + 11730, + 11731, + 11732, + 11733, + 11734, + 11735, + 11736, + 11737, + 11738, + 11739, + 11740, + 11741, + 11742, + 11743, + 11744, + 11746, + 11747, + 11750, + 11751, + 11752, + 11753, + 11754, + 11755, + 11756, + 11757, + 11758, + 11759, + 11760, + 11761, + 11762, + 11763, + 11764, + 11765, + 11766, + 11767, + 11768, + 11769, + 11770, + 11771, + 11772, + 11773, + 11774, + 11776, + 11777, + 11778, + 11779, + 11780, + 11781, + 11782, + 11783, + 11784, + 11785, + 11786, + 11787, + 11788, + 11789, + 11790, + 11791, + 11792, + 11793, + 11794, + 11795, + 11796, + 11797, + 11798, + 11799, + 11800, + 11801, + 11802, + 11803, + 11804, + 11805, + 11810, + 11811, + 11812, + 11813, + 11814, + 11815, + 11816, + 11817, + 11818, + 11819, + 11820, + 11821, + 11822, + 11823, + 11824, + 11825, + 11828, + 11829, + 11830, + 11831, + 11832, + 11833, + 11834, + 11835, + 11836, + 11837, + 11838, + 11839, + 11840, + 11841, + 11842, + 11843, + 11844, + 11845, + 11848, + 11849, + 11850, + 11851, + 11852, + 11853, + 11854, + 11855, + 11856, + 11857, + 11858, + 11859, + 11860, + 11861, + 11862, + 11863, + 11864, + 11865, + 11866, + 11867, + 11868, + 11869, + 11870, + 11871, + 11872, + 11873, + 11874, + 11875, + 11876, + 11877, + 11878, + 11879, + 11880, + 11881, + 11882, + 11883, + 11884, + 11885, + 11886, + 11887, + 11888, + 11889, + 11890, + 11891, + 11892, + 11893, + 11894, + 11895, + 11896, + 11897, + 11898, + 11899, + 11900, + 11901, + 11902, + 11903, + 11904, + 11905, + 11906, + 11907, + 11908, + 11909, + 11910, + 11911, + 11912, + 11913, + 11914, + 11915, + 11916, + 11917, + 11918, + 11919, + 11920, + 11921, + 11922, + 11923, + 11924, + 11925, + 11926, + 11927, + 11928, + 11929, + 11930, + 11931, + 11932, + 11933, + 11935, + 11936, + 11937, + 11938, + 11939, + 11941, + 11944, + 11946, + 11947, + 11948, + 11949, + 11950, + 11951, + 11952, + 11953, + 11954, + 11955, + 11956, + 11957, + 11958, + 11959, + 11960, + 11961, + 11964, + 11965, + 11968, + 11969, + 11970, + 11971, + 11972, + 11973, + 11975, + 11976, + 11978, + 11979, + 11981, + 11982, + 11983, + 11984, + 11985, + 11988, + 11989, + 11990, + 11991, + 11992, + 11993, + 11994, + 11995, + 11996, + 11997, + 11998, + 11999, + 12001, + 12002, + 12003, + 12004, + 12005, + 12006, + 12007, + 12008, + 12009, + 12010, + 12011, + 12012, + 12013, + 12014, + 12015, + 12016, + 12017, + 12018, + 12019, + 12020, + 12021, + 12022, + 12023, + 12024, + 12025, + 12026, + 12027, + 12028, + 12029, + 12030, + 12031, + 12032, + 12033, + 12034, + 12035, + 12036, + 12037, + 12038, + 12039, + 12040, + 12041, + 12042, + 12043, + 12044, + 12045, + 12046, + 12047, + 12048, + 12049, + 12052, + 12053, + 12054, + 12055, + 12056, + 12057, + 12058, + 12059, + 12060, + 12061, + 12062, + 12063, + 12064, + 12065, + 12066, + 12067, + 12068, + 12069, + 12070, + 12071, + 12072, + 12073, + 12074, + 12075, + 12077, + 12078, + 12082, + 12083, + 12084, + 12085, + 12086, + 12087, + 12088, + 12089, + 12090, + 12091, + 12092, + 12093, + 12094, + 12095, + 12096, + 12097, + 12098, + 12099, + 12100, + 12101, + 12102, + 12103, + 12104, + 12105, + 12106, + 12107, + 12112, + 12113, + 12114, + 12115, + 12116, + 12117, + 12118, + 12119, + 12120, + 12121, + 12122, + 12123, + 12124, + 12125, + 12127, + 12128, + 12130, + 12131, + 12134, + 12135, + 12136, + 12137, + 12138, + 12139, + 12140, + 12141, + 12142, + 12143, + 12144, + 12145, + 12147, + 12148, + 12149, + 12150, + 12151, + 12154, + 12155, + 12156, + 12157, + 12158, + 12159, + 12160, + 12161, + 12162, + 12163, + 12164, + 12165, + 12166, + 12167, + 12168, + 12169, + 12170, + 12171, + 12172, + 12173, + 12174, + 12175, + 12176, + 12177, + 12178, + 12179, + 12180, + 12181, + 12182, + 12183, + 12184, + 12185, + 12186, + 12187, + 12188, + 12189, + 12190, + 12191, + 12192, + 12193, + 12194, + 12195, + 12196, + 12197, + 12198, + 12199, + 12200, + 12201, + 12202, + 12203, + 12204, + 12205, + 12206, + 12207, + 12208, + 12209, + 12210, + 12211, + 12212, + 12213, + 12214, + 12215, + 12216, + 12217, + 12218, + 12219, + 12220, + 12221, + 12222, + 12223, + 12224, + 12225, + 12226, + 12227, + 12228, + 12229, + 12230, + 12231, + 12232, + 12233, + 12234, + 12235, + 12236, + 12237, + 12238, + 12239, + 12240, + 12241, + 12242, + 12243, + 12244, + 12245, + 12247, + 12250, + 12251, + 12252, + 12253, + 12254, + 12255, + 12256, + 12257, + 12258, + 12259, + 12260, + 12261, + 12262, + 12263, + 12264, + 12265, + 12266, + 12267, + 12268, + 12269, + 12270, + 12271, + 12272, + 12273, + 12274, + 12275, + 12276, + 12278, + 12279, + 12280, + 12281, + 12282, + 12283, + 12284, + 12285, + 12286, + 12287, + 12288, + 12289, + 12290, + 12291, + 12292, + 12293, + 12294, + 12295, + 12296, + 12297, + 12298, + 12299, + 12301, + 12302, + 12303, + 12304, + 12305, + 12306, + 12307, + 12308, + 12309, + 12310, + 12311, + 12316, + 12317, + 12318, + 12319, + 12320, + 12321, + 12322, + 12323, + 12324, + 12325, + 12326, + 12327, + 12328, + 12329, + 12330, + 12331, + 12334, + 12335, + 12336, + 12337, + 12338, + 12339, + 12340, + 12341, + 12342, + 12344, + 12345, + 12346, + 12347, + 12348, + 12349, + 12350, + 12351, + 12354, + 12355, + 12356, + 12357, + 12358, + 12359, + 12360, + 12361, + 12362, + 12363, + 12364, + 12365, + 12366, + 12367, + 12368, + 12369, + 12370, + 12371, + 12372, + 12373, + 12374, + 12375, + 12376, + 12377, + 12378, + 12379, + 12380, + 12382, + 12383, + 12384, + 12385, + 12386, + 12388, + 12389, + 12390, + 12391, + 12392, + 12393, + 12394, + 12395, + 12396, + 12397, + 12398, + 12399, + 12400, + 12401, + 12402, + 12403, + 12404, + 12405, + 12406, + 12407, + 12408, + 12409, + 12410, + 12411, + 12412, + 12413, + 12414, + 12415, + 12416, + 12417, + 12418, + 12419, + 12420, + 12421, + 12422, + 12423, + 12424, + 12425, + 12426, + 12427, + 12434, + 12435, + 12436, + 12437, + 12438, + 12439, + 12440, + 12441, + 12442, + 12443, + 12444, + 12445, + 12446, + 12447, + 12452, + 12453, + 12454, + 12455, + 12456, + 12457, + 12458, + 12459, + 12460, + 12461, + 12462, + 12463, + 12464, + 12465, + 12470, + 12471, + 12472, + 12473, + 12474, + 12475, + 12476, + 12477, + 12478, + 12479, + 12480, + 12481, + 12482, + 12483, + 12484, + 12485, + 12488, + 12489, + 12490, + 12491, + 12492, + 12493, + 12494, + 12495, + 12496, + 12497, + 12498, + 12499, + 12500, + 12501, + 12502, + 12503, + 12506, + 12507, + 12508, + 12509, + 12510, + 12511, + 12512, + 12513, + 12514, + 12515, + 12516, + 12517, + 12518, + 12519, + 12520, + 12521, + 12524, + 12525, + 12526, + 12527, + 12528, + 12529, + 12530, + 12531, + 12532, + 12533, + 12534, + 12535, + 12536, + 12537, + 12538, + 12539, + 12540, + 12541, + 12542, + 12543, + 12544, + 12545, + 12546, + 12547, + 12548, + 12549, + 12550, + 12551, + 12552, + 12553, + 12554, + 12555, + 12556, + 12557, + 12558, + 12559, + 12560, + 12561, + 12562, + 12563, + 12564, + 12565, + 12566, + 12567, + 12568, + 12569, + 12570, + 12571, + 12572, + 12573, + 12574, + 12575, + 12576, + 12577, + 12578, + 12579, + 12580, + 12581, + 12582, + 12583, + 12584, + 12585, + 12586, + 12587, + 12588, + 12589, + 12590, + 12591, + 12592, + 12593, + 12594, + 12595, + 12596, + 12597, + 12598, + 12599, + 12600, + 12601, + 12602, + 12603, + 12604, + 12605, + 12606, + 12607, + 12608, + 12609, + 12610, + 12611, + 12612, + 12613, + 12614, + 12615, + 12616, + 12617, + 12618, + 12619, + 12620, + 12621, + 12622, + 12623, + 12624, + 12625, + 12626, + 12628, + 12629, + 12630, + 12632, + 12633, + 12635, + 12637, + 12638, + 12639, + 12640, + 12641, + 12642, + 12643, + 12645, + 12646, + 12647, + 12648, + 12649, + 12650, + 12652, + 12653, + 12654, + 12655, + 12656, + 12657, + 12658, + 12659, + 12660, + 12661, + 12663, + 12664, + 12665, + 12666, + 12667, + 12668, + 12669, + 12670, + 12671, + 12672, + 12673, + 12674, + 12675, + 12676, + 12677, + 12678, + 12679, + 12680, + 12681, + 12682, + 12683, + 12684, + 12685, + 12686, + 12687, + 12688, + 12689, + 12690, + 12691, + 12692, + 12693, + 12694, + 12695, + 12696, + 12697, + 12698, + 12699, + 12700, + 12701, + 12702, + 12703, + 12704, + 12706, + 12707, + 12709, + 12711, + 12712, + 12713, + 12714, + 12715, + 12716, + 12717, + 12719, + 12720, + 12721, + 12722, + 12723, + 12724, + 12725, + 12726, + 12727, + 12728, + 12729, + 12730, + 12731, + 12732, + 12733, + 12734, + 12735, + 12736, + 12737, + 12738, + 12739, + 12740, + 12741, + 12742, + 12743, + 12744, + 12745, + 12746, + 12747, + 12748, + 12749, + 12750, + 12751, + 12752, + 12753, + 12754, + 12755, + 12756, + 12758, + 12759, + 12760, + 12761, + 12762, + 12763, + 12764, + 12765, + 12768, + 12769, + 12770, + 12771, + 12772, + 12773, + 12774, + 12775, + 12776, + 12777, + 12778, + 12779, + 12780, + 12781, + 12783, + 12784, + 12785, + 12786, + 12787, + 12788, + 12789, + 12790, + 12791, + 12793, + 12794, + 12795, + 12796, + 12797, + 12798, + 12799, + 12800, + 12801, + 12802, + 12803, + 12804, + 12805, + 12806, + 12807, + 12808, + 12809, + 12810, + 12811, + 12812, + 12813, + 12814, + 12815, + 12816, + 12817, + 12818, + 12819, + 12820, + 12821, + 12822, + 12824, + 12825, + 12826, + 12827, + 12828, + 12829, + 12830, + 12831, + 12832, + 12833, + 12834, + 12835, + 12836, + 12837, + 12838, + 12839, + 12840, + 12841, + 12842, + 12843, + 12844, + 12845, + 12846, + 12848, + 12849, + 12850, + 12851, + 12852, + 12853, + 12854, + 12855, + 12857, + 12858, + 12859, + 12860, + 12861, + 12862, + 12863, + 12865, + 12867, + 12868, + 12869, + 12870, + 12871, + 12872, + 12874, + 12875, + 12876, + 12877, + 12878, + 12879, + 12880, + 12881, + 12882, + 12883, + 12884, + 12885, + 12886, + 12887, + 12888, + 12889, + 12890, + 12891, + 12892, + 12893, + 12894, + 12895, + 12896, + 12897, + 12898, + 12899, + 12900, + 12901, + 12902, + 12903, + 12904, + 12905, + 12906, + 12907, + 12908, + 12909, + 12910, + 12911, + 12912, + 12913, + 12914, + 12915, + 12916, + 12917, + 12918, + 12919, + 12920, + 12922, + 12923, + 12924, + 12925, + 12926, + 12927, + 12928, + 12929, + 12931, + 12932, + 12933, + 12934, + 12935, + 12936, + 12937, + 12938, + 12939, + 12941, + 12942, + 12943, + 12944, + 12945, + 12946, + 12947, + 12948, + 12949, + 12950, + 12951, + 12952, + 12953, + 12954, + 12955, + 12956, + 12957, + 12959, + 12960, + 12961, + 12962, + 12963, + 12964, + 12965, + 12966, + 12967, + 12968, + 12969, + 12970, + 12971, + 12972, + 12973, + 12974, + 12975, + 12976, + 12977, + 12978, + 12979, + 12980, + 12981, + 12983, + 12984, + 12985, + 12986, + 12987, + 12988, + 12989, + 12990, + 12991, + 12992, + 12993, + 12994, + 12996, + 12998, + 12999, + 13000, + 13001, + 13002, + 13003, + 13005, + 13006, + 13007, + 13008, + 13009, + 13010, + 13011, + 13012, + 13013, + 13015, + 13016, + 13017, + 13018, + 13019, + 13020, + 13022, + 13023, + 13024, + 13025, + 13026, + 13027, + 13028, + 13029, + 13030, + 13031, + 13032, + 13033, + 13034, + 13035, + 13036, + 13037, + 13038, + 13039, + 13040, + 13041, + 13042, + 13043, + 13044, + 13045, + 13046, + 13047, + 13048, + 13049, + 13050, + 13051, + 13052, + 13053, + 13054, + 13055, + 13056, + 13057, + 13058, + 13059, + 13060, + 13061, + 13062, + 13063, + 13064, + 13065, + 13066, + 13067, + 13068, + 13069, + 13070, + 13071, + 13072, + 13073, + 13074, + 13075, + 13076, + 13077, + 13078, + 13079, + 13081, + 13082, + 13083, + 13084, + 13085, + 13086, + 13089, + 13090, + 13091, + 13092, + 13093, + 13096, + 13097, + 13098, + 13099, + 13100, + 13101, + 13102, + 13103, + 13104, + 13105, + 13107, + 13108, + 13109, + 13110, + 13111, + 13112, + 13113, + 13114, + 13115, + 13116, + 13117, + 13118, + 13119, + 13120, + 13121, + 13122, + 13123, + 13124, + 13125, + 13126, + 13127, + 13128, + 13129, + 13130, + 13131, + 13132, + 13133, + 13134, + 13135, + 13136, + 13137, + 13138, + 13140, + 13141, + 13142, + 13144, + 13145, + 13146, + 13147, + 13148, + 13149, + 13150, + 13151, + 13152, + 13154, + 13155, + 13156, + 13157, + 13158, + 13159, + 13160, + 13161, + 13162, + 13163, + 13164, + 13165, + 13166, + 13167, + 13168, + 13169, + 13170, + 13171, + 13172, + 13173, + 13174, + 13175, + 13176, + 13177, + 13178, + 13179, + 13181, + 13182, + 13183, + 13184, + 13185, + 13186, + 13187, + 13188, + 13189, + 13190, + 13191, + 13192, + 13193, + 13194, + 13195, + 13196, + 13197, + 13198, + 13199, + 13200, + 13201, + 13202, + 13203, + 13204, + 13205, + 13206, + 13207, + 13208, + 13209, + 13210, + 13211, + 13212, + 13213, + 13214, + 13215, + 13216, + 13218, + 13219, + 13220, + 13221, + 13222, + 13223, + 13224, + 13225, + 13226, + 13227, + 13228, + 13229, + 13230, + 13231, + 13232, + 13233, + 13234, + 13235, + 13236, + 13237, + 13238, + 13239, + 13240, + 13241, + 13242, + 13243, + 13244, + 13245, + 13246, + 13247, + 13248, + 13249, + 13250, + 13251, + 13252, + 13253, + 13255, + 13256, + 13257, + 13258, + 13259, + 13260, + 13261, + 13262, + 13263, + 13264, + 13265, + 13266, + 13267, + 13268, + 13269, + 13270, + 13271, + 13272, + 13273, + 13274, + 13275, + 13276, + 13277, + 13278, + 13281, + 13282, + 13283, + 13284, + 13285, + 13286, + 13287, + 13288, + 13289, + 13290, + 13291, + 13292, + 13293, + 13294, + 13295, + 13298, + 13300, + 13301, + 13302, + 13303, + 13304, + 13305, + 13306, + 13308, + 13309, + 13310, + 13311, + 13312, + 13314, + 13315, + 13316, + 13317, + 13318, + 13319, + 13320, + 13321, + 13322, + 13323, + 13324, + 13325, + 13326, + 13327, + 13328, + 13329, + 13330, + 13331, + 13332, + 13333, + 13334, + 13335, + 13336, + 13338, + 13339, + 13340, + 13341, + 13342, + 13343, + 13344, + 13345, + 13346, + 13347, + 13348, + 13349, + 13350, + 13351, + 13352, + 13353, + 13355, + 13356, + 13357, + 13358, + 13359, + 13360, + 13361, + 13362, + 13363, + 13364, + 13366, + 13367, + 13368, + 13370, + 13371, + 13372, + 13373, + 13374, + 13375, + 13376, + 13377, + 13378, + 13379, + 13380, + 13381, + 13382, + 13383, + 13385, + 13386, + 13388, + 13389, + 13390, + 13392, + 13393, + 13394, + 13395, + 13396, + 13397, + 13398, + 13399, + 13400, + 13401, + 13403, + 13404, + 13405, + 13406, + 13407, + 13408, + 13409, + 13410, + 13412, + 13413, + 13414, + 13415, + 13416, + 13417, + 13418, + 13419, + 13420, + 13421, + 13422, + 13423, + 13424, + 13425, + 13426, + 13427, + 13429, + 13430, + 13431, + 13432, + 13433, + 13434, + 13435, + 13436, + 13437, + 13438, + 13439, + 13440, + 13441, + 13442, + 13443, + 13444, + 13445, + 13446, + 13447, + 13448, + 13449, + 13450, + 13451, + 13452, + 13453, + 13454, + 13455, + 13456, + 13457, + 13458, + 13459, + 13460, + 13461, + 13462, + 13463, + 13464, + 13466, + 13467, + 13468, + 13469, + 13470, + 13471, + 13472, + 13473, + 13474, + 13475, + 13476, + 13477, + 13478, + 13479, + 13480, + 13481, + 13482, + 13483, + 13484, + 13485, + 13486, + 13487, + 13488, + 13489, + 13490, + 13491, + 13492, + 13493, + 13494, + 13495, + 13496, + 13497, + 13498, + 13499, + 13500, + 13501, + 13502, + 13503, + 13504, + 13505, + 13506, + 13507, + 13508, + 13509, + 13510, + 13511, + 13512, + 13513, + 13514, + 13515, + 13516, + 13517, + 13518, + 13519, + 13520, + 13521, + 13522, + 13523, + 13524, + 13525, + 13526, + 13527, + 13528, + 13529, + 13530, + 13531, + 13532, + 13533, + 13534, + 13535, + 13536, + 13537, + 13538, + 13539, + 13540, + 13541, + 13542, + 13543, + 13544, + 13545, + 13546, + 13547, + 13548, + 13549, + 13550, + 13551, + 13552, + 13553, + 13554, + 13555, + 13556, + 13557, + 13558, + 13559, + 13560, + 13561, + 13562, + 13563, + 13564, + 13565, + 13566, + 13567, + 13568, + 13569, + 13570, + 13571, + 13572, + 13573, + 13574, + 13575, + 13576, + 13577, + 13578, + 13579, + 13580, + 13581, + 13582, + 13583, + 13584, + 13585, + 13586, + 13587, + 13588, + 13589, + 13590, + 13591, + 13592, + 13593, + 13594, + 13595, + 13596, + 13597, + 13598, + 13599, + 13600, + 13601, + 13602, + 13603, + 13604, + 13605, + 13606, + 13607, + 13608, + 13609, + 13610, + 13611, + 13612, + 13613, + 13614, + 13615, + 13616, + 13618, + 13620, + 13621, + 13623, + 13624, + 13625, + 13626, + 13627, + 13628, + 13629, + 13630, + 13631, + 13632, + 13633, + 13634, + 13635, + 13636, + 13637, + 13638, + 13639, + 13640, + 13641, + 13642, + 13643, + 13644, + 13645, + 13646, + 13647, + 13648, + 13649, + 13650, + 13651, + 13652, + 13653, + 13654, + 13655, + 13656, + 13657, + 13658, + 13659, + 13660, + 13661, + 13662, + 13663, + 13664, + 13665, + 13666, + 13667, + 13668, + 13669, + 13670, + 13671, + 13672, + 13673, + 13674, + 13675, + 13676, + 13678, + 13679, + 13680, + 13681, + 13682, + 13683, + 13684, + 13685, + 13686, + 13687, + 13688, + 13689, + 13690, + 13691, + 13692, + 13693, + 13694, + 13695, + 13696, + 13697, + 13698, + 13699, + 13700, + 13701, + 13702, + 13703, + 13704, + 13705, + 13706, + 13707, + 13708, + 13709, + 13710, + 13711, + 13712, + 13713, + 13714, + 13715, + 13716, + 13717, + 13718, + 13719, + 13720, + 13721, + 13722, + 13723, + 13724, + 13725, + 13726, + 13727, + 13728, + 13729, + 13730, + 13731, + 13732, + 13733, + 13734, + 13735, + 13736, + 13737, + 13738, + 13739, + 13740, + 13741, + 13742, + 13743, + 13744, + 13745, + 13746, + 13747, + 13748, + 13749, + 13750, + 13751, + 13752, + 13753, + 13754, + 13755, + 13756, + 13757, + 13758, + 13759, + 13760, + 13761, + 13762, + 13763, + 13764, + 13765, + 13766, + 13767, + 13768, + 13769, + 13770, + 13771, + 13772, + 13773, + 13774, + 13775, + 13776, + 13777, + 13778, + 13779, + 13780, + 13781, + 13782, + 13783, + 13784, + 13785, + 13786, + 13787, + 13788, + 13789, + 13790, + 13791, + 13792, + 13793, + 13794, + 13795, + 13796, + 13797, + 13798, + 13799, + 13800, + 13802, + 13803, + 13804, + 13805, + 13806, + 13807, + 13808, + 13809, + 13810, + 13811, + 13812, + 13813, + 13814, + 13815, + 13816, + 13818, + 13819, + 13820, + 13821, + 13822, + 13823, + 13824, + 13825, + 13826, + 13827, + 13828, + 13829, + 13830, + 13831, + 13832, + 13833, + 13834, + 13835, + 13836, + 13837, + 13838, + 13839, + 13841, + 13842, + 13843, + 13844, + 13845, + 13846, + 13847, + 13848, + 13849, + 13850, + 13852, + 13854, + 13855, + 13856, + 13857, + 13858, + 13859, + 13861, + 13862, + 13863, + 13864, + 13865, + 13866, + 13867, + 13868, + 13869, + 13870, + 13871, + 13872, + 13873, + 13874, + 13875, + 13876, + 13877, + 13878, + 13879, + 13880, + 13882, + 13883, + 13884, + 13885, + 13886, + 13888, + 13889, + 13890, + 13891, + 13892, + 13893, + 13894, + 13895, + 13896, + 13898, + 13899, + 13900, + 13901, + 13902, + 13903, + 13904, + 13905, + 13906, + 13907, + 13908, + 13909, + 13910, + 13911, + 13912, + 13914, + 13915, + 13916, + 13917, + 13918, + 13919, + 13920, + 13921, + 13922, + 13923, + 13924, + 13925, + 13926, + 13927, + 13928, + 13929, + 13930, + 13931, + 13932, + 13933, + 13934, + 13935, + 13936, + 13937, + 13938, + 13939, + 13940, + 13941, + 13942, + 13943, + 13944, + 13945, + 13946, + 13947, + 13948, + 13949, + 13950, + 13951, + 13952, + 13953, + 13954, + 13955, + 13956, + 13957, + 13958, + 13959, + 13960, + 13961, + 13963, + 13964, + 13965, + 13966, + 13967, + 13968, + 13969, + 13970, + 13971, + 13972, + 13973, + 13974, + 13975, + 13976, + 13977, + 13978, + 13979, + 13980, + 13981, + 13982, + 13983, + 13984, + 13985, + 13986, + 13987, + 13988, + 13989, + 13990, + 13991, + 13992, + 13993, + 13994, + 13995, + 13996, + 13997, + 13998, + 13999, + 14000, + 14001, + 14003, + 14004, + 14005, + 14006, + 14007, + 14009, + 14010, + 14011, + 14012, + 14013, + 14014, + 14015, + 14016, + 14017, + 14018, + 14019, + 14020, + 14021, + 14022, + 14023, + 14024, + 14025, + 14026, + 14028, + 14029, + 14030, + 14032, + 14033, + 14034, + 14035, + 14036, + 14037, + 14039, + 14040, + 14041, + 14042, + 14043, + 14044, + 14045, + 14046, + 14047, + 14048, + 14049, + 14050, + 14051, + 14052, + 14053, + 14054, + 14055, + 14056, + 14057, + 14058, + 14059, + 14060, + 14061, + 14062, + 14063, + 14064, + 14065, + 14066, + 14067, + 14068, + 14069, + 14070, + 14071, + 14081, + 14083, + 14084, + 14085, + 14086, + 14087, + 14089, + 14093, + 14095, + 14096, + 14099, + 14101, + 14102, + 14103, + 14104, + 14105, + 14107, + 14110, + 14111, + 14113, + 14114, + 14117, + 14119, + 14120, + 14121, + 14122, + 14123, + 14125, + 14127, + 14128, + 14129, + 14131, + 14132, + 14135, + 14137, + 14138, + 14139, + 14140, + 14141, + 14143, + 14146, + 14147, + 14149, + 14150, + 14153, + 14155, + 14156, + 14157, + 14158, + 14161, + 14162, + 14163, + 14164, + 14165, + 14168, + 14171, + 14173, + 14174, + 14175, + 14176, + 14177, + 14179, + 14180, + 14182, + 14183, + 14185, + 14186, + 14188, + 14189, + 14191, + 14192, + 14193, + 14194, + 14195, + 14197, + 14198, + 14200, + 14201, + 14203, + 14204, + 14205, + 14206, + 14209, + 14211, + 14213, + 14216, + 14218, + 14219, + 14222, + 14224, + 14225, + 14227, + 14228, + 14231, + 14233, + 14234, + 14236, + 14237, + 14240, + 14242, + 14243, + 14245, + 14246, + 14249, + 14251, + 14253, + 14254, + 14255, + 14257, + 14258, + 14259, + 14260, + 14261, + 14262, + 14264, + 14267, + 14269, + 14270, + 14271, + 14272, + 14273, + 14274, + 14275, + 14276, + 14277, + 14278, + 14279, + 14280, + 14281, + 14282, + 14283, + 14285, + 14287, + 14288, + 14289, + 14290, + 14291, + 14292, + 14293, + 14294, + 14295, + 14296, + 14297, + 14298, + 14299, + 14300, + 14302, + 14303, + 14304, + 14305, + 14306, + 14307, + 14308, + 14309, + 14310, + 14311, + 14312, + 14313, + 14314, + 14315, + 14316, + 14317, + 14318, + 14319, + 14320, + 14322, + 14323, + 14324, + 14325, + 14326, + 14327, + 14328, + 14329, + 14330, + 14331, + 14334, + 14335, + 14336, + 14338, + 14340, + 14342, + 14343, + 14344, + 14345, + 14346, + 14347, + 14348, + 14349, + 14350, + 14351, + 14352, + 14354, + 14357, + 14358, + 14359, + 14360, + 14361, + 14362, + 14363, + 14364, + 14365, + 14367, + 14368, + 14369, + 14370, + 14371, + 14372, + 14373, + 14374, + 14375, + 14376, + 14377, + 14378, + 14380, + 14385, + 14387, + 14389, + 14391, + 14393, + 14394, + 14395, + 14396, + 14397, + 14398, + 14399, + 14402, + 14403, + 14404, + 14405, + 14406, + 14407, + 14408, + 14409, + 14410, + 14411, + 14412, + 14413, + 14415, + 14416, + 14417, + 14418, + 14419, + 14426, + 14427, + 14428, + 14429, + 14430, + 14431, + 14438, + 14439, + 14440, + 14441, + 14442, + 14443, + 14444, + 14446, + 14447, + 14448, + 14450, + 14451, + 14452, + 14453, + 14454, + 14455, + 14458, + 14459, + 14460, + 14461, + 14462, + 14463, + 14464, + 14465, + 14466, + 14467, + 14468, + 14470, + 14471, + 14472, + 14474, + 14475, + 14476, + 14477, + 14478, + 14480, + 14482, + 14483, + 14484, + 14486, + 14487, + 14488, + 14489, + 14490, + 14492, + 14493, + 14494, + 14495, + 14496, + 14498, + 14499, + 14500, + 14501, + 14502, + 14504, + 14505, + 14506, + 14507, + 14510, + 14511, + 14513, + 14514, + 14516, + 14517, + 14518, + 14519, + 14520, + 14522, + 14523, + 14525, + 14526, + 14528, + 14529, + 14530, + 14531, + 14532, + 14534, + 14535, + 14536, + 14537, + 14538, + 14540, + 14541, + 14542, + 14543, + 14544, + 14546, + 14547, + 14548, + 14549, + 14550, + 14553, + 14554, + 14555, + 14556, + 14558, + 14559, + 14560, + 14561, + 14562, + 14564, + 14565, + 14566, + 14567, + 14568, + 14569, + 14574, + 14575, + 14576, + 14577, + 14578, + 14579, + 14580, + 14581, + 14582, + 14583, + 14584, + 14585, + 14586, + 14587, + 14588, + 14589, + 14590, + 14591, + 14592, + 14594, + 14595, + 14596, + 14597, + 14598, + 14599, + 14600, + 14601, + 14602, + 14603, + 14604, + 14605, + 14606, + 14624, + 14626, + 14628, + 14630, + 14631, + 14632, + 14633, + 14634, + 14635, + 14636, + 14637, + 14638, + 14639, + 14641, + 14642, + 14643, + 14645, + 14647, + 14648, + 14650, + 14652, + 14654, + 14655, + 14656, + 14657, + 14658, + 14659, + 14660, + 14661, + 14662, + 14663, + 14664, + 14665, + 14667, + 14670, + 14671, + 14672, + 14673, + 14674, + 14675, + 14678, + 14679, + 14680, + 14681, + 14682, + 14683, + 14684, + 14685, + 14686, + 14687, + 14688, + 14689, + 14690, + 14691, + 14692, + 14693, + 14694, + 14695, + 14716, + 14717, + 14721, + 14722, + 14726, + 14727, + 14729, + 14731, + 14732, + 14734, + 14736, + 14737, + 14739, + 14741, + 14742, + 14744, + 14746, + 14747, + 14749, + 14751, + 14752, + 14754, + 14757, + 14759, + 14761, + 14762, + 14764, + 14766, + 14767, + 14769, + 14771, + 14772, + 14774, + 14776, + 14777, + 14779, + 14781, + 14782, + 14784, + 14786, + 14787, + 14788, + 14789, + 14791, + 14792, + 14794, + 14796, + 14797, + 14798, + 14799, + 14801, + 14802, + 14804, + 14806, + 14808, + 14809, + 14811, + 14812, + 14813, + 14814, + 14816, + 14817, + 14818, + 14819, + 14823, + 14824, + 14826, + 14827, + 14828, + 14829, + 14830, + 14831, + 14832, + 14833, + 14834, + 14835, + 14836, + 14837, + 14838, + 14839, + 14840, + 14841, + 14842, + 14843, + 14844, + 14845, + 14846, + 14847, + 14848, + 14849, + 14850, + 14851, + 14852, + 14853, + 14854, + 14855, + 14856, + 14857, + 14859, + 14864, + 14865, + 14866, + 14867, + 14868, + 14869, + 14870, + 14871, + 14872, + 14873, + 14874, + 14875, + 14877, + 14879, + 14880, + 14881, + 14882, + 14883, + 14884, + 14885, + 14886, + 14887, + 14888, + 14889, + 14890, + 14891, + 14906, + 14907, + 14908, + 14909, + 14910, + 14911, + 14912, + 14913, + 14914, + 14915, + 14916, + 14917, + 14919, + 14922, + 14923, + 14924, + 14925, + 14926, + 14927, + 14930, + 14931, + 14932, + 14933, + 14934, + 14935, + 14936, + 14937, + 14938, + 14939, + 14940, + 14941, + 14942, + 14943, + 14944, + 14945, + 14946, + 14947 + ], + "23": [ + 7043, + 7052, + 7071, + 7075, + 7076, + 7079, + 7081, + 7086, + 7091, + 7096, + 7104, + 7115, + 7120, + 7121, + 7130, + 7133, + 7134, + 7140, + 7153, + 7161, + 7173, + 7177, + 7183, + 7186, + 7187, + 7192, + 7198, + 7209, + 7216, + 7222, + 7244, + 7247, + 7258, + 7263, + 7272, + 7279, + 7285, + 7295, + 7301, + 7312, + 7318, + 7320, + 7324, + 7327, + 7330, + 7346, + 7347, + 7353, + 7359, + 7360, + 7366, + 7391, + 7404, + 7411, + 7415, + 7416, + 7430, + 7437, + 7463, + 7470, + 7477, + 7488, + 7493, + 7506, + 7539, + 7543, + 7563, + 7566, + 7571, + 7572, + 7579, + 7584, + 7587, + 7588, + 7591, + 7593, + 7594, + 7598, + 7600, + 7607, + 7611, + 7617, + 7624, + 7634, + 7642, + 7643, + 7650, + 7659, + 7663, + 7668, + 7671, + 7700, + 7720, + 7721, + 7730, + 7731, + 7735, + 7743, + 7755, + 7757, + 7776, + 7783, + 7791, + 7810, + 7811, + 7815, + 7819, + 7822, + 7839, + 7841, + 7854, + 7862, + 7863, + 7868, + 7872, + 7875, + 7876, + 7883, + 7889, + 7898, + 7902, + 8529, + 8531, + 8533, + 8535, + 8550, + 8588, + 8652, + 8653, + 8701, + 8789, + 8802, + 8803, + 8853, + 8855, + 8932, + 8933, + 8957, + 8979, + 8981, + 9040, + 9041, + 9089, + 9091, + 9107, + 9134, + 9135, + 9183, + 9185, + 9210, + 9211, + 9234, + 9259, + 9261, + 9266, + 9267, + 9268, + 9269, + 9286, + 9287, + 9304, + 9305, + 9313, + 9315, + 9371, + 9384, + 9393, + 9396, + 9425, + 9429, + 9431, + 9502, + 9503, + 9509, + 9594, + 9600, + 9662, + 9663, + 9689, + 9692, + 9742, + 9743, + 9760, + 9762, + 9782, + 9799, + 9804, + 9805, + 9815, + 9818, + 9822, + 9835, + 9842, + 9864, + 9920, + 9921, + 9986, + 10016, + 10017, + 10032, + 10094, + 10095, + 10105, + 10152, + 10153, + 10154, + 10155, + 10163, + 10166, + 10172, + 10176, + 10177, + 10192, + 10196, + 10197, + 10212, + 10300, + 10302, + 10376, + 10377, + 10403, + 10406, + 10409, + 10412, + 10456, + 10458, + 10494, + 10518, + 10519, + 10532, + 10534, + 10543, + 10547, + 10550, + 10552, + 10554, + 10623, + 10626, + 10632, + 10633, + 10726, + 10732, + 10733, + 10740, + 10743, + 10816, + 10817, + 10831, + 10842, + 10849, + 10852, + 10877, + 10882, + 10883, + 10884, + 10885, + 10902, + 10903, + 10914, + 10922, + 10923, + 10960, + 11078, + 11079, + 11105, + 11186, + 11187, + 11250, + 11280, + 11281, + 11311, + 11356, + 11357, + 11412, + 11413, + 11414, + 11415, + 11432, + 11433, + 11450, + 11451, + 11479, + 11499, + 11574, + 11575, + 11670, + 11671, + 11748, + 11749, + 11775, + 11806, + 11807, + 11808, + 11809, + 11826, + 11827, + 11846, + 11847, + 11942, + 11945, + 11962, + 11966, + 11967, + 11974, + 11977, + 11980, + 11986, + 12050, + 12051, + 12076, + 12079, + 12108, + 12109, + 12110, + 12111, + 12126, + 12129, + 12132, + 12133, + 12146, + 12152, + 12153, + 12248, + 12249, + 12277, + 12312, + 12313, + 12314, + 12315, + 12332, + 12333, + 12343, + 12352, + 12353, + 12381, + 12387, + 12428, + 12429, + 12430, + 12431, + 12432, + 12433, + 12448, + 12449, + 12450, + 12451, + 12466, + 12467, + 12468, + 12469, + 12486, + 12487, + 12504, + 12505, + 12522, + 12523, + 12662, + 12823, + 12847, + 12921, + 12958, + 12995, + 13106, + 13143, + 13180, + 13217, + 13254, + 13365, + 13402 + ], + "22": [ + 8553, + 8742, + 9002, + 9385, + 9430, + 9516, + 9536, + 9585, + 9688, + 9717, + 9863, + 9971, + 9984, + 9987, + 10698, + 10701, + 11248, + 11367, + 11545, + 11638, + 11641, + 11745, + 11934, + 11940, + 11943, + 11963, + 11987, + 12000, + 12080, + 12081, + 12246, + 12300, + 12651, + 12873, + 13021, + 13095, + 13280, + 13354, + 13391, + 13428, + 13465 + ], + "20": [ + 12757, + 12766, + 12997, + 13080, + 13087, + 13094, + 13139, + 13153, + 13279, + 13296, + 13297, + 13299, + 13313, + 13337, + 13369, + 13384, + 13387, + 13411, + 14414 + ], + "19": [ + 12767, + 12982, + 13307, + 13801, + 13817, + 13840, + 13851, + 13853, + 13860, + 14214, + 14223, + 14232, + 14241, + 14250, + 14268, + 14286, + 14341, + 14356, + 14382, + 14383, + 14392, + 14400, + 14401, + 14668, + 14669, + 14676, + 14677, + 14920, + 14921, + 14928, + 14929 + ], + "21": [ + 13617, + 13619, + 13622 + ], + "18": [ + 13677 + ], + "15": [ + 13962, + 14002, + 14031, + 14301, + 14321, + 14332, + 14333, + 14337, + 14339, + 14353, + 14355, + 14366, + 14379, + 14381, + 14384, + 14386, + 14388, + 14390, + 14666, + 14918 + ], + "16": [ + 14008 + ], + "14": [ + 14027, + 14038 + ], + "12": [ + 14151, + 14160, + 14169, + 14178, + 14207, + 14210, + 14215, + 14229, + 14238, + 14247, + 14252, + 14256, + 14265, + 14473, + 14479, + 14485, + 14491, + 14570, + 14571, + 14572, + 14573, + 14608, + 14609, + 14610, + 14611, + 14625, + 14627, + 14640, + 14892, + 14893 + ], + "13": [ + 14159, + 14263, + 14607, + 14820, + 14821, + 14822, + 14825, + 14858, + 14860, + 14861, + 14862, + 14863, + 14876, + 14878 + ], + "10": [ + 14167, + 14212, + 14221, + 14230, + 14239, + 14248, + 14266, + 14284 + ], + "11": [ + 14497, + 14503, + 14509, + 14515, + 14521, + 14527, + 14533, + 14539, + 14545, + 14551, + 14557, + 14563, + 14593, + 14612, + 14613, + 14614, + 14615, + 14616, + 14617, + 14618, + 14619, + 14620, + 14621, + 14622, + 14623, + 14629, + 14644, + 14646, + 14649, + 14651, + 14653, + 14760, + 14765, + 14770, + 14775, + 14780, + 14785, + 14790, + 14795, + 14800, + 14805, + 14810, + 14815, + 14894, + 14895, + 14896, + 14897, + 14898, + 14899, + 14900, + 14901, + 14902, + 14903, + 14904, + 14905 + ], + "9": [ + 14508, + 14512, + 14524, + 14552 + ], + "6": [ + 14701, + 14702, + 14703, + 14704, + 14706, + 14707, + 14709, + 14711, + 14712, + 14713, + 14714, + 14723, + 14733, + 14740, + 14743, + 14745, + 14750, + 14753, + 14755, + 14763, + 14793, + 14803 + ], + "7": [ + 14719, + 14724, + 14756, + 14773, + 14778, + 14783, + 14807 + ], + "4": [ + 14948, + 14949, + 14950, + 14951, + 14952, + 14953, + 14954, + 14955, + 14956, + 14957, + 14958, + 14959, + 14960, + 14961, + 14962, + 14963, + 14964, + 14965, + 14966, + 14967, + 14968, + 14969, + 14970, + 14971, + 14972, + 14973, + 14974, + 14975, + 14976, + 14977, + 14978, + 14979, + 14980, + 14981, + 14982, + 14983, + 14984, + 14985, + 14986, + 14987, + 14988, + 14989, + 14990, + 14991, + 14992, + 14993, + 14994, + 14995, + 14996, + 14997, + 14998, + 14999, + 15000, + 15001, + 15002, + 15003, + 15004, + 15005, + 15006, + 15007, + 15008, + 15009, + 15010, + 15011, + 15012, + 15013, + 15014, + 15015, + 15016, + 15017, + 15018, + 15019, + 15020, + 15021, + 15022, + 15023, + 15024, + 15025, + 15026, + 15027, + 15028, + 15029, + 15030, + 15031, + 15032, + 15033, + 15034, + 15035, + 15036, + 15037, + 15038, + 15039, + 15040, + 15041, + 15042, + 15043, + 15044, + 15045, + 15046, + 15047, + 15048, + 15049, + 15050, + 15051, + 15052, + 15053, + 15054, + 15055, + 15056, + 15057, + 15058, + 15059, + 15060, + 15061, + 15062, + 15063, + 15064, + 15065, + 15066, + 15067, + 15068, + 15069, + 15070, + 15071, + 15072, + 15073, + 15074, + 15075, + 15076, + 15077, + 15078, + 15079, + 15080, + 15081, + 15082, + 15083, + 15084, + 15085, + 15086, + 15087, + 15088, + 15089, + 15090, + 15091, + 15092, + 15093, + 15094, + 15095, + 15096, + 15097, + 15098, + 15099, + 15100, + 15101, + 15102, + 15103, + 15104, + 15105, + 15106, + 15107, + 15108, + 15109, + 15110, + 15111, + 15112, + 15113, + 15114, + 15115, + 15116, + 15117, + 15118, + 15119, + 15120, + 15121, + 15122, + 15123, + 15124, + 15125, + 15126, + 15127, + 15128, + 15129, + 15130, + 15131, + 15132, + 15133, + 15134, + 15135, + 15136, + 15137, + 15138, + 15139, + 15140, + 15141, + 15142, + 15143, + 15144, + 15145, + 15146, + 15147, + 15148, + 15149, + 15150, + 15151, + 15152, + 15153, + 15154, + 15155, + 15156, + 15157, + 15158, + 15159, + 15160, + 15161, + 15162, + 15163, + 15164, + 15165, + 15166, + 15167, + 15168, + 15169, + 15170, + 15171, + 15172, + 15173, + 15174, + 15175, + 15176, + 15177, + 15178, + 15179, + 15180, + 15181, + 15182, + 15183, + 15184, + 15185, + 15186, + 15187, + 15188, + 15189, + 15190, + 15191, + 15192, + 15193, + 15194, + 15195, + 15196, + 15197, + 15198, + 15199, + 15200, + 15201, + 15202, + 15203, + 15204, + 15205, + 15206, + 15207, + 15208, + 15209, + 15210, + 15211, + 15212, + 15213, + 15214, + 15215, + 15216, + 15217, + 15218, + 15219, + 15220, + 15221, + 15222, + 15223, + 15224, + 15225, + 15226, + 15227, + 15228, + 15229, + 15230, + 15231, + 15232, + 15233, + 15234, + 15235, + 15236, + 15237, + 15238, + 15239, + 15240, + 15241, + 15242, + 15243, + 15244, + 15245, + 15246, + 15247, + 15248, + 15249, + 15250, + 15251, + 15252, + 15253, + 15254, + 15255, + 15256, + 15257, + 15258, + 15259, + 15260, + 15261, + 15262, + 15263, + 15264, + 15265, + 15266, + 15267, + 15268, + 15269, + 15270, + 15271, + 15272, + 15273, + 15274, + 15275, + 15276, + 15277, + 15278, + 15279, + 15280, + 15281, + 15282, + 15283, + 15284, + 15285, + 15286, + 15287, + 15288, + 15289, + 15290, + 15291, + 15292, + 15293, + 15294, + 15295, + 15296, + 15297, + 15298, + 15299, + 15300, + 15301, + 15302, + 15303, + 15304, + 15305, + 15306, + 15307, + 15308, + 15309, + 15310, + 15311, + 15312, + 15313, + 15314, + 15315, + 15316, + 15317, + 15318, + 15319, + 15320, + 15321, + 15322, + 15323, + 15324, + 15325, + 15326, + 15327, + 15328, + 15329, + 15330, + 15331, + 15332, + 15333, + 15334, + 15335, + 15336, + 15337, + 15338, + 15339, + 15340, + 15341, + 15342, + 15343, + 15344, + 15345, + 15346, + 15347, + 15348, + 15349, + 15350, + 15351, + 15352, + 15353, + 15354, + 15355, + 15356, + 15357, + 15358, + 15359, + 15360, + 15361, + 15362, + 15363, + 15364, + 15365, + 15366, + 15367, + 15368, + 15369, + 15370, + 15371, + 15372, + 15373, + 15374, + 15375, + 15376, + 15377, + 15378, + 15379, + 15380, + 15381, + 15382, + 15383, + 15384, + 15385, + 15386, + 15387, + 15388, + 15389, + 15390, + 15391, + 15392, + 15393, + 15394, + 15395, + 15396, + 15397, + 15398, + 15399, + 15400, + 15401, + 15402, + 15403, + 15404, + 15405, + 15406, + 15407, + 15408, + 15409, + 15410, + 15411, + 15412, + 15413, + 15414, + 15415, + 15416, + 15417, + 15418, + 15419, + 15420, + 15421, + 15422, + 15423, + 15424, + 15425, + 15426, + 15427, + 15428, + 15429, + 15430, + 15431, + 15432, + 15433, + 15434, + 15435, + 15436, + 15437, + 15438, + 15439, + 15440, + 15441, + 15442, + 15443, + 15444, + 15445, + 15446, + 15447, + 15448, + 15449, + 15450, + 15451, + 15452, + 15453, + 15454, + 15455, + 15456, + 15457, + 15458, + 15459, + 15460, + 15461, + 15462, + 15463, + 15464, + 15465, + 15466, + 15467, + 15468, + 15469, + 15470, + 15471, + 15472, + 15473, + 15474, + 15475, + 15476, + 15477, + 15478, + 15479, + 15480, + 15481, + 15482, + 15483, + 15484, + 15485, + 15486, + 15487, + 15488, + 15489, + 15490, + 15491, + 15492, + 15493, + 15494, + 15495, + 15496, + 15497, + 15498, + 15499, + 15500, + 15501, + 15502, + 15503, + 15504, + 15505, + 15506, + 15507, + 15508, + 15509, + 15510, + 15511, + 15512, + 15513, + 15514, + 15515, + 15516, + 15517, + 15518, + 15519, + 15520, + 15521, + 15522, + 15523, + 15524, + 15525, + 15526, + 15527, + 15528, + 15529, + 15530, + 15531, + 15532, + 15533, + 15534, + 15535, + 15536, + 15537, + 15538, + 15539, + 15540, + 15541, + 15542, + 15543, + 15544, + 15545, + 15546, + 15547, + 15548, + 15549, + 15550, + 15551, + 15552, + 15553, + 15554, + 15555, + 15556, + 15557, + 15558, + 15559, + 15560, + 15561, + 15562, + 15563, + 15564, + 15565, + 15566, + 15567, + 15568, + 15569, + 15570, + 15571, + 15572, + 15573, + 15574, + 15575, + 15576, + 15577, + 15578, + 15579, + 15580, + 15581, + 15582, + 15583, + 15584, + 15585, + 15586, + 15587, + 15588, + 15589, + 15590, + 15591, + 15592, + 15593, + 15594, + 15595, + 15596, + 15597, + 15598, + 15599, + 15600, + 15601, + 15602, + 15603, + 15604, + 15605, + 15606, + 15607, + 15608, + 15609, + 15610, + 15611, + 15612, + 15613, + 15614, + 15615, + 15616, + 15617, + 15618, + 15619, + 15620, + 15621, + 15622, + 15623, + 15624, + 15625, + 15626, + 15627, + 15628, + 15629, + 15630, + 15631, + 15632, + 15633, + 15634, + 15635, + 15636, + 15637, + 15638, + 15639, + 15640, + 15641, + 15642, + 15643, + 15644, + 15645, + 15646, + 15647, + 15648, + 15649, + 15650, + 15651, + 15652, + 15653, + 15654, + 15655, + 15656, + 15657, + 15658, + 15659, + 15660, + 15661, + 15662, + 15663, + 15664, + 15665, + 15666, + 15667, + 15668, + 15669, + 15670, + 15671, + 15672, + 15673, + 15674, + 15675, + 15676, + 15677, + 15678, + 15679, + 15680, + 15681, + 15682, + 15683, + 15684, + 15685, + 15686, + 15687, + 15688, + 15689, + 15690, + 15691, + 15692, + 15693, + 15694, + 15695, + 15696, + 15697, + 15698, + 15699, + 15700, + 15701, + 15702, + 15703, + 15704, + 15705, + 15706, + 15707, + 15708, + 15709, + 15710, + 15711, + 15712, + 15713, + 15714, + 15715, + 15716, + 15717, + 15718, + 15719, + 15720, + 15721, + 15722, + 15723, + 15724, + 15725, + 15726, + 15727, + 15728, + 15729, + 15730, + 15731, + 15732, + 15733, + 15734, + 15735, + 15736, + 15737, + 15738, + 15739, + 15740, + 15741, + 15742, + 15743, + 15744, + 15745, + 15746, + 15747, + 15748, + 15749, + 15750, + 15751, + 15752, + 15753, + 15754, + 15755, + 15756, + 15757, + 15758, + 15759, + 15760, + 15761, + 15762, + 15763, + 15764, + 15765, + 15766, + 15767, + 15768, + 15769, + 15770, + 15771, + 15772, + 15773, + 15774, + 15775, + 15776, + 15777, + 15778, + 15779, + 15780, + 15781, + 15782, + 15783, + 15784, + 15785, + 15786, + 15787, + 15788, + 15789, + 15790, + 15791, + 15792, + 15793, + 15794, + 15795, + 15796, + 15797, + 15798, + 15799, + 15800, + 15801, + 15802, + 15803, + 15804, + 15805, + 15806, + 15807, + 15808, + 15809, + 15810, + 15811, + 15812, + 15813, + 15814, + 15815, + 15816, + 15817, + 15818, + 15819, + 15820, + 15821, + 15822, + 15823, + 15824, + 15825, + 15826, + 15827, + 15828, + 15829, + 15830, + 15831, + 15832, + 15833, + 15834, + 15835, + 15836, + 15837, + 15838, + 15839, + 15840, + 15841, + 15842, + 15843, + 15844, + 15845, + 15846, + 15847, + 15848, + 15849, + 15850, + 15851, + 15852, + 15853, + 15854, + 15855, + 15856, + 15857, + 15858, + 15859, + 15860, + 15861, + 15862, + 15863, + 15864, + 15865, + 15866, + 15867, + 15868, + 15869, + 15870, + 15871, + 15872, + 15873, + 15874, + 15875, + 15876, + 15877, + 15878, + 15879, + 15880, + 15881, + 15882, + 15883, + 15884, + 15885, + 15886, + 15887, + 15888, + 15889, + 15890, + 15891, + 15892, + 15893, + 15894, + 15895, + 15896, + 15897, + 15898, + 15899, + 15900, + 15901, + 15902, + 15903, + 15904, + 15905, + 15906, + 15907, + 15908, + 15909, + 15910, + 15911, + 15912, + 15913, + 15914, + 15915, + 15916, + 15917, + 15918, + 15919, + 15920, + 15921, + 15922, + 15923, + 15924, + 15925, + 15926, + 15927, + 15928, + 15929, + 15930, + 15931, + 15932, + 15933, + 15934, + 15935, + 15936, + 15937, + 15938, + 15939, + 15940, + 15941, + 15942, + 15943, + 15944, + 15945, + 15946, + 15947, + 15948, + 15949, + 15950, + 15951, + 15952, + 15953, + 15954, + 15955, + 15956, + 15957, + 15958, + 15959, + 15960, + 15961, + 15962, + 15963, + 15964, + 15965, + 15966, + 15967, + 15968, + 15969, + 15970, + 15971, + 15972, + 15973, + 15974, + 15975, + 15976, + 15977, + 15978, + 15979, + 15980, + 15981, + 15982, + 15983, + 15984, + 15985, + 15986, + 15987, + 15988, + 15989, + 15990, + 15991, + 15992, + 15993, + 15994, + 15995, + 15996, + 15997, + 15998, + 15999, + 16000, + 16001, + 16002, + 16003, + 16004, + 16005, + 16006, + 16007, + 16008, + 16009, + 16010, + 16011, + 16012, + 16013, + 16014, + 16015, + 16016, + 16017, + 16018, + 16019, + 16020, + 16021, + 16022, + 16023, + 16024, + 16025, + 16026, + 16027, + 16028, + 16029, + 16030, + 16031, + 16032, + 16033, + 16034, + 16035, + 16036, + 16037, + 16038, + 16039, + 16040, + 16041, + 16042, + 16043, + 16044, + 16045, + 16046, + 16047, + 16048, + 16049, + 16050, + 16051, + 16052, + 16053, + 16054, + 16055, + 16056, + 16057, + 16058, + 16059, + 16060, + 16061, + 16062, + 16063, + 16064, + 16065, + 16066, + 16067, + 16068, + 16069, + 16070, + 16071, + 16072, + 16073, + 16074, + 16075, + 16076, + 16077, + 16078, + 16079, + 16080, + 16081, + 16082, + 16083, + 16084, + 16085, + 16086, + 16087, + 16088, + 16089, + 16090, + 16091, + 16092, + 16093, + 16094, + 16095, + 16096, + 16097, + 16098, + 16099, + 16100, + 16101, + 16102, + 16103, + 16104, + 16105, + 16106, + 16107, + 16108, + 16109, + 16110, + 16111, + 16112, + 16113, + 16114, + 16115, + 16116, + 16117, + 16118, + 16119, + 16120, + 16121, + 16122, + 16123, + 16124, + 16125, + 16126, + 16127, + 16128, + 16129, + 16130, + 16131, + 16132, + 16133, + 16134, + 16135, + 16136, + 16137, + 16138, + 16139, + 16140, + 16141, + 16142, + 16143, + 16144, + 16145, + 16146, + 16147, + 16148, + 16149, + 16150, + 16151, + 16152, + 16153, + 16154, + 16155, + 16156, + 16157, + 16158, + 16159, + 16160, + 16161, + 16162, + 16163, + 16164, + 16165, + 16166, + 16167, + 16168, + 16169, + 16170, + 16171, + 16172, + 16173, + 16174, + 16175, + 16176, + 16177, + 16178, + 16179, + 16180, + 16181, + 16182, + 16183, + 16184, + 16185, + 16186, + 16187, + 16188, + 16189, + 16190, + 16191, + 16192, + 16193, + 16194, + 16195, + 16196, + 16197, + 16198, + 16199, + 16200, + 16201, + 16202, + 16203, + 16204, + 16205, + 16206, + 16207, + 16208, + 16209, + 16210, + 16211, + 16212, + 16213, + 16214, + 16215, + 16216, + 16217, + 16218, + 16219, + 16220, + 16221, + 16222, + 16223, + 16224, + 16225, + 16226, + 16227, + 16228, + 16229, + 16230, + 16231, + 16232, + 16233, + 16234, + 16235, + 16236, + 16237, + 16238, + 16239, + 16240, + 16241, + 16242, + 16243, + 16244, + 16245, + 16246, + 16247, + 16248, + 16249, + 16250, + 16251, + 16252, + 16253, + 16254, + 16255, + 16256, + 16257, + 16258, + 16259, + 16260, + 16261, + 16262, + 16263, + 16264, + 16265, + 16266, + 16267, + 16268, + 16269, + 16270, + 16271, + 16272, + 16273, + 16274, + 16275, + 16276, + 16277, + 16278, + 16279, + 16280, + 16281, + 16282, + 16283, + 16284, + 16285, + 16286, + 16287, + 16288, + 16289, + 16290, + 16291, + 16292, + 16293, + 16294, + 16295, + 16296, + 16297, + 16298, + 16299, + 16300, + 16301, + 16302, + 16303, + 16304, + 16305, + 16306, + 16307, + 16308, + 16309, + 16310, + 16311, + 16312, + 16313, + 16314, + 16315, + 16316, + 16317, + 16318, + 16319, + 16320, + 16321, + 16322, + 16323, + 16324, + 16325, + 16326, + 16327, + 16328, + 16329, + 16330, + 16331, + 16332, + 16333, + 16334, + 16335, + 16336, + 16337, + 16338, + 16339, + 16340, + 16341, + 16342, + 16343, + 16344, + 16345, + 16346, + 16347, + 16348, + 16349, + 16350, + 16351, + 16352, + 16353, + 16354, + 16355, + 16356, + 16357, + 16358, + 16359, + 16360, + 16361, + 16362, + 16363, + 16364, + 16365, + 16366, + 16367, + 16368, + 16369, + 16370, + 16371, + 16372, + 16373, + 16374, + 16375, + 16376, + 16377, + 16378, + 16379, + 16380, + 16381, + 16382, + 16383, + 16384, + 16385, + 16386, + 16387, + 16388, + 16389, + 16390, + 16391, + 16392, + 16393, + 16394, + 16395, + 16396, + 16397, + 16398, + 16399, + 16400, + 16401, + 16402, + 16403, + 16404, + 16405, + 16406, + 16407, + 16408, + 16409, + 16410, + 16411, + 16412, + 16413, + 16414, + 16415, + 16416, + 16417, + 16418, + 16419, + 16420, + 16421, + 16422, + 16423, + 16424, + 16425, + 16426, + 16427, + 16428, + 16429, + 16430, + 16431, + 16432, + 16433, + 16434, + 16435, + 16436, + 16437, + 16438, + 16439, + 16440, + 16441, + 16442, + 16443, + 16444, + 16445, + 16446, + 16447, + 16448, + 16449, + 16450, + 16451, + 16452, + 16453, + 16454, + 16455, + 16456, + 16457, + 16458, + 16459, + 16460, + 16461, + 16462, + 16463, + 16464, + 16465, + 16466, + 16467, + 16468, + 16469, + 16470, + 16471, + 16472, + 16473, + 16474, + 16475, + 16476, + 16477, + 16478, + 16479, + 16480, + 16481, + 16482, + 16483, + 16484, + 16485, + 16486, + 16487, + 16488, + 16489, + 16490, + 16491, + 16492, + 16493, + 16494, + 16495, + 16496, + 16497, + 16498, + 16499, + 16500, + 16501, + 16502, + 16503, + 16504, + 16505, + 16506, + 16507, + 16508, + 16509, + 16510, + 16511, + 16512, + 16513, + 16514, + 16515, + 16516, + 16517, + 16518, + 16519, + 16520, + 16521, + 16522, + 16523, + 16524, + 16525, + 16526, + 16527, + 16528, + 16529, + 16530, + 16531, + 16532, + 16533, + 16534, + 16535, + 16536, + 16537, + 16538, + 16539, + 16540, + 16541, + 16542, + 16543, + 16544, + 16545, + 16546, + 16547, + 16548, + 16549, + 16550, + 16551, + 16552, + 16553, + 16554, + 16555, + 16556, + 16557, + 16558, + 16559, + 16560, + 16561, + 16562, + 16563, + 16564, + 16565, + 16566, + 16567, + 16568, + 16569, + 16570, + 16571, + 16572, + 16573, + 16574, + 16575, + 16576, + 16577, + 16578, + 16579, + 16580, + 16581, + 16582, + 16583, + 16584, + 16585, + 16586, + 16587, + 16588, + 16589, + 16590, + 16591, + 16592, + 16593, + 16594, + 16595, + 16596, + 16597, + 16598, + 16599, + 16600, + 16601, + 16602, + 16603, + 16604, + 16605, + 16606, + 16607, + 16608, + 16609, + 16610, + 16611, + 16612, + 16613, + 16614, + 16615, + 16616, + 16617, + 16618, + 16619, + 16620, + 16621, + 16622, + 16623, + 16624, + 16625, + 16626, + 16627, + 16628, + 16629, + 16630, + 16631, + 16632, + 16633, + 16634, + 16635, + 16636, + 16637, + 16638, + 16639, + 16640, + 16641, + 16642, + 16643, + 16644, + 16645, + 16646, + 16647, + 16648, + 16649, + 16650, + 16651, + 16652, + 16653, + 16654, + 16655, + 16656, + 16657, + 16658, + 16659, + 16660, + 16661, + 16662, + 16663, + 16664, + 16665, + 16666, + 16667, + 16668, + 16669, + 16670, + 16671, + 16672, + 16673, + 16674, + 16675, + 16676, + 16677, + 16678, + 16679, + 16680, + 16681, + 16682, + 16683, + 16684, + 16685, + 16686, + 16687, + 16688, + 16689, + 16690, + 16691, + 16692, + 16693, + 16694, + 16695, + 16696, + 16697, + 16698, + 16699, + 16700, + 16701, + 16702, + 16703, + 16704, + 16705, + 16706, + 16707, + 16708, + 16709, + 16710, + 16711, + 16712, + 16713, + 16714, + 16715, + 16716, + 16717, + 16718, + 16719, + 16720, + 16721, + 16722, + 16723, + 16724, + 16725, + 16726, + 16727, + 16728, + 16729, + 16730, + 16731, + 16732, + 16733, + 16734, + 16735, + 16736, + 16737, + 16738, + 16739, + 16740, + 16741, + 16742, + 16743, + 16744, + 16745, + 16746, + 16747, + 16748, + 16749, + 16750, + 16751, + 16752, + 16753, + 16754, + 16755, + 16756, + 16757, + 16758, + 16759, + 16760, + 16761, + 16762, + 16763, + 16764, + 16765, + 16766, + 16767, + 16768, + 16769, + 16770, + 16771, + 16772, + 16773, + 16774, + 16775, + 16776, + 16777, + 16778, + 16779, + 16780, + 16781, + 16782, + 16783, + 16784, + 16785, + 16786, + 16787, + 16788, + 16789, + 16790, + 16791, + 16792, + 16793, + 16794, + 16795, + 16796, + 16797, + 16798, + 16799, + 16800, + 16801, + 16802, + 16803, + 16804, + 16805, + 16806, + 16807, + 16808, + 16809, + 16810, + 16811, + 16812, + 16813, + 16814, + 16815, + 16816, + 16817, + 16818, + 16819, + 16820, + 16821, + 16822, + 16823, + 16824, + 16825, + 16826, + 16827, + 16828, + 16829, + 16830, + 16831, + 16832, + 16833, + 16834, + 16835, + 16836, + 16837, + 16838, + 16839, + 16840, + 16841, + 16842, + 16843, + 16844, + 16845, + 16846, + 16847, + 16848, + 16849, + 16850, + 16851, + 16852, + 16853, + 16854, + 16855, + 16856, + 16857, + 16858, + 16859, + 16860, + 16861, + 16862, + 16863, + 16864, + 16865, + 16866, + 16867, + 16868, + 16869, + 16870, + 16871, + 16872, + 16873, + 16874, + 16875, + 16876, + 16877, + 16878, + 16879, + 16880, + 16881, + 16882, + 16883, + 16884, + 16885, + 16886, + 16887, + 16888, + 16889, + 16890, + 16891, + 16892, + 16893, + 16894, + 16895, + 16896, + 16897, + 16898, + 16899, + 16900, + 16901, + 16902, + 16903, + 16904, + 16905, + 16906, + 16907, + 16908, + 16909, + 16910, + 16911, + 16912, + 16913, + 16914, + 16915, + 16916, + 16917, + 16918, + 16919, + 16920, + 16921, + 16922, + 16923, + 16924, + 16925, + 16926, + 16927, + 16928, + 16929, + 16930, + 16931, + 16932, + 16933, + 16934, + 16935, + 16936, + 16937, + 16938, + 16939, + 16940, + 16941, + 16942, + 16943, + 16944, + 16945, + 16946, + 16947, + 16948, + 16949, + 16950, + 16951, + 16952, + 16953, + 16954, + 16955, + 16956, + 16957, + 16958, + 16959, + 16960, + 16961, + 16962, + 16963, + 16964, + 16965, + 16966, + 16967, + 16968, + 16969, + 16970, + 16971, + 16972, + 16973, + 16974, + 16975, + 16976, + 16977, + 16978, + 16979, + 16980, + 16981, + 16982, + 16983, + 16984, + 16985, + 16986, + 16987, + 16988, + 16989, + 16990, + 16991, + 16992, + 16993, + 16994, + 16995, + 16996, + 16997, + 16998, + 16999, + 17000, + 17001, + 17002, + 17003, + 17004, + 17005, + 17006, + 17007, + 17008, + 17009, + 17010, + 17011, + 17012, + 17013, + 17014, + 17015, + 17016, + 17017, + 17018, + 17019, + 17020, + 17021, + 17022, + 17023, + 17024, + 17025, + 17026, + 17027, + 17028, + 17029, + 17030, + 17031, + 17032, + 17033, + 17034, + 17035, + 17036, + 17037, + 17038, + 17039, + 17040, + 17041, + 17042, + 17043, + 17044, + 17045, + 17046, + 17047, + 17048, + 17049, + 17050, + 17051, + 17052, + 17053, + 17054, + 17055, + 17056, + 17057, + 17058, + 17059, + 17060, + 17061, + 17062, + 17063, + 17064, + 17065, + 17066, + 17067, + 17068, + 17069, + 17070, + 17071, + 17072, + 17073, + 17074, + 17075, + 17076, + 17077, + 17078, + 17079, + 17080, + 17081, + 17082, + 17083, + 17084, + 17085, + 17086, + 17087, + 17088, + 17089, + 17090, + 17091, + 17092, + 17093, + 17094, + 17095, + 17096, + 17097, + 17098, + 17099, + 17100, + 17101, + 17102, + 17103, + 17104, + 17105, + 17106, + 17107, + 17108, + 17109, + 17110, + 17111, + 17112, + 17113, + 17114, + 17115, + 17116, + 17117, + 17118, + 17119, + 17120, + 17121, + 17122, + 17123, + 17124, + 17125, + 17126, + 17127, + 17128, + 17129, + 17130, + 17131, + 17132, + 17133, + 17134, + 17135, + 17136, + 17137, + 17138, + 17139, + 17140, + 17141, + 17142, + 17143, + 17144, + 17145, + 17146, + 17147 + ] + }, + "gauge_frames": { + "14948": 127239, + "14949": 127241, + "14950": 127243, + "14951": 127245, + "14952": 127247, + "14953": 127249, + "14954": 127251, + "14955": 127253, + "14956": 127255, + "14957": 127257, + "14958": 127239, + "14959": 127241, + "14960": 127243, + "14961": 127245, + "14962": 127247, + "14963": 127249, + "14964": 127251, + "14965": 127253, + "14966": 127255, + "14967": 127257, + "14968": 127259, + "14969": 127261, + "14970": 127263, + "14971": 127265, + "14972": 127267, + "14973": 127269, + "14974": 127271, + "14975": 127273, + "14976": 127275, + "14977": 127247, + "14978": 127277, + "14979": 127279, + "14980": 127281, + "14981": 127283, + "14982": 127285, + "14983": 127287, + "14984": 127289, + "14985": 127291, + "14986": 127293, + "14987": 127259, + "14988": 127261, + "14989": 127263, + "14990": 127265, + "14991": 127267, + "14992": 127269, + "14993": 127271, + "14994": 127273, + "14995": 127275, + "14996": 127247, + "14997": 127277, + "14998": 127279, + "14999": 127281, + "15000": 127283, + "15001": 127285, + "15002": 127287, + "15003": 127289, + "15004": 127291, + "15005": 127293, + "15006": 127295, + "15007": 127297, + "15008": 127299, + "15009": 127301, + "15010": 127303, + "15011": 127305, + "15012": 127307, + "15013": 127267, + "15014": 127269, + "15015": 127309, + "15016": 127311, + "15017": 127313, + "15018": 127241, + "15019": 127315, + "15020": 127317, + "15021": 127319, + "15022": 127321, + "15023": 127323, + "15024": 127325, + "15025": 127327, + "15026": 127329, + "15027": 127331, + "15028": 127333, + "15029": 127335, + "15030": 127337, + "15031": 127339, + "15032": 127341, + "15033": 127295, + "15034": 127297, + "15035": 127299, + "15036": 127301, + "15037": 127303, + "15038": 127305, + "15039": 127307, + "15040": 127267, + "15041": 127269, + "15042": 127309, + "15043": 127311, + "15044": 127313, + "15045": 127241, + "15046": 127315, + "15047": 127317, + "15048": 127319, + "15049": 127321, + "15050": 127323, + "15051": 127325, + "15052": 127327, + "15053": 127329, + "15054": 127331, + "15055": 127333, + "15056": 127335, + "15057": 127337, + "15058": 127339, + "15059": 127341, + "15060": 127343, + "15061": 127345, + "15062": 127347, + "15063": 127349, + "15064": 127351, + "15065": 127301, + "15066": 127353, + "15067": 127355, + "15068": 127357, + "15069": 127283, + "15070": 127285, + "15071": 127359, + "15072": 127361, + "15073": 127363, + "15074": 127365, + "15075": 127251, + "15076": 127367, + "15077": 127369, + "15078": 127371, + "15079": 127321, + "15080": 127373, + "15081": 127375, + "15082": 127377, + "15083": 127325, + "15084": 127379, + "15085": 127381, + "15086": 127383, + "15087": 127385, + "15088": 127387, + "15089": 127389, + "15090": 127391, + "15091": 127393, + "15092": 127395, + "15093": 127397, + "15094": 127343, + "15095": 127345, + "15096": 127347, + "15097": 127349, + "15098": 127351, + "15099": 127301, + "15100": 127353, + "15101": 127355, + "15102": 127357, + "15103": 127283, + "15104": 127285, + "15105": 127359, + "15106": 127361, + "15107": 127363, + "15108": 127365, + "15109": 127251, + "15110": 127367, + "15111": 127369, + "15112": 127371, + "15113": 127321, + "15114": 127373, + "15115": 127375, + "15116": 127377, + "15117": 127325, + "15118": 127379, + "15119": 127381, + "15120": 127383, + "15121": 127385, + "15122": 127387, + "15123": 127389, + "15124": 127391, + "15125": 127393, + "15126": 127395, + "15127": 127397, + "15128": 127399, + "15129": 127401, + "15130": 127403, + "15131": 127405, + "15132": 127407, + "15133": 127409, + "15134": 127327, + "15135": 127411, + "15136": 127413, + "15137": 127415, + "15138": 127279, + "15139": 127293, + "15140": 127417, + "15141": 127361, + "15142": 127419, + "15143": 127421, + "15144": 127257, + "15145": 127423, + "15146": 127369, + "15147": 127425, + "15148": 127427, + "15149": 127317, + "15150": 127429, + "15151": 127431, + "15152": 127433, + "15153": 127341, + "15154": 127379, + "15155": 127435, + "15156": 127437, + "15157": 127439, + "15158": 127441, + "15159": 127443, + "15160": 127445, + "15161": 127447, + "15162": 127449, + "15163": 127451, + "15164": 127453, + "15165": 127455, + "15166": 127457, + "15167": 127397, + "15168": 127399, + "15169": 127401, + "15170": 127403, + "15171": 127405, + "15172": 127407, + "15173": 127409, + "15174": 127327, + "15175": 127411, + "15176": 127413, + "15177": 127415, + "15178": 127279, + "15179": 127293, + "15180": 127417, + "15181": 127361, + "15182": 127419, + "15183": 127421, + "15184": 127257, + "15185": 127423, + "15186": 127369, + "15187": 127425, + "15188": 127427, + "15189": 127317, + "15190": 127429, + "15191": 127431, + "15192": 127433, + "15193": 127341, + "15194": 127379, + "15195": 127435, + "15196": 127437, + "15197": 127439, + "15198": 127441, + "15199": 127443, + "15200": 127445, + "15201": 127447, + "15202": 127449, + "15203": 127451, + "15204": 127453, + "15205": 127455, + "15206": 127457, + "15207": 127397, + "15208": 127459, + "15209": 127461, + "15210": 127463, + "15211": 127465, + "15212": 127405, + "15213": 127467, + "15214": 127469, + "15215": 127305, + "15216": 127471, + "15217": 127473, + "15218": 127413, + "15219": 127475, + "15220": 127275, + "15221": 127273, + "15222": 127477, + "15223": 127349, + "15224": 127419, + "15225": 127421, + "15226": 127245, + "15227": 127479, + "15228": 127365, + "15229": 127481, + "15230": 127483, + "15231": 127485, + "15232": 127313, + "15233": 127487, + "15234": 127489, + "15235": 127491, + "15236": 127311, + "15237": 127355, + "15238": 127493, + "15239": 127495, + "15240": 127497, + "15241": 127499, + "15242": 127501, + "15243": 127503, + "15244": 127505, + "15245": 127507, + "15246": 127509, + "15247": 127511, + "15248": 127513, + "15249": 127455, + "15250": 127515, + "15251": 127517, + "15252": 127363, + "15253": 127459, + "15254": 127461, + "15255": 127463, + "15256": 127465, + "15257": 127405, + "15258": 127467, + "15259": 127469, + "15260": 127305, + "15261": 127471, + "15262": 127473, + "15263": 127413, + "15264": 127475, + "15265": 127275, + "15266": 127273, + "15267": 127477, + "15268": 127349, + "15269": 127419, + "15270": 127421, + "15271": 127245, + "15272": 127479, + "15273": 127365, + "15274": 127481, + "15275": 127483, + "15276": 127485, + "15277": 127313, + "15278": 127487, + "15279": 127489, + "15280": 127491, + "15281": 127311, + "15282": 127355, + "15283": 127493, + "15284": 127495, + "15285": 127497, + "15286": 127499, + "15287": 127501, + "15288": 127503, + "15289": 127505, + "15290": 127507, + "15291": 127509, + "15292": 127511, + "15293": 127513, + "15294": 127455, + "15295": 127515, + "15296": 127517, + "15297": 127363, + "15298": 127459, + "15299": 127519, + "15300": 127521, + "15301": 127465, + "15302": 127403, + "15303": 127523, + "15304": 127469, + "15305": 127337, + "15306": 127525, + "15307": 127527, + "15308": 127453, + "15309": 127529, + "15310": 127263, + "15311": 127531, + "15312": 127289, + "15313": 127533, + "15314": 127347, + "15315": 127451, + "15316": 127409, + "15317": 127535, + "15318": 127255, + "15319": 127537, + "15320": 127351, + "15321": 127539, + "15322": 127541, + "15323": 127543, + "15324": 127299, + "15325": 127545, + "15326": 127547, + "15327": 127549, + "15328": 127551, + "15329": 127335, + "15330": 127553, + "15331": 127393, + "15332": 127555, + "15333": 127557, + "15334": 127497, + "15335": 127559, + "15336": 127561, + "15337": 127563, + "15338": 127565, + "15339": 127567, + "15340": 127569, + "15341": 127511, + "15342": 127513, + "15343": 127439, + "15344": 127571, + "15345": 127573, + "15346": 127391, + "15347": 127459, + "15348": 127519, + "15349": 127521, + "15350": 127465, + "15351": 127403, + "15352": 127523, + "15353": 127469, + "15354": 127337, + "15355": 127525, + "15356": 127527, + "15357": 127453, + "15358": 127529, + "15359": 127263, + "15360": 127531, + "15361": 127289, + "15362": 127533, + "15363": 127347, + "15364": 127451, + "15365": 127409, + "15366": 127535, + "15367": 127255, + "15368": 127537, + "15369": 127351, + "15370": 127539, + "15371": 127541, + "15372": 127543, + "15373": 127299, + "15374": 127545, + "15375": 127547, + "15376": 127549, + "15377": 127551, + "15378": 127335, + "15379": 127553, + "15380": 127393, + "15381": 127555, + "15382": 127557, + "15383": 127497, + "15384": 127559, + "15385": 127561, + "15386": 127563, + "15387": 127565, + "15388": 127567, + "15389": 127569, + "15390": 127511, + "15391": 127513, + "15392": 127439, + "15393": 127571, + "15394": 127573, + "15395": 127391, + "15396": 127505, + "15397": 127575, + "15398": 127577, + "15399": 127487, + "15400": 127429, + "15401": 127579, + "15402": 127479, + "15403": 127331, + "15404": 127581, + "15405": 127583, + "15406": 127447, + "15407": 127585, + "15408": 127277, + "15409": 127587, + "15410": 127271, + "15411": 127533, + "15412": 127373, + "15413": 127417, + "15414": 127589, + "15415": 127423, + "15416": 127535, + "15417": 127591, + "15418": 127243, + "15419": 127537, + "15420": 127367, + "15421": 127593, + "15422": 127595, + "15423": 127597, + "15424": 127315, + "15425": 127599, + "15426": 127547, + "15427": 127601, + "15428": 127603, + "15429": 127309, + "15430": 127605, + "15431": 127387, + "15432": 127607, + "15433": 127557, + "15434": 127495, + "15435": 127609, + "15436": 127611, + "15437": 127613, + "15438": 127615, + "15439": 127565, + "15440": 127567, + "15441": 127617, + "15442": 127477, + "15443": 127507, + "15444": 127437, + "15445": 127619, + "15446": 127621, + "15447": 127359, + "15448": 127505, + "15449": 127575, + "15450": 127577, + "15451": 127487, + "15452": 127429, + "15453": 127579, + "15454": 127479, + "15455": 127331, + "15456": 127581, + "15457": 127583, + "15458": 127447, + "15459": 127585, + "15460": 127277, + "15461": 127587, + "15462": 127271, + "15463": 127533, + "15464": 127373, + "15465": 127417, + "15466": 127589, + "15467": 127423, + "15468": 127535, + "15469": 127591, + "15470": 127243, + "15471": 127537, + "15472": 127367, + "15473": 127593, + "15474": 127595, + "15475": 127597, + "15476": 127315, + "15477": 127599, + "15478": 127547, + "15479": 127601, + "15480": 127603, + "15481": 127309, + "15482": 127605, + "15483": 127387, + "15484": 127607, + "15485": 127557, + "15486": 127495, + "15487": 127609, + "15488": 127611, + "15489": 127613, + "15490": 127615, + "15491": 127565, + "15492": 127567, + "15493": 127617, + "15494": 127477, + "15495": 127507, + "15496": 127437, + "15497": 127619, + "15498": 127621, + "15499": 127359, + "15500": 127515, + "15501": 127623, + "15502": 127625, + "15503": 127627, + "15504": 127491, + "15505": 127433, + "15506": 127629, + "15507": 127517, + "15508": 127307, + "15509": 127631, + "15510": 127633, + "15511": 127415, + "15512": 127585, + "15513": 127291, + "15514": 127635, + "15515": 127281, + "15516": 127543, + "15517": 127377, + "15518": 127427, + "15519": 127637, + "15520": 127457, + "15521": 127553, + "15522": 127639, + "15523": 127249, + "15524": 127573, + "15525": 127395, + "15526": 127641, + "15527": 127643, + "15528": 127597, + "15529": 127339, + "15530": 127645, + "15531": 127551, + "15532": 127647, + "15533": 127603, + "15534": 127319, + "15535": 127605, + "15536": 127357, + "15537": 127649, + "15538": 127561, + "15539": 127501, + "15540": 127651, + "15541": 127609, + "15542": 127653, + "15543": 127613, + "15544": 127655, + "15545": 127571, + "15546": 127529, + "15547": 127657, + "15548": 127485, + "15549": 127475, + "15550": 127443, + "15551": 127619, + "15552": 127621, + "15553": 127371, + "15554": 127515, + "15555": 127623, + "15556": 127625, + "15557": 127627, + "15558": 127491, + "15559": 127433, + "15560": 127629, + "15561": 127517, + "15562": 127307, + "15563": 127631, + "15564": 127633, + "15565": 127415, + "15566": 127585, + "15567": 127291, + "15568": 127635, + "15569": 127281, + "15570": 127543, + "15571": 127377, + "15572": 127427, + "15573": 127637, + "15574": 127457, + "15575": 127553, + "15576": 127639, + "15577": 127249, + "15578": 127573, + "15579": 127395, + "15580": 127641, + "15581": 127643, + "15582": 127597, + "15583": 127339, + "15584": 127645, + "15585": 127551, + "15586": 127647, + "15587": 127603, + "15588": 127319, + "15589": 127605, + "15590": 127357, + "15591": 127649, + "15592": 127561, + "15593": 127501, + "15594": 127651, + "15595": 127609, + "15596": 127653, + "15597": 127613, + "15598": 127655, + "15599": 127571, + "15600": 127529, + "15601": 127657, + "15602": 127485, + "15603": 127475, + "15604": 127443, + "15605": 127619, + "15606": 127621, + "15607": 127371, + "15608": 127483, + "15609": 127659, + "15610": 127625, + "15611": 127627, + "15612": 127503, + "15613": 127445, + "15614": 127629, + "15615": 127471, + "15616": 127323, + "15617": 127631, + "15618": 127661, + "15619": 127431, + "15620": 127601, + "15621": 127265, + "15622": 127663, + "15623": 127261, + "15624": 127521, + "15625": 127385, + "15626": 127401, + "15627": 127637, + "15628": 127411, + "15629": 127545, + "15630": 127665, + "15631": 127239, + "15632": 127525, + "15633": 127353, + "15634": 127667, + "15635": 127643, + "15636": 127577, + "15637": 127303, + "15638": 127645, + "15639": 127563, + "15640": 127647, + "15641": 127615, + "15642": 127297, + "15643": 127599, + "15644": 127375, + "15645": 127669, + "15646": 127523, + "15647": 127467, + "15648": 127671, + "15649": 127589, + "15650": 127673, + "15651": 127579, + "15652": 127655, + "15653": 127541, + "15654": 127549, + "15655": 127675, + "15656": 127463, + "15657": 127489, + "15658": 127407, + "15659": 127595, + "15660": 127581, + "15661": 127677, + "15662": 127345, + "15663": 127483, + "15664": 127659, + "15665": 127625, + "15666": 127627, + "15667": 127503, + "15668": 127445, + "15669": 127629, + "15670": 127471, + "15671": 127323, + "15672": 127631, + "15673": 127661, + "15674": 127431, + "15675": 127601, + "15676": 127265, + "15677": 127663, + "15678": 127261, + "15679": 127521, + "15680": 127385, + "15681": 127401, + "15682": 127637, + "15683": 127411, + "15684": 127545, + "15685": 127665, + "15686": 127239, + "15687": 127525, + "15688": 127353, + "15689": 127667, + "15690": 127643, + "15691": 127577, + "15692": 127303, + "15693": 127645, + "15694": 127563, + "15695": 127647, + "15696": 127615, + "15697": 127297, + "15698": 127599, + "15699": 127375, + "15700": 127669, + "15701": 127523, + "15702": 127467, + "15703": 127671, + "15704": 127589, + "15705": 127673, + "15706": 127579, + "15707": 127655, + "15708": 127541, + "15709": 127549, + "15710": 127675, + "15711": 127463, + "15712": 127489, + "15713": 127407, + "15714": 127595, + "15715": 127581, + "15716": 127677, + "15717": 127345, + "15718": 127473, + "15719": 127659, + "15720": 127651, + "15721": 127657, + "15722": 127493, + "15723": 127435, + "15724": 127641, + "15725": 127461, + "15726": 127329, + "15727": 127623, + "15728": 127661, + "15729": 127441, + "15730": 127611, + "15731": 127259, + "15732": 127663, + "15733": 127287, + "15734": 127569, + "15735": 127381, + "15736": 127449, + "15737": 127639, + "15738": 127399, + "15739": 127531, + "15740": 127665, + "15741": 127253, + "15742": 127519, + "15743": 127343, + "15744": 127667, + "15745": 127633, + "15746": 127617, + "15747": 127295, + "15748": 127635, + "15749": 127555, + "15750": 127653, + "15751": 127607, + "15752": 127333, + "15753": 127587, + "15754": 127383, + "15755": 127669, + "15756": 127539, + "15757": 127481, + "15758": 127671, + "15759": 127591, + "15760": 127673, + "15761": 127593, + "15762": 127649, + "15763": 127527, + "15764": 127559, + "15765": 127675, + "15766": 127509, + "15767": 127499, + "15768": 127425, + "15769": 127583, + "15770": 127575, + "15771": 127677, + "15772": 127389, + "15773": 127473, + "15774": 127659, + "15775": 127651, + "15776": 127657, + "15777": 127493, + "15778": 127435, + "15779": 127641, + "15780": 127461, + "15781": 127329, + "15782": 127623, + "15783": 127661, + "15784": 127441, + "15785": 127611, + "15786": 127259, + "15787": 127663, + "15788": 127287, + "15789": 127569, + "15790": 127381, + "15791": 127449, + "15792": 127639, + "15793": 127399, + "15794": 127531, + "15795": 127665, + "15796": 127253, + "15797": 127519, + "15798": 127343, + "15799": 127667, + "15800": 127633, + "15801": 127617, + "15802": 127295, + "15803": 127635, + "15804": 127555, + "15805": 127653, + "15806": 127607, + "15807": 127333, + "15808": 127587, + "15809": 127383, + "15810": 127669, + "15811": 127539, + "15812": 127481, + "15813": 127671, + "15814": 127591, + "15815": 127673, + "15816": 127593, + "15817": 127649, + "15818": 127527, + "15819": 127559, + "15820": 127675, + "15821": 127509, + "15822": 127499, + "15823": 127425, + "15824": 127583, + "15825": 127575, + "15826": 127677, + "15827": 127389, + "15828": 127247, + "15829": 127241, + "15830": 127251, + "15831": 127257, + "15832": 127245, + "15833": 127255, + "15834": 127243, + "15835": 127249, + "15836": 127239, + "15837": 127253, + "15838": 127247, + "15839": 127241, + "15840": 127251, + "15841": 127257, + "15842": 127245, + "15843": 127255, + "15844": 127243, + "15845": 127249, + "15846": 127239, + "15847": 127253, + "15848": 127247, + "15849": 127269, + "15850": 127285, + "15851": 127293, + "15852": 127273, + "15853": 127289, + "15854": 127271, + "15855": 127281, + "15856": 127261, + "15857": 127287, + "15858": 127247, + "15859": 127269, + "15860": 127285, + "15861": 127293, + "15862": 127273, + "15863": 127289, + "15864": 127271, + "15865": 127281, + "15866": 127261, + "15867": 127287, + "15868": 127241, + "15869": 127269, + "15870": 127325, + "15871": 127341, + "15872": 127311, + "15873": 127335, + "15874": 127309, + "15875": 127319, + "15876": 127297, + "15877": 127333, + "15878": 127241, + "15879": 127269, + "15880": 127325, + "15881": 127341, + "15882": 127311, + "15883": 127335, + "15884": 127309, + "15885": 127319, + "15886": 127297, + "15887": 127333, + "15888": 127251, + "15889": 127285, + "15890": 127325, + "15891": 127397, + "15892": 127363, + "15893": 127391, + "15894": 127359, + "15895": 127371, + "15896": 127345, + "15897": 127389, + "15898": 127251, + "15899": 127285, + "15900": 127325, + "15901": 127397, + "15902": 127363, + "15903": 127391, + "15904": 127359, + "15905": 127371, + "15906": 127345, + "15907": 127389, + "15908": 127257, + "15909": 127293, + "15910": 127341, + "15911": 127397, + "15912": 127419, + "15913": 127451, + "15914": 127417, + "15915": 127427, + "15916": 127401, + "15917": 127449, + "15918": 127257, + "15919": 127293, + "15920": 127341, + "15921": 127397, + "15922": 127419, + "15923": 127451, + "15924": 127417, + "15925": 127427, + "15926": 127401, + "15927": 127449, + "15928": 127245, + "15929": 127273, + "15930": 127311, + "15931": 127363, + "15932": 127419, + "15933": 127511, + "15934": 127477, + "15935": 127485, + "15936": 127463, + "15937": 127509, + "15938": 127245, + "15939": 127273, + "15940": 127311, + "15941": 127363, + "15942": 127419, + "15943": 127511, + "15944": 127477, + "15945": 127485, + "15946": 127463, + "15947": 127509, + "15948": 127255, + "15949": 127289, + "15950": 127335, + "15951": 127391, + "15952": 127451, + "15953": 127511, + "15954": 127533, + "15955": 127543, + "15956": 127521, + "15957": 127569, + "15958": 127255, + "15959": 127289, + "15960": 127335, + "15961": 127391, + "15962": 127451, + "15963": 127511, + "15964": 127533, + "15965": 127543, + "15966": 127521, + "15967": 127569, + "15968": 127243, + "15969": 127271, + "15970": 127309, + "15971": 127359, + "15972": 127417, + "15973": 127477, + "15974": 127533, + "15975": 127597, + "15976": 127577, + "15977": 127617, + "15978": 127243, + "15979": 127271, + "15980": 127309, + "15981": 127359, + "15982": 127417, + "15983": 127477, + "15984": 127533, + "15985": 127597, + "15986": 127577, + "15987": 127617, + "15988": 127249, + "15989": 127281, + "15990": 127319, + "15991": 127371, + "15992": 127427, + "15993": 127485, + "15994": 127543, + "15995": 127597, + "15996": 127627, + "15997": 127657, + "15998": 127249, + "15999": 127281, + "16000": 127319, + "16001": 127371, + "16002": 127427, + "16003": 127485, + "16004": 127543, + "16005": 127597, + "16006": 127627, + "16007": 127657, + "16008": 127239, + "16009": 127261, + "16010": 127297, + "16011": 127345, + "16012": 127401, + "16013": 127463, + "16014": 127521, + "16015": 127577, + "16016": 127627, + "16017": 127675, + "16018": 127239, + "16019": 127261, + "16020": 127297, + "16021": 127345, + "16022": 127401, + "16023": 127463, + "16024": 127521, + "16025": 127577, + "16026": 127627, + "16027": 127675, + "16028": 127253, + "16029": 127287, + "16030": 127333, + "16031": 127389, + "16032": 127449, + "16033": 127509, + "16034": 127569, + "16035": 127617, + "16036": 127657, + "16037": 127675, + "16038": 127253, + "16039": 127287, + "16040": 127333, + "16041": 127389, + "16042": 127449, + "16043": 127509, + "16044": 127569, + "16045": 127617, + "16046": 127657, + "16047": 127675, + "16048": 127247, + "16049": 127267, + "16050": 127283, + "16051": 127279, + "16052": 127275, + "16053": 127263, + "16054": 127277, + "16055": 127291, + "16056": 127265, + "16057": 127259, + "16058": 127247, + "16059": 127267, + "16060": 127283, + "16061": 127279, + "16062": 127275, + "16063": 127263, + "16064": 127277, + "16065": 127291, + "16066": 127265, + "16067": 127259, + "16068": 127241, + "16069": 127267, + "16070": 127321, + "16071": 127317, + "16072": 127313, + "16073": 127299, + "16074": 127315, + "16075": 127339, + "16076": 127303, + "16077": 127295, + "16078": 127241, + "16079": 127267, + "16080": 127321, + "16081": 127317, + "16082": 127313, + "16083": 127299, + "16084": 127315, + "16085": 127339, + "16086": 127303, + "16087": 127295, + "16088": 127251, + "16089": 127283, + "16090": 127321, + "16091": 127369, + "16092": 127365, + "16093": 127351, + "16094": 127367, + "16095": 127395, + "16096": 127353, + "16097": 127343, + "16098": 127251, + "16099": 127283, + "16100": 127321, + "16101": 127369, + "16102": 127365, + "16103": 127351, + "16104": 127367, + "16105": 127395, + "16106": 127353, + "16107": 127343, + "16108": 127257, + "16109": 127279, + "16110": 127317, + "16111": 127369, + "16112": 127421, + "16113": 127409, + "16114": 127423, + "16115": 127457, + "16116": 127411, + "16117": 127399, + "16118": 127257, + "16119": 127279, + "16120": 127317, + "16121": 127369, + "16122": 127421, + "16123": 127409, + "16124": 127423, + "16125": 127457, + "16126": 127411, + "16127": 127399, + "16128": 127245, + "16129": 127275, + "16130": 127313, + "16131": 127365, + "16132": 127421, + "16133": 127469, + "16134": 127479, + "16135": 127517, + "16136": 127471, + "16137": 127461, + "16138": 127245, + "16139": 127275, + "16140": 127313, + "16141": 127365, + "16142": 127421, + "16143": 127469, + "16144": 127479, + "16145": 127517, + "16146": 127471, + "16147": 127461, + "16148": 127255, + "16149": 127263, + "16150": 127299, + "16151": 127351, + "16152": 127409, + "16153": 127469, + "16154": 127537, + "16155": 127573, + "16156": 127525, + "16157": 127519, + "16158": 127255, + "16159": 127263, + "16160": 127299, + "16161": 127351, + "16162": 127409, + "16163": 127469, + "16164": 127537, + "16165": 127573, + "16166": 127525, + "16167": 127519, + "16168": 127243, + "16169": 127277, + "16170": 127315, + "16171": 127367, + "16172": 127423, + "16173": 127479, + "16174": 127537, + "16175": 127621, + "16176": 127581, + "16177": 127575, + "16178": 127243, + "16179": 127277, + "16180": 127315, + "16181": 127367, + "16182": 127423, + "16183": 127479, + "16184": 127537, + "16185": 127621, + "16186": 127581, + "16187": 127575, + "16188": 127249, + "16189": 127291, + "16190": 127339, + "16191": 127395, + "16192": 127457, + "16193": 127517, + "16194": 127573, + "16195": 127621, + "16196": 127631, + "16197": 127623, + "16198": 127249, + "16199": 127291, + "16200": 127339, + "16201": 127395, + "16202": 127457, + "16203": 127517, + "16204": 127573, + "16205": 127621, + "16206": 127631, + "16207": 127623, + "16208": 127239, + "16209": 127265, + "16210": 127303, + "16211": 127353, + "16212": 127411, + "16213": 127471, + "16214": 127525, + "16215": 127581, + "16216": 127631, + "16217": 127659, + "16218": 127239, + "16219": 127265, + "16220": 127303, + "16221": 127353, + "16222": 127411, + "16223": 127471, + "16224": 127525, + "16225": 127581, + "16226": 127631, + "16227": 127659, + "16228": 127253, + "16229": 127259, + "16230": 127295, + "16231": 127343, + "16232": 127399, + "16233": 127461, + "16234": 127519, + "16235": 127575, + "16236": 127623, + "16237": 127659, + "16238": 127253, + "16239": 127259, + "16240": 127295, + "16241": 127343, + "16242": 127399, + "16243": 127461, + "16244": 127519, + "16245": 127575, + "16246": 127623, + "16247": 127659, + "16248": 127269, + "16249": 127267, + "16250": 127301, + "16251": 127327, + "16252": 127305, + "16253": 127337, + "16254": 127331, + "16255": 127307, + "16256": 127323, + "16257": 127329, + "16258": 127269, + "16259": 127267, + "16260": 127301, + "16261": 127327, + "16262": 127305, + "16263": 127337, + "16264": 127331, + "16265": 127307, + "16266": 127323, + "16267": 127329, + "16268": 127285, + "16269": 127283, + "16270": 127301, + "16271": 127379, + "16272": 127355, + "16273": 127393, + "16274": 127387, + "16275": 127357, + "16276": 127375, + "16277": 127383, + "16278": 127285, + "16279": 127283, + "16280": 127301, + "16281": 127379, + "16282": 127355, + "16283": 127393, + "16284": 127387, + "16285": 127357, + "16286": 127375, + "16287": 127383, + "16288": 127293, + "16289": 127279, + "16290": 127327, + "16291": 127379, + "16292": 127413, + "16293": 127453, + "16294": 127447, + "16295": 127415, + "16296": 127431, + "16297": 127441, + "16298": 127293, + "16299": 127279, + "16300": 127327, + "16301": 127379, + "16302": 127413, + "16303": 127453, + "16304": 127447, + "16305": 127415, + "16306": 127431, + "16307": 127441, + "16308": 127273, + "16309": 127275, + "16310": 127305, + "16311": 127355, + "16312": 127413, + "16313": 127513, + "16314": 127507, + "16315": 127475, + "16316": 127489, + "16317": 127499, + "16318": 127273, + "16319": 127275, + "16320": 127305, + "16321": 127355, + "16322": 127413, + "16323": 127513, + "16324": 127507, + "16325": 127475, + "16326": 127489, + "16327": 127499, + "16328": 127289, + "16329": 127263, + "16330": 127337, + "16331": 127393, + "16332": 127453, + "16333": 127513, + "16334": 127567, + "16335": 127529, + "16336": 127549, + "16337": 127559, + "16338": 127289, + "16339": 127263, + "16340": 127337, + "16341": 127393, + "16342": 127453, + "16343": 127513, + "16344": 127567, + "16345": 127529, + "16346": 127549, + "16347": 127559, + "16348": 127271, + "16349": 127277, + "16350": 127331, + "16351": 127387, + "16352": 127447, + "16353": 127507, + "16354": 127567, + "16355": 127585, + "16356": 127601, + "16357": 127611, + "16358": 127271, + "16359": 127277, + "16360": 127331, + "16361": 127387, + "16362": 127447, + "16363": 127507, + "16364": 127567, + "16365": 127585, + "16366": 127601, + "16367": 127611, + "16368": 127281, + "16369": 127291, + "16370": 127307, + "16371": 127357, + "16372": 127415, + "16373": 127475, + "16374": 127529, + "16375": 127585, + "16376": 127647, + "16377": 127653, + "16378": 127281, + "16379": 127291, + "16380": 127307, + "16381": 127357, + "16382": 127415, + "16383": 127475, + "16384": 127529, + "16385": 127585, + "16386": 127647, + "16387": 127653, + "16388": 127261, + "16389": 127265, + "16390": 127323, + "16391": 127375, + "16392": 127431, + "16393": 127489, + "16394": 127549, + "16395": 127601, + "16396": 127647, + "16397": 127673, + "16398": 127261, + "16399": 127265, + "16400": 127323, + "16401": 127375, + "16402": 127431, + "16403": 127489, + "16404": 127549, + "16405": 127601, + "16406": 127647, + "16407": 127673, + "16408": 127287, + "16409": 127259, + "16410": 127329, + "16411": 127383, + "16412": 127441, + "16413": 127499, + "16414": 127559, + "16415": 127611, + "16416": 127653, + "16417": 127673, + "16418": 127287, + "16419": 127259, + "16420": 127329, + "16421": 127383, + "16422": 127441, + "16423": 127499, + "16424": 127559, + "16425": 127611, + "16426": 127653, + "16427": 127673, + "16428": 127325, + "16429": 127321, + "16430": 127301, + "16431": 127361, + "16432": 127349, + "16433": 127347, + "16434": 127373, + "16435": 127377, + "16436": 127385, + "16437": 127381, + "16438": 127325, + "16439": 127321, + "16440": 127301, + "16441": 127361, + "16442": 127349, + "16443": 127347, + "16444": 127373, + "16445": 127377, + "16446": 127385, + "16447": 127381, + "16448": 127341, + "16449": 127317, + "16450": 127327, + "16451": 127361, + "16452": 127405, + "16453": 127403, + "16454": 127429, + "16455": 127433, + "16456": 127445, + "16457": 127435, + "16458": 127341, + "16459": 127317, + "16460": 127327, + "16461": 127361, + "16462": 127405, + "16463": 127403, + "16464": 127429, + "16465": 127433, + "16466": 127445, + "16467": 127435, + "16468": 127311, + "16469": 127313, + "16470": 127305, + "16471": 127349, + "16472": 127405, + "16473": 127465, + "16474": 127487, + "16475": 127491, + "16476": 127503, + "16477": 127493, + "16478": 127311, + "16479": 127313, + "16480": 127305, + "16481": 127349, + "16482": 127405, + "16483": 127465, + "16484": 127487, + "16485": 127491, + "16486": 127503, + "16487": 127493, + "16488": 127335, + "16489": 127299, + "16490": 127337, + "16491": 127347, + "16492": 127403, + "16493": 127465, + "16494": 127547, + "16495": 127551, + "16496": 127563, + "16497": 127555, + "16498": 127335, + "16499": 127299, + "16500": 127337, + "16501": 127347, + "16502": 127403, + "16503": 127465, + "16504": 127547, + "16505": 127551, + "16506": 127563, + "16507": 127555, + "16508": 127309, + "16509": 127315, + "16510": 127331, + "16511": 127373, + "16512": 127429, + "16513": 127487, + "16514": 127547, + "16515": 127603, + "16516": 127615, + "16517": 127607, + "16518": 127309, + "16519": 127315, + "16520": 127331, + "16521": 127373, + "16522": 127429, + "16523": 127487, + "16524": 127547, + "16525": 127603, + "16526": 127615, + "16527": 127607, + "16528": 127319, + "16529": 127339, + "16530": 127307, + "16531": 127377, + "16532": 127433, + "16533": 127491, + "16534": 127551, + "16535": 127603, + "16536": 127655, + "16537": 127649, + "16538": 127319, + "16539": 127339, + "16540": 127307, + "16541": 127377, + "16542": 127433, + "16543": 127491, + "16544": 127551, + "16545": 127603, + "16546": 127655, + "16547": 127649, + "16548": 127297, + "16549": 127303, + "16550": 127323, + "16551": 127385, + "16552": 127445, + "16553": 127503, + "16554": 127563, + "16555": 127615, + "16556": 127655, + "16557": 127669, + "16558": 127297, + "16559": 127303, + "16560": 127323, + "16561": 127385, + "16562": 127445, + "16563": 127503, + "16564": 127563, + "16565": 127615, + "16566": 127655, + "16567": 127669, + "16568": 127333, + "16569": 127295, + "16570": 127329, + "16571": 127381, + "16572": 127435, + "16573": 127493, + "16574": 127555, + "16575": 127607, + "16576": 127649, + "16577": 127669, + "16578": 127333, + "16579": 127295, + "16580": 127329, + "16581": 127381, + "16582": 127435, + "16583": 127493, + "16584": 127555, + "16585": 127607, + "16586": 127649, + "16587": 127669, + "16588": 127397, + "16589": 127369, + "16590": 127379, + "16591": 127361, + "16592": 127455, + "16593": 127439, + "16594": 127437, + "16595": 127443, + "16596": 127407, + "16597": 127425, + "16598": 127397, + "16599": 127369, + "16600": 127379, + "16601": 127361, + "16602": 127455, + "16603": 127439, + "16604": 127437, + "16605": 127443, + "16606": 127407, + "16607": 127425, + "16608": 127363, + "16609": 127365, + "16610": 127355, + "16611": 127349, + "16612": 127455, + "16613": 127497, + "16614": 127495, + "16615": 127501, + "16616": 127467, + "16617": 127481, + "16618": 127363, + "16619": 127365, + "16620": 127355, + "16621": 127349, + "16622": 127455, + "16623": 127497, + "16624": 127495, + "16625": 127501, + "16626": 127467, + "16627": 127481, + "16628": 127391, + "16629": 127351, + "16630": 127393, + "16631": 127347, + "16632": 127439, + "16633": 127497, + "16634": 127557, + "16635": 127561, + "16636": 127523, + "16637": 127539, + "16638": 127391, + "16639": 127351, + "16640": 127393, + "16641": 127347, + "16642": 127439, + "16643": 127497, + "16644": 127557, + "16645": 127561, + "16646": 127523, + "16647": 127539, + "16648": 127359, + "16649": 127367, + "16650": 127387, + "16651": 127373, + "16652": 127437, + "16653": 127495, + "16654": 127557, + "16655": 127613, + "16656": 127579, + "16657": 127593, + "16658": 127359, + "16659": 127367, + "16660": 127387, + "16661": 127373, + "16662": 127437, + "16663": 127495, + "16664": 127557, + "16665": 127613, + "16666": 127579, + "16667": 127593, + "16668": 127371, + "16669": 127395, + "16670": 127357, + "16671": 127377, + "16672": 127443, + "16673": 127501, + "16674": 127561, + "16675": 127613, + "16676": 127629, + "16677": 127641, + "16678": 127371, + "16679": 127395, + "16680": 127357, + "16681": 127377, + "16682": 127443, + "16683": 127501, + "16684": 127561, + "16685": 127613, + "16686": 127629, + "16687": 127641, + "16688": 127345, + "16689": 127353, + "16690": 127375, + "16691": 127385, + "16692": 127407, + "16693": 127467, + "16694": 127523, + "16695": 127579, + "16696": 127629, + "16697": 127667, + "16698": 127345, + "16699": 127353, + "16700": 127375, + "16701": 127385, + "16702": 127407, + "16703": 127467, + "16704": 127523, + "16705": 127579, + "16706": 127629, + "16707": 127667, + "16708": 127389, + "16709": 127343, + "16710": 127383, + "16711": 127381, + "16712": 127425, + "16713": 127481, + "16714": 127539, + "16715": 127593, + "16716": 127641, + "16717": 127667, + "16718": 127389, + "16719": 127343, + "16720": 127383, + "16721": 127381, + "16722": 127425, + "16723": 127481, + "16724": 127539, + "16725": 127593, + "16726": 127641, + "16727": 127667, + "16728": 127419, + "16729": 127421, + "16730": 127413, + "16731": 127405, + "16732": 127455, + "16733": 127459, + "16734": 127505, + "16735": 127515, + "16736": 127483, + "16737": 127473, + "16738": 127419, + "16739": 127421, + "16740": 127413, + "16741": 127405, + "16742": 127455, + "16743": 127459, + "16744": 127505, + "16745": 127515, + "16746": 127483, + "16747": 127473, + "16748": 127451, + "16749": 127409, + "16750": 127453, + "16751": 127403, + "16752": 127439, + "16753": 127459, + "16754": 127565, + "16755": 127571, + "16756": 127541, + "16757": 127527, + "16758": 127451, + "16759": 127409, + "16760": 127453, + "16761": 127403, + "16762": 127439, + "16763": 127459, + "16764": 127565, + "16765": 127571, + "16766": 127541, + "16767": 127527, + "16768": 127417, + "16769": 127423, + "16770": 127447, + "16771": 127429, + "16772": 127437, + "16773": 127505, + "16774": 127565, + "16775": 127619, + "16776": 127595, + "16777": 127583, + "16778": 127417, + "16779": 127423, + "16780": 127447, + "16781": 127429, + "16782": 127437, + "16783": 127505, + "16784": 127565, + "16785": 127619, + "16786": 127595, + "16787": 127583, + "16788": 127427, + "16789": 127457, + "16790": 127415, + "16791": 127433, + "16792": 127443, + "16793": 127515, + "16794": 127571, + "16795": 127619, + "16796": 127643, + "16797": 127633, + "16798": 127427, + "16799": 127457, + "16800": 127415, + "16801": 127433, + "16802": 127443, + "16803": 127515, + "16804": 127571, + "16805": 127619, + "16806": 127643, + "16807": 127633, + "16808": 127401, + "16809": 127411, + "16810": 127431, + "16811": 127445, + "16812": 127407, + "16813": 127483, + "16814": 127541, + "16815": 127595, + "16816": 127643, + "16817": 127661, + "16818": 127401, + "16819": 127411, + "16820": 127431, + "16821": 127445, + "16822": 127407, + "16823": 127483, + "16824": 127541, + "16825": 127595, + "16826": 127643, + "16827": 127661, + "16828": 127449, + "16829": 127399, + "16830": 127441, + "16831": 127435, + "16832": 127425, + "16833": 127473, + "16834": 127527, + "16835": 127583, + "16836": 127633, + "16837": 127661, + "16838": 127449, + "16839": 127399, + "16840": 127441, + "16841": 127435, + "16842": 127425, + "16843": 127473, + "16844": 127527, + "16845": 127583, + "16846": 127633, + "16847": 127661, + "16848": 127511, + "16849": 127469, + "16850": 127513, + "16851": 127465, + "16852": 127497, + "16853": 127459, + "16854": 127535, + "16855": 127553, + "16856": 127545, + "16857": 127531, + "16858": 127511, + "16859": 127469, + "16860": 127513, + "16861": 127465, + "16862": 127497, + "16863": 127459, + "16864": 127535, + "16865": 127553, + "16866": 127545, + "16867": 127531, + "16868": 127477, + "16869": 127479, + "16870": 127507, + "16871": 127487, + "16872": 127495, + "16873": 127505, + "16874": 127535, + "16875": 127605, + "16876": 127599, + "16877": 127587, + "16878": 127477, + "16879": 127479, + "16880": 127507, + "16881": 127487, + "16882": 127495, + "16883": 127505, + "16884": 127535, + "16885": 127605, + "16886": 127599, + "16887": 127587, + "16888": 127485, + "16889": 127517, + "16890": 127475, + "16891": 127491, + "16892": 127501, + "16893": 127515, + "16894": 127553, + "16895": 127605, + "16896": 127645, + "16897": 127635, + "16898": 127485, + "16899": 127517, + "16900": 127475, + "16901": 127491, + "16902": 127501, + "16903": 127515, + "16904": 127553, + "16905": 127605, + "16906": 127645, + "16907": 127635, + "16908": 127463, + "16909": 127471, + "16910": 127489, + "16911": 127503, + "16912": 127467, + "16913": 127483, + "16914": 127545, + "16915": 127599, + "16916": 127645, + "16917": 127663, + "16918": 127463, + "16919": 127471, + "16920": 127489, + "16921": 127503, + "16922": 127467, + "16923": 127483, + "16924": 127545, + "16925": 127599, + "16926": 127645, + "16927": 127663, + "16928": 127509, + "16929": 127461, + "16930": 127499, + "16931": 127493, + "16932": 127481, + "16933": 127473, + "16934": 127531, + "16935": 127587, + "16936": 127635, + "16937": 127663, + "16938": 127509, + "16939": 127461, + "16940": 127499, + "16941": 127493, + "16942": 127481, + "16943": 127473, + "16944": 127531, + "16945": 127587, + "16946": 127635, + "16947": 127663, + "16948": 127533, + "16949": 127537, + "16950": 127567, + "16951": 127547, + "16952": 127557, + "16953": 127565, + "16954": 127535, + "16955": 127609, + "16956": 127589, + "16957": 127591, + "16958": 127533, + "16959": 127537, + "16960": 127567, + "16961": 127547, + "16962": 127557, + "16963": 127565, + "16964": 127535, + "16965": 127609, + "16966": 127589, + "16967": 127591, + "16968": 127543, + "16969": 127573, + "16970": 127529, + "16971": 127551, + "16972": 127561, + "16973": 127571, + "16974": 127553, + "16975": 127609, + "16976": 127637, + "16977": 127639, + "16978": 127543, + "16979": 127573, + "16980": 127529, + "16981": 127551, + "16982": 127561, + "16983": 127571, + "16984": 127553, + "16985": 127609, + "16986": 127637, + "16987": 127639, + "16988": 127521, + "16989": 127525, + "16990": 127549, + "16991": 127563, + "16992": 127523, + "16993": 127541, + "16994": 127545, + "16995": 127589, + "16996": 127637, + "16997": 127665, + "16998": 127521, + "16999": 127525, + "17000": 127549, + "17001": 127563, + "17002": 127523, + "17003": 127541, + "17004": 127545, + "17005": 127589, + "17006": 127637, + "17007": 127665, + "17008": 127569, + "17009": 127519, + "17010": 127559, + "17011": 127555, + "17012": 127539, + "17013": 127527, + "17014": 127531, + "17015": 127591, + "17016": 127639, + "17017": 127665, + "17018": 127569, + "17019": 127519, + "17020": 127559, + "17021": 127555, + "17022": 127539, + "17023": 127527, + "17024": 127531, + "17025": 127591, + "17026": 127639, + "17027": 127665, + "17028": 127597, + "17029": 127621, + "17030": 127585, + "17031": 127603, + "17032": 127613, + "17033": 127619, + "17034": 127605, + "17035": 127609, + "17036": 127625, + "17037": 127651, + "17038": 127597, + "17039": 127621, + "17040": 127585, + "17041": 127603, + "17042": 127613, + "17043": 127619, + "17044": 127605, + "17045": 127609, + "17046": 127625, + "17047": 127651, + "17048": 127577, + "17049": 127581, + "17050": 127601, + "17051": 127615, + "17052": 127579, + "17053": 127595, + "17054": 127599, + "17055": 127589, + "17056": 127625, + "17057": 127671, + "17058": 127577, + "17059": 127581, + "17060": 127601, + "17061": 127615, + "17062": 127579, + "17063": 127595, + "17064": 127599, + "17065": 127589, + "17066": 127625, + "17067": 127671, + "17068": 127617, + "17069": 127575, + "17070": 127611, + "17071": 127607, + "17072": 127593, + "17073": 127583, + "17074": 127587, + "17075": 127591, + "17076": 127651, + "17077": 127671, + "17078": 127617, + "17079": 127575, + "17080": 127611, + "17081": 127607, + "17082": 127593, + "17083": 127583, + "17084": 127587, + "17085": 127591, + "17086": 127651, + "17087": 127671, + "17088": 127627, + "17089": 127631, + "17090": 127647, + "17091": 127655, + "17092": 127629, + "17093": 127643, + "17094": 127645, + "17095": 127637, + "17096": 127625, + "17097": 127677, + "17098": 127627, + "17099": 127631, + "17100": 127647, + "17101": 127655, + "17102": 127629, + "17103": 127643, + "17104": 127645, + "17105": 127637, + "17106": 127625, + "17107": 127677, + "17108": 127657, + "17109": 127623, + "17110": 127653, + "17111": 127649, + "17112": 127641, + "17113": 127633, + "17114": 127635, + "17115": 127639, + "17116": 127651, + "17117": 127677, + "17118": 127657, + "17119": 127623, + "17120": 127653, + "17121": 127649, + "17122": 127641, + "17123": 127633, + "17124": 127635, + "17125": 127639, + "17126": 127651, + "17127": 127677, + "17128": 127675, + "17129": 127659, + "17130": 127673, + "17131": 127669, + "17132": 127667, + "17133": 127661, + "17134": 127663, + "17135": 127665, + "17136": 127671, + "17137": 127677, + "17138": 127675, + "17139": 127659, + "17140": 127673, + "17141": 127669, + "17142": 127667, + "17143": 127661, + "17144": 127663, + "17145": 127665, + "17146": 127671, + "17147": 127677, + "14740": 148093, + "14745": 148093, + "14750": 148093, + "14755": 148093, + "14701": 148094, + "14706": 148094, + "14711": 148094, + "14702": 148095, + "14707": 148095, + "14712": 148095, + "14704": 148096, + "14709": 148096, + "14714": 148096, + "14151": 148098, + "14160": 148098, + "14169": 148098, + "14178": 148098, + "14473": 148098, + "14479": 148098, + "14485": 148098, + "14491": 148098, + "14570": 148098, + "14571": 148098, + "14572": 148098, + "14573": 148098, + "14608": 148098, + "14609": 148098, + "14610": 148098, + "14611": 148098, + "14892": 148098, + "14893": 148098, + "14497": 148099, + "14503": 148099, + "14612": 148099, + "14613": 148099, + "14760": 148099, + "14765": 148099, + "14894": 148099, + "14895": 148099, + "14509": 148100, + "14515": 148100, + "14614": 148100, + "14615": 148100, + "14770": 148100, + "14775": 148100, + "14896": 148100, + "14897": 148100, + "14521": 148101, + "14527": 148101, + "14616": 148101, + "14617": 148101, + "14780": 148101, + "14785": 148101, + "14898": 148101, + "14899": 148101, + "14533": 148102, + "14539": 148102, + "14618": 148102, + "14619": 148102, + "14790": 148102, + "14795": 148102, + "14900": 148102, + "14901": 148102, + "14545": 148103, + "14551": 148103, + "14620": 148103, + "14621": 148103, + "14800": 148103, + "14805": 148103, + "14902": 148103, + "14903": 148103, + "14557": 148104, + "14563": 148104, + "14622": 148104, + "14623": 148104, + "14810": 148104, + "14815": 148104, + "14904": 148104, + "14905": 148104, + "14332": 150359, + "14333": 150359, + "14229": 150360, + "14238": 150360, + "14256": 150360, + "14247": 150360, + "14265": 150360, + "14773": 150361, + "14778": 150361, + "14783": 150361, + "14719": 150362, + "14724": 150362, + "14793": 150363, + "14803": 150363, + "14703": 150364, + "14713": 150365, + "14723": 150366, + "14733": 150367, + "14743": 150368, + "14753": 150369, + "14763": 150370, + "8652": 200000, + "8653": 200001, + "8802": 200002, + "8803": 200003, + "8932": 200004, + "8933": 200005, + "9040": 200006, + "9041": 200007, + "9134": 200008, + "9135": 200009, + "9210": 200010, + "9211": 200011, + "9266": 200012, + "9267": 200013, + "9268": 200014, + "9269": 200015, + "9286": 200016, + "9287": 200017, + "9304": 200018, + "9305": 200019, + "9502": 200020, + "9503": 200021, + "9662": 200022, + "9663": 200023, + "9804": 200024, + "9805": 200025, + "9920": 200026, + "9921": 200027, + "10016": 200028, + "10017": 200029, + "10094": 200030, + "10095": 200031, + "10152": 200032, + "10153": 200033, + "10154": 200034, + "10155": 200035, + "10176": 200036, + "10177": 200037, + "10196": 200038, + "10197": 200039, + "10376": 200040, + "10377": 200041, + "10518": 200042, + "10519": 200043, + "10632": 200044, + "10633": 200045, + "10732": 200046, + "10733": 200047, + "10816": 200048, + "10817": 200049, + "10882": 200050, + "10883": 200051, + "10884": 200052, + "10885": 200053, + "10902": 200054, + "10903": 200055, + "10922": 200056, + "10923": 200057, + "11078": 200058, + "11079": 200059, + "11186": 200060, + "11187": 200061, + "11280": 200062, + "11281": 200063, + "11356": 200064, + "11357": 200065, + "11412": 200066, + "11413": 200067, + "11414": 200068, + "11415": 200069, + "11432": 200070, + "11433": 200071, + "11450": 200072, + "11451": 200073, + "11574": 200074, + "11575": 200075, + "11670": 200076, + "11671": 200077, + "11748": 200078, + "11749": 200079, + "11806": 200080, + "11807": 200081, + "11808": 200082, + "11809": 200083, + "11826": 200084, + "11827": 200085, + "11846": 200086, + "11847": 200087, + "11966": 200088, + "11967": 200089, + "12050": 200090, + "12051": 200091, + "12108": 200092, + "12109": 200093, + "12110": 200094, + "12111": 200095, + "12132": 200096, + "12133": 200097, + "12152": 200098, + "12153": 200099, + "12248": 200100, + "12249": 200101, + "12312": 200102, + "12313": 200103, + "12314": 200104, + "12315": 200105, + "12332": 200106, + "12333": 200107, + "12352": 200108, + "12353": 200109, + "12428": 200110, + "12429": 200111, + "12430": 200112, + "12431": 200113, + "12432": 200114, + "12433": 200115, + "12448": 200116, + "12449": 200117, + "12450": 200118, + "12451": 200119, + "12466": 200120, + "12467": 200121, + "12468": 200122, + "12469": 200123, + "12486": 200124, + "12487": 200125, + "12504": 200126, + "12505": 200127, + "12522": 200128, + "12523": 200129, + "14414": 200130, + "13411": 200131, + "13337": 200132, + "13622": 200133, + "13619": 200134, + "13617": 200135, + "13860": 200136, + "13853": 200137, + "13851": 200138, + "14918": 200139, + "14339": 200140, + "14337": 200141, + "14666": 200142, + "14355": 200143, + "14353": 200144, + "14390": 200145, + "14381": 200146, + "14379": 200147, + "14640": 200148, + "14627": 200149, + "14625": 200150, + "14301": 200151, + "14321": 200152, + "14366": 200153, + "12000": 200154, + "11745": 200155, + "9688": 200156, + "9863": 200157, + "12081": 200158, + "9585": 200159, + "14756": 200160, + "14807": 200161, + "14552": 200162, + "14512": 200163, + "14508": 200164, + "14524": 200165, + "14629": 200166, + "14167": 200167, + "14653": 200168, + "14593": 200169, + "14649": 200170, + "14651": 200171, + "14646": 200172, + "14644": 200173, + "14252": 200174, + "14207": 200175, + "14215": 200176, + "14210": 200177, + "14027": 200178, + "14038": 200179, + "14263": 200180, + "14002": 200181, + "13962": 200182, + "13677": 200183, + "12767": 200184, + "13094": 200185, + "12080": 200186, + "12997": 200188, + "13139": 200189, + "12982": 200190, + "13087": 200191, + "14008": 200192, + "9536": 200193, + "9430": 200194, + "13153": 200195, + "13297": 200196, + "13307": 200197, + "13279": 200198, + "14388": 200199, + "11367": 200200, + "14384": 200201, + "9516": 200202, + "14031": 200203, + "13369": 200204, + "13296": 200207, + "13299": 200208, + "14386": 200210, + "13080": 200211, + "12766": 200213, + "13384": 200214, + "9717": 200215, + "9971": 200216, + "13801": 200217, + "14928": 200218, + "14929": 200219, + "14341": 200220, + "14921": 200221, + "14920": 200222, + "13840": 200223, + "14401": 200224, + "14400": 200225, + "14392": 200226, + "14383": 200227, + "14382": 200228, + "14356": 200229, + "14668": 200230, + "14669": 200231, + "13817": 200232, + "14676": 200233, + "14677": 200234, + "14159": 200235, + "14876": 200236, + "14861": 200237, + "14860": 200238, + "14858": 200239, + "14822": 200240, + "14821": 200241, + "14820": 200242, + "14607": 200243, + "14878": 200244, + "14863": 200245, + "14862": 200246, + "14825": 200247, + "13313": 200248, + "13387": 200249, + "12757": 200250, + "11248": 200251, + "12651": 200252, + "9984": 200253, + "9987": 200254, + "10698": 200255, + "10701": 200256, + "12873": 200257, + "11638": 200258, + "11641": 200259, + "13021": 200260, + "11934": 200261, + "11940": 200262, + "11943": 200263, + "11963": 200264, + "13280": 200265, + "13095": 200266, + "11987": 200267, + "13354": 200268, + "13391": 200269, + "13428": 200270, + "13465": 200271, + "7643": 200272, + "7650": 200273, + "7659": 200274, + "7663": 200275, + "7668": 200276, + "7671": 200277, + "7700": 200278, + "7720": 200279, + "7721": 200280, + "7730": 200281, + "7731": 200282, + "7588": 200283, + "7735": 200284, + "7642": 200285, + "7634": 200286, + "7624": 200287, + "7617": 200288, + "7611": 200289, + "7607": 200290, + "7600": 200291, + "7598": 200292, + "7593": 200293, + "7594": 200294, + "7591": 200295, + "7052": 200296, + "7841": 200297, + "7902": 200298, + "7898": 200299, + "7889": 200300, + "7883": 200301, + "7876": 200302, + "7875": 200303, + "7872": 200304, + "7868": 200305, + "7863": 200306, + "7862": 200307, + "7854": 200308, + "7743": 200309, + "7839": 200310, + "7822": 200311, + "7819": 200312, + "7815": 200313, + "7811": 200314, + "7810": 200315, + "7791": 200316, + "7783": 200317, + "7776": 200318, + "7757": 200319, + "7755": 200320, + "7209": 200321, + "7161": 200322, + "7173": 200323, + "7177": 200324, + "7183": 200325, + "7186": 200326, + "7187": 200327, + "7192": 200328, + "7198": 200329, + "7153": 200330, + "7216": 200331, + "7222": 200332, + "7244": 200333, + "7247": 200334, + "7258": 200335, + "7263": 200336, + "7272": 200337, + "7279": 200338, + "7096": 200339, + "7043": 200340, + "7071": 200341, + "7075": 200342, + "7076": 200343, + "7079": 200344, + "7081": 200345, + "7086": 200346, + "7091": 200347, + "7584": 200348, + "7104": 200349, + "7115": 200350, + "7120": 200351, + "7121": 200352, + "7130": 200353, + "7134": 200354, + "7133": 200355, + "7140": 200356, + "7477": 200357, + "7360": 200358, + "7366": 200359, + "7391": 200360, + "7404": 200361, + "7411": 200362, + "7415": 200363, + "7416": 200364, + "7430": 200365, + "7437": 200366, + "7463": 200367, + "7470": 200368, + "7295": 200369, + "7488": 200370, + "7493": 200371, + "7506": 200372, + "7539": 200373, + "7543": 200374, + "7563": 200375, + "7566": 200376, + "7571": 200377, + "7572": 200378, + "7579": 200379, + "7587": 200380, + "7285": 200381, + "7359": 200382, + "7353": 200383, + "7347": 200384, + "7346": 200385, + "7330": 200386, + "7327": 200387, + "7324": 200388, + "7318": 200389, + "7312": 200390, + "7320": 200391, + "7301": 200392, + "9692": 200393, + "9864": 200394, + "11977": 200395, + "8789": 200396, + "9986": 200397, + "11980": 200398, + "10163": 200399, + "10166": 200400, + "10547": 200401, + "12126": 200402, + "12146": 200403, + "10192": 200404, + "10212": 200405, + "10403": 200406, + "10406": 200407, + "10550": 200408, + "10409": 200409, + "9799": 200410, + "10456": 200411, + "10458": 200412, + "9742": 200413, + "9762": 200414, + "10032": 200415, + "10494": 200416, + "9782": 200417, + "10554": 200418, + "9815": 200419, + "9818": 200420, + "10532": 200421, + "10534": 200422, + "10172": 200423, + "10552": 200424, + "11945": 200425, + "11775": 200426, + "11974": 200427, + "12079": 200428, + "11942": 200429, + "11962": 200430, + "12343": 200431, + "11986": 200432, + "12129": 200433, + "10831": 200434, + "10740": 200435, + "10743": 200436, + "10726": 200437, + "10852": 200438, + "10626": 200439, + "10960": 200440, + "10877": 200441, + "11250": 200442, + "10623": 200443, + "9396": 200444, + "9425": 200445, + "9594": 200446, + "9429": 200447, + "9431": 200448, + "10300": 200449, + "9743": 200450, + "9760": 200451, + "9509": 200452, + "9107": 200453, + "9234": 200454, + "8550": 200455, + "9384": 200456, + "9393": 200457, + "9822": 200458, + "8588": 200459, + "9842": 200460, + "10302": 200461, + "9600": 200462, + "9689": 200463, + "10105": 200464, + "9385": 200465, + "8553": 200466, + "11545": 200467, + "9002": 200468, + "8742": 200469, + "12246": 200470, + "12300": 200471, + "13254": 200472, + "11499": 200473, + "13402": 200474, + "13365": 200475, + "11479": 200476, + "12662": 200477, + "12381": 200478, + "8957": 200479, + "12387": 200480, + "12277": 200481, + "12076": 200482, + "11105": 200483, + "13217": 200484, + "10914": 200485, + "10849": 200486, + "12823": 200487, + "10842": 200488, + "12847": 200489, + "10543": 200490, + "10412": 200491, + "9835": 200492, + "13180": 200493, + "12995": 200494, + "12921": 200495, + "12958": 200496, + "11311": 200497, + "13106": 200498, + "13143": 200499, + "8529": 200500, + "8531": 200501, + "9371": 200502, + "8535": 200503, + "8533": 200504, + "8701": 200505, + "9315": 200506, + "9313": 200507, + "9261": 200508, + "8853": 200509, + "8855": 200510, + "9259": 200511, + "9185": 200512, + "8979": 200513, + "8981": 200514, + "9183": 200515, + "9089": 200516, + "9091": 200517, + "14212": 300001, + "14214": 300000, + "14221": 300003, + "14223": 300002, + "14230": 300005, + "14232": 300004, + "14239": 300007, + "14241": 300006, + "14248": 300009, + "14250": 300008, + "14266": 300011, + "14268": 300010, + "14284": 300013, + "14286": 300012 + }, + "patterns": [ + [ + [ + 6, + 6, + 6, + 6, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4 + ], + 220 + ], + [ + [ + 7, + 7, + 7, + 7, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4 + ], + 70 + ], + [ + [ + 9, + 9, + 9, + 9, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4 + ], + 40 + ], + [ + [ + 10, + 10, + 10, + 10, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4 + ], + 80 + ], + [ + [ + 11, + 11, + 11, + 11, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4 + ], + 550 + ], + [ + [ + 12, + 12, + 12, + 12, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4 + ], + 300 + ], + [ + [ + 13, + 13, + 13, + 13, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4 + ], + 140 + ], + [ + [ + 14, + 14, + 14, + 14, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4 + ], + 20 + ], + [ + [ + 15, + 15, + 15, + 15, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4 + ], + 200 + ], + [ + [ + 16, + 16, + 16, + 16, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4 + ], + 10 + ], + [ + [ + 18, + 18, + 18, + 18, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4 + ], + 10 + ], + [ + [ + 19, + 19, + 19, + 19, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4 + ], + 310 + ], + [ + [ + 20, + 20, + 20, + 20, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4 + ], + 190 + ], + [ + [ + 21, + 21, + 21, + 21, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4 + ], + 30 + ], + [ + [ + 22, + 22, + 22, + 22, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4 + ], + 410 + ], + [ + [ + 23, + 23, + 23, + 23, + 4, + 4, + 4, + 4, + 4, + 4, + 4 + ], + 3690 + ], + [ + [ + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4, + 4 + ], + 739 + ], + [ + [ + 24, + 24, + 24, + 24, + 24 + ], + 110080 + ] + ], + "segments": { + "4": [ + [ + 0, + 5280, + 0, + 0, + [ + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27 + ] + ], + [ + 5280, + 6890, + 1, + 220, + [ + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26 + ] + ], + [ + 6890, + 7730, + 2, + 290, + [ + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24 + ] + ], + [ + 7730, + 9330, + 3, + 330, + [ + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23 + ] + ], + [ + 9330, + 19780, + 4, + 410, + [ + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22 + ] + ], + [ + 19780, + 25180, + 5, + 960, + [ + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21 + ] + ], + [ + 25180, + 27560, + 6, + 1260, + [ + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20 + ] + ], + [ + 27560, + 27880, + 7, + 1400, + [ + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19 + ] + ], + [ + 27880, + 30880, + 8, + 1420, + [ + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18 + ] + ], + [ + 30880, + 31020, + 9, + 1620, + [ + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17 + ] + ], + [ + 31020, + 31140, + 10, + 1630, + [ + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ] + ], + [ + 31140, + 34550, + 11, + 1640, + [ + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14 + ] + ], + [ + 34550, + 36450, + 12, + 1950, + [ + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13 + ] + ], + [ + 36450, + 36720, + 13, + 2140, + [ + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12 + ] + ], + [ + 36720, + 40000, + 14, + 2170, + [ + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11 + ] + ], + [ + 40000, + 65830, + 15, + 2580, + [ + 4, + 5, + 6, + 7, + 8, + 9, + 10 + ] + ], + [ + 65830, + 88000, + 16, + 6270, + [ + 0, + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12, + 13, + 14, + 15, + 16, + 17, + 18, + 19, + 20, + 21, + 22, + 23, + 24, + 25, + 26, + 27, + 28, + 29 + ] + ] + ], + "6": [ + [ + 0, + 880, + 0, + 0, + [ + 0, + 1, + 2, + 3 + ] + ] + ], + "7": [ + [ + 0, + 280, + 1, + 220, + [ + 0, + 1, + 2, + 3 + ] + ] + ], + "9": [ + [ + 0, + 160, + 2, + 290, + [ + 0, + 1, + 2, + 3 + ] + ] + ], + "10": [ + [ + 0, + 320, + 3, + 330, + [ + 0, + 1, + 2, + 3 + ] + ] + ], + "11": [ + [ + 0, + 2200, + 4, + 410, + [ + 0, + 1, + 2, + 3 + ] + ] + ], + "12": [ + [ + 0, + 1200, + 5, + 960, + [ + 0, + 1, + 2, + 3 + ] + ] + ], + "13": [ + [ + 0, + 560, + 6, + 1260, + [ + 0, + 1, + 2, + 3 + ] + ] + ], + "14": [ + [ + 0, + 80, + 7, + 1400, + [ + 0, + 1, + 2, + 3 + ] + ] + ], + "15": [ + [ + 0, + 800, + 8, + 1420, + [ + 0, + 1, + 2, + 3 + ] + ] + ], + "16": [ + [ + 0, + 40, + 9, + 1620, + [ + 0, + 1, + 2, + 3 + ] + ] + ], + "18": [ + [ + 0, + 40, + 10, + 1630, + [ + 0, + 1, + 2, + 3 + ] + ] + ], + "19": [ + [ + 0, + 1240, + 11, + 1640, + [ + 0, + 1, + 2, + 3 + ] + ] + ], + "20": [ + [ + 0, + 760, + 12, + 1950, + [ + 0, + 1, + 2, + 3 + ] + ] + ], + "21": [ + [ + 0, + 120, + 13, + 2140, + [ + 0, + 1, + 2, + 3 + ] + ] + ], + "22": [ + [ + 0, + 1640, + 14, + 2170, + [ + 0, + 1, + 2, + 3 + ] + ] + ], + "23": [ + [ + 0, + 14760, + 15, + 2580, + [ + 0, + 1, + 2, + 3 + ] + ] + ], + "24": [ + [ + 0, + 550400, + 17, + 7009, + [ + 0, + 1, + 2, + 3, + 4 + ] + ] + ] + }, + "helper_occurrences": 3317400, + "local_registers": 20107, + "external_work_local": 20107, + "external_work_family": 867045, + "data_families": 281600, + "banks_per_stage": 117089, + "live_families": 867045, + "assignment": "q=role_index*40+replica; select residual-rank segment [lo,hi); (bank_offset,within)=divmod(q-lo,len(blocks)); family=281600+117089*stage+bank_start+bank_offset; block=blocks[within]; offset=sum(pattern widths before block)", + "data_route": "stage0:(family,class(d)); stage>0:(family,right(d,rho(stage,port)))", + "helper_route": "(family,right(d,tau(stage),inverse(normalizer(stage,pattern,block,frame))))", + "normalizer": "scalar=(block+1); exact permutation from stage window residual coordinates to block; inverse chart identified by source-bound gauge frame. Apply factors right-to-left. Cover arithmetic is not reduced modulo 2.", + "phase_schedule": [ + [ + "stage", + 0, + 0, + "all_cover_classes" + ], + [ + "stage", + 0, + 1, + "all_cover_classes" + ], + [ + "stage", + 0, + 2, + "all_cover_classes" + ], + [ + "stage", + 0, + 3, + "all_cover_classes" + ], + [ + "stage", + 0, + 4, + "all_cover_classes" + ], + [ + "stage", + 0, + 5, + "all_cover_classes" + ], + [ + "stage", + 0, + 6, + "all_cover_classes" + ], + [ + "stage", + 0, + 7, + "all_cover_classes" + ], + [ + "stage", + 0, + 8, + "all_cover_classes" + ], + [ + "stage", + 0, + 9, + "all_cover_classes" + ], + [ + "stage", + 0, + 10, + "all_cover_classes" + ], + [ + "stage", + 0, + 11, + "all_cover_classes" + ], + [ + "stage", + 0, + 12, + "all_cover_classes" + ], + [ + "stage", + 0, + 13, + "all_cover_classes" + ], + [ + "stage", + 0, + 14, + "all_cover_classes" + ], + [ + "stage", + 0, + 15, + "all_cover_classes" + ], + [ + "stage", + 0, + 16, + "all_cover_classes" + ], + [ + "stage", + 0, + 17, + "all_cover_classes" + ], + [ + "stage", + 0, + 18, + "all_cover_classes" + ], + [ + "stage", + 0, + 19, + "all_cover_classes" + ], + [ + "stage", + 0, + 20, + "all_cover_classes" + ], + [ + "stage", + 0, + 21, + "all_cover_classes" + ], + [ + "stage", + 0, + 22, + "all_cover_classes" + ], + [ + "stage", + 0, + 23, + "all_cover_classes" + ], + [ + "stage", + 0, + 24, + "all_cover_classes" + ], + [ + "stage", + 0, + 25, + "all_cover_classes" + ], + [ + "stage", + 0, + 26, + "all_cover_classes" + ], + [ + "stage", + 0, + 27, + "all_cover_classes" + ], + [ + "stage", + 0, + 28, + "all_cover_classes" + ], + [ + "stage", + 0, + 29, + "all_cover_classes" + ], + [ + "stage", + 0, + 30, + "all_cover_classes" + ], + [ + "stage", + 0, + 31, + "all_cover_classes" + ], + [ + "stage", + 0, + 32, + "all_cover_classes" + ], + [ + "stage", + 0, + 33, + "all_cover_classes" + ], + [ + "stage", + 0, + 34, + "all_cover_classes" + ], + [ + "stage", + 0, + 35, + "all_cover_classes" + ], + [ + "stage", + 0, + 36, + "all_cover_classes" + ], + [ + "stage", + 0, + 37, + "all_cover_classes" + ], + [ + "stage", + 0, + 38, + "all_cover_classes" + ], + [ + "stage", + 0, + 39, + "all_cover_classes" + ], + [ + "stage", + 1, + 0, + "all_cover_classes" + ], + [ + "stage", + 1, + 1, + "all_cover_classes" + ], + [ + "stage", + 1, + 2, + "all_cover_classes" + ], + [ + "stage", + 1, + 3, + "all_cover_classes" + ], + [ + "stage", + 1, + 4, + "all_cover_classes" + ], + [ + "stage", + 1, + 5, + "all_cover_classes" + ], + [ + "stage", + 1, + 6, + "all_cover_classes" + ], + [ + "stage", + 1, + 7, + "all_cover_classes" + ], + [ + "stage", + 1, + 8, + "all_cover_classes" + ], + [ + "stage", + 1, + 9, + "all_cover_classes" + ], + [ + "stage", + 1, + 10, + "all_cover_classes" + ], + [ + "stage", + 1, + 11, + "all_cover_classes" + ], + [ + "stage", + 1, + 12, + "all_cover_classes" + ], + [ + "stage", + 1, + 13, + "all_cover_classes" + ], + [ + "stage", + 1, + 14, + "all_cover_classes" + ], + [ + "stage", + 1, + 15, + "all_cover_classes" + ], + [ + "stage", + 1, + 16, + "all_cover_classes" + ], + [ + "stage", + 1, + 17, + "all_cover_classes" + ], + [ + "stage", + 1, + 18, + "all_cover_classes" + ], + [ + "stage", + 1, + 19, + "all_cover_classes" + ], + [ + "stage", + 1, + 20, + "all_cover_classes" + ], + [ + "stage", + 1, + 21, + "all_cover_classes" + ], + [ + "stage", + 1, + 22, + "all_cover_classes" + ], + [ + "stage", + 1, + 23, + "all_cover_classes" + ], + [ + "stage", + 1, + 24, + "all_cover_classes" + ], + [ + "stage", + 1, + 25, + "all_cover_classes" + ], + [ + "stage", + 1, + 26, + "all_cover_classes" + ], + [ + "stage", + 1, + 27, + "all_cover_classes" + ], + [ + "stage", + 1, + 28, + "all_cover_classes" + ], + [ + "stage", + 1, + 29, + "all_cover_classes" + ], + [ + "stage", + 1, + 30, + "all_cover_classes" + ], + [ + "stage", + 1, + 31, + "all_cover_classes" + ], + [ + "stage", + 1, + 32, + "all_cover_classes" + ], + [ + "stage", + 1, + 33, + "all_cover_classes" + ], + [ + "stage", + 1, + 34, + "all_cover_classes" + ], + [ + "stage", + 1, + 35, + "all_cover_classes" + ], + [ + "stage", + 1, + 36, + "all_cover_classes" + ], + [ + "stage", + 1, + 37, + "all_cover_classes" + ], + [ + "stage", + 1, + 38, + "all_cover_classes" + ], + [ + "stage", + 1, + 39, + "all_cover_classes" + ], + [ + "idle", + 1, + 0, + "all_cover_classes" + ], + [ + "bridge", + 1, + 0, + "all_cover_classes" + ], + [ + "idle", + 1, + 1, + "all_cover_classes" + ], + [ + "bridge", + 1, + 1, + "all_cover_classes" + ], + [ + "idle", + 1, + 2, + "all_cover_classes" + ], + [ + "bridge", + 1, + 2, + "all_cover_classes" + ], + [ + "idle", + 1, + 3, + "all_cover_classes" + ], + [ + "bridge", + 1, + 3, + "all_cover_classes" + ], + [ + "idle", + 1, + 4, + "all_cover_classes" + ], + [ + "bridge", + 1, + 4, + "all_cover_classes" + ], + [ + "idle", + 1, + 5, + "all_cover_classes" + ], + [ + "bridge", + 1, + 5, + "all_cover_classes" + ], + [ + "idle", + 1, + 6, + "all_cover_classes" + ], + [ + "bridge", + 1, + 6, + "all_cover_classes" + ], + [ + "idle", + 1, + 7, + "all_cover_classes" + ], + [ + "bridge", + 1, + 7, + "all_cover_classes" + ], + [ + "idle", + 1, + 8, + "all_cover_classes" + ], + [ + "bridge", + 1, + 8, + "all_cover_classes" + ], + [ + "idle", + 1, + 9, + "all_cover_classes" + ], + [ + "bridge", + 1, + 9, + "all_cover_classes" + ], + [ + "idle", + 1, + 10, + "all_cover_classes" + ], + [ + "bridge", + 1, + 10, + "all_cover_classes" + ], + [ + "idle", + 1, + 11, + "all_cover_classes" + ], + [ + "bridge", + 1, + 11, + "all_cover_classes" + ], + [ + "idle", + 1, + 12, + "all_cover_classes" + ], + [ + "bridge", + 1, + 12, + "all_cover_classes" + ], + [ + "idle", + 1, + 13, + "all_cover_classes" + ], + [ + "bridge", + 1, + 13, + "all_cover_classes" + ], + [ + "idle", + 1, + 14, + "all_cover_classes" + ], + [ + "bridge", + 1, + 14, + "all_cover_classes" + ], + [ + "idle", + 1, + 15, + "all_cover_classes" + ], + [ + "bridge", + 1, + 15, + "all_cover_classes" + ], + [ + "idle", + 1, + 16, + "all_cover_classes" + ], + [ + "bridge", + 1, + 16, + "all_cover_classes" + ], + [ + "idle", + 1, + 17, + "all_cover_classes" + ], + [ + "bridge", + 1, + 17, + "all_cover_classes" + ], + [ + "idle", + 1, + 18, + "all_cover_classes" + ], + [ + "bridge", + 1, + 18, + "all_cover_classes" + ], + [ + "idle", + 1, + 19, + "all_cover_classes" + ], + [ + "bridge", + 1, + 19, + "all_cover_classes" + ], + [ + "idle", + 1, + 20, + "all_cover_classes" + ], + [ + "bridge", + 1, + 20, + "all_cover_classes" + ], + [ + "idle", + 1, + 21, + "all_cover_classes" + ], + [ + "bridge", + 1, + 21, + "all_cover_classes" + ], + [ + "idle", + 1, + 22, + "all_cover_classes" + ], + [ + "bridge", + 1, + 22, + "all_cover_classes" + ], + [ + "idle", + 1, + 23, + "all_cover_classes" + ], + [ + "bridge", + 1, + 23, + "all_cover_classes" + ], + [ + "idle", + 1, + 24, + "all_cover_classes" + ], + [ + "bridge", + 1, + 24, + "all_cover_classes" + ], + [ + "idle", + 1, + 25, + "all_cover_classes" + ], + [ + "bridge", + 1, + 25, + "all_cover_classes" + ], + [ + "idle", + 1, + 26, + "all_cover_classes" + ], + [ + "bridge", + 1, + 26, + "all_cover_classes" + ], + [ + "idle", + 1, + 27, + "all_cover_classes" + ], + [ + "bridge", + 1, + 27, + "all_cover_classes" + ], + [ + "idle", + 1, + 28, + "all_cover_classes" + ], + [ + "bridge", + 1, + 28, + "all_cover_classes" + ], + [ + "idle", + 1, + 29, + "all_cover_classes" + ], + [ + "bridge", + 1, + 29, + "all_cover_classes" + ], + [ + "idle", + 1, + 30, + "all_cover_classes" + ], + [ + "bridge", + 1, + 30, + "all_cover_classes" + ], + [ + "idle", + 1, + 31, + "all_cover_classes" + ], + [ + "bridge", + 1, + 31, + "all_cover_classes" + ], + [ + "idle", + 1, + 32, + "all_cover_classes" + ], + [ + "bridge", + 1, + 32, + "all_cover_classes" + ], + [ + "idle", + 1, + 33, + "all_cover_classes" + ], + [ + "bridge", + 1, + 33, + "all_cover_classes" + ], + [ + "idle", + 1, + 34, + "all_cover_classes" + ], + [ + "bridge", + 1, + 34, + "all_cover_classes" + ], + [ + "idle", + 1, + 35, + "all_cover_classes" + ], + [ + "bridge", + 1, + 35, + "all_cover_classes" + ], + [ + "idle", + 1, + 36, + "all_cover_classes" + ], + [ + "bridge", + 1, + 36, + "all_cover_classes" + ], + [ + "idle", + 1, + 37, + "all_cover_classes" + ], + [ + "bridge", + 1, + 37, + "all_cover_classes" + ], + [ + "idle", + 1, + 38, + "all_cover_classes" + ], + [ + "bridge", + 1, + 38, + "all_cover_classes" + ], + [ + "idle", + 1, + 39, + "all_cover_classes" + ], + [ + "bridge", + 1, + 39, + "all_cover_classes" + ], + [ + "stage", + 2, + 0, + "all_cover_classes" + ], + [ + "stage", + 2, + 1, + "all_cover_classes" + ], + [ + "stage", + 2, + 2, + "all_cover_classes" + ], + [ + "stage", + 2, + 3, + "all_cover_classes" + ], + [ + "stage", + 2, + 4, + "all_cover_classes" + ], + [ + "stage", + 2, + 5, + "all_cover_classes" + ], + [ + "stage", + 2, + 6, + "all_cover_classes" + ], + [ + "stage", + 2, + 7, + "all_cover_classes" + ], + [ + "stage", + 2, + 8, + "all_cover_classes" + ], + [ + "stage", + 2, + 9, + "all_cover_classes" + ], + [ + "stage", + 2, + 10, + "all_cover_classes" + ], + [ + "stage", + 2, + 11, + "all_cover_classes" + ], + [ + "stage", + 2, + 12, + "all_cover_classes" + ], + [ + "stage", + 2, + 13, + "all_cover_classes" + ], + [ + "stage", + 2, + 14, + "all_cover_classes" + ], + [ + "stage", + 2, + 15, + "all_cover_classes" + ], + [ + "stage", + 2, + 16, + "all_cover_classes" + ], + [ + "stage", + 2, + 17, + "all_cover_classes" + ], + [ + "stage", + 2, + 18, + "all_cover_classes" + ], + [ + "stage", + 2, + 19, + "all_cover_classes" + ], + [ + "stage", + 2, + 20, + "all_cover_classes" + ], + [ + "stage", + 2, + 21, + "all_cover_classes" + ], + [ + "stage", + 2, + 22, + "all_cover_classes" + ], + [ + "stage", + 2, + 23, + "all_cover_classes" + ], + [ + "stage", + 2, + 24, + "all_cover_classes" + ], + [ + "stage", + 2, + 25, + "all_cover_classes" + ], + [ + "stage", + 2, + 26, + "all_cover_classes" + ], + [ + "stage", + 2, + 27, + "all_cover_classes" + ], + [ + "stage", + 2, + 28, + "all_cover_classes" + ], + [ + "stage", + 2, + 29, + "all_cover_classes" + ], + [ + "stage", + 2, + 30, + "all_cover_classes" + ], + [ + "stage", + 2, + 31, + "all_cover_classes" + ], + [ + "stage", + 2, + 32, + "all_cover_classes" + ], + [ + "stage", + 2, + 33, + "all_cover_classes" + ], + [ + "stage", + 2, + 34, + "all_cover_classes" + ], + [ + "stage", + 2, + 35, + "all_cover_classes" + ], + [ + "stage", + 2, + 36, + "all_cover_classes" + ], + [ + "stage", + 2, + 37, + "all_cover_classes" + ], + [ + "stage", + 2, + 38, + "all_cover_classes" + ], + [ + "stage", + 2, + 39, + "all_cover_classes" + ], + [ + "idle", + 2, + 0, + "all_cover_classes" + ], + [ + "bridge", + 2, + 0, + "all_cover_classes" + ], + [ + "idle", + 2, + 1, + "all_cover_classes" + ], + [ + "bridge", + 2, + 1, + "all_cover_classes" + ], + [ + "idle", + 2, + 2, + "all_cover_classes" + ], + [ + "bridge", + 2, + 2, + "all_cover_classes" + ], + [ + "idle", + 2, + 3, + "all_cover_classes" + ], + [ + "bridge", + 2, + 3, + "all_cover_classes" + ], + [ + "idle", + 2, + 4, + "all_cover_classes" + ], + [ + "bridge", + 2, + 4, + "all_cover_classes" + ], + [ + "idle", + 2, + 5, + "all_cover_classes" + ], + [ + "bridge", + 2, + 5, + "all_cover_classes" + ], + [ + "idle", + 2, + 6, + "all_cover_classes" + ], + [ + "bridge", + 2, + 6, + "all_cover_classes" + ], + [ + "idle", + 2, + 7, + "all_cover_classes" + ], + [ + "bridge", + 2, + 7, + "all_cover_classes" + ], + [ + "idle", + 2, + 8, + "all_cover_classes" + ], + [ + "bridge", + 2, + 8, + "all_cover_classes" + ], + [ + "idle", + 2, + 9, + "all_cover_classes" + ], + [ + "bridge", + 2, + 9, + "all_cover_classes" + ], + [ + "idle", + 2, + 10, + "all_cover_classes" + ], + [ + "bridge", + 2, + 10, + "all_cover_classes" + ], + [ + "idle", + 2, + 11, + "all_cover_classes" + ], + [ + "bridge", + 2, + 11, + "all_cover_classes" + ], + [ + "idle", + 2, + 12, + "all_cover_classes" + ], + [ + "bridge", + 2, + 12, + "all_cover_classes" + ], + [ + "idle", + 2, + 13, + "all_cover_classes" + ], + [ + "bridge", + 2, + 13, + "all_cover_classes" + ], + [ + "idle", + 2, + 14, + "all_cover_classes" + ], + [ + "bridge", + 2, + 14, + "all_cover_classes" + ], + [ + "idle", + 2, + 15, + "all_cover_classes" + ], + [ + "bridge", + 2, + 15, + "all_cover_classes" + ], + [ + "idle", + 2, + 16, + "all_cover_classes" + ], + [ + "bridge", + 2, + 16, + "all_cover_classes" + ], + [ + "idle", + 2, + 17, + "all_cover_classes" + ], + [ + "bridge", + 2, + 17, + "all_cover_classes" + ], + [ + "idle", + 2, + 18, + "all_cover_classes" + ], + [ + "bridge", + 2, + 18, + "all_cover_classes" + ], + [ + "idle", + 2, + 19, + "all_cover_classes" + ], + [ + "bridge", + 2, + 19, + "all_cover_classes" + ], + [ + "idle", + 2, + 20, + "all_cover_classes" + ], + [ + "bridge", + 2, + 20, + "all_cover_classes" + ], + [ + "idle", + 2, + 21, + "all_cover_classes" + ], + [ + "bridge", + 2, + 21, + "all_cover_classes" + ], + [ + "idle", + 2, + 22, + "all_cover_classes" + ], + [ + "bridge", + 2, + 22, + "all_cover_classes" + ], + [ + "idle", + 2, + 23, + "all_cover_classes" + ], + [ + "bridge", + 2, + 23, + "all_cover_classes" + ], + [ + "idle", + 2, + 24, + "all_cover_classes" + ], + [ + "bridge", + 2, + 24, + "all_cover_classes" + ], + [ + "idle", + 2, + 25, + "all_cover_classes" + ], + [ + "bridge", + 2, + 25, + "all_cover_classes" + ], + [ + "idle", + 2, + 26, + "all_cover_classes" + ], + [ + "bridge", + 2, + 26, + "all_cover_classes" + ], + [ + "idle", + 2, + 27, + "all_cover_classes" + ], + [ + "bridge", + 2, + 27, + "all_cover_classes" + ], + [ + "idle", + 2, + 28, + "all_cover_classes" + ], + [ + "bridge", + 2, + 28, + "all_cover_classes" + ], + [ + "idle", + 2, + 29, + "all_cover_classes" + ], + [ + "bridge", + 2, + 29, + "all_cover_classes" + ], + [ + "idle", + 2, + 30, + "all_cover_classes" + ], + [ + "bridge", + 2, + 30, + "all_cover_classes" + ], + [ + "idle", + 2, + 31, + "all_cover_classes" + ], + [ + "bridge", + 2, + 31, + "all_cover_classes" + ], + [ + "idle", + 2, + 32, + "all_cover_classes" + ], + [ + "bridge", + 2, + 32, + "all_cover_classes" + ], + [ + "idle", + 2, + 33, + "all_cover_classes" + ], + [ + "bridge", + 2, + 33, + "all_cover_classes" + ], + [ + "idle", + 2, + 34, + "all_cover_classes" + ], + [ + "bridge", + 2, + 34, + "all_cover_classes" + ], + [ + "idle", + 2, + 35, + "all_cover_classes" + ], + [ + "bridge", + 2, + 35, + "all_cover_classes" + ], + [ + "idle", + 2, + 36, + "all_cover_classes" + ], + [ + "bridge", + 2, + 36, + "all_cover_classes" + ], + [ + "idle", + 2, + 37, + "all_cover_classes" + ], + [ + "bridge", + 2, + 37, + "all_cover_classes" + ], + [ + "idle", + 2, + 38, + "all_cover_classes" + ], + [ + "bridge", + 2, + 38, + "all_cover_classes" + ], + [ + "idle", + 2, + 39, + "all_cover_classes" + ], + [ + "bridge", + 2, + 39, + "all_cover_classes" + ], + [ + "stage", + 3, + 0, + "all_cover_classes" + ], + [ + "stage", + 3, + 1, + "all_cover_classes" + ], + [ + "stage", + 3, + 2, + "all_cover_classes" + ], + [ + "stage", + 3, + 3, + "all_cover_classes" + ], + [ + "stage", + 3, + 4, + "all_cover_classes" + ], + [ + "stage", + 3, + 5, + "all_cover_classes" + ], + [ + "stage", + 3, + 6, + "all_cover_classes" + ], + [ + "stage", + 3, + 7, + "all_cover_classes" + ], + [ + "stage", + 3, + 8, + "all_cover_classes" + ], + [ + "stage", + 3, + 9, + "all_cover_classes" + ], + [ + "stage", + 3, + 10, + "all_cover_classes" + ], + [ + "stage", + 3, + 11, + "all_cover_classes" + ], + [ + "stage", + 3, + 12, + "all_cover_classes" + ], + [ + "stage", + 3, + 13, + "all_cover_classes" + ], + [ + "stage", + 3, + 14, + "all_cover_classes" + ], + [ + "stage", + 3, + 15, + "all_cover_classes" + ], + [ + "stage", + 3, + 16, + "all_cover_classes" + ], + [ + "stage", + 3, + 17, + "all_cover_classes" + ], + [ + "stage", + 3, + 18, + "all_cover_classes" + ], + [ + "stage", + 3, + 19, + "all_cover_classes" + ], + [ + "stage", + 3, + 20, + "all_cover_classes" + ], + [ + "stage", + 3, + 21, + "all_cover_classes" + ], + [ + "stage", + 3, + 22, + "all_cover_classes" + ], + [ + "stage", + 3, + 23, + "all_cover_classes" + ], + [ + "stage", + 3, + 24, + "all_cover_classes" + ], + [ + "stage", + 3, + 25, + "all_cover_classes" + ], + [ + "stage", + 3, + 26, + "all_cover_classes" + ], + [ + "stage", + 3, + 27, + "all_cover_classes" + ], + [ + "stage", + 3, + 28, + "all_cover_classes" + ], + [ + "stage", + 3, + 29, + "all_cover_classes" + ], + [ + "stage", + 3, + 30, + "all_cover_classes" + ], + [ + "stage", + 3, + 31, + "all_cover_classes" + ], + [ + "stage", + 3, + 32, + "all_cover_classes" + ], + [ + "stage", + 3, + 33, + "all_cover_classes" + ], + [ + "stage", + 3, + 34, + "all_cover_classes" + ], + [ + "stage", + 3, + 35, + "all_cover_classes" + ], + [ + "stage", + 3, + 36, + "all_cover_classes" + ], + [ + "stage", + 3, + 37, + "all_cover_classes" + ], + [ + "stage", + 3, + 38, + "all_cover_classes" + ], + [ + "stage", + 3, + 39, + "all_cover_classes" + ], + [ + "stage", + 4, + 0, + "all_cover_classes" + ], + [ + "stage", + 4, + 1, + "all_cover_classes" + ], + [ + "stage", + 4, + 2, + "all_cover_classes" + ], + [ + "stage", + 4, + 3, + "all_cover_classes" + ], + [ + "stage", + 4, + 4, + "all_cover_classes" + ], + [ + "stage", + 4, + 5, + "all_cover_classes" + ], + [ + "stage", + 4, + 6, + "all_cover_classes" + ], + [ + "stage", + 4, + 7, + "all_cover_classes" + ], + [ + "stage", + 4, + 8, + "all_cover_classes" + ], + [ + "stage", + 4, + 9, + "all_cover_classes" + ], + [ + "stage", + 4, + 10, + "all_cover_classes" + ], + [ + "stage", + 4, + 11, + "all_cover_classes" + ], + [ + "stage", + 4, + 12, + "all_cover_classes" + ], + [ + "stage", + 4, + 13, + "all_cover_classes" + ], + [ + "stage", + 4, + 14, + "all_cover_classes" + ], + [ + "stage", + 4, + 15, + "all_cover_classes" + ], + [ + "stage", + 4, + 16, + "all_cover_classes" + ], + [ + "stage", + 4, + 17, + "all_cover_classes" + ], + [ + "stage", + 4, + 18, + "all_cover_classes" + ], + [ + "stage", + 4, + 19, + "all_cover_classes" + ], + [ + "stage", + 4, + 20, + "all_cover_classes" + ], + [ + "stage", + 4, + 21, + "all_cover_classes" + ], + [ + "stage", + 4, + 22, + "all_cover_classes" + ], + [ + "stage", + 4, + 23, + "all_cover_classes" + ], + [ + "stage", + 4, + 24, + "all_cover_classes" + ], + [ + "stage", + 4, + 25, + "all_cover_classes" + ], + [ + "stage", + 4, + 26, + "all_cover_classes" + ], + [ + "stage", + 4, + 27, + "all_cover_classes" + ], + [ + "stage", + 4, + 28, + "all_cover_classes" + ], + [ + "stage", + 4, + 29, + "all_cover_classes" + ], + [ + "stage", + 4, + 30, + "all_cover_classes" + ], + [ + "stage", + 4, + 31, + "all_cover_classes" + ], + [ + "stage", + 4, + 32, + "all_cover_classes" + ], + [ + "stage", + 4, + 33, + "all_cover_classes" + ], + [ + "stage", + 4, + 34, + "all_cover_classes" + ], + [ + "stage", + 4, + 35, + "all_cover_classes" + ], + [ + "stage", + 4, + 36, + "all_cover_classes" + ], + [ + "stage", + 4, + 37, + "all_cover_classes" + ], + [ + "stage", + 4, + 38, + "all_cover_classes" + ], + [ + "stage", + 4, + 39, + "all_cover_classes" + ], + [ + "idle", + 4, + 0, + "all_cover_classes" + ], + [ + "bridge", + 4, + 0, + "all_cover_classes" + ], + [ + "idle", + 4, + 1, + "all_cover_classes" + ], + [ + "bridge", + 4, + 1, + "all_cover_classes" + ], + [ + "idle", + 4, + 2, + "all_cover_classes" + ], + [ + "bridge", + 4, + 2, + "all_cover_classes" + ], + [ + "idle", + 4, + 3, + "all_cover_classes" + ], + [ + "bridge", + 4, + 3, + "all_cover_classes" + ], + [ + "idle", + 4, + 4, + "all_cover_classes" + ], + [ + "bridge", + 4, + 4, + "all_cover_classes" + ], + [ + "idle", + 4, + 5, + "all_cover_classes" + ], + [ + "bridge", + 4, + 5, + "all_cover_classes" + ], + [ + "idle", + 4, + 6, + "all_cover_classes" + ], + [ + "bridge", + 4, + 6, + "all_cover_classes" + ], + [ + "idle", + 4, + 7, + "all_cover_classes" + ], + [ + "bridge", + 4, + 7, + "all_cover_classes" + ], + [ + "idle", + 4, + 8, + "all_cover_classes" + ], + [ + "bridge", + 4, + 8, + "all_cover_classes" + ], + [ + "idle", + 4, + 9, + "all_cover_classes" + ], + [ + "bridge", + 4, + 9, + "all_cover_classes" + ], + [ + "idle", + 4, + 10, + "all_cover_classes" + ], + [ + "bridge", + 4, + 10, + "all_cover_classes" + ], + [ + "idle", + 4, + 11, + "all_cover_classes" + ], + [ + "bridge", + 4, + 11, + "all_cover_classes" + ], + [ + "idle", + 4, + 12, + "all_cover_classes" + ], + [ + "bridge", + 4, + 12, + "all_cover_classes" + ], + [ + "idle", + 4, + 13, + "all_cover_classes" + ], + [ + "bridge", + 4, + 13, + "all_cover_classes" + ], + [ + "idle", + 4, + 14, + "all_cover_classes" + ], + [ + "bridge", + 4, + 14, + "all_cover_classes" + ], + [ + "idle", + 4, + 15, + "all_cover_classes" + ], + [ + "bridge", + 4, + 15, + "all_cover_classes" + ], + [ + "idle", + 4, + 16, + "all_cover_classes" + ], + [ + "bridge", + 4, + 16, + "all_cover_classes" + ], + [ + "idle", + 4, + 17, + "all_cover_classes" + ], + [ + "bridge", + 4, + 17, + "all_cover_classes" + ], + [ + "idle", + 4, + 18, + "all_cover_classes" + ], + [ + "bridge", + 4, + 18, + "all_cover_classes" + ], + [ + "idle", + 4, + 19, + "all_cover_classes" + ], + [ + "bridge", + 4, + 19, + "all_cover_classes" + ], + [ + "idle", + 4, + 20, + "all_cover_classes" + ], + [ + "bridge", + 4, + 20, + "all_cover_classes" + ], + [ + "idle", + 4, + 21, + "all_cover_classes" + ], + [ + "bridge", + 4, + 21, + "all_cover_classes" + ], + [ + "idle", + 4, + 22, + "all_cover_classes" + ], + [ + "bridge", + 4, + 22, + "all_cover_classes" + ], + [ + "idle", + 4, + 23, + "all_cover_classes" + ], + [ + "bridge", + 4, + 23, + "all_cover_classes" + ], + [ + "idle", + 4, + 24, + "all_cover_classes" + ], + [ + "bridge", + 4, + 24, + "all_cover_classes" + ], + [ + "idle", + 4, + 25, + "all_cover_classes" + ], + [ + "bridge", + 4, + 25, + "all_cover_classes" + ], + [ + "idle", + 4, + 26, + "all_cover_classes" + ], + [ + "bridge", + 4, + 26, + "all_cover_classes" + ], + [ + "idle", + 4, + 27, + "all_cover_classes" + ], + [ + "bridge", + 4, + 27, + "all_cover_classes" + ], + [ + "idle", + 4, + 28, + "all_cover_classes" + ], + [ + "bridge", + 4, + 28, + "all_cover_classes" + ], + [ + "idle", + 4, + 29, + "all_cover_classes" + ], + [ + "bridge", + 4, + 29, + "all_cover_classes" + ], + [ + "idle", + 4, + 30, + "all_cover_classes" + ], + [ + "bridge", + 4, + 30, + "all_cover_classes" + ], + [ + "idle", + 4, + 31, + "all_cover_classes" + ], + [ + "bridge", + 4, + 31, + "all_cover_classes" + ], + [ + "idle", + 4, + 32, + "all_cover_classes" + ], + [ + "bridge", + 4, + 32, + "all_cover_classes" + ], + [ + "idle", + 4, + 33, + "all_cover_classes" + ], + [ + "bridge", + 4, + 33, + "all_cover_classes" + ], + [ + "idle", + 4, + 34, + "all_cover_classes" + ], + [ + "bridge", + 4, + 34, + "all_cover_classes" + ], + [ + "idle", + 4, + 35, + "all_cover_classes" + ], + [ + "bridge", + 4, + 35, + "all_cover_classes" + ], + [ + "idle", + 4, + 36, + "all_cover_classes" + ], + [ + "bridge", + 4, + 36, + "all_cover_classes" + ], + [ + "idle", + 4, + 37, + "all_cover_classes" + ], + [ + "bridge", + 4, + 37, + "all_cover_classes" + ], + [ + "idle", + 4, + 38, + "all_cover_classes" + ], + [ + "bridge", + 4, + 38, + "all_cover_classes" + ], + [ + "idle", + 4, + 39, + "all_cover_classes" + ], + [ + "bridge", + 4, + 39, + "all_cover_classes" + ], + [ + "terminal_exchange", + 0, + "all_cover_classes" + ], + [ + "terminal_exchange", + 1, + "all_cover_classes" + ], + [ + "terminal_exchange", + 2, + "all_cover_classes" + ], + [ + "terminal_exchange", + 3, + "all_cover_classes" + ], + [ + "terminal_exchange", + 4, + "all_cover_classes" + ], + [ + "terminal_exchange", + 5, + "all_cover_classes" + ], + [ + "terminal_exchange", + 6, + "all_cover_classes" + ], + [ + "terminal_exchange", + 7, + "all_cover_classes" + ], + [ + "terminal_exchange", + 8, + "all_cover_classes" + ], + [ + "terminal_exchange", + 9, + "all_cover_classes" + ], + [ + "terminal_exchange", + 10, + "all_cover_classes" + ], + [ + "terminal_exchange", + 11, + "all_cover_classes" + ], + [ + "terminal_exchange", + 12, + "all_cover_classes" + ], + [ + "terminal_exchange", + 13, + "all_cover_classes" + ], + [ + "terminal_exchange", + 14, + "all_cover_classes" + ], + [ + "terminal_exchange", + 15, + "all_cover_classes" + ], + [ + "terminal_exchange", + 16, + "all_cover_classes" + ], + [ + "terminal_exchange", + 17, + "all_cover_classes" + ], + [ + "terminal_exchange", + 18, + "all_cover_classes" + ], + [ + "terminal_exchange", + 19, + "all_cover_classes" + ], + [ + "terminal_exchange", + 20, + "all_cover_classes" + ], + [ + "terminal_exchange", + 21, + "all_cover_classes" + ], + [ + "terminal_exchange", + 22, + "all_cover_classes" + ], + [ + "terminal_exchange", + 23, + "all_cover_classes" + ], + [ + "terminal_exchange", + 24, + "all_cover_classes" + ], + [ + "terminal_exchange", + 25, + "all_cover_classes" + ], + [ + "terminal_exchange", + 26, + "all_cover_classes" + ], + [ + "terminal_exchange", + 27, + "all_cover_classes" + ], + [ + "terminal_exchange", + 28, + "all_cover_classes" + ], + [ + "terminal_exchange", + 29, + "all_cover_classes" + ], + [ + "terminal_exchange", + 30, + "all_cover_classes" + ], + [ + "terminal_exchange", + 31, + "all_cover_classes" + ], + [ + "terminal_exchange", + 32, + "all_cover_classes" + ], + [ + "terminal_exchange", + 33, + "all_cover_classes" + ], + [ + "terminal_exchange", + 34, + "all_cover_classes" + ], + [ + "terminal_exchange", + 35, + "all_cover_classes" + ], + [ + "terminal_exchange", + 36, + "all_cover_classes" + ], + [ + "terminal_exchange", + 37, + "all_cover_classes" + ], + [ + "terminal_exchange", + 38, + "all_cover_classes" + ], + [ + "terminal_exchange", + 39, + "all_cover_classes" + ] + ], + "completion": "No COMPLETE emitted by bank mapper. Discharged by separately admitted bank endpoint theorem; not newly proved by this extractor.", + "boundary_methods": "BankPlan.map_boundary_row handles IDLE(4), BRIDGE(5), EXCHANGE(7); rejects COMPLETE(6).", + "callable": "Inputs.plan.local_address(stage,replica,local,cover); iter_global_connections(inputs,stage,replica,cover)" +} diff --git a/docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_EXTRACT.py b/docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_EXTRACT.py new file mode 100644 index 0000000000..146ec3a6c8 --- /dev/null +++ b/docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_EXTRACT.py @@ -0,0 +1,468 @@ +#!/usr/bin/env python3 +"""Source-bound connection inventory for the admitted JOINT259 local word. + +Reads the already generated final artifact. Does not run prepare/verify, replay +all columns, or modify a supplier. The compact event inventory is lossless given +the pinned raw input. See SCHEMA for the exact columns and version conventions. +""" +import argparse +import base64 +from collections import Counter +import gzip +import hashlib +import importlib.util +import io +import json +from pathlib import Path +import struct +import sys +import zlib +from types import ModuleType +import joint259_system_docs_sources as SOURCES + +sys.dont_write_bytecode = True +ROOT = Path(__file__).resolve().parent +PACKAGE = ROOT / 'pr259_interval_compatibility_20261010/hybrid_package' +INPUT = PACKAGE.parent / 'hybrid_admission/fresh_1/hybrid' +MANIFEST_SHA = '9f6d8637b9a119cfe4566a02ab2d704f23c502e5e4357b40c28ef85a3fd4de89' +RAW_SHA = 'acf510b1377a6bd96eea50577de1aa049382499335fa7e5cac9b0300ecb377c7' +GENERATED_PINS = { + 'initial.json': '2ffcd7fa9060653501873475271d48a054d063a528946714a4d23b21fb9bb162', + 'physical.json': '49aa1a8762372d62b5105341696227307b2ba4b04e930bb86aaf8064cebb6eb2', + 'all-gauge-entrances.json': '6717b795c8df73aaf6279455427834889ecdc6e872ed3e9cf8763a1c23bd29a1', +} +PHYSICAL_KEYS = ('scalar_projection_sha256','tagged_scalar_sha256', + 'weighted_scalar_events','coefficient_histogram','categories','category_names', + 'physical_registers','independent_dirty_registers','positive_rank_moves', + 'paid_histogram','used_frames') +def invariant_metadata(name, data): + value = json.loads(data) + if name == 'all-gauge-entrances.json': + value = sorted(value, key=lambda q:q['role']) + elif name == 'physical.json': + value = {k:value[k] for k in PHYSICAL_KEYS} + value['used_frames'] = sorted(value['used_frames'], key=lambda q:q['frame_id']) + return value +CONNECTION_SHA = '14d13b5b4e851a66c20af1850d77a71fe21cbe3fda35c72000709f767275222e' +V, N = 1760, 20107 +RAW = struct.Struct('<6i') +LINK = struct.Struct('<20i') +OP_NAMES = ('MOVE', 'ADD', 'COPY', 'ERASE') +SCHEMA = { + 'schema': 'joint259-operation-connections/1', + 'raw_columns': ['opcode', 'a', 'b', 'c', 'f', 'z'], + 'link_columns': [ + 'destination', 'source', 'destination_value_before', + 'destination_value_after', 'source_value_version', + 'destination_frame_before', 'destination_frame_after', + 'source_frame', 'destination_frame_version_before', + 'destination_frame_version_after', 'source_frame_version', + 'destination_value_producer', 'source_value_producer', + 'destination_frame_producer', 'source_frame_producer', + 'copy_source', 'copy_event', 'copy_source_value_version', + 'copy_source_frame_version', 'copy_generation'], + 'record_id': 'zero-based position in pinned records.bin.gz', + 'event_id': 'local:{record_id}; a read producer >=0 names local:{producer}', + 'initial_producer': '-(register_id+2); -1 means absent, never an initial value', + 'version_convention': 'Value versions change on ADD and COPY. Frame versions change on MOVE and COPY. ERASE removes both; every scratch COPY gets a fresh generation, so versions are never reused. MOVE preserves the semantic payload version; its recursive implementation is not expanded here.', + 'links': 'Each nonabsent producer column is a producer-to-current-consumer edge. Output value/frame producer is the current event when its corresponding version changes; unchanged versions retain their producer. Consumer lists are exactly the transpose of these edges, without duplicating a massive adjacency list.', + 'MOVE': 'raw=(0,q,old_frame,new_frame,rank,0); destination=q, source=q; payload preserved; frame advances', + 'ADD': 'raw=(1,dst,src,coefficient,frame,category); read both old payloads before writing dst; src preserved; frames unchanged', + 'COPY': 'raw=(2,source,temp,source_frame,output_frame,paid_rank); destination=temp; copy unchanged source to new temporary. Global lowering expands this macro into COPY then paid MOVE.', + 'ERASE': 'raw=(3,source,temp,source_frame,output_frame,paid_rank); destination=temp, source=retained source; verify immutable source and temporary lifetime, then remove temporary', + 'address_check_scope': 'Injectivity checks distinguish syntactic full (family, route-word) keys. Algebraic rational/mod-q route nonaliasing is inherited from the separately admitted bank proof, not newly proved.', + 'scope': 'Exact finite local operation/def-use inventory plus callable global BankPlan address maps. Not a complete arbitrary-input-size compiler and not the overview graph.', + 'unexpanded': ['finite cover class enumeration', 'recursive child programs and stopping policy', 'q-local fallback implementation', 'complex supplier internals', 'all-size tape movements'], +} + + +def require(condition, message): + if not condition: + raise ValueError(message) + + +def sha(data): + return hashlib.sha256(data).hexdigest() + + +def read_json(path): + return json.loads(path.read_text()) + + +def compact(value): + return json.dumps(value, sort_keys=True, separators=(',', ':')).encode() + + +class Inputs: + """Read and pin static inputs; reconstruct ownership without source replay.""" + def __init__(self, package=PACKAGE, inputs=INPUT): + self.package, self.inputs = SOURCES.open_source(package), Path(inputs) + SOURCES.integrity(self.package, MANIFEST_SHA) + manifest_bytes = (self.package / 'MANIFEST.json').read_bytes() + require(sha(manifest_bytes) in (MANIFEST_SHA, SOURCES.BINDING['accepted_public_manifest_sha256']), 'selected manifest changed') + self.manifest = json.loads(manifest_bytes)['files'] + self.pins = {'package_manifest': sha(manifest_bytes), 'scientific_archive_manifest': MANIFEST_SHA} + self.raw = gzip.decompress(self.generated('records.bin.gz')) + require(sha(self.raw) == RAW_SHA, 'not the admitted final local word') + require(len(self.raw) % RAW.size == 0, 'incomplete six-int raw row') + self.initial = {int(k): v for k, v in json.loads(self.generated('initial.json')).items()} + self.physical = json.loads(self.generated('physical.json')) + self.entrances = json.loads(self.generated('all-gauge-entrances.json')) + self.dimensions = {r['frame_id']: r['dimension'] for r in self.physical['used_frames']} + self.zero = next(f for f, d in self.dimensions.items() if d == 0) + require(set(self.initial) == set(range(N)), 'initial register coverage') + require(len(self.raw) // RAW.size == 859771, 'unexpected final operation count') + self.roles, self.borrow, self.removed = self.reconstruct_roles() + gauges = {r['role']: r['frame'] for r in self.entrances} + require(len(gauges) == len(self.entrances) == 2827, 'entrance ownership count') + require(all(self.initial[2*V+i] == gauges.get(r, self.zero) + for i, r in enumerate(self.roles)), 'role/initial-frame binding') + families = {} + for role in self.roles: + rank = 24 - self.dimensions[gauges[role]] if role in gauges else 24 + families.setdefault(rank, []).append(role) + self.static('bank_template.py') + self.static('code/global_lowering.py') + self.static('code/physical527.py') + self.static('hybrid_transform.py') + module = ModuleType('joint259_connection_bank') + exec(compile(self.static('bank_template.py'), 'verified bank_template.py', 'exec'), module.__dict__) + self.plan = module.BankPlan(families, gauges, self.roles) + + def generated(self, name): + data = (self.inputs / name).read_bytes() + if name == 'records.bin.gz': + require(sha(gzip.decompress(data)) == RAW_SHA, 'generated raw word changed') + self.pins['generated/records.decompressed'] = RAW_SHA + else: + digest = sha(compact(invariant_metadata(name, data))) + require(digest == GENERATED_PINS[name], 'generated invariant metadata changed: ' + name) + self.pins['generated-invariant/' + name] = digest + return data + + def static(self, name): + data = (self.package / name).read_bytes() + require(name in self.manifest and sha(data) == self.manifest[name], 'source changed: ' + name) + self.pins[name] = sha(data) + return data + + def reconstruct_roles(self): + base = 'loader/source_inputs/base_bit/research/paired-cube-diagonal-bit-168/selected/bit/' + joint = 'loader/source_inputs/pr210/research/coordinated-crossover-pr200/' + word = json.loads(gzip.decompress(self.static(base+'word_p12.json.gz'))) + profile = json.loads(self.static(base+'profile_p12.json')) + donor = dict(json.loads(self.static(joint+'joint/pairs.json'))) + removed = {word['rootroles'][r['root']] for r in json.loads(self.static(base+'sinks.json'))} + borrow = {} + selections = [(joint+'borrow/selection.json', 'role'), + (joint+'gaugeb/selection.json', 'role'), + (joint+'newg/selection.json', 'role'), + ('source527/extra/selection.json', 'role'), + ('source527/fresh/selection.json', 'role'), + ('source527/paired-selection.json', 'aliased_role')] + for path, key in selections: + rows = json.loads(self.static(path)) + rows = rows['selection'] if isinstance(rows, dict) else rows + for r in rows: + require(r[key] not in borrow, 'duplicate source loan') + borrow[r[key]] = r['source'] + roles = sorted({donor.get(q, q) for q in range(profile['R'])} - set(borrow) - removed) + require(len(roles) == 16587 and len(borrow) == 527 and len(removed) == 34, 'ownership census') + return roles, borrow, removed + + def rows(self): + return RAW.iter_unpack(self.raw) + + +class Inventory: + """O(registers) working memory; every row reads before it writes.""" + def __init__(self, initial, dimensions, categories): + # State = [value version, frame ID, frame version, value producer, frame producer]. + self.state = {q: [0, frame, 0, -q-2, -q-2] for q, frame in initial.items()} + self.dimensions = dimensions + self.categories = categories + self.counts = Counter() + self.category_counts = Counter() + self.coefficients = Counter() + self.paid = Counter() + self.copy = None + self.generation = 0 + self.lifetimes = [] + self.link_count = 0 + self.semantic = hashlib.sha256() + self.tagged = hashlib.sha256() + + def read(self, q, event): + require(q in self.state, f'read-before-definition or read-after-erase: {event}:{q}') + state = self.state[q] + require(state[3] < event and state[4] < event, 'read is not before write') + return state[:] + + def guard_write(self, q, event): + require(self.copy is None or q != self.copy['source'], f'copied source mutated in lifetime: {event}:{q}') + + def step(self, event, row): + op, a, b, c, f, z = row + require(op in range(4), 'unknown opcode') + self.counts[OP_NAMES[op]] += 1 + dst, src = (b, a) if op in (2, 3) else (a, b) if op == 1 else (a, a) + old = None if op == 2 else self.read(dst, event) + source = self.read(src, event) + copy = self.copy + if op == 0: + self.guard_write(dst, event) + require(old[1] == b and c in self.dimensions, 'MOVE before/after frame') + require(f == self.dimensions[c]-self.dimensions[b] and f >= 0, 'MOVE rank') + require(z == 0, 'MOVE reserved field') + new = [old[0], c, old[2]+1, old[3], event] + self.state[dst] = new + if f: + self.paid[f] += 1 + elif op == 1: + self.guard_write(dst, event) + require(dst != src and dst != N, 'ADD operands alias or overwrite work') + require(old[1] == source[1] == f, 'ADD required frames') + require(0 <= z < len(self.categories), 'ADD category') + category = self.categories[z] + require((src == N) == (category == 'center'), 'center/scratch binding') + if src == N: + require(copy is not None, 'scratch read without COPY') + require(self.state[copy['source']] == copy['snapshot'], 'copy source changed') + copy['reads'] += 1 + new = [old[0]+1, old[1], old[2], event, old[4]] + self.state[dst] = new + self.category_counts[category] += 1 + self.coefficients[abs(c)] += 1 + logical_source = copy['source'] if src == N else src + self.semantic.update(json.dumps([a, logical_source, c], separators=(',', ':')).encode()+b'\n') + self.tagged.update(json.dumps([a, b, c, f, category], separators=(',', ':')).encode()+b'\n') + elif op == 2: + require(self.copy is None and dst == N and dst not in self.state, 'COPY while temporary live') + require(src != N and source[1] == c, 'COPY source/frame') + require(self.dimensions[c] == z == 22 and self.dimensions[f] == 0, 'COPY rank/output frame') + self.generation += 1 + new = [self.generation, f, self.generation, event, event] + self.state[dst] = new + self.copy = copy = dict(source=src, temporary=dst, copy_event=event, + snapshot=source[:], generation=self.generation, reads=0) + self.paid[z] += 1 + else: + require(copy is not None and dst == N and src == copy['source'], 'ERASE lifetime/source') + require(source == copy['snapshot'] and source[1] == c and old[1] == f, 'ERASE immutable source/frame') + require(copy['reads'] == 220 and z == 22, 'ERASE scatter coverage') + new = None + self.lifetimes.append(dict(copy_event=copy['copy_event'], erase_event=event, + source=src, source_value_version=source[0], source_frame_version=source[2], + source_value_producer=source[3], source_frame_producer=source[4], + temporary=dst, generation=copy['generation'], reads=copy['reads'], immutable=True)) + del self.state[dst] + self.copy = None + before = old if old is not None else [-1]*5 + after = new if new is not None else [-1]*5 + edge = (dst, src, before[0], after[0], source[0], before[1], after[1], source[1], + before[2], after[2], source[2], before[3], source[3], before[4], source[4], + copy['source'] if copy else -1, copy['copy_event'] if copy else -1, + copy['snapshot'][0] if copy else -1, copy['snapshot'][2] if copy else -1, + copy['generation'] if copy else -1) + self.link_count += sum(p != -1 for p in edge[11:15]) + return edge + + def finish(self): + require(self.copy is None and N not in self.state, 'unclosed COPY') + return dict(opcode_counts=dict(self.counts), categories=dict(self.category_counts), + coefficient_histogram=dict(self.coefficients), paid_histogram=dict(sorted(self.paid.items())), + producer_consumer_links=self.link_count, copied_source_lifetimes=self.lifetimes, + scalar_projection_sha256=self.semantic.hexdigest(), tagged_scalar_sha256=self.tagged.hexdigest(), + final_state_sha256=sha(compact(self.state)), final_live_registers=len(self.state)) + + +def validate_inventory(inputs, inventory, count, links): + summary = inventory.finish() + summary.update(events=count, link_bytes_sha256=links.hexdigest(), link_record_bytes=LINK.size) + require(count == 859771 and links.hexdigest() == CONNECTION_SHA, 'complete inventory count/digest') + for key in ('scalar_projection_sha256', 'tagged_scalar_sha256'): + require(summary[key] == inputs.physical[key], key+' metadata mismatch') + require(summary['opcode_counts'] == {'MOVE':99340,'ADD':760383,'COPY':24,'ERASE':24}, 'opcode census') + require(summary['paid_histogram'] == {int(k):v for k,v in inputs.physical['paid_histogram'].items()}, 'paid census') + require(summary['categories'] == inputs.physical['categories'], 'category census') + return summary + + +def write_inventory(inputs, output): + """Write complete plain JSONL to a binary stream, suitable for gzip wrapping.""" + output.write(compact(dict(kind='metadata', **SCHEMA, source_pins=inputs.pins, raw_sha256=RAW_SHA))+b'\n') + inventory = Inventory(inputs.initial, inputs.dimensions, inputs.physical['category_names']) + links = hashlib.sha256() + count = 0 + for event, row in enumerate(inputs.rows()): + edge = inventory.step(event, row) + links.update(LINK.pack(*edge)) + output.write(compact(dict(event_id=event, raw=row, connections=edge))+b'\n') + count += 1 + summary = validate_inventory(inputs, inventory, count, links) + output.write(compact(dict(kind='validation', **summary))+b'\n') + return summary + + +def scan(inputs, start=0, stop=None, capture=False): + inventory = Inventory(inputs.initial, inputs.dimensions, inputs.physical['category_names']) + links = hashlib.sha256() + compressed = io.BytesIO() + encoder = zlib.compressobj(level=9) + count = 0 + for event, row in enumerate(inputs.rows()): + if stop is not None and event >= stop: + break + edge = inventory.step(event, row) + packed = LINK.pack(*edge) + links.update(packed) + count += 1 + if capture and event >= start: + compressed.write(encoder.compress(packed)) + if capture: + compressed.write(encoder.flush()) + summary = validate_inventory(inputs, inventory, count, links) if stop is None else {'partial_prefix_events': count} + summary.update(events=count, link_bytes_sha256=links.hexdigest(), link_record_bytes=LINK.size) + if stop is None: + for key in ('scalar_projection_sha256', 'tagged_scalar_sha256'): + require(summary[key] == inputs.physical[key], key+' metadata mismatch') + require(summary['opcode_counts'] == {'MOVE': 99340, 'ADD': 760383, 'COPY': 24, 'ERASE': 24}, 'opcode census') + require(summary['paid_histogram'] == {int(k):v for k,v in inputs.physical['paid_histogram'].items()}, 'paid census') + require(summary['categories'] == inputs.physical['categories'], 'category census') + return summary, compressed.getvalue() + + +def iter_stage_rows(inputs, stage): + """Exact eight-field logical lowering, retaining local-record provenance.""" + require(0 <= stage < 5, 'stage out of range') + reverse = stage in (1, 3) + offsets = range(len(inputs.raw)-RAW.size, -1, -RAW.size) if reverse else range(0, len(inputs.raw), RAW.size) + plan = inputs.plan + def family(local): + return 4*V+len(inputs.roles) if local == N else ( + plan.active[stage][0]*V+local if local < V else + plan.active[stage][1]*V+local-V if local < 2*V else 4*V+local-2*V) + for offset in offsets: + op, a, b, c, f, z = RAW.unpack_from(inputs.raw, offset) + common = (stage, int(reverse)) + if op == 0: + yield offset//RAW.size, (0, family(a), c if reverse else b, b if reverse else c, f, 0, *common) + elif op == 1: + yield offset//RAW.size, (1, family(a), family(b), -c if reverse else c, f, z, *common) + elif op == (3 if reverse else 2): + yield offset//RAW.size, (2, family(b), family(a), 0, c, 0, *common) + yield offset//RAW.size, (0, family(b), c, f, z, 0, *common) + else: + yield offset//RAW.size, (3, family(b), -1, 0, f, 0, *common) + + +def iter_global_connections(inputs, stage, replica, cover='d'): + """Call for any of 200 stage/replica pairs; d stays an exact formal key.""" + for local_event, row in iter_stage_rows(inputs, stage): + yield local_event, inputs.plan.map_stage_row(stage, replica, row, cover) + + +def iter_saved_connections(root=ROOT): + """Decode the persisted inventory and verify every shard and the full digest.""" + inputs = Inputs() + manifest = read_json(Path(root)/'JOINT259_CONNECTION_EVENTS_MANIFEST.json') + require(manifest['raw_sha256'] == RAW_SHA, 'inventory raw binding') + require(manifest['link_bytes_sha256'] == CONNECTION_SHA, 'inventory expected connection digest') + digest = hashlib.sha256() + cursor = 0 + for shard in manifest['shards']: + require(shard['start'] == cursor, 'inventory gap or overlap') + encoded = (Path(root)/shard['file']).read_bytes() + require(sha(encoded) == shard['file_sha256'], 'inventory shard changed') + data = zlib.decompress(base64.b64decode(encoded, validate=False)) + require(len(data) == (shard['stop']-shard['start'])*LINK.size, 'inventory shard length') + digest.update(data) + for edge in LINK.iter_unpack(data): + yield cursor, RAW.unpack_from(inputs.raw, cursor*RAW.size), edge + cursor += 1 + require(cursor == 859771, 'incomplete persisted inventory') + require(digest.hexdigest() == manifest['link_bytes_sha256'], 'inventory full digest') + + +def address_map(inputs, exhaustive=False): + plan = inputs.plan + result = dict(schema='joint259-parametric-bank-map/1', + source_sha256=inputs.pins['bank_template.py'], stages=5, replicas=40, + active_data_banks=plan.active, helper_roles=inputs.roles, + residual_rank_families=plan.families, gauge_frames=plan.gauge_frames, + patterns=plan.patterns, segments=plan.segments, + helper_occurrences=5*40*len(inputs.roles), + local_registers=N, external_work_local=N, external_work_family=plan.work_family, + data_families=plan.data_families, banks_per_stage=plan.banks_per_stage, + live_families=plan.live_families, + assignment='q=role_index*40+replica; select residual-rank segment [lo,hi); (bank_offset,within)=divmod(q-lo,len(blocks)); family=281600+117089*stage+bank_start+bank_offset; block=blocks[within]; offset=sum(pattern widths before block)', + data_route='stage0:(family,class(d)); stage>0:(family,right(d,rho(stage,port)))', + helper_route='(family,right(d,tau(stage),inverse(normalizer(stage,pattern,block,frame))))', + normalizer='scalar=(block+1); exact permutation from stage window residual coordinates to block; inverse chart identified by source-bound gauge frame. Apply factors right-to-left. Cover arithmetic is not reduced modulo 2.', + phase_schedule=list(plan.phase_schedule()), + completion='No COMPLETE emitted by bank mapper. Discharged by separately admitted bank endpoint theorem; not newly proved by this extractor.', + boundary_methods='BankPlan.map_boundary_row handles IDLE(4), BRIDGE(5), EXCHANGE(7); rejects COMPLETE(6).', + callable='Inputs.plan.local_address(stage,replica,local,cover); iter_global_connections(inputs,stage,replica,cover)') + if exhaustive: + digest = hashlib.sha256() + assignments = 0 + for stage in range(5): + for replica in range(40): + addresses = [plan.local_address(stage, replica, local) for local in range(N+1)] + require(len(set(addresses)) == N+1, 'full address collision') + require(addresses[-1] == (plan.work_family, ('external_work',0)), 'work address') + digest.update(compact(addresses)) + assignments += len(addresses) + result['fresh_full_address_checks'] = dict(namespaces=200, addresses=assignments, + address_digest_sha256=digest.hexdigest(), all_full_keys_injective=True, + check_scope='Distinct syntactic (family, route-word) keys; algebraic route nonaliasing inherited, not re-proved.') + return result + + +def validate_output_path(path, package): + path=Path(path) + require(not path.exists() and not path.is_symlink(), 'output must be a new file') + resolved=path.resolve();package_path=Path(package) + if package_path.is_dir(): + require(not resolved.is_relative_to(package_path.resolve()), 'output must be outside source package') + return resolved + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('--package', type=Path, default=PACKAGE, help='admitted original/public source directory or ZIP') + parser.add_argument('--inputs', type=Path, default=INPUT, help='fresh final hybrid directory from verifier OUTPUT/hybrid') + parser.add_argument('--summary', action='store_true') + parser.add_argument('--map', action='store_true') + parser.add_argument('--check-addresses', action='store_true') + parser.add_argument('--schema', action='store_true') + parser.add_argument('--chunk', nargs=2, type=int, metavar=('START','STOP')) + parser.add_argument('--inventory', type=Path, help='write complete gzip JSONL inventory, metadata first') + args = parser.parse_args() + if args.schema: + print(json.dumps(SCHEMA, indent=2)); return + inputs = Inputs(args.package, args.inputs) + if args.chunk: + start, stop = args.chunk + require(0 <= start < stop <= len(inputs.raw)//RAW.size, 'chunk range') + _, data = scan(inputs, start, stop, capture=True) + print(base64.b64encode(data).decode()); return + if args.map: + print(json.dumps(address_map(inputs, args.check_addresses), indent=2)); return + if args.inventory: + destination=validate_output_path(args.inventory,args.package) + with destination.open('xb') as raw_output: + with gzip.GzipFile(fileobj=raw_output, mode='wb', mtime=0) as output: + write_inventory(inputs, output) + print(json.dumps({'inventory':str(args.inventory), 'sha256':sha(args.inventory.read_bytes())})); return + summary, _ = scan(inputs) + summary.update(schema=SCHEMA['schema'], scope=SCHEMA['scope'], source_pins=inputs.pins, + raw_sha256=RAW_SHA, raw_records=len(inputs.raw)//RAW.size, + address_map=address_map(inputs, args.check_addresses) if args.check_addresses else { + 'exact_parametric':True, 'scope':'Syntactic full address keys; algebraic route nonaliasing inherited.', 'stage_replica_pairs':200, + 'helper_occurrences':3317400, 'live_families':867045}) + print(json.dumps(summary, indent=2)) + + +if __name__ == '__main__': + main() diff --git a/docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_MANIFEST.json b/docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_MANIFEST.json new file mode 100644 index 0000000000..60b110aba0 --- /dev/null +++ b/docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_MANIFEST.json @@ -0,0 +1,23 @@ +{ + "schema": "joint259-connection-rebuild-manifest/1", + "delivery": "Complete reproducible generator, invariant bindings, schema, map and tested scan; generated trace is rebuilt on demand", + "accepted_scientific_manifest_sha256": "9f6d8637b9a119cfe4566a02ab2d704f23c502e5e4357b40c28ef85a3fd4de89", + "accepted_public_manifest_sha256": "0af10dcca505cbd913cf1b9220a08b6a62687650ace4e3d1efd093e828e3990e", + "raw_decompressed_sha256": "acf510b1377a6bd96eea50577de1aa049382499335fa7e5cac9b0300ecb377c7", + "canonical_invariant_sha256": { + "initial.json": "2ffcd7fa9060653501873475271d48a054d063a528946714a4d23b21fb9bb162", + "physical.json": "49aa1a8762372d62b5105341696227307b2ba4b04e930bb86aaf8064cebb6eb2", + "all-gauge-entrances.json": "6717b795c8df73aaf6279455427834889ecdc6e872ed3e9cf8763a1c23bd29a1" + }, + "invariant_projection": "JOINT259_CONNECTION_EXTRACT.invariant_metadata; full initial state; role-sorted entrances; named physical scalar/category/census/frame-basis fields, excluding runtime receipts", + "expected_local_events": 859771, + "expected_typed_read_links": 3439036, + "expected_link_record_bytes": 80, + "expected_packed_link_sha256": "14d13b5b4e851a66c20af1850d77a71fe21cbe3fda35c72000709f767275222e", + "source_dependencies": ["joint259_system_docs_sources.py", "joint259_system_docs_source_binding.json"], + "extract_command": "python JOINT259_CONNECTION_EXTRACT.py --package SOURCE --inputs OUTPUT/hybrid --inventory DEST/JOINT259_CONNECTION_EVENTS.jsonl.gz", + "test_command": "python JOINT259_CONNECTION_TESTS.py --package SOURCE --inputs OUTPUT/hybrid --full --writer", + "published_generated_trace": false, + "excluded_partial_artifacts": "JOINT259_CONNECTION_EVENTS_*.b64", + "limitations": "Six-field selected IR and documented ownership/lowering interfaces only; new opcodes/layouts require reviewed adapter changes. Syntactic address-key checks do not replace the inherited algebraic bank proof." +} diff --git a/docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_README.md b/docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_README.md new file mode 100644 index 0000000000..27cb285301 --- /dev/null +++ b/docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_README.md @@ -0,0 +1,105 @@ +# JOINT259 operation connection inventory + +Start with JOINT259_CONNECTION_SUMMARY.json, SCHEMA.json, and MANIFEST.json. +The system overview is a separate descriptive graph. Its edges must never be +presented as the complete operation inventory. + +## Exact scope + +The selected final local word has 859,771 operations: 760,383 ADD, 99,340 MOVE, +24 COPY and 24 ERASE. The generator emits every original six-int row plus +20 connection fields: source/destination IDs, semantic value versions, frame +IDs and state versions, and producer events. Four typed producer columns +define 3,439,036 read links; consumer lists are their exact transpose. +Initial producer IDs are -(register+2), and -1 means absent. + +MOVE preserves semantic payload while advancing its frame state. ADD reads +both old operands before writing its destination. COPY creates a fresh +temporary generation, preserves the retained source and expands into COPY +plus MOVE in global lowering. ERASE checks that source and lifetime before +removing the temporary. All 24 copied-source lifetimes have 220 reads each. + +The complete word is freshly scanned, with frame-state/read-before-write, +scalar/tagged digest, paid/category count, and copied-source immutability +checks. This is a structural connection check, not a new scalar all-column, +geometric-containment or arbitrary-size compiler proof. + +The BankPlan map includes 16,587 actual helper roles, residual rank families, +gauge-frame IDs, packing segments/patterns and phase schedule. +iter_global_connections(inputs, stage, replica, cover='d') maps every local +operation for any of 200 stage/replica pairs. All five logical stage streams +match the admitted Lowerer exactly at 859,795 rows each. Each of 24 local COPY +macros contributes an additional lowered MOVE. The 4,021,600-address check +tests distinct syntactic (family, route-word) keys. Algebraic rational/mod-q +nonaliasing remains inherited from the separately admitted bank proof. + +Unexpanded: finite-cover enumeration, recursive child programs and stopping +policy, q-local fallback, complex supplier internals and arbitrary-size tape +movements. COMPLETE is rejected by the mapper; bank completion is inherited. + +## Portable rebuild + +Extractor requirements: Python 3.11+, standard library only. Its shared +source adapter and binding JSON must be beside the extractor: +joint259_system_docs_sources.py and joint259_system_docs_source_binding.json. + +Use an admitted source directory or ZIP with the original scientific manifest +9f6d8637b9a119cfe4566a02ab2d704f23c502e5e4357b40c28ef85a3fd4de89 +or approved public manifest +0af10dcca505cbd913cf1b9220a08b6a62687650ace4e3d1efd093e828e3990e. +The adapter validates the complete closure and 117 retained numerical pins. + +Existing fresh verifier output can be reused; no expensive verification is +rerun by the extractor. To produce inputs when none exist, run the selected +source package's documented verifier using its own requirements (Python 3.11+ +and SymPy 1.14.0); OUTPUT must be new and outside the source package: + + python SOURCE/verify.py --output OUTPUT + +The final input directory is OUTPUT/hybrid, not OUTPUT itself. Then: + + python JOINT259_CONNECTION_EXTRACT.py --package SOURCE --inputs OUTPUT/hybrid --summary + python JOINT259_CONNECTION_EXTRACT.py --package SOURCE --inputs OUTPUT/hybrid --map + python JOINT259_CONNECTION_TESTS.py --package SOURCE --inputs OUTPUT/hybrid --full --writer + +SOURCE can also be the admitted source ZIP for extraction/testing, without +extracting it. The verifier itself should be run from its documented source +directory. Input binding uses the decompressed raw SHA and canonical invariant +metadata digests. Gzip compression/header, JSON formatting, and runtime/timing +receipt differences are allowed; raw/frame/category/census changes are not. + +Generate the complete portable gzip JSONL in an authorized writable location: + + python JOINT259_CONNECTION_EXTRACT.py --package SOURCE --inputs OUTPUT/hybrid --inventory DEST/JOINT259_CONNECTION_EVENTS.jsonl.gz + +The destination must be a new file outside a directory-valued source package. +The output is self-describing: metadata first, all 859,771 operation rows, +validation last. Public delivery is the tested complete generator and source +binding manifest, not a multi-megabyte generated trace. Four experimental +base64 shards 000-003 are partial, private, excluded from publication and every +completeness claim. --saved is an optional developer facility requiring a +separate complete shard index; it is not part of the delivered workflow. + +Expected packed 20-int-per-event connection SHA: +14d13b5b4e851a66c20af1850d77a71fe21cbe3fda35c72000709f767275222e. + +## Reuse and change boundaries + +Automatic within the documented six-int MOVE/ADD/COPY/ERASE IR: enumerate all +events, rebuild producer/consumer links and value/frame versions, check +lifetimes, expand the selected five-stage lowering, and evaluate BankPlan +addresses. Changed event order, coefficients or frames can be re-extracted +only after an explicit reviewed source/config update. + +Manual configuration: approved package closure/source binding, RAW_SHA, +GENERATED_PINS invariant projections, CONNECTION_SHA regression value and +expected operation/category/census controls. These currently live in the +extractor and source-binding JSON, not a generic architecture parser config. + +Manual adapter work is required for different role-selection files or role +counts, initial state layout, new opcode/field conventions, new COPY semantics, +different stages/replicas, or a new bank API. The selected N,V and ownership +census assertions deliberately fail loudly on incompatible systems. A new +system requires renewed tests and review. Do not update labels/counts alone +to make a stale artifact pass. Supplier and historical generator files are +unchanged. diff --git a/docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_SCHEMA.json b/docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_SCHEMA.json new file mode 100644 index 0000000000..6b3f247e95 --- /dev/null +++ b/docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_SCHEMA.json @@ -0,0 +1,51 @@ +{ + "schema": "joint259-operation-connections/1", + "raw_columns": [ + "opcode", + "a", + "b", + "c", + "f", + "z" + ], + "link_columns": [ + "destination", + "source", + "destination_value_before", + "destination_value_after", + "source_value_version", + "destination_frame_before", + "destination_frame_after", + "source_frame", + "destination_frame_version_before", + "destination_frame_version_after", + "source_frame_version", + "destination_value_producer", + "source_value_producer", + "destination_frame_producer", + "source_frame_producer", + "copy_source", + "copy_event", + "copy_source_value_version", + "copy_source_frame_version", + "copy_generation" + ], + "record_id": "zero-based position in pinned records.bin.gz", + "event_id": "local:{record_id}; a read producer >=0 names local:{producer}", + "initial_producer": "-(register_id+2); -1 means absent, never an initial value", + "version_convention": "Value versions change on ADD and COPY. Frame versions change on MOVE and COPY. ERASE removes both; every scratch COPY gets a fresh generation, so versions are never reused. MOVE preserves the semantic payload version; its recursive implementation is not expanded here.", + "links": "Each nonabsent producer column is a producer-to-current-consumer edge. Output value/frame producer is the current event when its corresponding version changes; unchanged versions retain their producer. Consumer lists are exactly the transpose of these edges, without duplicating a massive adjacency list.", + "MOVE": "raw=(0,q,old_frame,new_frame,rank,0); destination=q, source=q; payload preserved; frame advances", + "ADD": "raw=(1,dst,src,coefficient,frame,category); read both old payloads before writing dst; src preserved; frames unchanged", + "COPY": "raw=(2,source,temp,source_frame,output_frame,paid_rank); destination=temp; copy unchanged source to new temporary. Global lowering expands this macro into COPY then paid MOVE.", + "ERASE": "raw=(3,source,temp,source_frame,output_frame,paid_rank); destination=temp, source=retained source; verify immutable source and temporary lifetime, then remove temporary", + "address_check_scope": "Injectivity checks distinguish syntactic full (family, route-word) keys. Algebraic rational/mod-q route nonaliasing is inherited from the separately admitted bank proof, not newly proved.", + "scope": "Exact finite local operation/def-use inventory plus callable global BankPlan address maps. Not a complete arbitrary-input-size compiler and not the overview graph.", + "unexpanded": [ + "finite cover class enumeration", + "recursive child programs and stopping policy", + "q-local fallback implementation", + "complex supplier internals", + "all-size tape movements" + ] +} diff --git a/docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_SUMMARY.json b/docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_SUMMARY.json new file mode 100644 index 0000000000..de1d31ab86 --- /dev/null +++ b/docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_SUMMARY.json @@ -0,0 +1,425 @@ +{ + "opcode_counts": { + "ADD": 760383, + "MOVE": 99340, + "COPY": 24, + "ERASE": 24 + }, + "categories": { + "dirty_read": 655112, + "multicut_basis": 756, + "inject": 1760, + "gauge_mix": 87, + "forward_gate": 40758, + "partner_mix": 793, + "center": 5280, + "echelon_setup": 24, + "rank_setup": 81, + "equal_setup": 234, + "terminal_pre": 102, + "closed_interval_precondition": 21, + "closed_interval_compensation": 14, + "closed_interval_inverse": 21, + "anchor_inject": 48, + "fresh_source_read": 3, + "equal_read": 92, + "echelon_read": 40, + "rank_inverse": 81, + "echelon_inverse": 24, + "equal_inverse": 234, + "terminal_write": 90, + "terminal_post": 102, + "side_root": 8664, + "partner_delivery": 1760, + "partner_cleanup": 880, + "cleanup_gate": 40758, + "anchor_restore": 48, + "uninject": 1760, + "multicut_inverse": 756 + }, + "coefficient_histogram": { + "1": 759063, + "3": 1320 + }, + "paid_histogram": { + "1": 42263, + "2": 19516, + "3": 9713, + "4": 3017, + "5": 2368, + "6": 1562, + "7": 1233, + "8": 634, + "9": 652, + "10": 769, + "11": 414, + "12": 1517, + "13": 585, + "14": 1067, + "15": 244, + "16": 1000, + "17": 469, + "18": 487, + "19": 323, + "20": 1365, + "21": 5575, + "22": 1344 + }, + "producer_consumer_links": 3439036, + "copied_source_lifetimes": [ + { + "copy_event": 694585, + "erase_event": 694806, + "source": 3640, + "source_value_version": 9, + "source_frame_version": 8, + "source_value_producer": 694515, + "source_frame_producer": 694273, + "temporary": 20107, + "generation": 1, + "reads": 220, + "immutable": true + }, + { + "copy_event": 694807, + "erase_event": 695028, + "source": 3655, + "source_value_version": 9, + "source_frame_version": 10, + "source_value_producer": 694518, + "source_frame_producer": 694278, + "temporary": 20107, + "generation": 2, + "reads": 220, + "immutable": true + }, + { + "copy_event": 695029, + "erase_event": 695250, + "source": 10136, + "source_value_version": 8, + "source_frame_version": 7, + "source_value_producer": 694521, + "source_frame_producer": 694283, + "temporary": 20107, + "generation": 3, + "reads": 220, + "immutable": true + }, + { + "copy_event": 695251, + "erase_event": 695472, + "source": 10137, + "source_value_version": 8, + "source_frame_version": 7, + "source_value_producer": 694524, + "source_frame_producer": 694288, + "temporary": 20107, + "generation": 4, + "reads": 220, + "immutable": true + }, + { + "copy_event": 695473, + "erase_event": 695694, + "source": 10172, + "source_value_version": 8, + "source_frame_version": 7, + "source_value_producer": 694527, + "source_frame_producer": 694293, + "temporary": 20107, + "generation": 5, + "reads": 220, + "immutable": true + }, + { + "copy_event": 695695, + "erase_event": 695916, + "source": 10173, + "source_value_version": 8, + "source_frame_version": 7, + "source_value_producer": 694530, + "source_frame_producer": 694298, + "temporary": 20107, + "generation": 6, + "reads": 220, + "immutable": true + }, + { + "copy_event": 695917, + "erase_event": 696138, + "source": 10204, + "source_value_version": 8, + "source_frame_version": 8, + "source_value_producer": 694533, + "source_frame_producer": 694303, + "temporary": 20107, + "generation": 7, + "reads": 220, + "immutable": true + }, + { + "copy_event": 696139, + "erase_event": 696360, + "source": 10205, + "source_value_version": 8, + "source_frame_version": 7, + "source_value_producer": 694536, + "source_frame_producer": 694308, + "temporary": 20107, + "generation": 8, + "reads": 220, + "immutable": true + }, + { + "copy_event": 696361, + "erase_event": 696582, + "source": 10232, + "source_value_version": 8, + "source_frame_version": 7, + "source_value_producer": 694539, + "source_frame_producer": 694313, + "temporary": 20107, + "generation": 9, + "reads": 220, + "immutable": true + }, + { + "copy_event": 696583, + "erase_event": 696804, + "source": 10233, + "source_value_version": 8, + "source_frame_version": 7, + "source_value_producer": 694542, + "source_frame_producer": 694318, + "temporary": 20107, + "generation": 10, + "reads": 220, + "immutable": true + }, + { + "copy_event": 696805, + "erase_event": 697026, + "source": 10256, + "source_value_version": 8, + "source_frame_version": 8, + "source_value_producer": 694545, + "source_frame_producer": 694323, + "temporary": 20107, + "generation": 11, + "reads": 220, + "immutable": true + }, + { + "copy_event": 697027, + "erase_event": 697248, + "source": 10257, + "source_value_version": 8, + "source_frame_version": 7, + "source_value_producer": 694548, + "source_frame_producer": 694328, + "temporary": 20107, + "generation": 12, + "reads": 220, + "immutable": true + }, + { + "copy_event": 697249, + "erase_event": 697470, + "source": 11068, + "source_value_version": 8, + "source_frame_version": 6, + "source_value_producer": 694551, + "source_frame_producer": 694333, + "temporary": 20107, + "generation": 13, + "reads": 220, + "immutable": true + }, + { + "copy_event": 697471, + "erase_event": 697692, + "source": 11069, + "source_value_version": 8, + "source_frame_version": 7, + "source_value_producer": 694554, + "source_frame_producer": 694338, + "temporary": 20107, + "generation": 14, + "reads": 220, + "immutable": true + }, + { + "copy_event": 697693, + "erase_event": 697914, + "source": 11070, + "source_value_version": 8, + "source_frame_version": 8, + "source_value_producer": 694557, + "source_frame_producer": 694343, + "temporary": 20107, + "generation": 15, + "reads": 220, + "immutable": true + }, + { + "copy_event": 697915, + "erase_event": 698136, + "source": 11071, + "source_value_version": 8, + "source_frame_version": 8, + "source_value_producer": 694560, + "source_frame_producer": 694348, + "temporary": 20107, + "generation": 16, + "reads": 220, + "immutable": true + }, + { + "copy_event": 698137, + "erase_event": 698358, + "source": 11072, + "source_value_version": 8, + "source_frame_version": 7, + "source_value_producer": 694563, + "source_frame_producer": 694353, + "temporary": 20107, + "generation": 17, + "reads": 220, + "immutable": true + }, + { + "copy_event": 698359, + "erase_event": 698580, + "source": 11073, + "source_value_version": 8, + "source_frame_version": 8, + "source_value_producer": 694566, + "source_frame_producer": 694358, + "temporary": 20107, + "generation": 18, + "reads": 220, + "immutable": true + }, + { + "copy_event": 698581, + "erase_event": 698802, + "source": 11074, + "source_value_version": 8, + "source_frame_version": 8, + "source_value_producer": 694569, + "source_frame_producer": 694363, + "temporary": 20107, + "generation": 19, + "reads": 220, + "immutable": true + }, + { + "copy_event": 698803, + "erase_event": 699024, + "source": 11075, + "source_value_version": 8, + "source_frame_version": 8, + "source_value_producer": 694572, + "source_frame_producer": 694368, + "temporary": 20107, + "generation": 20, + "reads": 220, + "immutable": true + }, + { + "copy_event": 699025, + "erase_event": 699246, + "source": 11076, + "source_value_version": 8, + "source_frame_version": 8, + "source_value_producer": 694575, + "source_frame_producer": 694373, + "temporary": 20107, + "generation": 21, + "reads": 220, + "immutable": true + }, + { + "copy_event": 699247, + "erase_event": 699468, + "source": 11077, + "source_value_version": 8, + "source_frame_version": 9, + "source_value_producer": 694578, + "source_frame_producer": 694378, + "temporary": 20107, + "generation": 22, + "reads": 220, + "immutable": true + }, + { + "copy_event": 699469, + "erase_event": 699690, + "source": 11078, + "source_value_version": 8, + "source_frame_version": 8, + "source_value_producer": 694581, + "source_frame_producer": 694383, + "temporary": 20107, + "generation": 23, + "reads": 220, + "immutable": true + }, + { + "copy_event": 699691, + "erase_event": 699912, + "source": 11079, + "source_value_version": 8, + "source_frame_version": 7, + "source_value_producer": 694584, + "source_frame_producer": 694388, + "temporary": 20107, + "generation": 24, + "reads": 220, + "immutable": true + } + ], + "scalar_projection_sha256": "ee13c58a083efb20ea6eb0b66563e222b4728c9a2e2cdc91136452b9013ceeeb", + "tagged_scalar_sha256": "fde0c5174796866e7a3a2833df6270954651eb3cf6c287b89e9d5982de181ee0", + "final_state_sha256": "b5e5dac58ba9b20685847804452bd4fa9167b5bef19314be0370edbccf2cf3bc", + "final_live_registers": 20107, + "events": 859771, + "link_bytes_sha256": "14d13b5b4e851a66c20af1850d77a71fe21cbe3fda35c72000709f767275222e", + "link_record_bytes": 80, + "schema": "joint259-operation-connections/1", + "scope": "Exact finite local operation/def-use inventory plus callable global BankPlan address maps. Not a complete arbitrary-input-size compiler and not the overview graph.", + "source_pins": { + "package_manifest": "9f6d8637b9a119cfe4566a02ab2d704f23c502e5e4357b40c28ef85a3fd4de89", + "scientific_archive_manifest": "9f6d8637b9a119cfe4566a02ab2d704f23c502e5e4357b40c28ef85a3fd4de89", + "generated/records.decompressed": "acf510b1377a6bd96eea50577de1aa049382499335fa7e5cac9b0300ecb377c7", + "generated-invariant/initial.json": "2ffcd7fa9060653501873475271d48a054d063a528946714a4d23b21fb9bb162", + "generated-invariant/physical.json": "49aa1a8762372d62b5105341696227307b2ba4b04e930bb86aaf8064cebb6eb2", + "generated-invariant/all-gauge-entrances.json": "6717b795c8df73aaf6279455427834889ecdc6e872ed3e9cf8763a1c23bd29a1", + "loader/source_inputs/base_bit/research/paired-cube-diagonal-bit-168/selected/bit/word_p12.json.gz": "1cb7e8ed45cf542e304fddc4b12247dbb248a0dc84dedbd832f336b2d172793a", + "loader/source_inputs/base_bit/research/paired-cube-diagonal-bit-168/selected/bit/profile_p12.json": "c44ef8640cbcbcc9bac3a30e13373bd79efddde55d7cea514354ca2cdb60d66d", + "loader/source_inputs/pr210/research/coordinated-crossover-pr200/joint/pairs.json": "da54b863601b5cbc21d27fc5cd623bf805f974a3e47b81ed29a85aa5bad0fa05", + "loader/source_inputs/base_bit/research/paired-cube-diagonal-bit-168/selected/bit/sinks.json": "c00ff70c564829d4b97740f92796fc6ce14fbcd5ca519663828650552b80249d", + "loader/source_inputs/pr210/research/coordinated-crossover-pr200/borrow/selection.json": "6932749407e14b199651f0a7deff02c6de74e2c1be0a1300263f1e164927fb8b", + "loader/source_inputs/pr210/research/coordinated-crossover-pr200/gaugeb/selection.json": "b0f9f0e67f94a3c21069f393ea27f9483d315bff2f53f77270163065a6345d1c", + "loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/selection.json": "d94ef4e0b8ca98a7385b364cf245816a7cad08f850a60ce8b67aab4c3a89f3f4", + "source527/extra/selection.json": "791f6ddeb19add7026ba37461256c13efe3d35bba0bccf1cb9787a01fc16f0f2", + "source527/fresh/selection.json": "4df5f96064349415882ece4ac9abd19cc778f18c0306a27b3d65027dcb04b6c7", + "source527/paired-selection.json": "67a24896e5ff6a16735efdff57fbb875aa411aba00cbabb22c43a91cdf63e084", + "bank_template.py": "e255bdc0c0aa4465485ee34ece7d1f04ce3ce363d8ac62edc9de5608e46f8965", + "code/global_lowering.py": "c888c4d3c38d4a59b48f8a328fc495b3b38ee36ede133495522d8d76c100794b", + "code/physical527.py": "1723a5c53ec236529e46980c8eb2c45134c61275ac7fb85c8ad92223784de07c", + "hybrid_transform.py": "c06837bbc6ccf068362e1f09f110319f20135588f42e3cb3f8bc753436802e09" + }, + "raw_sha256": "acf510b1377a6bd96eea50577de1aa049382499335fa7e5cac9b0300ecb377c7", + "raw_records": 859771, + "address_map": { + "exact_parametric": true, + "scope": "Syntactic full address keys; algebraic route nonaliasing inherited.", + "stage_replica_pairs": 200, + "helper_occurrences": 3317400, + "live_families": 867045 + }, + "generated_trace_delivery": "Generated on demand by the tested complete generator; partial base64 shards are excluded.", + "accepted_public_manifest_sha256": "0af10dcca505cbd913cf1b9220a08b6a62687650ace4e3d1efd093e828e3990e" +} diff --git a/docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_TESTS.py b/docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_TESTS.py new file mode 100644 index 0000000000..2d383a48ec --- /dev/null +++ b/docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_TESTS.py @@ -0,0 +1,186 @@ +#!/usr/bin/env python3 +"""Read-only positive and mutation tests for JOINT259 connection extraction.""" +import argparse +from array import array +import hashlib +import importlib.util +from itertools import zip_longest +import json +import struct +import sys +import unittest +from unittest.mock import patch +from types import ModuleType +import gzip +import io +sys.dont_write_bytecode = True +import JOINT259_CONNECTION_EXTRACT as E + + +class ConnectionTests(unittest.TestCase): + def fresh(self): + return E.Inventory({0:1,1:0,2:1}, {0:0,1:22,2:24}, ['center','other']) + + def test_add_reads_both_old_versions(self): + inv = self.fresh() + edge = inv.step(0, (1,0,2,1,1,1)) + self.assertEqual(edge[2:5], (0,1,0)) + self.assertEqual(edge[11:13], (-2,-4)) + self.assertEqual(inv.state[2], [0,1,0,-4,-4]) + + def test_move_preserves_payload_but_advances_frame(self): + inv = self.fresh() + edge = inv.step(0, (0,0,1,2,2,0)) + self.assertEqual(edge[2:4], (0,0)) + self.assertEqual(edge[8:10], (0,1)) + self.assertEqual(inv.state[0][3:], [-2,0]) + + def test_immutable_copy_lifetime_and_unique_generations(self): + inv = self.fresh() + for generation in (1,2): + at=(generation-1)*222 + inv.step(at, (2,0,E.N,1,0,22)) + for i in range(220): + inv.step(at+i+1, (1,1,E.N,1,0,0)) + inv.step(at+221, (3,0,E.N,1,0,22)) + self.assertNotIn(E.N,inv.state) + self.assertEqual([x['generation']for x in inv.lifetimes],[1,2]) + + def test_read_before_copy_rejected(self): + with self.assertRaisesRegex(ValueError,'read-before-definition'): + self.fresh().step(0,(1,1,E.N,1,0,0)) + + def test_alias_rejected(self): + with self.assertRaisesRegex(ValueError,'alias'): + self.fresh().step(0,(1,0,0,1,1,1)) + + def test_source_payload_mutation_rejected(self): + inv=self.fresh();inv.step(0,(2,0,E.N,1,0,22)) + with self.assertRaisesRegex(ValueError,'copied source mutated'): + inv.step(1,(1,0,2,1,1,1)) + + def test_source_frame_mutation_rejected(self): + inv=self.fresh();inv.step(0,(2,0,E.N,1,0,22)) + with self.assertRaisesRegex(ValueError,'copied source mutated'): + inv.step(1,(0,0,1,2,2,0)) + + def test_premature_erase_rejected(self): + inv=self.fresh();inv.step(0,(2,0,E.N,1,0,22)) + with self.assertRaisesRegex(ValueError,'scatter coverage'): + inv.step(1,(3,0,E.N,1,0,22)) + + def test_double_copy_rejected(self): + inv=self.fresh();inv.step(0,(2,0,E.N,1,0,22)) + with self.assertRaisesRegex(ValueError,'temporary live'): + inv.step(1,(2,2,E.N,1,0,22)) + + def test_bad_frame_rejected(self): + with self.assertRaisesRegex(ValueError,'required frames'): + self.fresh().step(0,(1,0,1,1,1,1)) + + def test_missing_erase_rejected(self): + inv=self.fresh();inv.step(0,(2,0,E.N,1,0,22)) + with self.assertRaisesRegex(ValueError,'unclosed COPY'): + inv.finish() + + +class PortableBindingTests(unittest.TestCase): + def test_metadata_formatting_and_runtime_variation(self): + physical=E.read_json(E.INPUT/'physical.json') + altered=dict(physical,seconds=999999,another_runtime_receipt='ignored') + self.assertEqual(E.sha(E.compact(E.invariant_metadata('physical.json',json.dumps(altered)))), + E.GENERATED_PINS['physical.json']) + altered['weighted_scalar_events']+=1 + self.assertNotEqual(E.sha(E.compact(E.invariant_metadata('physical.json',json.dumps(altered)))), + E.GENERATED_PINS['physical.json']) + + def test_recompressed_raw_accepted_and_changed_raw_rejected(self): + obj=E.Inputs.__new__(E.Inputs);obj.inputs=E.INPUT;obj.pins={} + raw=gzip.decompress((E.INPUT/'records.bin.gz').read_bytes()) + encoded=gzip.compress(raw,compresslevel=1,mtime=123456) + with patch.object(type(E.INPUT),'read_bytes',return_value=encoded): + obj.generated('records.bin.gz') + altered=bytearray(raw);altered[0]^=1 + with patch.object(type(E.INPUT),'read_bytes',return_value=gzip.compress(altered)): + with self.assertRaisesRegex(ValueError,'raw word changed'): + obj.generated('records.bin.gz') + + def test_invariant_input_tampering_rejected(self): + obj=E.Inputs.__new__(E.Inputs);obj.inputs=E.INPUT;obj.pins={} + initial=E.read_json(E.INPUT/'initial.json');initial['0']+=1 + with patch.object(type(E.INPUT),'read_bytes',return_value=json.dumps(initial).encode()): + with self.assertRaisesRegex(ValueError,'invariant metadata changed'): + obj.generated('initial.json') + + +class OutputPathTests(unittest.TestCase): + def test_existing_output_rejected(self): + with self.assertRaisesRegex(ValueError,'output must be a new file'): + E.validate_output_path(E.INPUT/'initial.json',E.PACKAGE) + def test_source_output_rejected(self): + with self.assertRaisesRegex(ValueError,'output must be outside source package'): + E.validate_output_path(E.INPUT/'JOINT259_NOT_CREATED.jsonl.gz',E.INPUT) + + +def test_complete_writer(package, inputs_path): + inputs=E.Inputs(package, inputs_path) + buffer=io.BytesIO() + with gzip.GzipFile(fileobj=buffer,mode='wb',compresslevel=1,mtime=0) as out: + result=E.write_inventory(inputs,out) + raw=hashlib.sha256();links=hashlib.sha256();count=0 + with gzip.GzipFile(fileobj=io.BytesIO(buffer.getvalue()),mode='rb') as source: + header=json.loads(next(source));E.require(header['kind']=='metadata' and header['raw_sha256']==E.RAW_SHA,'JSONL header') + footer=None + for line in source: + row=json.loads(line) + if row.get('kind')=='validation': + E.require(footer is None,'duplicate footer');footer=row;continue + E.require(footer is None and row['event_id']==count,'JSONL event coverage/order') + raw.update(E.RAW.pack(*row['raw']));links.update(E.LINK.pack(*row['connections']));count+=1 + E.require(count==859771 and raw.hexdigest()==E.RAW_SHA,'JSONL raw readback') + E.require(links.hexdigest()==E.CONNECTION_SHA==footer['link_bytes_sha256'],'JSONL link readback') + E.require(footer['events']==count,'JSONL footer coverage') + return dict(status='PASS_COMPLETE_JSONL_WRITER_READBACK',events=count,metadata_first=True, + validation_last=True,raw_sha256=raw.hexdigest(),link_sha256=links.hexdigest(), + gzip_bytes=len(buffer.getvalue()),persisted_trace=False) + + +def run_full(saved=False, package=E.PACKAGE, inputs_path=E.INPUT): + inputs=E.Inputs(package, inputs_path) + summary,_=E.scan(inputs) + E.require(summary['link_bytes_sha256']=='14d13b5b4e851a66c20af1850d77a71fe21cbe3fda35c72000709f767275222e','connection regression') + original=ModuleType('joint259_connection_original_global') + original.__file__='verified/global_lowering.py' + exec(compile(inputs.static('code/global_lowering.py'),original.__file__,'exec'),original.__dict__) + lower=original.Lowerer.__new__(original.Lowerer) + lower.records=array('i');lower.records.frombytes(inputs.raw) + if sys.byteorder!='little':lower.records.byteswap() + comparisons=[] + for stage in range(5): + digest=hashlib.sha256();count=0 + for ours,theirs in zip_longest(E.iter_stage_rows(inputs,stage),lower.iter_stage(stage)): + E.require(ours is not None and theirs is not None and ours[1]==theirs,'stage lowering divergence') + digest.update(struct.pack('<8i',*theirs));count+=1 + E.require(count==859795,'lowered stage count') + comparisons.append(dict(stage=stage,records=count,exact_original_lowerer_match=True,sha256=digest.hexdigest())) + addresses=E.address_map(inputs,exhaustive=True)['fresh_full_address_checks'] + try:inputs.plan.map_boundary_row(0,(6,0,-1,0,1,0,-1,0)) + except AssertionError:completion_rejected=True + else:raise ValueError('unproved completion mapped') + saved_count=sum(1 for _ in E.iter_saved_connections()) if saved else None + return dict(status='PASS_BOUNDED_CONNECTION_INVENTORY',events=summary['events'], + producer_consumer_links=summary['producer_consumer_links'], + immutable_copy_lifetimes=len(summary['copied_source_lifetimes']), + exact_global_lowering_comparisons=comparisons,full_addresses=addresses, + unproved_completion_rejected=completion_rejected,saved_inventory_events=saved_count, + supplier_verification_rerun=False,new_all_size_proof=False) + + +if __name__=='__main__': + parser=argparse.ArgumentParser();parser.add_argument('--full',action='store_true');parser.add_argument('--writer',action='store_true');parser.add_argument('--saved',action='store_true');parser.add_argument('--package',type=E.Path,default=E.PACKAGE);parser.add_argument('--inputs',type=E.Path,default=E.INPUT);args=parser.parse_args() + E.INPUT=args.inputs + suite=unittest.TestSuite([unittest.defaultTestLoader.loadTestsFromTestCase(ConnectionTests),unittest.defaultTestLoader.loadTestsFromTestCase(PortableBindingTests),unittest.defaultTestLoader.loadTestsFromTestCase(OutputPathTests)]) + result=unittest.TextTestRunner(stream=sys.stderr,verbosity=2).run(suite) + if not result.wasSuccessful():raise SystemExit(1) + if args.full:print(json.dumps(run_full(args.saved,args.package,args.inputs),indent=2)) + if args.writer:print(json.dumps(test_complete_writer(args.package,args.inputs),indent=2)) diff --git a/docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_VALIDATION.json b/docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_VALIDATION.json new file mode 100644 index 0000000000..8f0e00eafd --- /dev/null +++ b/docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_VALIDATION.json @@ -0,0 +1,30 @@ +{ + "schema": "joint259-connection-validation/1", + "status": "PASS_COMPLETE_STRUCTURAL_SCAN_PORTABILITY_AND_WRITER_READBACK", + "local_events": 859771, + "typed_value_frame_producer_read_links": 3439036, + "immutable_copied_source_lifetimes": 24, + "scatter_reads_per_lifetime": 220, + "unit_and_portability_tests": 14, + "exact_original_lowerer_stages": 5, + "rows_per_lowered_stage": 859795, + "syntactic_address_namespaces": 200, + "syntactic_address_keys": 4021600, + "address_sha256": "50f5ce7c36ebece906d6fa8594076e405f763873ec472f3dda6ad6d86f92b342", + "address_scope": "Distinct syntactic family/route-word keys; algebraic rational/mod-q nonaliasing is inherited, not re-proved", + "complete_jsonl_writer_readback": { + "passed": true, + "events": 859771, + "metadata_first": true, + "validation_last": true, + "raw_sha256": "acf510b1377a6bd96eea50577de1aa049382499335fa7e5cac9b0300ecb377c7", + "link_sha256": "14d13b5b4e851a66c20af1850d77a71fe21cbe3fda35c72000709f767275222e" + }, + "portability_controls": ["recompressed raw accepted", "JSON/runtime variation accepted", "altered raw rejected", "altered initial state rejected", "altered invariant census rejected"], + "independent_review": "Public-source mapping repeated complete scan, all Lowerer/address checks and actual JSONL readback successfully", + "complete_trace_persisted": false, + "partial_shards_excluded": true, + "supplier_verification_rerun": false, + "new_algebraic_or_all_size_proof": false, + "cli_output_safeguard": "Separate final I/O guard and targeted test handled by documentation builder; not included in this 14-test semantic receipt" +} diff --git a/docs/multicut-delayed-inverse-checkpoint/QA.json b/docs/multicut-delayed-inverse-checkpoint/QA.json new file mode 100644 index 0000000000..12da251c31 --- /dev/null +++ b/docs/multicut-delayed-inverse-checkpoint/QA.json @@ -0,0 +1,909 @@ +{ + "Graphviz": "not used", + "block_count": 21, + "byte_identical_rebuilds": true, + "pdfs": { + "complete_system.pdf": { + "blocks": [ + "F01", + "F02", + "F03", + "F04", + "F05", + "F06", + "F07", + "F08", + "F09", + "F10", + "F11", + "F12", + "F13", + "F14", + "F15", + "F16", + "F17", + "F18", + "F19", + "F20", + "F21" + ], + "internal_links": 774, + "pages": [ + { + "id": "CONTENTS", + "page": 1, + "title": "The selected construction, at three levels" + }, + { + "id": "H_SYSTEM", + "page": 2, + "title": "Functional hierarchy | integers to exact product" + }, + { + "id": "H_TRANSFORMS", + "page": 3, + "title": "Functional hierarchy | source-transform internals" + }, + { + "id": "FVIEW1", + "page": 4, + "title": "Functional architecture | local supplier" + }, + { + "id": "FVIEW2", + "page": 5, + "title": "Functional architecture | complete conditional closure" + }, + { + "id": "L01", + "page": 6, + "title": "Logical wiring | actual stream ABI" + }, + { + "id": "L02", + "page": 7, + "title": "Logical wiring | delayed target inverse" + }, + { + "id": "L03", + "page": 8, + "title": "Logical wiring | five-stage data paths" + }, + { + "id": "L04", + "page": 9, + "title": "Logical wiring | exact bank and replica map" + }, + { + "id": "L05", + "page": 10, + "title": "Logical wiring | closed proof ports" + }, + { + "id": "CATALOG", + "page": 11, + "title": "Functional blocks | F01 + F02" + }, + { + "id": "CATALOG02", + "page": 12, + "title": "Functional blocks | F03 + F04" + }, + { + "id": "CATALOG04", + "page": 13, + "title": "Functional blocks | F05 + F06" + }, + { + "id": "CATALOG06", + "page": 14, + "title": "Functional blocks | F07 + F08" + }, + { + "id": "CATALOG08", + "page": 15, + "title": "Functional blocks | F09 + F10" + }, + { + "id": "CATALOG10", + "page": 16, + "title": "Functional blocks | F11 + F12" + }, + { + "id": "CATALOG12", + "page": 17, + "title": "Functional blocks | F13 + F14" + }, + { + "id": "CATALOG14", + "page": 18, + "title": "Functional blocks | F15 + F16" + }, + { + "id": "CATALOG16", + "page": 19, + "title": "Functional blocks | F17 + F18" + }, + { + "id": "CATALOG18", + "page": 20, + "title": "Functional blocks | F19 + F20" + }, + { + "id": "CATALOG20", + "page": 21, + "title": "Functional blocks | F21" + }, + { + "id": "H_CATALOG", + "page": 22, + "title": "Full hierarchy | blocks 1-6 of 87" + }, + { + "id": "H_CATALOG6", + "page": 23, + "title": "Full hierarchy | blocks 7-12 of 87" + }, + { + "id": "H_CATALOG12", + "page": 24, + "title": "Full hierarchy | blocks 13-18 of 87" + }, + { + "id": "H_CATALOG18", + "page": 25, + "title": "Full hierarchy | blocks 19-24 of 87" + }, + { + "id": "H_CATALOG24", + "page": 26, + "title": "Full hierarchy | blocks 25-30 of 87" + }, + { + "id": "H_CATALOG30", + "page": 27, + "title": "Full hierarchy | blocks 31-36 of 87" + }, + { + "id": "H_CATALOG36", + "page": 28, + "title": "Full hierarchy | blocks 37-42 of 87" + }, + { + "id": "H_CATALOG42", + "page": 29, + "title": "Full hierarchy | blocks 43-48 of 87" + }, + { + "id": "H_CATALOG48", + "page": 30, + "title": "Full hierarchy | blocks 49-54 of 87" + }, + { + "id": "H_CATALOG54", + "page": 31, + "title": "Full hierarchy | blocks 55-60 of 87" + }, + { + "id": "H_CATALOG60", + "page": 32, + "title": "Full hierarchy | blocks 61-66 of 87" + }, + { + "id": "H_CATALOG66", + "page": 33, + "title": "Full hierarchy | blocks 67-72 of 87" + }, + { + "id": "H_CATALOG72", + "page": 34, + "title": "Full hierarchy | blocks 73-78 of 87" + }, + { + "id": "H_CATALOG78", + "page": 35, + "title": "Full hierarchy | blocks 79-84 of 87" + }, + { + "id": "H_CATALOG84", + "page": 36, + "title": "Full hierarchy | blocks 85-87 of 87" + }, + { + "id": "H_CONNECTIONS", + "page": 37, + "title": "Preserved interface connections | 1-10 of 53" + }, + { + "id": "H_CONNECTIONS10", + "page": 38, + "title": "Preserved interface connections | 11-20 of 53" + }, + { + "id": "H_CONNECTIONS20", + "page": 39, + "title": "Preserved interface connections | 21-30 of 53" + }, + { + "id": "H_CONNECTIONS30", + "page": 40, + "title": "Preserved interface connections | 31-40 of 53" + }, + { + "id": "H_CONNECTIONS40", + "page": 41, + "title": "Preserved interface connections | 41-50 of 53" + }, + { + "id": "H_CONNECTIONS50", + "page": 42, + "title": "Preserved interface connections | 51-53 of 53" + }, + { + "id": "H_REQUIREMENTS", + "page": 43, + "title": "Original requirement vocabulary | 1-5" + }, + { + "id": "H_REQUIREMENTS5", + "page": 44, + "title": "Original requirement vocabulary | 6-10" + }, + { + "id": "H_REQUIREMENTS10", + "page": 45, + "title": "Original requirement vocabulary | 11-15" + }, + { + "id": "H_REQUIREMENTS15", + "page": 46, + "title": "Original requirement vocabulary | 16-16" + }, + { + "id": "REQUIREMENTS", + "page": 47, + "title": "Requirement traceability | 1-6" + }, + { + "id": "REQUIREMENTS2", + "page": 48, + "title": "Requirement traceability | 7-12" + }, + { + "id": "SOURCES", + "page": 49, + "title": "Source anchors | 1-8" + }, + { + "id": "SOURCES8", + "page": 50, + "title": "Source anchors | 9-16" + }, + { + "id": "SOURCES16", + "page": 51, + "title": "Source anchors | 17-24" + }, + { + "id": "SOURCES24", + "page": 52, + "title": "Source anchors | 25-32" + }, + { + "id": "SOURCES32", + "page": 53, + "title": "Source anchors | 33-40" + }, + { + "id": "SOURCES40", + "page": 54, + "title": "Source anchors | 41-46" + }, + { + "id": "SCOPE", + "page": 55, + "title": "Coverage and publication boundary" + }, + { + "id": "BUILD", + "page": 56, + "title": "Reproduce both diagram families" + } + ], + "sha256": "1db865c17ef25786c715a5c7bbaa58707a9b565303da6b4261134157d757ce20" + }, + "functional_architecture.pdf": { + "blocks": [ + "F01", + "F02", + "F03", + "F04", + "F05", + "F06", + "F07", + "F08", + "F09", + "F10", + "F11", + "F12", + "F13", + "F14", + "F15", + "F16", + "F17", + "F18", + "F19", + "F20", + "F21" + ], + "internal_links": 756, + "pages": [ + { + "id": "CONTENTS", + "page": 1, + "title": "The selected construction, at three levels" + }, + { + "id": "H_SYSTEM", + "page": 2, + "title": "Functional hierarchy | integers to exact product" + }, + { + "id": "H_TRANSFORMS", + "page": 3, + "title": "Functional hierarchy | source-transform internals" + }, + { + "id": "FVIEW1", + "page": 4, + "title": "Functional architecture | local supplier" + }, + { + "id": "FVIEW2", + "page": 5, + "title": "Functional architecture | complete conditional closure" + }, + { + "id": "CATALOG", + "page": 6, + "title": "Functional blocks | F01 + F02" + }, + { + "id": "CATALOG02", + "page": 7, + "title": "Functional blocks | F03 + F04" + }, + { + "id": "CATALOG04", + "page": 8, + "title": "Functional blocks | F05 + F06" + }, + { + "id": "CATALOG06", + "page": 9, + "title": "Functional blocks | F07 + F08" + }, + { + "id": "CATALOG08", + "page": 10, + "title": "Functional blocks | F09 + F10" + }, + { + "id": "CATALOG10", + "page": 11, + "title": "Functional blocks | F11 + F12" + }, + { + "id": "CATALOG12", + "page": 12, + "title": "Functional blocks | F13 + F14" + }, + { + "id": "CATALOG14", + "page": 13, + "title": "Functional blocks | F15 + F16" + }, + { + "id": "CATALOG16", + "page": 14, + "title": "Functional blocks | F17 + F18" + }, + { + "id": "CATALOG18", + "page": 15, + "title": "Functional blocks | F19 + F20" + }, + { + "id": "CATALOG20", + "page": 16, + "title": "Functional blocks | F21" + }, + { + "id": "H_CATALOG", + "page": 17, + "title": "Full hierarchy | blocks 1-6 of 87" + }, + { + "id": "H_CATALOG6", + "page": 18, + "title": "Full hierarchy | blocks 7-12 of 87" + }, + { + "id": "H_CATALOG12", + "page": 19, + "title": "Full hierarchy | blocks 13-18 of 87" + }, + { + "id": "H_CATALOG18", + "page": 20, + "title": "Full hierarchy | blocks 19-24 of 87" + }, + { + "id": "H_CATALOG24", + "page": 21, + "title": "Full hierarchy | blocks 25-30 of 87" + }, + { + "id": "H_CATALOG30", + "page": 22, + "title": "Full hierarchy | blocks 31-36 of 87" + }, + { + "id": "H_CATALOG36", + "page": 23, + "title": "Full hierarchy | blocks 37-42 of 87" + }, + { + "id": "H_CATALOG42", + "page": 24, + "title": "Full hierarchy | blocks 43-48 of 87" + }, + { + "id": "H_CATALOG48", + "page": 25, + "title": "Full hierarchy | blocks 49-54 of 87" + }, + { + "id": "H_CATALOG54", + "page": 26, + "title": "Full hierarchy | blocks 55-60 of 87" + }, + { + "id": "H_CATALOG60", + "page": 27, + "title": "Full hierarchy | blocks 61-66 of 87" + }, + { + "id": "H_CATALOG66", + "page": 28, + "title": "Full hierarchy | blocks 67-72 of 87" + }, + { + "id": "H_CATALOG72", + "page": 29, + "title": "Full hierarchy | blocks 73-78 of 87" + }, + { + "id": "H_CATALOG78", + "page": 30, + "title": "Full hierarchy | blocks 79-84 of 87" + }, + { + "id": "H_CATALOG84", + "page": 31, + "title": "Full hierarchy | blocks 85-87 of 87" + }, + { + "id": "H_CONNECTIONS", + "page": 32, + "title": "Preserved interface connections | 1-10 of 53" + }, + { + "id": "H_CONNECTIONS10", + "page": 33, + "title": "Preserved interface connections | 11-20 of 53" + }, + { + "id": "H_CONNECTIONS20", + "page": 34, + "title": "Preserved interface connections | 21-30 of 53" + }, + { + "id": "H_CONNECTIONS30", + "page": 35, + "title": "Preserved interface connections | 31-40 of 53" + }, + { + "id": "H_CONNECTIONS40", + "page": 36, + "title": "Preserved interface connections | 41-50 of 53" + }, + { + "id": "H_CONNECTIONS50", + "page": 37, + "title": "Preserved interface connections | 51-53 of 53" + }, + { + "id": "H_REQUIREMENTS", + "page": 38, + "title": "Original requirement vocabulary | 1-5" + }, + { + "id": "H_REQUIREMENTS5", + "page": 39, + "title": "Original requirement vocabulary | 6-10" + }, + { + "id": "H_REQUIREMENTS10", + "page": 40, + "title": "Original requirement vocabulary | 11-15" + }, + { + "id": "H_REQUIREMENTS15", + "page": 41, + "title": "Original requirement vocabulary | 16-16" + }, + { + "id": "REQUIREMENTS", + "page": 42, + "title": "Requirement traceability | 1-6" + }, + { + "id": "REQUIREMENTS2", + "page": 43, + "title": "Requirement traceability | 7-12" + }, + { + "id": "SOURCES", + "page": 44, + "title": "Source anchors | 1-8" + }, + { + "id": "SOURCES8", + "page": 45, + "title": "Source anchors | 9-16" + }, + { + "id": "SOURCES16", + "page": 46, + "title": "Source anchors | 17-24" + }, + { + "id": "SOURCES24", + "page": 47, + "title": "Source anchors | 25-32" + }, + { + "id": "SOURCES32", + "page": 48, + "title": "Source anchors | 33-40" + }, + { + "id": "SOURCES40", + "page": 49, + "title": "Source anchors | 41-46" + }, + { + "id": "SCOPE", + "page": 50, + "title": "Coverage and publication boundary" + }, + { + "id": "BUILD", + "page": 51, + "title": "Reproduce both diagram families" + } + ], + "sha256": "4bbee6f185f11d8283b9432a2e8fb011f70c335defc881027220c3c90dcbc37c" + }, + "logical_wiring.pdf": { + "blocks": [ + "F01", + "F02", + "F03", + "F04", + "F05", + "F06", + "F07", + "F08", + "F09", + "F10", + "F11", + "F12", + "F13", + "F14", + "F15", + "F16", + "F17", + "F18", + "F19", + "F20", + "F21" + ], + "internal_links": 749, + "pages": [ + { + "id": "CONTENTS", + "page": 1, + "title": "The selected construction, at three levels" + }, + { + "id": "H_SYSTEM", + "page": 2, + "title": "Functional hierarchy | integers to exact product" + }, + { + "id": "H_TRANSFORMS", + "page": 3, + "title": "Functional hierarchy | source-transform internals" + }, + { + "id": "L01", + "page": 4, + "title": "Logical wiring | actual stream ABI" + }, + { + "id": "L02", + "page": 5, + "title": "Logical wiring | delayed target inverse" + }, + { + "id": "L03", + "page": 6, + "title": "Logical wiring | five-stage data paths" + }, + { + "id": "L04", + "page": 7, + "title": "Logical wiring | exact bank and replica map" + }, + { + "id": "L05", + "page": 8, + "title": "Logical wiring | closed proof ports" + }, + { + "id": "CATALOG", + "page": 9, + "title": "Functional blocks | F01 + F02" + }, + { + "id": "CATALOG02", + "page": 10, + "title": "Functional blocks | F03 + F04" + }, + { + "id": "CATALOG04", + "page": 11, + "title": "Functional blocks | F05 + F06" + }, + { + "id": "CATALOG06", + "page": 12, + "title": "Functional blocks | F07 + F08" + }, + { + "id": "CATALOG08", + "page": 13, + "title": "Functional blocks | F09 + F10" + }, + { + "id": "CATALOG10", + "page": 14, + "title": "Functional blocks | F11 + F12" + }, + { + "id": "CATALOG12", + "page": 15, + "title": "Functional blocks | F13 + F14" + }, + { + "id": "CATALOG14", + "page": 16, + "title": "Functional blocks | F15 + F16" + }, + { + "id": "CATALOG16", + "page": 17, + "title": "Functional blocks | F17 + F18" + }, + { + "id": "CATALOG18", + "page": 18, + "title": "Functional blocks | F19 + F20" + }, + { + "id": "CATALOG20", + "page": 19, + "title": "Functional blocks | F21" + }, + { + "id": "H_CATALOG", + "page": 20, + "title": "Full hierarchy | blocks 1-6 of 87" + }, + { + "id": "H_CATALOG6", + "page": 21, + "title": "Full hierarchy | blocks 7-12 of 87" + }, + { + "id": "H_CATALOG12", + "page": 22, + "title": "Full hierarchy | blocks 13-18 of 87" + }, + { + "id": "H_CATALOG18", + "page": 23, + "title": "Full hierarchy | blocks 19-24 of 87" + }, + { + "id": "H_CATALOG24", + "page": 24, + "title": "Full hierarchy | blocks 25-30 of 87" + }, + { + "id": "H_CATALOG30", + "page": 25, + "title": "Full hierarchy | blocks 31-36 of 87" + }, + { + "id": "H_CATALOG36", + "page": 26, + "title": "Full hierarchy | blocks 37-42 of 87" + }, + { + "id": "H_CATALOG42", + "page": 27, + "title": "Full hierarchy | blocks 43-48 of 87" + }, + { + "id": "H_CATALOG48", + "page": 28, + "title": "Full hierarchy | blocks 49-54 of 87" + }, + { + "id": "H_CATALOG54", + "page": 29, + "title": "Full hierarchy | blocks 55-60 of 87" + }, + { + "id": "H_CATALOG60", + "page": 30, + "title": "Full hierarchy | blocks 61-66 of 87" + }, + { + "id": "H_CATALOG66", + "page": 31, + "title": "Full hierarchy | blocks 67-72 of 87" + }, + { + "id": "H_CATALOG72", + "page": 32, + "title": "Full hierarchy | blocks 73-78 of 87" + }, + { + "id": "H_CATALOG78", + "page": 33, + "title": "Full hierarchy | blocks 79-84 of 87" + }, + { + "id": "H_CATALOG84", + "page": 34, + "title": "Full hierarchy | blocks 85-87 of 87" + }, + { + "id": "H_CONNECTIONS", + "page": 35, + "title": "Preserved interface connections | 1-10 of 53" + }, + { + "id": "H_CONNECTIONS10", + "page": 36, + "title": "Preserved interface connections | 11-20 of 53" + }, + { + "id": "H_CONNECTIONS20", + "page": 37, + "title": "Preserved interface connections | 21-30 of 53" + }, + { + "id": "H_CONNECTIONS30", + "page": 38, + "title": "Preserved interface connections | 31-40 of 53" + }, + { + "id": "H_CONNECTIONS40", + "page": 39, + "title": "Preserved interface connections | 41-50 of 53" + }, + { + "id": "H_CONNECTIONS50", + "page": 40, + "title": "Preserved interface connections | 51-53 of 53" + }, + { + "id": "H_REQUIREMENTS", + "page": 41, + "title": "Original requirement vocabulary | 1-5" + }, + { + "id": "H_REQUIREMENTS5", + "page": 42, + "title": "Original requirement vocabulary | 6-10" + }, + { + "id": "H_REQUIREMENTS10", + "page": 43, + "title": "Original requirement vocabulary | 11-15" + }, + { + "id": "H_REQUIREMENTS15", + "page": 44, + "title": "Original requirement vocabulary | 16-16" + }, + { + "id": "REQUIREMENTS", + "page": 45, + "title": "Requirement traceability | 1-6" + }, + { + "id": "REQUIREMENTS2", + "page": 46, + "title": "Requirement traceability | 7-12" + }, + { + "id": "SOURCES", + "page": 47, + "title": "Source anchors | 1-8" + }, + { + "id": "SOURCES8", + "page": 48, + "title": "Source anchors | 9-16" + }, + { + "id": "SOURCES16", + "page": 49, + "title": "Source anchors | 17-24" + }, + { + "id": "SOURCES24", + "page": 50, + "title": "Source anchors | 25-32" + }, + { + "id": "SOURCES32", + "page": 51, + "title": "Source anchors | 33-40" + }, + { + "id": "SOURCES40", + "page": 52, + "title": "Source anchors | 41-46" + }, + { + "id": "SCOPE", + "page": 53, + "title": "Coverage and publication boundary" + }, + { + "id": "BUILD", + "page": 54, + "title": "Reproduce both diagram families" + } + ], + "sha256": "f700f70c7192d57271fcb6434b16720b4f39d60850c72d76040b5d67cd9497f5" + } + }, + "requirements": 12, + "science_replay": "not run by documentation build", + "scientific_archive_manifest_sha256": "9f6d8637b9a119cfe4566a02ab2d704f23c502e5e4357b40c28ef85a3fd4de89", + "source_anchors": 46, + "source_binding_configuration_sha256": "53acbfc4c9cb93404f951789e866339a315ae84d6218a32932638a6ecc6d961c", + "source_files": 136, + "source_manifest_sha256": "0af10dcca505cbd913cf1b9220a08b6a62687650ace4e3d1efd093e828e3990e", + "status": "PASS_DOCUMENT_STRUCTURE_AND_DETERMINISM", + "typed_block_edges": 53, + "visual_review": "separate; not inferred from structural checks" +} diff --git a/docs/multicut-delayed-inverse-checkpoint/README.md b/docs/multicut-delayed-inverse-checkpoint/README.md new file mode 100644 index 0000000000..fe1a08b766 --- /dev/null +++ b/docs/multicut-delayed-inverse-checkpoint/README.md @@ -0,0 +1,213 @@ +# Logical and Functional Diagrams, Explanations, and Build Tools + +This package documents the verified PR259-derived construction checkpoint in +[PR #277](https://github.com/CrocSwap/integer-mult-bounds/pull/277). +[Exact public construction source and reproduction instructions](https://github.com/hcg890/integer-mult-bounds/blob/c2f07d311bfdad0d89bf961e4da133ee97bb78de/research/multicut-delayed-inverse-checkpoint/README.md) +are pinned to commit `c2f07d311bfdad0d89bf961e4da133ee97bb78de`. +The approved public source manifest is pinned below. +The later PR266 result is stronger; this checkpoint's conditional exponent is +0.000711045547624400. + +![Functional overview](summary-functional.svg) + +[Open the complete functional architecture](functional_architecture.pdf) + +![Logical/wiring overview](summary-logical.svg) + +[Open the complete logical/wiring document](logical_wiring.pdf) + +## Read the diagrams + +Each PDF has contents, outline bookmarks, clickable block explanations, +requirements, source anchors and cross-page references. The separate +complete_system.pdf combines both views. + +There are three deliberately separate layers: + +1. The full integer-product hierarchy preserves all 87 original A/B/C/R/D block + IDs. The outer algorithm and inherited theorem interfaces remain explicit + contracts. Historical source471 internals are not silently treated as the + current source527 implementation. +2. F01-F21 explain the selected current construction. All 53 declared block + dependencies name their input/output ports. These are architecture and + evidence dependencies, not scalar-operation edges. +3. JOINT259_CONNECTION_EXTRACT.py reconstructs the exact selected local + operation/value/frame connection inventory and the indexed global address + map. The ordinary diagrams use compact buses and templates instead of drawing + millions of repeated edges. + +All 53 original typed relations and 75 documentary relations are retained in +hierarchy_edges.json with current scope classifications. A historical relation +is never promoted to current physical execution merely because its names match. + +The selected composition is: exact PR249's 21 entrances; 513 of PR259's 518 +cohorts; seven closed delayed-inverse intervals replacing five conflicting +quartets; the same 25 PR258/PR260 retimings applied once. PR251's extra sixteen +entrances are excluded. PR254 is ancestry, not an additional independent gain. + +## Rebuild PDF and SVG + +Use Python 3.11 or later. Install the pinned dependencies: + + python -m pip install -r joint259_system_docs_requirements.txt + +From this documentation directory, run: + + python -B joint259_system_docs_incremental.py --source /path/to/verified/construction --cache ./page-cache.json --output ./build-new --svg + +The source may be the admitted construction directory or its ZIP. The approved +public manifest is 0af10dcca505cbd913cf1b9220a08b6a62687650ace4e3d1efd093e828e3990e: +137 total paths, including 136 manifest members and 117 unchanged numerical +source pins. The original tested archive is also admitted. Every file is checked; +unknown manifests, missing/extra files, symlinks and path aliases are rejected. +source_binding.json and QA.json distinguish the actual consumed manifest from +the scientific archive. The public documentation cleanup reuses that archive's +scientific execution evidence; documentation generation does not replay science. + +Choose a new output directory for every build and reuse the cache file. +The source package is checked before and after the build and is never modified. +Use --clean to ignore the cache. Without --svg, PDF generation uses Python only. + +Python dependencies: +- reportlab==4.4.9 +- pypdf==6.10.0 +- Pillow==12.3.0 +- charset-normalizer==3.5.1 + +System dependencies: +- Graphviz is not used. +- SVG export requires Poppler pdftocairo on PATH. The tested converter is + 25.03.0; its actual executable/version is included in cache dependencies. +- Raster equivalence tests require pdftoppm. The tested version is 26.05.0. +- Document fonts are the Vera font bytes bundled in the pinned ReportLab wheel. + No platform-installed fonts are needed for the PDFs or outlined page SVGs. +- The two small summary SVGs use ordinary vector text with explicit font sizes. + They are rebuilt each time, separately from the page-render cache. + +On macOS, Poppler is available from the official Homebrew package. On Debian or +Ubuntu it is provided by poppler-utils. Installing a different converter version +invalidates SVG cache entries; byte-identical SVG comparisons require the same +converter. + +## What is regenerated + +The one command regenerates both PDF families, the combined PDF, two PR summary +SVGs, linked per-page vector SVGs, source/requirement/connection indexes, +hierarchy reconciliation, sanitized scientific reproduction facts and build +receipts. Every diagram family consumes the same models. + +The incremental build records each page's actual vector drawing commands, then +reuses only cache entries with matching schema, drawing plan, source/dependency +keys, font bytes and PDF hash. It always rebuilds navigation and current +indexes. Link-target-only changes can reuse a page's appearance while changing +its live links. Unchanged page drawings remain identical. + +Cached visuals are not proof receipts. The cache is local build state with +staleness and accidental-corruption checks, not an authenticated database +against someone who can replace both data and its hashes. + +[Detailed cache design, command options and tests](joint259_system_docs_incremental_README.md) + +## Safe changes and the parser boundary + +This is a reusable documentation and finite-IR extraction pipeline within its +declared formats. It is not an arbitrary-program architecture inference tool. + +Automatic after a valid, explicitly reviewed input/model update: +- Re-extract source/destination and value/frame dependencies from supported + local MOVE, ADD, COPY and ERASE records. +- Expand the supported five-stage and BankPlan index/address maps. +- Regenerate matching diagrams, block explanations, indexes and navigation. +- Repaint affected pages and compare incremental output against a clean build. + +A reviewer must update the adapter/model when a new opcode, ownership rule, +address-map family, proof interface or narrative meaning appears. Unknown +source pins, undeclared ports, missing required inputs and unsupported local +operations fail; they must not silently reuse old explanations or receipts. +A source-byte change does not automatically establish a new mathematical proof. + +Minimal update procedure: + +1. Create a separately pinned construction snapshot and obtain its required + scientific verification. Preserve the prior checkpoint. +2. Review source/IR compatibility, every changed proof interface and the active + numerical pins. Update the source-binding configuration deliberately. +3. Update affected F blocks, ports, explanations, requirements and heritage. + Reconcile changed A/B/C/R/D allocations and inherited contracts. +4. Run the exact connection extractor and its hostile tests from the new + admitted outputs. Do not treat a matching dimension as a matching subspace. +5. Run a clean documentation build and a warm/changed build; compare outputs. + Check every changed page visually at normal reading size. +6. Obtain independent mathematical/source and visual review, then record the + exact deliverable hashes and actual construction PR number. + +Compatible data changes are parsed; new semantics are reviewed. Current +checkpoint-specific source and result expectations are intentional guards. + +## Test the rebuild behavior + + python -B joint259_system_docs_incremental_test.py --source /path/to/verified/construction --raster-dpi 40 + +Tests use in-memory controlled changes and do not edit scientific inputs. +They check: +- Cold, warm and changed clean/incremental PDF byte equality +- Original-renderer versus cached-renderer drawing streams, text and links +- Every PDF page's raster pixels at the requested resolution +- Block behavior, visible names, requirements, source-index metadata and wiring +- Added/deleted pages, stable-ID renames, index-formula changes and undo +- Internal and external link-target-only edits with zero unnecessary repainting +- Renderer/config/font/source dependency invalidation +- Damaged cache schemas, keys, hashes and page bytes +- Rejection of an unrecognized scientific source pin +- Vector-only SVG exports and preserved links + +The recorded current suite covers 161 pages across 51-page functional, +54-page logical and 56-page combined documents. Measured example timings on the +cloud were 0.560 s cold, 0.375 s warm and 0.373 s for one behavior edit; that edit +repainted one of 56 master pages. These are documentation build measurements, +not multiplication runtime claims. Exact final timings and hashes are in +joint259_system_docs_incremental_test_report.json. + +## Scientific and coverage boundary + +The original scientific package manifest is +9f6d8637b9a119cfe4566a02ab2d704f23c502e5e4357b40c28ef85a3fd4de89. +Its selected raw word is +acf510b1377a6bd96eea50577de1aa049382499335fa7e5cac9b0300ecb377c7. + +Mac reproduction passes all eight mandatory stages, with all 143 source files +unchanged, 25 scalar controls, six prime controls and eight omitted-stage +controls. The certificate SHA256 is +7eb58ec449c932b7092481746390c776365f302a742836cddef5643c0351802b. +scientific_reproduction.json contains sanitized source-bound evidence facts. + +The result remains conditional on the inherited all-size compiler, +GL-cover/common-ancestor charts, restored rows, routing, prime supply, recovery, +complex-symbolic and analytic interfaces. Those internals are contracts in these +diagrams. Neither compact bus notation nor a successful documentation build +proves unexpanded internals. + +The local scan covers 859,771 operations and 3,439,036 explicit value/frame +producer-consumer links. All 24 copied-center lifetimes and their 220 reads each +are checked. Five stage streams are compared against the original Lowerer, and +all 4,021,600 full-address keys across 200 stage/replica namespaces are checked +for injectivity. The public deliverable uses the reproducible extractor, +manifest and summary rather than a giant pre-expanded trace. + +## Notation and provenance + +Compact buses, indexed repeated instances and linked hierarchy follow familiar +EDA conventions while preserving mathematical stream types. Frame dimension +is not a hardware bit width, and these diagrams do not claim a hardware clock +rate. The exact expansion formulas are project-specific. + +Examples of primary-source conventions: +- [KiCad buses and hierarchical sheets](https://docs.kicad.org/9.0/en/eeschema/eeschema.html#buses) +- [AMD Vivado selective logic expansion](https://docs.amd.com/r/en-US/ug893-vivado-ide/Expanding-Logic-from-Selected-Cells-and-Pins) +- [MathWorks bus element interfaces](https://www.mathworks.com/help/simulink/ug/simplify-subsystem-bus-interfaces.html) + +Historical documentation is preserved unchanged. Contributor licenses, +attribution and AI-assistance disclosures remain part of the source lineage. +The construction's heritage appendix is the authoritative detailed credit +record; diagrams do not imply contributor review or endorsement. + diff --git a/docs/multicut-delayed-inverse-checkpoint/complete_system.pdf b/docs/multicut-delayed-inverse-checkpoint/complete_system.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f00ae3489fc74475dcb4b15e5c5e241e4cc1a203 GIT binary patch literal 916503 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

>PP))_xXTXSk(?ghj&`;G z45T!^7UCqJ-SE~d4=AOea(H`ahM1{P(*H%ljge)!gEGY1G~$w+k6Q|pDIPMd#yT?B z=g&t;AorXMk<$KFak<#|7!!Ry#uZ3wzrQsi2qXRdv6f1*i3LhKe;)1|T{gVmtbRV4 z6@{%P(g2J-@}X&n<;I!ZL0ASBIFbAk>=&Pp>Bg4TlCGiQ8kOSdz&q`Ay%Li$`blNt za%S311e4MFJZJbUHtQ&C*=%tb)q_klHI9|itA5T1w|Ko%%?Wuf?~nfRu;4!(aV{Nu z((+jn--E7C=Xa#qh7^^oU zdN#bf{d-w-VKbxk5# zf5cw0B~m32&s6v+A3I#4(VXR=<6^nV(=Vew+pB%Gu z&QU0)oph?a1K9f=In!~!@sbQ=H>fl~)`GN_<%`L>TV1CXPX#!vxgi0%BcGe{x`J~2 z7`dWz9Ze(lR0?Zx=Us3IR>(P?9vun_*q>dw+4T)i_O$cX!!FrrEFlW!GOIS4np&|g z7CB7DwyE$TuO(}!Y+V`}n&pbT)8|lA&g*_pAiKT0jm&<$U~(A%o9sM^-^QKk6RM8p zC}%4p8}mgJzs+lgtN-p}xeG?GT%VcTZ0lunj3SRK`KE`t5YUx;uY zwjYs=YCz2FU#fsXr=pDoy>-65fOFlEF)ylY$ks))$s22N+VI1s(Ms?a)%_izAlpkx zZ#%V#-YFMVasu>!hR~@2kW8*(*3$=su1oa(_LlTmF0(}uC|~=i8>7vJMgOA64Pcrg zHWVb4KC65{i@SF>Dk-9`kAeYfEtbHoo+^*@_PfOpu%E#r1Se)o#IZq-L-(fmVEW`qxk1_PFhJ5oE2(Wt z!7)(XIF0G8*4uX8SZU;B@6Dbv)K|P~IW75*Ib-e#qEeLT*5dKLq{WpcXp&iQzw!Gy zQTEaJgEN5VxsyoN%e!lc&^Ims8}u;OPB8ZLB)s< zWcKp#33TUt#>&hgdHYorGrN5XmE!eV=ojbW3|R`Ewdm7z)B3AbI9s|8UB8&BFIzlX z9;_-5Bf~5I6QkgA#$zAVFE`%=QzqQ`JKJ*MY=JOQxDX)DKN2Vn`SgEK;V9>sPm%kZ>rDI+sU=E{sJmcX$taO%*;DX^ z8`V`8W&1;~sL^}86aC#;3dnN z{$LYR_ih?SYsq)irFhJR z{U&JqA{7cNw|hp`!e~XYDhy2ZWff6Xr2X&$rXot=<-!2=ni&P}gLO7qs<9Nl2tTl+ zQ1E99o~48Z?RMct#T??fx*EE&DJojB;&AGe^Icg_rY^zg@tBTF(ZwAQ?-$~kbhZ^b zI>ZY=7Z3mvBuo|`v1N39F*EAxuxk*^=_WjyJ^9OB4W_Qi`aCB`K-)7y7kY;~@ zbm-vBzOlhK=HN)`$WN}0gzil!%`Z+gUY*Y?3pxUy!f;0gQ6FL4)!s>rtZVe`N2b~|$5qPjv1 zEe{^)pwsWgh0cX=>t@#AlYa_3vhk?v=_b#HWy7!8*OLM9s2|hO$(+iW^BDBy4w)A_ zA~InhD<}^z)j@dzcFnuNZHt8R+;6KT1};d2#pj zyZBk`K%|if_NG9R3DsF+#RTzAJEy*v&6rh27Tf%}p5lEG07LtM%q<(hR->xtx=ocK z0S}~ndJ;6XUil&YNcGbM8rZMy0&?x=z5Ka%T&B(HDxWqKXB%0Dn}fD(Jq9xRnLWKm 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

&C#u`bg8u9;I+I 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 L|Ms8%{^S1v-FD*d literal 0 HcmV?d00001 diff --git a/docs/multicut-delayed-inverse-checkpoint/connection_index.json b/docs/multicut-delayed-inverse-checkpoint/connection_index.json new file mode 100644 index 0000000000..27df217ebb --- /dev/null +++ b/docs/multicut-delayed-inverse-checkpoint/connection_index.json @@ -0,0 +1,1089 @@ +{ + "block_edges": [ + { + "from": "F01", + "id": "E01", + "in": "recipes", + "out": "recipes", + "to": "F02" + }, + { + "from": "F02", + "id": "E02", + "in": "context", + "out": "context", + "to": "F03" + }, + { + "from": "F03", + "id": "E03", + "in": "word", + "out": "word", + "to": "F04" + }, + { + "from": "F04", + "id": "E04", + "in": "word", + "out": "word", + "to": "F05" + }, + { + "from": "F05", + "id": "E05", + "in": "word", + "out": "word", + "to": "F06" + }, + { + "from": "F06", + "id": "E06", + "in": "base", + "out": "base", + "to": "F07" + }, + { + "from": "F06", + "id": "E07", + "in": "base/cohorts", + "out": "base", + "to": "F08" + }, + { + "from": "F07", + "id": "E08", + "in": "base/cohorts", + "out": "cohorts", + "to": "F08" + }, + { + "from": "F08", + "id": "E09", + "in": "word", + "out": "word", + "to": "F09" + }, + { + "from": "F09", + "id": "E10", + "in": "finalword", + "out": "finalword", + "to": "F10" + }, + { + "from": "F09", + "id": "E11", + "in": "finalword", + "out": "finalword", + "to": "F11" + }, + { + "from": "F11", + "id": "E12", + "in": "global", + "out": "global", + "to": "F12" + }, + { + "from": "F12", + "id": "E13", + "in": "packing", + "out": "packing", + "to": "F13" + }, + { + "from": "F13", + "id": "E14", + "in": "packing/charts", + "out": "normalizers", + "to": "F14" + }, + { + "from": "F11", + "id": "E15", + "in": "global", + "out": "global", + "to": "F14" + }, + { + "from": "F09", + "id": "E16", + "in": "final/global", + "out": "finalword", + "to": "F15" + }, + { + "from": "F11", + "id": "E17", + "in": "final/global", + "out": "global", + "to": "F15" + }, + { + "from": "F01", + "id": "E18", + "in": "complexpins", + "out": "recipes", + "to": "F16" + }, + { + "from": "F14", + "id": "E19", + "in": "literal", + "out": "literal", + "to": "F17" + }, + { + "from": "F16", + "id": "E20", + "in": "complex", + "out": "complex", + "to": "F17" + }, + { + "from": "F17", + "id": "E21", + "in": "rates", + "out": "rates", + "to": "F18" + }, + { + "from": "F18", + "id": "E22", + "in": "ordinary", + "out": "ordinary", + "to": "F19" + }, + { + "from": "F16", + "id": "E23", + "in": "complex", + "out": "guard", + "to": "F19" + }, + { + "from": "F10", + "id": "E24", + "in": "semantics/primes/rates", + "out": "semantics", + "to": "F20" + }, + { + "from": "F15", + "id": "E25", + "in": "semantics/primes/rates", + "out": "primes", + "to": "F20" + }, + { + "from": "F17", + "id": "E26", + "in": "semantics/primes/rates", + "out": "rates", + "to": "F20" + }, + { + "from": "F14", + "id": "E27", + "in": "final/global/literal", + "out": "literal", + "to": "F20" + }, + { + "from": "F19", + "id": "E28", + "in": "math", + "out": "bound", + "to": "F21" + }, + { + "from": "F20", + "id": "E29", + "in": "finite", + "out": "finite", + "to": "F21" + }, + { + "from": "F02", + "id": "E30", + "in": "sourceword", + "out": "sourceword", + "to": "F10" + }, + { + "from": "F01", + "id": "E31", + "in": "selection", + "out": "recipes", + "to": "F05" + }, + { + "from": "F01", + "id": "E32", + "in": "selection", + "out": "recipes", + "to": "F06" + }, + { + "from": "F01", + "id": "E33", + "in": "candidates", + "out": "recipes", + "to": "F07" + }, + { + "from": "F01", + "id": "E34", + "in": "selection", + "out": "recipes", + "to": "F07" + }, + { + "from": "F01", + "id": "E35", + "in": "intervals", + "out": "recipes", + "to": "F08" + }, + { + "from": "F01", + "id": "E36", + "in": "selection", + "out": "recipes", + "to": "F09" + }, + { + "from": "F09", + "id": "E37", + "in": "paths", + "out": "paths", + "to": "F11" + }, + { + "from": "F09", + "id": "E38", + "in": "entrances", + "out": "entrances", + "to": "F12" + }, + { + "from": "F09", + "id": "E39", + "in": "registry", + "out": "registry", + "to": "F13" + }, + { + "from": "F12", + "id": "E40", + "in": "packing/charts", + "out": "packing", + "to": "F14" + }, + { + "from": "F09", + "id": "E41", + "in": "context", + "out": "context", + "to": "F15" + }, + { + "from": "F09", + "id": "E42", + "in": "final/global/literal", + "out": "finalword", + "to": "F20" + }, + { + "from": "F11", + "id": "E43", + "in": "final/global/literal", + "out": "global", + "to": "F20" + }, + { + "from": "F09", + "id": "E44", + "in": "raw", + "out": "raw", + "to": "F21" + }, + { + "from": "F11", + "id": "E45", + "in": "bit", + "out": "global", + "to": "F21" + }, + { + "from": "F15", + "id": "E46", + "in": "bit", + "out": "geometry", + "to": "F21" + }, + { + "from": "F10", + "id": "E47", + "in": "scalar", + "out": "semantics", + "to": "F21" + }, + { + "from": "F15", + "id": "E48", + "in": "primes", + "out": "primes", + "to": "F21" + }, + { + "from": "F14", + "id": "E49", + "in": "banks", + "out": "bankword", + "to": "F21" + }, + { + "from": "F16", + "id": "E50", + "in": "complex", + "out": "complex", + "to": "F21" + }, + { + "from": "F17", + "id": "E51", + "in": "complex", + "out": "rates", + "to": "F19" + }, + { + "from": "F10", + "id": "E52", + "in": "semantics/primes/rates", + "out": "prefix", + "to": "F20" + }, + { + "from": "F10", + "id": "E53", + "in": "scalar", + "out": "prefix", + "to": "F21" + } + ], + "blocks": [ + { + "brief": "Byte-bound recipes and witnesses", + "heritage": "Current composition; imported sources retain their own notices.", + "id": "F01", + "inputs": [ + "package: immutable files and MANIFEST.json" + ], + "invariants": [ + "Manifest SHA256 is 9f6d8637b9a119cfe4566a02ab2d704f23c502e5e4357b40c28ef85a3fd4de89.", + "Assertions enabled; no saved execution receipt is a verifier input." + ], + "name": "Pinned source inputs", + "outputs": [ + "pins: manifest digest and complete file census", + "recipes: exact witness bytes" + ], + "requirements": [ + "R01", + "R11" + ], + "sources": [ + "verify.py|def integrity()", + "PR259-PROVENANCE.md|# PR259 lineage" + ], + "what": "Read the selected package manifest, source527 recipes, PR259 candidate gzip, exact interval and retiming witnesses, and the independent complex certificate. Reject missing, extra, changed or symlinked package files.", + "why": "Every later identity and price must refer to one reproducible construction, rather than a compatible-looking saved histogram." + }, + { + "brief": "Owned sources and arbitrary dirty roles", + "heritage": "Source527 integrates PR210, PR230, PR216, PR207, PR211, PR200 and retained dependencies; exact source for this composition is PR249.", + "id": "F02", + "inputs": [ + "recipes: pinned source and selection files" + ], + "invariants": [ + "v=1,760; h=24; 16,587 independent helper roles; 20,107 formal local columns.", + "Producer context and defining signed decoder remain unchanged by the new hybrid." + ], + "name": "Source527 producer", + "outputs": [ + "context: W, C, regs, borrow, SOURCE_TEXT", + "sourceword: defining scalar program" + ], + "requirements": [ + "R01", + "R02", + "R03" + ], + "sources": [ + "prepare.py|def prepare()", + "source527/word.py|def" + ], + "what": "Reconstruct the fixed source program, physical ownership, source aliases, target aggregation, rank/echelon transforms, borrowed roles and exact frame registry. The 527 source aliases are inherited, not newly searched by this documentation build.", + "why": "The selected transformations need a fully defined semantic producer and ownership map. Arbitrary dirty contents cannot be replaced with zero-filled conveniences." + }, + { + "brief": "Literal MOVE / ADD / COPY / ERASE", + "heritage": "PR234 five-stage/source-bound physical interface, adapted to source527.", + "id": "F03", + "inputs": [ + "context: owned roles, frames and source text" + ], + "invariants": [ + "COPY source is immutable during its window; no stale temporary read or inverse erasure.", + "Every positive MOVE increment and center copy contributes to the paid histogram." + ], + "name": "Physical event emitter", + "outputs": [ + "word: six-field physical records", + "paths: initial/final frames, required uses, categories" + ], + "requirements": [ + "R02", + "R03", + "R04" + ], + "sources": [ + "code/physical527.py|def run(" + ], + "what": "Instrument the reconstructed source program to emit six-integer local records, exact required-use frame paths and tagged scalar events. A single temporary serves 24 copied-center episodes; each has a rank-22 paid copy and 220 scatter reads.", + "why": "A literal physical word binds algebra to movement cost and copied-center lifetime. A scalar identity alone does not price the construction." + }, + { + "brief": "Delete even ADDs; telescope uses", + "heritage": "PR244 parity-filtered/common-frame source lineage; primary bit scalar contract retained.", + "id": "F04", + "inputs": [ + "word: defining physical records" + ], + "invariants": [ + "1,783,196 even ADDs removed; 786,621 surviving ADDs before later transforms.", + "COPY/ERASE, old endpoints, stage boundaries and odd-prime address arithmetic remain intact." + ], + "name": "F2 payload fusion", + "outputs": [ + "word: parity-filtered physical records", + "ledger: recomputed forward/reflected MOVE widths" + ], + "requirements": [ + "R02", + "R03", + "R04", + "R06" + ], + "sources": [ + "parity_transform.py|def run(", + "proof/PARITY-CONTRACT.md|## Operator proof" + ], + "what": "Remove even-coefficient payload additions, preserve all surviving odd additions in order, and fuse monotone frame moves only between surviving uses and required boundaries. Rebuild forward and reflected paid paths.", + "why": "Payload scalars are binary even though address geometry is rational and uses odd primes. Removing an F2 identity can eliminate otherwise unnecessary alignment work." + }, + { + "brief": "Existing common delivery frames", + "heritage": "PR244 and exact PR249 base lineage.", + "id": "F05", + "inputs": [ + "word: parity-filtered records", + "selection: retiming-selection.json" + ], + "invariants": [ + "364 events, including 353 unborrowed pair mixes, use their existing common delivery frames.", + "No change to input/output frames or copied-center lifetimes." + ], + "name": "Inherited 364 retimings", + "outputs": [ + "word: inherited-retimed records", + "ledger: exact local histogram" + ], + "requirements": [ + "R03", + "R04" + ], + "sources": [ + "retiming_transform.py|def run(", + "raw_ledger.py|def rebind_retiming(" + ], + "what": "Apply the already selected 364 common-frame event retimings and reconstruct operand paths and ledgers. These are part of the exact PR249 base and are distinct from the final 25 scalar-keyed retimings.", + "why": "Use legal later common frames to combine paid movement while preserving scalar order, data endpoints and copy lifetimes." + }, + { + "brief": "Exact PR249 compensation transport", + "heritage": "PR249 96495746c786d6d0339dbb38c7f553d4af3f88ed, eumemic.", + "id": "F06", + "inputs": [ + "word: inherited-retimed records", + "selection: regauge-selection.json" + ], + "invariants": [ + "21 added entrances, total added entrance rank 325.", + "Base raw SHA256 2e0bc2a5c54cf8caf26fa30a1a2949702d842f620b28023ca2ba59140ecbed1a.", + "The sixteen extra PR251 entrances are absent." + ], + "name": "21 transported entrances", + "outputs": [ + "base: exact PR249 physical word", + "entrances: actual nonzero input frames" + ], + "requirements": [ + "R02", + "R03", + "R04" + ], + "sources": [ + "regauge_transform.py|def run(", + "raw_ledger.py|def rebind_regauge(" + ], + "what": "Apply the 21 selected PR249 gauge entrances, checking exact compensation transport, untouched helpers before the semantic cut and target-only prefix noise. Keep producer and execution contexts separate.", + "why": "Raise selected helper entrances only when their earlier payload effect can be transported exactly, reducing residual movement without changing the source producer." + }, + { + "brief": "Retained PR259 kernel basis changes", + "heritage": "PR259 a53ec0ca4d59634f16630dd16adf035c9f12595c, Dugongue; candidate gzip included byte-for-byte.", + "id": "F07", + "inputs": [ + "base: PR249 word", + "candidates: 518 exact PR259 cohorts", + "selection: five removed pivots" + ], + "invariants": [ + "Removed pivots: 17207, 17222, 17246, 17255, 17273.", + "Unique pivot support; no pivot/donor collision; basis contained in each actual first-use frame.", + "Within each cut use (dimension,pivot) order; the newly installed cohort-plus-interval entrance rank is 1,422." + ], + "name": "513 multicut cohorts", + "outputs": [ + "cohorts: 513 retained groups", + "word: kernel basis and inverse events", + "entrances: cohort pivot frames" + ], + "requirements": [ + "R01", + "R02", + "R03", + "R04" + ], + "sources": [ + "hybrid_transform.py|def run(", + "hybrid-selection.json|\"removed_pivots\"", + "PR259-PROVENANCE.md|PR249:" + ], + "what": "Read all 518 pinned PR259 candidates, remove the five conflicting rank-11 quartets and install the remaining 513 exact entrance bases. At each declared cut emit donor += pivot, and emit literal inverses at the common full endpoint.", + "why": "Share a pivot contribution through an admissible kernel basis, replacing many target reads with paid, source-bound basis changes." + }, + { + "brief": "Rank-5 / 14 compensation; rank-20 undo", + "heritage": "New source-bound hybrid composition of delayed-inverse intervals with PR259; inherited target-recoding and bank ideas retain credit.", + "id": "F08", + "inputs": [ + "base/cohorts: surviving event word", + "intervals: 14 helpers, 28 target IDs and exact bases" + ], + "invariants": [ + "Every interval has an exact six-column integer identity preserving arbitrary old targets.", + "The 14 signed prefix columns vanish on every retained-cohort operand at all four cuts.", + "No external helper/source observer survives inside a closed interval; newly installed cohort-plus-interval entrance rank is 1,422." + ], + "name": "Seven closed target intervals", + "outputs": [ + "word: seven eight-ADD local replacement blocks", + "entrances: seven rank-5 and seven rank-14 frames" + ], + "requirements": [ + "R02", + "R03", + "R04", + "R06" + ], + "sources": [ + "hybrid_transform.py| local=[", + "PROOF.md|## Kernel and observation boundaries" + ], + "what": "For each interval precondition three targets against a pivot at frame zero, compensate the pivot from low/high helpers at nested rank-5 and rank-14 frames, and undo the target preconditioner at a legal common rank-20 frame.", + "why": "The delayed inverse changes the paid movement partition. Restricting the inverse to the high frame would describe a different family and miss this selected construction." + }, + { + "brief": "Apply PR258/260 gate set once", + "heritage": "PR258 cf82ca09322d1327ab887cfd1cce97591b8d3cfa (amanforindia); PR260 87aa555a455cca84a3e3296ced2440623d39fc4d (Rohan Arun).", + "id": "F09", + "inputs": [ + "word: replacement raw 6ab38175...", + "selection: retiming25-selection.json" + ], + "invariants": [ + "No new chart; scalar/COPY projection and all endpoints byte-identical.", + "Histogram delta: 2:-2, 4:+24, 5:-48, 6:+25, 11:-1, 13:+2, 17:-1.", + "PR258 and PR260 identify the same 25 gates; apply once." + ], + "name": "25 final paid retimings", + "outputs": [ + "finalword: raw acf510b1...", + "ledger: 96,117 calls; rank mass 432,755", + "paths: required-use frame paths after every selected transform", + "registry: actual final frame bases and annihilators", + "entrances: exact nonzero helper input frames", + "context: final execution W/C/role registry", + "raw: fully rebound selected source ledger" + ], + "requirements": [ + "R01", + "R03", + "R04" + ], + "sources": [ + "retiming25.py|def transform(", + "hybrid_transform.py| out,retiming=" + ], + "what": "Match 25 unique scalar keys against their exact old basis hashes, move those events to nominated existing successor frames, and re-emit all operand paths. This adapter runs after the combined kernel/interval replacement.", + "why": "The retiming is a compatible physical improvement, not a second copy of either contributor's same-gate result." + }, + { + "brief": "All 20,107 columns in both directions", + "heritage": "Inherited source decoder plus current hybrid all-column F2 and prefix proof.", + "id": "F10", + "inputs": [ + "finalword: physical records", + "sourceword: unchanged defining program" + ], + "invariants": [ + "760,383 weighted events; 763,023 unit-expanded additions locally.", + "All source and dirty columns restored; arbitrary old target contents preserved.", + "No assertion that the new chosen integer lift equals the old signed decoder endpoint." + ], + "name": "Payload and prefix proof", + "outputs": [ + "semantics: all-column F2 identity and inverse", + "prefix: 73,095 forward; 3,396,290 inverse" + ], + "requirements": [ + "R02", + "R06", + "R11" + ], + "sources": [ + "scalar_check.py|def replay_projection(", + "scalar_check.py|def run(" + ], + "what": "Independently replay the emitted word and literal reverse on all formal F2 source, old-target and arbitrary-dirty columns. Separately compute cancellation-free signed-lift prefix majorants. The unchanged defining source receives its own signed decoder tests and 25 hostile controls.", + "why": "F2 equality, signed source evidence and chosen-lift growth are different claims. Keeping them separate prevents an invalid old-integer-endpoint requirement or an uncharged precision assumption." + }, + { + "brief": "Forward, reflected and boundary streams", + "heritage": "Henry Grant / hcg890 PR234 five-stage architecture and finite interfaces.", + "id": "F11", + "inputs": [ + "finalword: local physical records", + "paths: frame projectors and entrances" + ], + "invariants": [ + "Active pairs: (X1,Y1),(Y1,X1),(X1,Y1),(Y2,X2),(X2,Y2).", + "Every reverse stage copies freshly from the original center; 120 center episodes per replica.", + "Cover expansion is phase-major; terminal exchange is a paid complete-stream permutation." + ], + "name": "Five-stage logical assembly", + "outputs": [ + "global: eight-field logical records and phase schedule", + "completions: 2,827 exact entrance tags", + "ledger: unbanked global histogram" + ], + "requirements": [ + "R02", + "R03", + "R04", + "R05" + ], + "sources": [ + "code/global_lowering.py|class Lowerer:", + "portable_bit.py|def phase_major_templates(" + ], + "what": "Lower the same local word into five stage-specific renamed streams with orientations F,R,F,R,F. After stages 1,2,4, emit exact idle paths and six bridge families; after all stages emit tagged entrance completions and final complete-stream exchanges.", + "why": "Compose the local supplier into the actual width-120 global architecture, binding matrix routes and role names rather than merely multiplying a local histogram by five." + }, + { + "brief": "Forty replicas; 18 full patterns", + "heritage": "Completed-bank lineage includes PR197 and PR237 width-120 precedent; this exact 40-replica packing/assignment is current integration.", + "id": "F12", + "inputs": [ + "entrances: actual helper role census and gauges", + "global: stage/replica coordinates" + ], + "invariants": [ + "867,045 live families; external work separate.", + "3,317,400 stage/replica/role assignments; no rounded, unused or fractional bank capacity.", + "All 18 patterns partition 120 coordinates exactly." + ], + "name": "Literal bank packing", + "outputs": [ + "packing: 117,089 banks per stage", + "stock: 585,445 helper-bank and 281,600 data families" + ], + "requirements": [ + "R04", + "R05" + ], + "sources": [ + "bank_template.py|class BankPlan:", + "bank_check.py|def census(", + "BANK-PROOF.md|## Literal capacity" + ], + "what": "Partition residual helper widths into 18 exact width-120 bank patterns across forty literal replicas. Enumerate every original role occurrence, sorted by residual family, and assign it to one contiguous block in a stage-private bank.", + "why": "Complete banks can replace independent completion calls only when all coordinates and all dirty-role ownership are covered with integer capacity." + }, + { + "brief": "770 chart IDs; exact rational routes", + "heritage": "Actual-form chart implementation in current bank integration; inherited common-ancestor chart theorem remains conditional.", + "id": "F13", + "inputs": [ + "registry: actual source bases and annihilators", + "packing: assigned stage/window/block" + ], + "invariants": [ + "BA=AB=dI; each projector acts correctly on every chart column.", + "At most 576 chart factors; conservative normalizer tariff remains 838.", + "Outside-column witnesses distinguish full routes even when chart bytes coincide." + ], + "name": "Actual-form bank charts", + "outputs": [ + "charts: 770 frame-ID charts, 459 distinct entrance bases", + "normalizers: N and exact inverse factor program" + ], + "requirements": [ + "R03", + "R04", + "R05", + "R07" + ], + "sources": [ + "bank_check.py|def run(", + "bank_template.py| def normalizer(", + "BANK-PROOF.md|## Generic charts" + ], + "what": "For every consumed entrance frame construct residual columns from 15a - sum(a)1, append the actual source basis, compute both exact chart inverses and replay rational factors. Build N=(block+1) Pi embed_stage(B^-1).", + "why": "A correct chart must use the actual form 9I-J. Generic construction handles entrances for which a norm-four rank-one shortcut is false." + }, + { + "brief": "Full (family, route) identity", + "heritage": "Current stage-private adapter; preserves PR234 logical semantics and inherited completed-bank obligations.", + "id": "F14", + "inputs": [ + "global: logical records and completion tags", + "packing/charts: exact addresses and normalizers" + ], + "invariants": [ + "Helper class maps d*tau_i to d*tau_i*N^-1, in that order.", + "All 200 complete stage/replica namespaces injective; ADD/COPY full addresses nonaliasing.", + "Subtract exactly 2,827 tags per replica; retain ordinary children sharing widths 5,10,15,20,50." + ], + "name": "Banked address lowering", + "outputs": [ + "bankword: actual callable banked streams", + "literal: 19,786,600 children; mass 103,869,400" + ], + "requirements": [ + "R02", + "R04", + "R05" + ], + "sources": [ + "bank_template.py| def map_stage_row(", + "bank_template.py| def map_boundary_row(", + "bank_check.py|class BankLowerer:" + ], + "what": "Rewrite only stream operands in the logical records to full banked addresses. Preserve every scalar, frame, projection, stage and reversal field. Match all tagged completions, prove the complete bank endpoint, then subtract their exact counts.", + "why": "Family equality is insufficient for alias testing. Completion savings require a complete bank proof and cannot be implemented as silent opcode suppression." + }, + { + "brief": "Exact frames, paths and determinants", + "heritage": "PR234 geometric interface plus source527/current entrance inventory; retained exact-prime framework.", + "id": "F15", + "inputs": [ + "context: actual bases, frames and routes", + "final/global: consumed inventory" + ], + "invariants": [ + "770 actual entrance frame IDs represent 459 distinct entrance bases; these counts must not be conflated.", + "q>2^80 after fixed exclusions; prime supply is an inherited theorem dependency.", + "Every physical basis plus all defining-source and added-transform bases is covered." + ], + "name": "Geometry and prime inventory", + "outputs": [ + "geometry: exact operator/path checks", + "primes: source-bound determinant inventory and six controls" + ], + "requirements": [ + "R03", + "R07", + "R11" + ], + "sources": [ + "code/geometry527.py|def run(", + "prime_check.py|def run(" + ], + "what": "Check exact rational projectors, all relevant frame inclusions, reflected orientations, routes and terminal boundary identities. Rebuild the inventory of every actual physical or defining-source basis and evaluate exact Gram determinants and admissible-prime exclusions.", + "why": "Equal dimensions or frame IDs do not prove equality of subspaces or legality over an eligible odd-prime address ring." + }, + { + "brief": "Pinned labels, scalar splice and guard", + "heritage": "Jacob Sussman source f010392c923279e3dd59ef3aa5fedad23affc5fd; Avi Eisenberg / ikeboy PR193 helper and retained Claude assistance disclosures.", + "id": "F16", + "inputs": [ + "complexpins: certificate, source theorems and exact matrices" + ], + "invariants": [ + "Rank mass 1,613,040; deficit 3,080; largest child 46.", + "Three forward plus two backward calls use 7,577,864 real-component primitive steps.", + "Denominators 1,2,3,6; no return rounding; source symbolic/analytic theorems remain dependencies." + ], + "name": "Independent complex supplier", + "outputs": [ + "complex: m=110, W=14,692, 361,405 children", + "guard: row coefficient 20,161; exact denominator grid" + ], + "requirements": [ + "R04", + "R06", + "R10", + "R11" + ], + "sources": [ + "portable_complex.py|def run(", + "portable_complex.py|def finite_guard(" + ], + "what": "Reconstruct the pinned complex gcert/1 certificate, both scalar orientations, temporary lifetimes, label/scalar splice, all final climbs and finite precision/row guards. Feed its independent profile into the outer assembly.", + "why": "The integer-multiplication closure uses both a bit supplier and a complex supplier. The complex theorem is not implied by a successful bit-word check." + }, + { + "brief": "Full rare fallback; adjacent grid rejected", + "heritage": "Inherited weighted moment interface; independently implemented current literal repricing.", + "id": "F17", + "inputs": [ + "literal: bit histogram, m=120, W=867,045", + "complex: independent supplier profile" + ], + "invariants": [ + "Bit max child 50 < 120/2; literal deficit 176,000.", + "Fallback adds 10^-16 times 32*m^2 rank-one calls per paid child.", + "Two independent interval engines agree; decimals are display/proposal only." + ], + "name": "Independent directed moments", + "outputs": [ + "rates: strict bit/complex moment enclosures", + "grid: next bit-grid exclusion" + ], + "requirements": [ + "R04", + "R08", + "R09" + ], + "sources": [ + "math_check.py|def run(", + "moment.py|def moment(", + "base_two_moment.py|def moment(" + ], + "what": "Price the literal banked bit histogram and unchanged complex histogram with outward exact-rational bounds. Independently cross-check the bit moment with the base-two engine and include the entire rare fallback allowance.", + "why": "Concavity-based savings are only admissible with a rigorous strict gap and every paid residual, including the low-probability expensive branch." + }, + { + "brief": "Three completed finite levels", + "heritage": "Retained ordinary-bootstrap and restored-row framework, freshly evaluated for this literal construction.", + "id": "F18", + "inputs": [ + "rates: exact coarse bit c and inherited ordinary a0" + ], + "invariants": [ + "Every a_j < a_(j+1) < c < 1-a_(j+1).", + "Each stage includes an inherited-constant-dependent finite cutoff and old-leaf fallback." + ], + "name": "Finite ordinary bootstrap", + "outputs": [ + "ordinary: three-step exact chain and positive gaps" + ], + "requirements": [ + "R08", + "R09" + ], + "sources": [ + "math_check.py| chain=[", + "finite_check.py|chain=[" + ], + "what": "Start with completed ordinary a0=384599/10^10 and repeat a_(j+1)=(1-c)c+c*a_j exactly three times. Require every atom, borrowing, remainder and row-stock gap to remain positive.", + "why": "The bit moment rate is converted to an actual completed ordinary supplier through a finite induction, rather than using an unattained limiting rate." + }, + { + "brief": "Balanced two-supplier closure", + "heritage": "Inherited balanced outer assembly, re-evaluated for current construction.", + "id": "F19", + "inputs": [ + "ordinary: completed bit saving", + "complex: rate and finite row/precision bridge" + ], + "invariants": [ + "kappa decimal 0.000711045547624400; bit is binding.", + "Adjacent kappa grid point is rejected separately.", + "Full all-size, recovery, symbolic and analytic interfaces remain conditional." + ], + "name": "Outer 47-constraint assembly", + "outputs": [ + "bound: kappa=1777613869061/2500000000000000", + "margins: 47 strict constraints and seven margins" + ], + "requirements": [ + "R09", + "R10" + ], + "sources": [ + "outer.py|def assembly(", + "math_check.py| assembly=outer.assembly(" + ], + "what": "Combine the finite ordinary bit saving with the complex saving, row/recovery bridge, eta=10^-12 and stopping fraction beta=10^-9. Check all 47 strict inequalities and seven margins before choosing the admissible rational kappa grid point.", + "why": "A local helper saving is not the integer-multiplication exponent. The full coupled outer system determines which supplier and margin is binding." + }, + { + "brief": "Pay every literal mechanism", + "heritage": "Current finite re-bill over inherited bit/row/copy primitives; exact theorem bytes remain pinned.", + "id": "F20", + "inputs": [ + "final/global/literal: bound physical evidence", + "semantics/primes/rates: proof outputs" + ], + "invariants": [ + "Coefficient below 2^80; prefix is 98 bits and below 2^104.", + "Selector allowance 667,542,305,600 < 2^40; normalizer tariff 838.", + "One-level max-child half-shrink holds; no recursive child hidden in a fixed constant." + ], + "name": "Full finite bill and cutoff", + "outputs": [ + "finite: coefficient 62,644,197,182,478,801", + "prefix: 288305228198350917154735200000", + "cutoff: all inherited constants retained" + ], + "requirements": [ + "R04", + "R06", + "R07", + "R08", + "R09" + ], + "sources": [ + "finite_check.py|def run(", + "finite_check.py|def cutoff_log2(" + ], + "what": "Bind the selected word, tags, global streams, banks, geometry, prime inventory and moment profile. Add scalar primitives, movement, bridges, routes, chart normalizers, selectors, matrix preparation, copy/erase, fallback and restored-row costs.", + "why": "Neither a better histogram nor a displayed finite coefficient can replace the complete accounting and full inherited-constant cutoff rule." + }, + { + "brief": "Eight stages; source unchanged", + "heritage": "Current source-bound verification orchestrator and separately scoped review/admission receipts.", + "id": "F21", + "inputs": [ + "raw: freshly reconstructed source ledger", + "bit: physical/global/geometry proof", + "scalar: F2, signed source and chosen-lift prefix proof", + "primes: current basis/determinant evidence", + "banks: callable full-address banked word and census", + "complex: pinned source, splice and finite guard", + "math: moments, bootstrap and outer47", + "finite: complete bill and cutoff" + ], + "invariants": [ + "Standalone verify.py executes all eight stages; output must be new and outside source.", + "Recorded cloud admission freshly ran changed stages and reused byte/AST-bound unchanged signed-source and complex evidence.", + "Mac standalone reproduction passes all eight stages with 143 source files unchanged; certificate SHA256 7eb58ec449c932b7092481746390c776365f302a742836cddef5643c0351802b. The construction remains mathematically conditional and is below the later PR266 frontier." + ], + "name": "Conditional admission gate", + "outputs": [ + "certificate: conditional finite-construction result", + "verification: timings, stage coverage and immutable-source status" + ], + "requirements": [ + "R01", + "R11", + "R12" + ], + "sources": [ + "verify.py|def main()", + "verify.py|def validate_required(" + ], + "what": "Run all eight mandatory stages from inputs, check complete result coverage and expected rational kappa, then recheck the source manifest before emitting the certificate. Omitted stages must fail hostile controls.", + "why": "The certificate must close every proof port and bind one immutable package. Documentation regeneration is not a substitute for scientific replay." + } + ], + "complete_individual_operation_inventory": false, + "coverage_limits": [ + "E-series IDs are block dependencies, not scalar/COPY events.", + "Global numerical operation counts do not prove complete per-operation extraction.", + "Parametric address formulas are anchored to BankPlan; no fabricated gate-level internals." + ], + "level": "functional blocks with exact parametric wiring contracts", + "operation_schema": { + "global_fields": [ + "op", + "operand_a", + "operand_b", + "coefficient_or_frame", + "frame_or_rank", + "category_or_boundary", + "stage", + "complement" + ], + "local_fields": [ + "op", + "a", + "b", + "c", + "f", + "z" + ], + "local_helper_ids": [ + 3520, + 20106 + ], + "local_source_ids": [ + 0, + 1759 + ], + "local_target_ids": [ + 1760, + 3519 + ], + "local_work_id": 20107, + "opcodes": { + "ADD": 1, + "BRIDGE": 5, + "COMPLETE": 6, + "COPY": 2, + "ERASE": 3, + "EXCHANGE": 7, + "IDLE": 4, + "MOVE": 0 + } + }, + "parametric_domains": { + "cover_classes": "symbolic finite GL cover; compiler theorem supplies enumeration", + "helper_assignments": 3317400, + "helper_roles": 16587, + "ports": 1760, + "replicas": 40, + "stages": 5 + }, + "schema": "selected-construction-connections/1", + "scientific_archive_manifest_sha256": "9f6d8637b9a119cfe4566a02ab2d704f23c502e5e4357b40c28ef85a3fd4de89", + "source_manifest_sha256": "0af10dcca505cbd913cf1b9220a08b6a62687650ace4e3d1efd093e828e3990e", + "state_versions": { + "derived_ssa_extraction": "Separate JOINT259_CONNECTION_EXTRACT.py generates complete local value/frame producer-consumer inventory; this overview index is not that trace.", + "native": false + }, + "unexpanded": [ + "all-size weighted compiler internals", + "full GL-cover and common-ancestor charts", + "restored-row and routing primitive internals", + "prime-supply theorem", + "recovery theorem", + "complex symbolic and analytic theorems" + ] +} diff --git a/docs/multicut-delayed-inverse-checkpoint/diagram_model.json b/docs/multicut-delayed-inverse-checkpoint/diagram_model.json new file mode 100644 index 0000000000..dbcfe5bac4 --- /dev/null +++ b/docs/multicut-delayed-inverse-checkpoint/diagram_model.json @@ -0,0 +1,1105 @@ +{ + "blocks": [ + { + "brief": "Byte-bound recipes and witnesses", + "heritage": "Current composition; imported sources retain their own notices.", + "id": "F01", + "inputs": [ + "package: immutable files and MANIFEST.json" + ], + "invariants": [ + "Manifest SHA256 is 9f6d8637b9a119cfe4566a02ab2d704f23c502e5e4357b40c28ef85a3fd4de89.", + "Assertions enabled; no saved execution receipt is a verifier input." + ], + "name": "Pinned source inputs", + "outputs": [ + "pins: manifest digest and complete file census", + "recipes: exact witness bytes" + ], + "requirements": [ + "R01", + "R11" + ], + "sources": [ + "verify.py|def integrity()", + "PR259-PROVENANCE.md|# PR259 lineage" + ], + "what": "Read the selected package manifest, source527 recipes, PR259 candidate gzip, exact interval and retiming witnesses, and the independent complex certificate. Reject missing, extra, changed or symlinked package files.", + "why": "Every later identity and price must refer to one reproducible construction, rather than a compatible-looking saved histogram." + }, + { + "brief": "Owned sources and arbitrary dirty roles", + "heritage": "Source527 integrates PR210, PR230, PR216, PR207, PR211, PR200 and retained dependencies; exact source for this composition is PR249.", + "id": "F02", + "inputs": [ + "recipes: pinned source and selection files" + ], + "invariants": [ + "v=1,760; h=24; 16,587 independent helper roles; 20,107 formal local columns.", + "Producer context and defining signed decoder remain unchanged by the new hybrid." + ], + "name": "Source527 producer", + "outputs": [ + "context: W, C, regs, borrow, SOURCE_TEXT", + "sourceword: defining scalar program" + ], + "requirements": [ + "R01", + "R02", + "R03" + ], + "sources": [ + "prepare.py|def prepare()", + "source527/word.py|def" + ], + "what": "Reconstruct the fixed source program, physical ownership, source aliases, target aggregation, rank/echelon transforms, borrowed roles and exact frame registry. The 527 source aliases are inherited, not newly searched by this documentation build.", + "why": "The selected transformations need a fully defined semantic producer and ownership map. Arbitrary dirty contents cannot be replaced with zero-filled conveniences." + }, + { + "brief": "Literal MOVE / ADD / COPY / ERASE", + "heritage": "PR234 five-stage/source-bound physical interface, adapted to source527.", + "id": "F03", + "inputs": [ + "context: owned roles, frames and source text" + ], + "invariants": [ + "COPY source is immutable during its window; no stale temporary read or inverse erasure.", + "Every positive MOVE increment and center copy contributes to the paid histogram." + ], + "name": "Physical event emitter", + "outputs": [ + "word: six-field physical records", + "paths: initial/final frames, required uses, categories" + ], + "requirements": [ + "R02", + "R03", + "R04" + ], + "sources": [ + "code/physical527.py|def run(" + ], + "what": "Instrument the reconstructed source program to emit six-integer local records, exact required-use frame paths and tagged scalar events. A single temporary serves 24 copied-center episodes; each has a rank-22 paid copy and 220 scatter reads.", + "why": "A literal physical word binds algebra to movement cost and copied-center lifetime. A scalar identity alone does not price the construction." + }, + { + "brief": "Delete even ADDs; telescope uses", + "heritage": "PR244 parity-filtered/common-frame source lineage; primary bit scalar contract retained.", + "id": "F04", + "inputs": [ + "word: defining physical records" + ], + "invariants": [ + "1,783,196 even ADDs removed; 786,621 surviving ADDs before later transforms.", + "COPY/ERASE, old endpoints, stage boundaries and odd-prime address arithmetic remain intact." + ], + "name": "F2 payload fusion", + "outputs": [ + "word: parity-filtered physical records", + "ledger: recomputed forward/reflected MOVE widths" + ], + "requirements": [ + "R02", + "R03", + "R04", + "R06" + ], + "sources": [ + "parity_transform.py|def run(", + "proof/PARITY-CONTRACT.md|## Operator proof" + ], + "what": "Remove even-coefficient payload additions, preserve all surviving odd additions in order, and fuse monotone frame moves only between surviving uses and required boundaries. Rebuild forward and reflected paid paths.", + "why": "Payload scalars are binary even though address geometry is rational and uses odd primes. Removing an F2 identity can eliminate otherwise unnecessary alignment work." + }, + { + "brief": "Existing common delivery frames", + "heritage": "PR244 and exact PR249 base lineage.", + "id": "F05", + "inputs": [ + "word: parity-filtered records", + "selection: retiming-selection.json" + ], + "invariants": [ + "364 events, including 353 unborrowed pair mixes, use their existing common delivery frames.", + "No change to input/output frames or copied-center lifetimes." + ], + "name": "Inherited 364 retimings", + "outputs": [ + "word: inherited-retimed records", + "ledger: exact local histogram" + ], + "requirements": [ + "R03", + "R04" + ], + "sources": [ + "retiming_transform.py|def run(", + "raw_ledger.py|def rebind_retiming(" + ], + "what": "Apply the already selected 364 common-frame event retimings and reconstruct operand paths and ledgers. These are part of the exact PR249 base and are distinct from the final 25 scalar-keyed retimings.", + "why": "Use legal later common frames to combine paid movement while preserving scalar order, data endpoints and copy lifetimes." + }, + { + "brief": "Exact PR249 compensation transport", + "heritage": "PR249 96495746c786d6d0339dbb38c7f553d4af3f88ed, eumemic.", + "id": "F06", + "inputs": [ + "word: inherited-retimed records", + "selection: regauge-selection.json" + ], + "invariants": [ + "21 added entrances, total added entrance rank 325.", + "Base raw SHA256 2e0bc2a5c54cf8caf26fa30a1a2949702d842f620b28023ca2ba59140ecbed1a.", + "The sixteen extra PR251 entrances are absent." + ], + "name": "21 transported entrances", + "outputs": [ + "base: exact PR249 physical word", + "entrances: actual nonzero input frames" + ], + "requirements": [ + "R02", + "R03", + "R04" + ], + "sources": [ + "regauge_transform.py|def run(", + "raw_ledger.py|def rebind_regauge(" + ], + "what": "Apply the 21 selected PR249 gauge entrances, checking exact compensation transport, untouched helpers before the semantic cut and target-only prefix noise. Keep producer and execution contexts separate.", + "why": "Raise selected helper entrances only when their earlier payload effect can be transported exactly, reducing residual movement without changing the source producer." + }, + { + "brief": "Retained PR259 kernel basis changes", + "heritage": "PR259 a53ec0ca4d59634f16630dd16adf035c9f12595c, Dugongue; candidate gzip included byte-for-byte.", + "id": "F07", + "inputs": [ + "base: PR249 word", + "candidates: 518 exact PR259 cohorts", + "selection: five removed pivots" + ], + "invariants": [ + "Removed pivots: 17207, 17222, 17246, 17255, 17273.", + "Unique pivot support; no pivot/donor collision; basis contained in each actual first-use frame.", + "Within each cut use (dimension,pivot) order; the newly installed cohort-plus-interval entrance rank is 1,422." + ], + "name": "513 multicut cohorts", + "outputs": [ + "cohorts: 513 retained groups", + "word: kernel basis and inverse events", + "entrances: cohort pivot frames" + ], + "requirements": [ + "R01", + "R02", + "R03", + "R04" + ], + "sources": [ + "hybrid_transform.py|def run(", + "hybrid-selection.json|\"removed_pivots\"", + "PR259-PROVENANCE.md|PR249:" + ], + "what": "Read all 518 pinned PR259 candidates, remove the five conflicting rank-11 quartets and install the remaining 513 exact entrance bases. At each declared cut emit donor += pivot, and emit literal inverses at the common full endpoint.", + "why": "Share a pivot contribution through an admissible kernel basis, replacing many target reads with paid, source-bound basis changes." + }, + { + "brief": "Rank-5 / 14 compensation; rank-20 undo", + "heritage": "New source-bound hybrid composition of delayed-inverse intervals with PR259; inherited target-recoding and bank ideas retain credit.", + "id": "F08", + "inputs": [ + "base/cohorts: surviving event word", + "intervals: 14 helpers, 28 target IDs and exact bases" + ], + "invariants": [ + "Every interval has an exact six-column integer identity preserving arbitrary old targets.", + "The 14 signed prefix columns vanish on every retained-cohort operand at all four cuts.", + "No external helper/source observer survives inside a closed interval; newly installed cohort-plus-interval entrance rank is 1,422." + ], + "name": "Seven closed target intervals", + "outputs": [ + "word: seven eight-ADD local replacement blocks", + "entrances: seven rank-5 and seven rank-14 frames" + ], + "requirements": [ + "R02", + "R03", + "R04", + "R06" + ], + "sources": [ + "hybrid_transform.py| local=[", + "PROOF.md|## Kernel and observation boundaries" + ], + "what": "For each interval precondition three targets against a pivot at frame zero, compensate the pivot from low/high helpers at nested rank-5 and rank-14 frames, and undo the target preconditioner at a legal common rank-20 frame.", + "why": "The delayed inverse changes the paid movement partition. Restricting the inverse to the high frame would describe a different family and miss this selected construction." + }, + { + "brief": "Apply PR258/260 gate set once", + "heritage": "PR258 cf82ca09322d1327ab887cfd1cce97591b8d3cfa (amanforindia); PR260 87aa555a455cca84a3e3296ced2440623d39fc4d (Rohan Arun).", + "id": "F09", + "inputs": [ + "word: replacement raw 6ab38175...", + "selection: retiming25-selection.json" + ], + "invariants": [ + "No new chart; scalar/COPY projection and all endpoints byte-identical.", + "Histogram delta: 2:-2, 4:+24, 5:-48, 6:+25, 11:-1, 13:+2, 17:-1.", + "PR258 and PR260 identify the same 25 gates; apply once." + ], + "name": "25 final paid retimings", + "outputs": [ + "finalword: raw acf510b1...", + "ledger: 96,117 calls; rank mass 432,755", + "paths: required-use frame paths after every selected transform", + "registry: actual final frame bases and annihilators", + "entrances: exact nonzero helper input frames", + "context: final execution W/C/role registry", + "raw: fully rebound selected source ledger" + ], + "requirements": [ + "R01", + "R03", + "R04" + ], + "sources": [ + "retiming25.py|def transform(", + "hybrid_transform.py| out,retiming=" + ], + "what": "Match 25 unique scalar keys against their exact old basis hashes, move those events to nominated existing successor frames, and re-emit all operand paths. This adapter runs after the combined kernel/interval replacement.", + "why": "The retiming is a compatible physical improvement, not a second copy of either contributor's same-gate result." + }, + { + "brief": "All 20,107 columns in both directions", + "heritage": "Inherited source decoder plus current hybrid all-column F2 and prefix proof.", + "id": "F10", + "inputs": [ + "finalword: physical records", + "sourceword: unchanged defining program" + ], + "invariants": [ + "760,383 weighted events; 763,023 unit-expanded additions locally.", + "All source and dirty columns restored; arbitrary old target contents preserved.", + "No assertion that the new chosen integer lift equals the old signed decoder endpoint." + ], + "name": "Payload and prefix proof", + "outputs": [ + "semantics: all-column F2 identity and inverse", + "prefix: 73,095 forward; 3,396,290 inverse" + ], + "requirements": [ + "R02", + "R06", + "R11" + ], + "sources": [ + "scalar_check.py|def replay_projection(", + "scalar_check.py|def run(" + ], + "what": "Independently replay the emitted word and literal reverse on all formal F2 source, old-target and arbitrary-dirty columns. Separately compute cancellation-free signed-lift prefix majorants. The unchanged defining source receives its own signed decoder tests and 25 hostile controls.", + "why": "F2 equality, signed source evidence and chosen-lift growth are different claims. Keeping them separate prevents an invalid old-integer-endpoint requirement or an uncharged precision assumption." + }, + { + "brief": "Forward, reflected and boundary streams", + "heritage": "Henry Grant / hcg890 PR234 five-stage architecture and finite interfaces.", + "id": "F11", + "inputs": [ + "finalword: local physical records", + "paths: frame projectors and entrances" + ], + "invariants": [ + "Active pairs: (X1,Y1),(Y1,X1),(X1,Y1),(Y2,X2),(X2,Y2).", + "Every reverse stage copies freshly from the original center; 120 center episodes per replica.", + "Cover expansion is phase-major; terminal exchange is a paid complete-stream permutation." + ], + "name": "Five-stage logical assembly", + "outputs": [ + "global: eight-field logical records and phase schedule", + "completions: 2,827 exact entrance tags", + "ledger: unbanked global histogram" + ], + "requirements": [ + "R02", + "R03", + "R04", + "R05" + ], + "sources": [ + "code/global_lowering.py|class Lowerer:", + "portable_bit.py|def phase_major_templates(" + ], + "what": "Lower the same local word into five stage-specific renamed streams with orientations F,R,F,R,F. After stages 1,2,4, emit exact idle paths and six bridge families; after all stages emit tagged entrance completions and final complete-stream exchanges.", + "why": "Compose the local supplier into the actual width-120 global architecture, binding matrix routes and role names rather than merely multiplying a local histogram by five." + }, + { + "brief": "Forty replicas; 18 full patterns", + "heritage": "Completed-bank lineage includes PR197 and PR237 width-120 precedent; this exact 40-replica packing/assignment is current integration.", + "id": "F12", + "inputs": [ + "entrances: actual helper role census and gauges", + "global: stage/replica coordinates" + ], + "invariants": [ + "867,045 live families; external work separate.", + "3,317,400 stage/replica/role assignments; no rounded, unused or fractional bank capacity.", + "All 18 patterns partition 120 coordinates exactly." + ], + "name": "Literal bank packing", + "outputs": [ + "packing: 117,089 banks per stage", + "stock: 585,445 helper-bank and 281,600 data families" + ], + "requirements": [ + "R04", + "R05" + ], + "sources": [ + "bank_template.py|class BankPlan:", + "bank_check.py|def census(", + "BANK-PROOF.md|## Literal capacity" + ], + "what": "Partition residual helper widths into 18 exact width-120 bank patterns across forty literal replicas. Enumerate every original role occurrence, sorted by residual family, and assign it to one contiguous block in a stage-private bank.", + "why": "Complete banks can replace independent completion calls only when all coordinates and all dirty-role ownership are covered with integer capacity." + }, + { + "brief": "770 chart IDs; exact rational routes", + "heritage": "Actual-form chart implementation in current bank integration; inherited common-ancestor chart theorem remains conditional.", + "id": "F13", + "inputs": [ + "registry: actual source bases and annihilators", + "packing: assigned stage/window/block" + ], + "invariants": [ + "BA=AB=dI; each projector acts correctly on every chart column.", + "At most 576 chart factors; conservative normalizer tariff remains 838.", + "Outside-column witnesses distinguish full routes even when chart bytes coincide." + ], + "name": "Actual-form bank charts", + "outputs": [ + "charts: 770 frame-ID charts, 459 distinct entrance bases", + "normalizers: N and exact inverse factor program" + ], + "requirements": [ + "R03", + "R04", + "R05", + "R07" + ], + "sources": [ + "bank_check.py|def run(", + "bank_template.py| def normalizer(", + "BANK-PROOF.md|## Generic charts" + ], + "what": "For every consumed entrance frame construct residual columns from 15a - sum(a)1, append the actual source basis, compute both exact chart inverses and replay rational factors. Build N=(block+1) Pi embed_stage(B^-1).", + "why": "A correct chart must use the actual form 9I-J. Generic construction handles entrances for which a norm-four rank-one shortcut is false." + }, + { + "brief": "Full (family, route) identity", + "heritage": "Current stage-private adapter; preserves PR234 logical semantics and inherited completed-bank obligations.", + "id": "F14", + "inputs": [ + "global: logical records and completion tags", + "packing/charts: exact addresses and normalizers" + ], + "invariants": [ + "Helper class maps d*tau_i to d*tau_i*N^-1, in that order.", + "All 200 complete stage/replica namespaces injective; ADD/COPY full addresses nonaliasing.", + "Subtract exactly 2,827 tags per replica; retain ordinary children sharing widths 5,10,15,20,50." + ], + "name": "Banked address lowering", + "outputs": [ + "bankword: actual callable banked streams", + "literal: 19,786,600 children; mass 103,869,400" + ], + "requirements": [ + "R02", + "R04", + "R05" + ], + "sources": [ + "bank_template.py| def map_stage_row(", + "bank_template.py| def map_boundary_row(", + "bank_check.py|class BankLowerer:" + ], + "what": "Rewrite only stream operands in the logical records to full banked addresses. Preserve every scalar, frame, projection, stage and reversal field. Match all tagged completions, prove the complete bank endpoint, then subtract their exact counts.", + "why": "Family equality is insufficient for alias testing. Completion savings require a complete bank proof and cannot be implemented as silent opcode suppression." + }, + { + "brief": "Exact frames, paths and determinants", + "heritage": "PR234 geometric interface plus source527/current entrance inventory; retained exact-prime framework.", + "id": "F15", + "inputs": [ + "context: actual bases, frames and routes", + "final/global: consumed inventory" + ], + "invariants": [ + "770 actual entrance frame IDs represent 459 distinct entrance bases; these counts must not be conflated.", + "q>2^80 after fixed exclusions; prime supply is an inherited theorem dependency.", + "Every physical basis plus all defining-source and added-transform bases is covered." + ], + "name": "Geometry and prime inventory", + "outputs": [ + "geometry: exact operator/path checks", + "primes: source-bound determinant inventory and six controls" + ], + "requirements": [ + "R03", + "R07", + "R11" + ], + "sources": [ + "code/geometry527.py|def run(", + "prime_check.py|def run(" + ], + "what": "Check exact rational projectors, all relevant frame inclusions, reflected orientations, routes and terminal boundary identities. Rebuild the inventory of every actual physical or defining-source basis and evaluate exact Gram determinants and admissible-prime exclusions.", + "why": "Equal dimensions or frame IDs do not prove equality of subspaces or legality over an eligible odd-prime address ring." + }, + { + "brief": "Pinned labels, scalar splice and guard", + "heritage": "Jacob Sussman source f010392c923279e3dd59ef3aa5fedad23affc5fd; Avi Eisenberg / ikeboy PR193 helper and retained Claude assistance disclosures.", + "id": "F16", + "inputs": [ + "complexpins: certificate, source theorems and exact matrices" + ], + "invariants": [ + "Rank mass 1,613,040; deficit 3,080; largest child 46.", + "Three forward plus two backward calls use 7,577,864 real-component primitive steps.", + "Denominators 1,2,3,6; no return rounding; source symbolic/analytic theorems remain dependencies." + ], + "name": "Independent complex supplier", + "outputs": [ + "complex: m=110, W=14,692, 361,405 children", + "guard: row coefficient 20,161; exact denominator grid" + ], + "requirements": [ + "R04", + "R06", + "R10", + "R11" + ], + "sources": [ + "portable_complex.py|def run(", + "portable_complex.py|def finite_guard(" + ], + "what": "Reconstruct the pinned complex gcert/1 certificate, both scalar orientations, temporary lifetimes, label/scalar splice, all final climbs and finite precision/row guards. Feed its independent profile into the outer assembly.", + "why": "The integer-multiplication closure uses both a bit supplier and a complex supplier. The complex theorem is not implied by a successful bit-word check." + }, + { + "brief": "Full rare fallback; adjacent grid rejected", + "heritage": "Inherited weighted moment interface; independently implemented current literal repricing.", + "id": "F17", + "inputs": [ + "literal: bit histogram, m=120, W=867,045", + "complex: independent supplier profile" + ], + "invariants": [ + "Bit max child 50 < 120/2; literal deficit 176,000.", + "Fallback adds 10^-16 times 32*m^2 rank-one calls per paid child.", + "Two independent interval engines agree; decimals are display/proposal only." + ], + "name": "Independent directed moments", + "outputs": [ + "rates: strict bit/complex moment enclosures", + "grid: next bit-grid exclusion" + ], + "requirements": [ + "R04", + "R08", + "R09" + ], + "sources": [ + "math_check.py|def run(", + "moment.py|def moment(", + "base_two_moment.py|def moment(" + ], + "what": "Price the literal banked bit histogram and unchanged complex histogram with outward exact-rational bounds. Independently cross-check the bit moment with the base-two engine and include the entire rare fallback allowance.", + "why": "Concavity-based savings are only admissible with a rigorous strict gap and every paid residual, including the low-probability expensive branch." + }, + { + "brief": "Three completed finite levels", + "heritage": "Retained ordinary-bootstrap and restored-row framework, freshly evaluated for this literal construction.", + "id": "F18", + "inputs": [ + "rates: exact coarse bit c and inherited ordinary a0" + ], + "invariants": [ + "Every a_j < a_(j+1) < c < 1-a_(j+1).", + "Each stage includes an inherited-constant-dependent finite cutoff and old-leaf fallback." + ], + "name": "Finite ordinary bootstrap", + "outputs": [ + "ordinary: three-step exact chain and positive gaps" + ], + "requirements": [ + "R08", + "R09" + ], + "sources": [ + "math_check.py| chain=[", + "finite_check.py|chain=[" + ], + "what": "Start with completed ordinary a0=384599/10^10 and repeat a_(j+1)=(1-c)c+c*a_j exactly three times. Require every atom, borrowing, remainder and row-stock gap to remain positive.", + "why": "The bit moment rate is converted to an actual completed ordinary supplier through a finite induction, rather than using an unattained limiting rate." + }, + { + "brief": "Balanced two-supplier closure", + "heritage": "Inherited balanced outer assembly, re-evaluated for current construction.", + "id": "F19", + "inputs": [ + "ordinary: completed bit saving", + "complex: rate and finite row/precision bridge" + ], + "invariants": [ + "kappa decimal 0.000711045547624400; bit is binding.", + "Adjacent kappa grid point is rejected separately.", + "Full all-size, recovery, symbolic and analytic interfaces remain conditional." + ], + "name": "Outer 47-constraint assembly", + "outputs": [ + "bound: kappa=1777613869061/2500000000000000", + "margins: 47 strict constraints and seven margins" + ], + "requirements": [ + "R09", + "R10" + ], + "sources": [ + "outer.py|def assembly(", + "math_check.py| assembly=outer.assembly(" + ], + "what": "Combine the finite ordinary bit saving with the complex saving, row/recovery bridge, eta=10^-12 and stopping fraction beta=10^-9. Check all 47 strict inequalities and seven margins before choosing the admissible rational kappa grid point.", + "why": "A local helper saving is not the integer-multiplication exponent. The full coupled outer system determines which supplier and margin is binding." + }, + { + "brief": "Pay every literal mechanism", + "heritage": "Current finite re-bill over inherited bit/row/copy primitives; exact theorem bytes remain pinned.", + "id": "F20", + "inputs": [ + "final/global/literal: bound physical evidence", + "semantics/primes/rates: proof outputs" + ], + "invariants": [ + "Coefficient below 2^80; prefix is 98 bits and below 2^104.", + "Selector allowance 667,542,305,600 < 2^40; normalizer tariff 838.", + "One-level max-child half-shrink holds; no recursive child hidden in a fixed constant." + ], + "name": "Full finite bill and cutoff", + "outputs": [ + "finite: coefficient 62,644,197,182,478,801", + "prefix: 288305228198350917154735200000", + "cutoff: all inherited constants retained" + ], + "requirements": [ + "R04", + "R06", + "R07", + "R08", + "R09" + ], + "sources": [ + "finite_check.py|def run(", + "finite_check.py|def cutoff_log2(" + ], + "what": "Bind the selected word, tags, global streams, banks, geometry, prime inventory and moment profile. Add scalar primitives, movement, bridges, routes, chart normalizers, selectors, matrix preparation, copy/erase, fallback and restored-row costs.", + "why": "Neither a better histogram nor a displayed finite coefficient can replace the complete accounting and full inherited-constant cutoff rule." + }, + { + "brief": "Eight stages; source unchanged", + "heritage": "Current source-bound verification orchestrator and separately scoped review/admission receipts.", + "id": "F21", + "inputs": [ + "raw: freshly reconstructed source ledger", + "bit: physical/global/geometry proof", + "scalar: F2, signed source and chosen-lift prefix proof", + "primes: current basis/determinant evidence", + "banks: callable full-address banked word and census", + "complex: pinned source, splice and finite guard", + "math: moments, bootstrap and outer47", + "finite: complete bill and cutoff" + ], + "invariants": [ + "Standalone verify.py executes all eight stages; output must be new and outside source.", + "Recorded cloud admission freshly ran changed stages and reused byte/AST-bound unchanged signed-source and complex evidence.", + "Mac standalone reproduction passes all eight stages with 143 source files unchanged; certificate SHA256 7eb58ec449c932b7092481746390c776365f302a742836cddef5643c0351802b. The construction remains mathematically conditional and is below the later PR266 frontier." + ], + "name": "Conditional admission gate", + "outputs": [ + "certificate: conditional finite-construction result", + "verification: timings, stage coverage and immutable-source status" + ], + "requirements": [ + "R01", + "R11", + "R12" + ], + "sources": [ + "verify.py|def main()", + "verify.py|def validate_required(" + ], + "what": "Run all eight mandatory stages from inputs, check complete result coverage and expected rational kappa, then recheck the source manifest before emitting the certificate. Omitted stages must fail hostile controls.", + "why": "The certificate must close every proof port and bind one immutable package. Documentation regeneration is not a substitute for scientific replay." + } + ], + "edges": [ + { + "from": "F01", + "id": "E01", + "in": "recipes", + "out": "recipes", + "to": "F02" + }, + { + "from": "F02", + "id": "E02", + "in": "context", + "out": "context", + "to": "F03" + }, + { + "from": "F03", + "id": "E03", + "in": "word", + "out": "word", + "to": "F04" + }, + { + "from": "F04", + "id": "E04", + "in": "word", + "out": "word", + "to": "F05" + }, + { + "from": "F05", + "id": "E05", + "in": "word", + "out": "word", + "to": "F06" + }, + { + "from": "F06", + "id": "E06", + "in": "base", + "out": "base", + "to": "F07" + }, + { + "from": "F06", + "id": "E07", + "in": "base/cohorts", + "out": "base", + "to": "F08" + }, + { + "from": "F07", + "id": "E08", + "in": "base/cohorts", + "out": "cohorts", + "to": "F08" + }, + { + "from": "F08", + "id": "E09", + "in": "word", + "out": "word", + "to": "F09" + }, + { + "from": "F09", + "id": "E10", + "in": "finalword", + "out": "finalword", + "to": "F10" + }, + { + "from": "F09", + "id": "E11", + "in": "finalword", + "out": "finalword", + "to": "F11" + }, + { + "from": "F11", + "id": "E12", + "in": "global", + "out": "global", + "to": "F12" + }, + { + "from": "F12", + "id": "E13", + "in": "packing", + "out": "packing", + "to": "F13" + }, + { + "from": "F13", + "id": "E14", + "in": "packing/charts", + "out": "normalizers", + "to": "F14" + }, + { + "from": "F11", + "id": "E15", + "in": "global", + "out": "global", + "to": "F14" + }, + { + "from": "F09", + "id": "E16", + "in": "final/global", + "out": "finalword", + "to": "F15" + }, + { + "from": "F11", + "id": "E17", + "in": "final/global", + "out": "global", + "to": "F15" + }, + { + "from": "F01", + "id": "E18", + "in": "complexpins", + "out": "recipes", + "to": "F16" + }, + { + "from": "F14", + "id": "E19", + "in": "literal", + "out": "literal", + "to": "F17" + }, + { + "from": "F16", + "id": "E20", + "in": "complex", + "out": "complex", + "to": "F17" + }, + { + "from": "F17", + "id": "E21", + "in": "rates", + "out": "rates", + "to": "F18" + }, + { + "from": "F18", + "id": "E22", + "in": "ordinary", + "out": "ordinary", + "to": "F19" + }, + { + "from": "F16", + "id": "E23", + "in": "complex", + "out": "guard", + "to": "F19" + }, + { + "from": "F10", + "id": "E24", + "in": "semantics/primes/rates", + "out": "semantics", + "to": "F20" + }, + { + "from": "F15", + "id": "E25", + "in": "semantics/primes/rates", + "out": "primes", + "to": "F20" + }, + { + "from": "F17", + "id": "E26", + "in": "semantics/primes/rates", + "out": "rates", + "to": "F20" + }, + { + "from": "F14", + "id": "E27", + "in": "final/global/literal", + "out": "literal", + "to": "F20" + }, + { + "from": "F19", + "id": "E28", + "in": "math", + "out": "bound", + "to": "F21" + }, + { + "from": "F20", + "id": "E29", + "in": "finite", + "out": "finite", + "to": "F21" + }, + { + "from": "F02", + "id": "E30", + "in": "sourceword", + "out": "sourceword", + "to": "F10" + }, + { + "from": "F01", + "id": "E31", + "in": "selection", + "out": "recipes", + "to": "F05" + }, + { + "from": "F01", + "id": "E32", + "in": "selection", + "out": "recipes", + "to": "F06" + }, + { + "from": "F01", + "id": "E33", + "in": "candidates", + "out": "recipes", + "to": "F07" + }, + { + "from": "F01", + "id": "E34", + "in": "selection", + "out": "recipes", + "to": "F07" + }, + { + "from": "F01", + "id": "E35", + "in": "intervals", + "out": "recipes", + "to": "F08" + }, + { + "from": "F01", + "id": "E36", + "in": "selection", + "out": "recipes", + "to": "F09" + }, + { + "from": "F09", + "id": "E37", + "in": "paths", + "out": "paths", + "to": "F11" + }, + { + "from": "F09", + "id": "E38", + "in": "entrances", + "out": "entrances", + "to": "F12" + }, + { + "from": "F09", + "id": "E39", + "in": "registry", + "out": "registry", + "to": "F13" + }, + { + "from": "F12", + "id": "E40", + "in": "packing/charts", + "out": "packing", + "to": "F14" + }, + { + "from": "F09", + "id": "E41", + "in": "context", + "out": "context", + "to": "F15" + }, + { + "from": "F09", + "id": "E42", + "in": "final/global/literal", + "out": "finalword", + "to": "F20" + }, + { + "from": "F11", + "id": "E43", + "in": "final/global/literal", + "out": "global", + "to": "F20" + }, + { + "from": "F09", + "id": "E44", + "in": "raw", + "out": "raw", + "to": "F21" + }, + { + "from": "F11", + "id": "E45", + "in": "bit", + "out": "global", + "to": "F21" + }, + { + "from": "F15", + "id": "E46", + "in": "bit", + "out": "geometry", + "to": "F21" + }, + { + "from": "F10", + "id": "E47", + "in": "scalar", + "out": "semantics", + "to": "F21" + }, + { + "from": "F15", + "id": "E48", + "in": "primes", + "out": "primes", + "to": "F21" + }, + { + "from": "F14", + "id": "E49", + "in": "banks", + "out": "bankword", + "to": "F21" + }, + { + "from": "F16", + "id": "E50", + "in": "complex", + "out": "complex", + "to": "F21" + }, + { + "from": "F17", + "id": "E51", + "in": "complex", + "out": "rates", + "to": "F19" + }, + { + "from": "F10", + "id": "E52", + "in": "semantics/primes/rates", + "out": "prefix", + "to": "F20" + }, + { + "from": "F10", + "id": "E53", + "in": "scalar", + "out": "prefix", + "to": "F21" + } + ], + "evidence_status": { + "certificate_sha256": "7eb58ec449c932b7092481746390c776365f302a742836cddef5643c0351802b", + "controls": { + "omitted_stages": 8, + "primes": 6, + "scalar": 25 + }, + "mac_reproduction": "PASS all eight mandatory stages", + "provenance": "Verified FINAL_REPRODUCTION_RECEIPT.json SHA256 327b8b0d5b7b27bc3f25e17222168262671364a3a698e4915a249bed863a8b06; sanitized facts in joint259_system_docs_evidence.json", + "publication": "Verified checkpoint; later PR266 is stronger. Construction PR #277: https://github.com/CrocSwap/integer-mult-bounds/pull/277.", + "python": "3.14.2", + "seconds": 580.9, + "source_files_unchanged": 143, + "sympy": "1.14.0" + }, + "external_inputs": [ + { + "block": "F01", + "definition": "Complete immutable source package with the selected manifest.", + "kind": "pinned_source_files", + "port": "package" + } + ], + "final_raw_sha256": "acf510b1377a6bd96eea50577de1aa049382499335fa7e5cac9b0300ecb377c7", + "requirements": [ + { + "id": "R01", + "name": "Immutable construction", + "text": "All numerical code, witness bytes and exact source pins must remain bound to one manifest." + }, + { + "id": "R02", + "name": "Payload and restoration", + "text": "All arbitrary input, old-target and dirty columns satisfy the F2 supplier contract and reverse restoration." + }, + { + "id": "R03", + "name": "Legal actual geometry", + "text": "Every used frame, inclusion, complement, chart and boundary must be checked as an exact subspace/operator, not by rank alone." + }, + { + "id": "R04", + "name": "Complete physical price", + "text": "Every recursive child, scalar primitive, move, copy, bridge, route, selector and fallback must remain accounted for." + }, + { + "id": "R05", + "name": "Full bank address safety", + "text": "Every literal helper occurrence is assigned once; complete banks cover all coordinates; full addresses are nonaliasing." + }, + { + "id": "R06", + "name": "Separate lift and precision claims", + "text": "F2 semantic equality and chosen signed-lift prefix majorants remain distinct from the unchanged source's signed decoder." + }, + { + "id": "R07", + "name": "Complete prime coverage", + "text": "Every physically consumed and defining-source basis has exact determinant/exclusion evidence for eligible odd q." + }, + { + "id": "R08", + "name": "Strict directed moment gap", + "text": "Both interval engines and the full rare fallback establish strict moment bounds and reject the adjacent grid." + }, + { + "id": "R09", + "name": "Finite ordinary closure", + "text": "Use three finite bootstrap levels, all outer inequalities and the full inherited-constant cutoff, with old-leaf fallback." + }, + { + "id": "R10", + "name": "Inherited theorem boundary", + "text": "All-size compiler, covers/charts, restored rows, routing, prime supply, recovery, complex-symbolic and analytic hypotheses stay explicit." + }, + { + "id": "R11", + "name": "Evidence honesty", + "text": "Describe which stages ran freshly, what unchanged evidence was reused, and which cross-platform checks remain pending." + }, + { + "id": "R12", + "name": "Documentation provenance", + "text": "Preserve historical artifacts, licenses and contributor credit; describe the selected construction rather than additive historical gains." + } + ], + "schema": "selected-construction-architecture/1", + "source_manifest_sha256": "9f6d8637b9a119cfe4566a02ab2d704f23c502e5e4357b40c28ef85a3fd4de89", + "title": "[Info Docs] Logical and Functional Diagrams, Explanations, and Build Tools for PR #277" +} diff --git a/docs/multicut-delayed-inverse-checkpoint/functional_architecture.pdf b/docs/multicut-delayed-inverse-checkpoint/functional_architecture.pdf new file mode 100644 index 0000000000000000000000000000000000000000..64ff02e518c645b450272fa630ddb468bd29c4fc GIT binary patch literal 855232 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�K?GV^^U@wN)9E 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�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 B`I-O# literal 0 HcmV?d00001 diff --git a/docs/multicut-delayed-inverse-checkpoint/hierarchy_edges.json b/docs/multicut-delayed-inverse-checkpoint/hierarchy_edges.json new file mode 100644 index 0000000000..e2ea9b2c69 --- /dev/null +++ b/docs/multicut-delayed-inverse-checkpoint/hierarchy_edges.json @@ -0,0 +1,1778 @@ +{ + "documentary_edges": 75, + "relations": [ + { + "id": "HT001", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "inherited_outer_theorem; not re-proved", + "kind": "data", + "source": "A0a.out", + "target": "A0b.in", + "type": "Descriptors" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A0a", + "target_block": "A0b" + }, + { + "id": "HT002", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "inherited_outer_theorem; not re-proved", + "kind": "data", + "source": "A0b.out", + "target": "A0c.in", + "type": "Descriptors" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A0b", + "target_block": "A0c" + }, + { + "id": "HT003", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "inherited_outer_theorem; not re-proved", + "kind": "data", + "source": "A0c.out", + "target": "A0d.in", + "type": "Descriptors" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A0c", + "target_block": "A0d" + }, + { + "id": "HT004", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "inherited_outer_theorem; not re-proved", + "kind": "data", + "source": "A0d.out", + "target": "A1.in", + "type": "Descriptors" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A0d", + "target_block": "A1" + }, + { + "id": "HT005", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "inherited_outer_theorem; not re-proved", + "kind": "data", + "source": "A1.out", + "target": "A2.in", + "type": "Digits" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A1", + "target_block": "A2" + }, + { + "id": "HT006", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "inherited_outer_theorem; not re-proved", + "kind": "data", + "source": "A2.out", + "target": "A3a.in", + "type": "ScaledInputs" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A2", + "target_block": "A3a" + }, + { + "id": "HT007", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "inherited_outer_theorem; not re-proved", + "kind": "data", + "source": "A3a.out", + "target": "A3b.in", + "type": "PaddedInputs" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A3a", + "target_block": "A3b" + }, + { + "id": "HT008", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "inherited_outer_theorem; not re-proved", + "kind": "data", + "source": "A3b.out", + "target": "A4a.in", + "type": "CRTInputs" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A3b", + "target_block": "A4a" + }, + { + "id": "HT009", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "inherited_outer_theorem; not re-proved", + "kind": "data", + "source": "A4a.out", + "target": "A4b.in", + "type": "WorkingTensor" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A4a", + "target_block": "A4b" + }, + { + "id": "HT010", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "inherited_outer_theorem; not re-proved", + "kind": "data", + "source": "A4b.out", + "target": "A4c.in", + "type": "WorkingSpectrum" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A4b", + "target_block": "A4c" + }, + { + "id": "HT011", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "inherited_outer_theorem; not re-proved", + "kind": "data", + "source": "A4c.out", + "target": "A4d.in", + "type": "SourceSpectrum" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A4c", + "target_block": "A4d" + }, + { + "id": "HT012", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "inherited_outer_theorem; not re-proved", + "kind": "data", + "source": "A4d.out", + "target": "A5.in", + "type": "PairedSpectrum" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A4d", + "target_block": "A5" + }, + { + "id": "HT013", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "inherited_outer_theorem; not re-proved", + "kind": "data", + "source": "A5.out", + "target": "A6.in", + "type": "SpectrumProduct" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A5", + "target_block": "A6" + }, + { + "id": "HT014", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "inherited_outer_theorem; not re-proved", + "kind": "data", + "source": "A6.out", + "target": "A7a.in", + "type": "ScaledConvolution" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A6", + "target_block": "A7a" + }, + { + "id": "HT015", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "inherited_outer_theorem; not re-proved", + "kind": "data", + "source": "A7a.out", + "target": "A7b.in", + "type": "PartialRecovery" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A7a", + "target_block": "A7b" + }, + { + "id": "HT016", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "inherited_outer_theorem; not re-proved", + "kind": "data", + "source": "A7b.out", + "target": "A8.in", + "type": "NearIntegerCoefficients" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A7b", + "target_block": "A8" + }, + { + "id": "HT017", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "inherited_outer_theorem; not re-proved", + "kind": "data", + "source": "A8.out", + "target": "A9.in", + "type": "IntegerCoefficients" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A8", + "target_block": "A9" + }, + { + "id": "HT018", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "A4b1.out", + "target": "A4b2.in", + "type": "SyntheticState" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A4b1", + "target_block": "A4b2" + }, + { + "id": "HT019", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "A4b2.out", + "target": "A4b3.in", + "type": "SyntheticState" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A4b2", + "target_block": "A4b3" + }, + { + "id": "HT020", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "A4b3.out", + "target": "A4b4.in", + "type": "SyntheticState" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A4b3", + "target_block": "A4b4" + }, + { + "id": "HT021", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "A4b4.out", + "target": "A4b5.in", + "type": "SyntheticState" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A4b4", + "target_block": "A4b5" + }, + { + "id": "HT022", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "A4b2a.out", + "target": "A4b2b.in", + "type": "SyntheticState" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A4b2a", + "target_block": "A4b2b" + }, + { + "id": "HT023", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "A4b2b.out", + "target": "A4b2c.in", + "type": "SyntheticState" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A4b2b", + "target_block": "A4b2c" + }, + { + "id": "HT024", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "A4b2c.out", + "target": "A4b2d.in", + "type": "SyntheticState" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A4b2c", + "target_block": "A4b2d" + }, + { + "id": "HT025", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "A4c1.out", + "target": "A4c2.in", + "type": "ResamplingState" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A4c1", + "target_block": "A4c2" + }, + { + "id": "HT026", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "A4c2.out", + "target": "A4c3.in", + "type": "ResamplingState" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A4c2", + "target_block": "A4c3" + }, + { + "id": "HT027", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "B1.out", + "target": "B2.in", + "type": "BitState" + }, + "scope": "Source471 internal order is not admitted as selected source527/hybrid execution. Current operation inventory and F02-F15 are authoritative.", + "selected_status": "historical_order_replaced", + "source_block": "B1", + "target_block": "B2" + }, + { + "id": "HT028", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "B2.out", + "target": "B3.in", + "type": "BitState" + }, + "scope": "Source471 internal order is not admitted as selected source527/hybrid execution. Current operation inventory and F02-F15 are authoritative.", + "selected_status": "historical_order_replaced", + "source_block": "B2", + "target_block": "B3" + }, + { + "id": "HT029", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "B3.out", + "target": "B4.in", + "type": "BitState" + }, + "scope": "Source471 internal order is not admitted as selected source527/hybrid execution. Current operation inventory and F02-F15 are authoritative.", + "selected_status": "historical_order_replaced", + "source_block": "B3", + "target_block": "B4" + }, + { + "id": "HT030", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "B4.out", + "target": "B5.in", + "type": "BitState" + }, + "scope": "Source471 internal order is not admitted as selected source527/hybrid execution. Current operation inventory and F02-F15 are authoritative.", + "selected_status": "historical_order_replaced", + "source_block": "B4", + "target_block": "B5" + }, + { + "id": "HT031", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "B8a.out", + "target": "B8b.in", + "type": "BitState" + }, + "scope": "Source471 internal order is not admitted as selected source527/hybrid execution. Current operation inventory and F02-F15 are authoritative.", + "selected_status": "historical_order_replaced", + "source_block": "B8a", + "target_block": "B8b" + }, + { + "id": "HT032", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "B8b.out", + "target": "B9a.in", + "type": "BitState" + }, + "scope": "Source471 internal order is not admitted as selected source527/hybrid execution. Current operation inventory and F02-F15 are authoritative.", + "selected_status": "historical_order_replaced", + "source_block": "B8b", + "target_block": "B9a" + }, + { + "id": "HT033", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "B9a.out", + "target": "B9b.in", + "type": "BitState" + }, + "scope": "Source471 internal order is not admitted as selected source527/hybrid execution. Current operation inventory and F02-F15 are authoritative.", + "selected_status": "historical_order_replaced", + "source_block": "B9a", + "target_block": "B9b" + }, + { + "id": "HT034", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "B9b.out", + "target": "B10.in", + "type": "BitState" + }, + "scope": "Source471 internal order is not admitted as selected source527/hybrid execution. Current operation inventory and F02-F15 are authoritative.", + "selected_status": "historical_order_replaced", + "source_block": "B9b", + "target_block": "B10" + }, + { + "id": "HT035", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "B10.out", + "target": "B11.in", + "type": "BitState" + }, + "scope": "Source471 internal order is not admitted as selected source527/hybrid execution. Current operation inventory and F02-F15 are authoritative.", + "selected_status": "historical_order_replaced", + "source_block": "B10", + "target_block": "B11" + }, + { + "id": "HT036", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "B11.out", + "target": "B12.in", + "type": "BitState" + }, + "scope": "Source471 internal order is not admitted as selected source527/hybrid execution. Current operation inventory and F02-F15 are authoritative.", + "selected_status": "historical_order_replaced", + "source_block": "B11", + "target_block": "B12" + }, + { + "id": "HT037", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "C1.out", + "target": "C2.in", + "type": "ComplexState" + }, + "scope": "Pinned complex supplier F16 supplies this responsibility; this relation is not a local scalar-gate trace.", + "selected_status": "retained_complex_interface", + "source_block": "C1", + "target_block": "C2" + }, + { + "id": "HT038", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "C2.out", + "target": "C3.in", + "type": "ComplexState" + }, + "scope": "Pinned complex supplier F16 supplies this responsibility; this relation is not a local scalar-gate trace.", + "selected_status": "retained_complex_interface", + "source_block": "C2", + "target_block": "C3" + }, + { + "id": "HT039", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "C3.out", + "target": "C4.in", + "type": "ComplexState" + }, + "scope": "Pinned complex supplier F16 supplies this responsibility; this relation is not a local scalar-gate trace.", + "selected_status": "retained_complex_interface", + "source_block": "C3", + "target_block": "C4" + }, + { + "id": "HT040", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "C4.out", + "target": "C5.in", + "type": "ComplexState" + }, + "scope": "Pinned complex supplier F16 supplies this responsibility; this relation is not a local scalar-gate trace.", + "selected_status": "retained_complex_interface", + "source_block": "C4", + "target_block": "C5" + }, + { + "id": "HT041", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "C5.out", + "target": "C6.in", + "type": "ComplexState" + }, + "scope": "Pinned complex supplier F16 supplies this responsibility; this relation is not a local scalar-gate trace.", + "selected_status": "retained_complex_interface", + "source_block": "C5", + "target_block": "C6" + }, + { + "id": "HT042", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "C6.out", + "target": "C7.in", + "type": "ComplexState" + }, + "scope": "Pinned complex supplier F16 supplies this responsibility; this relation is not a local scalar-gate trace.", + "selected_status": "retained_complex_interface", + "source_block": "C6", + "target_block": "C7" + }, + { + "id": "HT043", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "C7.out", + "target": "C8.in", + "type": "ComplexState" + }, + "scope": "Pinned complex supplier F16 supplies this responsibility; this relation is not a local scalar-gate trace.", + "selected_status": "retained_complex_interface", + "source_block": "C7", + "target_block": "C8" + }, + { + "id": "HT044", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "C12a.out", + "target": "C12b.in", + "type": "ComplexState" + }, + "scope": "Pinned complex supplier F16 supplies this responsibility; this relation is not a local scalar-gate trace.", + "selected_status": "retained_complex_interface", + "source_block": "C12a", + "target_block": "C12b" + }, + { + "id": "HT045", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "C12b.out", + "target": "C12c.in", + "type": "ComplexState" + }, + "scope": "Pinned complex supplier F16 supplies this responsibility; this relation is not a local scalar-gate trace.", + "selected_status": "retained_complex_interface", + "source_block": "C12b", + "target_block": "C12c" + }, + { + "id": "HT046", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "opaque_call_adapter", + "kind": "call", + "source": "A4b2b.call_B0", + "target": "B0.in", + "type": "BitState" + }, + "scope": "Caller/supplier responsibility is retained; current bit realization is F02-F15, with inherited all-size interface assumptions.", + "selected_status": "retained_bit_interface_contract", + "source_block": "A4b2b", + "target_block": "B0" + }, + { + "id": "HT047", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "opaque_return_adapter", + "kind": "return", + "source": "B0.return_A4b2b", + "target": "A4b2b.receive_B0", + "type": "BitState" + }, + "scope": "Caller/supplier responsibility is retained; current bit realization is F02-F15, with inherited all-size interface assumptions.", + "selected_status": "retained_bit_interface_contract", + "source_block": "B0", + "target_block": "A4b2b" + }, + { + "id": "HT048", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "opaque_call_adapter", + "kind": "call", + "source": "A4b2b.call_C1", + "target": "C1.in", + "type": "ComplexState" + }, + "scope": "Pinned complex supplier F16 supplies this responsibility; this relation is not a local scalar-gate trace.", + "selected_status": "retained_complex_interface", + "source_block": "A4b2b", + "target_block": "C1" + }, + { + "id": "HT049", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "opaque_return_adapter", + "kind": "return", + "source": "C1.return_A4b2b", + "target": "A4b2b.receive_C1", + "type": "ComplexState" + }, + "scope": "Pinned complex supplier F16 supplies this responsibility; this relation is not a local scalar-gate trace.", + "selected_status": "retained_complex_interface", + "source_block": "C1", + "target_block": "A4b2b" + }, + { + "id": "HT050", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "opaque_call_adapter", + "kind": "call", + "source": "B9a.call_R1", + "target": "R1.in", + "type": "ResidualRequest" + }, + "scope": "Caller/supplier responsibility is retained; current bit realization is F02-F15, with inherited all-size interface assumptions.", + "selected_status": "retained_bit_interface_contract", + "source_block": "B9a", + "target_block": "R1" + }, + { + "id": "HT051", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "opaque_return_adapter", + "kind": "return", + "source": "R1.return_B9a", + "target": "B9a.receive_R1", + "type": "ResidualResponse" + }, + "scope": "Caller/supplier responsibility is retained; current bit realization is F02-F15, with inherited all-size interface assumptions.", + "selected_status": "retained_bit_interface_contract", + "source_block": "R1", + "target_block": "B9a" + }, + { + "id": "HT052", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "opaque_call_adapter", + "kind": "call", + "source": "C13.call_R1", + "target": "R1.in", + "type": "ResidualRequest" + }, + "scope": "Completed-child and restored-row interface remains an inherited theorem obligation; current charge is bound by F17-F20.", + "selected_status": "inherited_recursive_contract", + "source_block": "C13", + "target_block": "R1" + }, + { + "id": "HT053", + "inventory": "typed_edges", + "original": { + "guarantee_implies_assumption": "opaque_return_adapter", + "kind": "return", + "source": "R1.return_C13", + "target": "C13.receive_R1", + "type": "ResidualResponse" + }, + "scope": "Completed-child and restored-row interface remains an inherited theorem obligation; current charge is bound by F17-F20.", + "selected_status": "inherited_recursive_contract", + "source_block": "R1", + "target_block": "C13" + }, + { + "id": "HD001", + "inventory": "documentary_edges", + "original": { + "from": "A0a", + "kind": "data", + "to": "A0b" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A0a", + "target_block": "A0b" + }, + { + "id": "HD002", + "inventory": "documentary_edges", + "original": { + "from": "A0b", + "kind": "data", + "to": "A0c" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A0b", + "target_block": "A0c" + }, + { + "id": "HD003", + "inventory": "documentary_edges", + "original": { + "from": "A0c", + "kind": "data", + "to": "A0d" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A0c", + "target_block": "A0d" + }, + { + "id": "HD004", + "inventory": "documentary_edges", + "original": { + "from": "A0d", + "kind": "data", + "to": "A1" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A0d", + "target_block": "A1" + }, + { + "id": "HD005", + "inventory": "documentary_edges", + "original": { + "from": "A1", + "kind": "data", + "to": "A2" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A1", + "target_block": "A2" + }, + { + "id": "HD006", + "inventory": "documentary_edges", + "original": { + "from": "A2", + "kind": "data", + "to": "A3a" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A2", + "target_block": "A3a" + }, + { + "id": "HD007", + "inventory": "documentary_edges", + "original": { + "from": "A3a", + "kind": "data", + "to": "A3b" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A3a", + "target_block": "A3b" + }, + { + "id": "HD008", + "inventory": "documentary_edges", + "original": { + "from": "A3b", + "kind": "data", + "to": "A4a" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A3b", + "target_block": "A4a" + }, + { + "id": "HD009", + "inventory": "documentary_edges", + "original": { + "from": "A4a", + "kind": "data", + "to": "A4b" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A4a", + "target_block": "A4b" + }, + { + "id": "HD010", + "inventory": "documentary_edges", + "original": { + "from": "A4b", + "kind": "data", + "to": "A4c" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A4b", + "target_block": "A4c" + }, + { + "id": "HD011", + "inventory": "documentary_edges", + "original": { + "from": "A4c", + "kind": "data", + "to": "A4d" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A4c", + "target_block": "A4d" + }, + { + "id": "HD012", + "inventory": "documentary_edges", + "original": { + "from": "A4d", + "kind": "data", + "to": "A5" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A4d", + "target_block": "A5" + }, + { + "id": "HD013", + "inventory": "documentary_edges", + "original": { + "from": "A5", + "kind": "data", + "to": "A6" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A5", + "target_block": "A6" + }, + { + "id": "HD014", + "inventory": "documentary_edges", + "original": { + "from": "A6", + "kind": "data", + "to": "A7a" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A6", + "target_block": "A7a" + }, + { + "id": "HD015", + "inventory": "documentary_edges", + "original": { + "from": "A7a", + "kind": "data", + "to": "A7b" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A7a", + "target_block": "A7b" + }, + { + "id": "HD016", + "inventory": "documentary_edges", + "original": { + "from": "A7b", + "kind": "data", + "to": "A8" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A7b", + "target_block": "A8" + }, + { + "id": "HD017", + "inventory": "documentary_edges", + "original": { + "from": "A8", + "kind": "data", + "to": "A9" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A8", + "target_block": "A9" + }, + { + "id": "HD018", + "inventory": "documentary_edges", + "original": { + "from": "A4b1", + "kind": "data", + "to": "A4b2" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A4b1", + "target_block": "A4b2" + }, + { + "id": "HD019", + "inventory": "documentary_edges", + "original": { + "from": "A4b2", + "kind": "data", + "to": "A4b3" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A4b2", + "target_block": "A4b3" + }, + { + "id": "HD020", + "inventory": "documentary_edges", + "original": { + "from": "A4b3", + "kind": "data", + "to": "A4b4" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A4b3", + "target_block": "A4b4" + }, + { + "id": "HD021", + "inventory": "documentary_edges", + "original": { + "from": "A4b4", + "kind": "data", + "to": "A4b5" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A4b4", + "target_block": "A4b5" + }, + { + "id": "HD022", + "inventory": "documentary_edges", + "original": { + "from": "A4b2a", + "kind": "data", + "to": "A4b2b" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A4b2a", + "target_block": "A4b2b" + }, + { + "id": "HD023", + "inventory": "documentary_edges", + "original": { + "from": "A4b2b", + "kind": "data", + "to": "A4b2c" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A4b2b", + "target_block": "A4b2c" + }, + { + "id": "HD024", + "inventory": "documentary_edges", + "original": { + "from": "A4b2c", + "kind": "data", + "to": "A4b2d" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A4b2c", + "target_block": "A4b2d" + }, + { + "id": "HD025", + "inventory": "documentary_edges", + "original": { + "from": "A4c1", + "kind": "data", + "to": "A4c2" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A4c1", + "target_block": "A4c2" + }, + { + "id": "HD026", + "inventory": "documentary_edges", + "original": { + "from": "A4c2", + "kind": "data", + "to": "A4c3" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A4c2", + "target_block": "A4c3" + }, + { + "id": "HD027", + "inventory": "documentary_edges", + "original": { + "from": "B1", + "kind": "data", + "to": "B2" + }, + "scope": "Source471 internal order is not admitted as selected source527/hybrid execution. Current operation inventory and F02-F15 are authoritative.", + "selected_status": "historical_order_replaced", + "source_block": "B1", + "target_block": "B2" + }, + { + "id": "HD028", + "inventory": "documentary_edges", + "original": { + "from": "B2", + "kind": "data", + "to": "B3" + }, + "scope": "Source471 internal order is not admitted as selected source527/hybrid execution. Current operation inventory and F02-F15 are authoritative.", + "selected_status": "historical_order_replaced", + "source_block": "B2", + "target_block": "B3" + }, + { + "id": "HD029", + "inventory": "documentary_edges", + "original": { + "from": "B3", + "kind": "data", + "to": "B4" + }, + "scope": "Source471 internal order is not admitted as selected source527/hybrid execution. Current operation inventory and F02-F15 are authoritative.", + "selected_status": "historical_order_replaced", + "source_block": "B3", + "target_block": "B4" + }, + { + "id": "HD030", + "inventory": "documentary_edges", + "original": { + "from": "B4", + "kind": "data", + "to": "B5" + }, + "scope": "Source471 internal order is not admitted as selected source527/hybrid execution. Current operation inventory and F02-F15 are authoritative.", + "selected_status": "historical_order_replaced", + "source_block": "B4", + "target_block": "B5" + }, + { + "id": "HD031", + "inventory": "documentary_edges", + "original": { + "from": "B8a", + "kind": "data", + "to": "B8b" + }, + "scope": "Source471 internal order is not admitted as selected source527/hybrid execution. Current operation inventory and F02-F15 are authoritative.", + "selected_status": "historical_order_replaced", + "source_block": "B8a", + "target_block": "B8b" + }, + { + "id": "HD032", + "inventory": "documentary_edges", + "original": { + "from": "B8b", + "kind": "data", + "to": "B9a" + }, + "scope": "Source471 internal order is not admitted as selected source527/hybrid execution. Current operation inventory and F02-F15 are authoritative.", + "selected_status": "historical_order_replaced", + "source_block": "B8b", + "target_block": "B9a" + }, + { + "id": "HD033", + "inventory": "documentary_edges", + "original": { + "from": "B9a", + "kind": "data", + "to": "B9b" + }, + "scope": "Source471 internal order is not admitted as selected source527/hybrid execution. Current operation inventory and F02-F15 are authoritative.", + "selected_status": "historical_order_replaced", + "source_block": "B9a", + "target_block": "B9b" + }, + { + "id": "HD034", + "inventory": "documentary_edges", + "original": { + "from": "B9b", + "kind": "data", + "to": "B10" + }, + "scope": "Source471 internal order is not admitted as selected source527/hybrid execution. Current operation inventory and F02-F15 are authoritative.", + "selected_status": "historical_order_replaced", + "source_block": "B9b", + "target_block": "B10" + }, + { + "id": "HD035", + "inventory": "documentary_edges", + "original": { + "from": "B10", + "kind": "data", + "to": "B11" + }, + "scope": "Source471 internal order is not admitted as selected source527/hybrid execution. Current operation inventory and F02-F15 are authoritative.", + "selected_status": "historical_order_replaced", + "source_block": "B10", + "target_block": "B11" + }, + { + "id": "HD036", + "inventory": "documentary_edges", + "original": { + "from": "B11", + "kind": "data", + "to": "B12" + }, + "scope": "Source471 internal order is not admitted as selected source527/hybrid execution. Current operation inventory and F02-F15 are authoritative.", + "selected_status": "historical_order_replaced", + "source_block": "B11", + "target_block": "B12" + }, + { + "id": "HD037", + "inventory": "documentary_edges", + "original": { + "from": "C1", + "kind": "data", + "to": "C2" + }, + "scope": "Pinned complex supplier F16 supplies this responsibility; this relation is not a local scalar-gate trace.", + "selected_status": "retained_complex_interface", + "source_block": "C1", + "target_block": "C2" + }, + { + "id": "HD038", + "inventory": "documentary_edges", + "original": { + "from": "C2", + "kind": "data", + "to": "C3" + }, + "scope": "Pinned complex supplier F16 supplies this responsibility; this relation is not a local scalar-gate trace.", + "selected_status": "retained_complex_interface", + "source_block": "C2", + "target_block": "C3" + }, + { + "id": "HD039", + "inventory": "documentary_edges", + "original": { + "from": "C3", + "kind": "data", + "to": "C4" + }, + "scope": "Pinned complex supplier F16 supplies this responsibility; this relation is not a local scalar-gate trace.", + "selected_status": "retained_complex_interface", + "source_block": "C3", + "target_block": "C4" + }, + { + "id": "HD040", + "inventory": "documentary_edges", + "original": { + "from": "C4", + "kind": "data", + "to": "C5" + }, + "scope": "Pinned complex supplier F16 supplies this responsibility; this relation is not a local scalar-gate trace.", + "selected_status": "retained_complex_interface", + "source_block": "C4", + "target_block": "C5" + }, + { + "id": "HD041", + "inventory": "documentary_edges", + "original": { + "from": "C5", + "kind": "data", + "to": "C6" + }, + "scope": "Pinned complex supplier F16 supplies this responsibility; this relation is not a local scalar-gate trace.", + "selected_status": "retained_complex_interface", + "source_block": "C5", + "target_block": "C6" + }, + { + "id": "HD042", + "inventory": "documentary_edges", + "original": { + "from": "C6", + "kind": "data", + "to": "C7" + }, + "scope": "Pinned complex supplier F16 supplies this responsibility; this relation is not a local scalar-gate trace.", + "selected_status": "retained_complex_interface", + "source_block": "C6", + "target_block": "C7" + }, + { + "id": "HD043", + "inventory": "documentary_edges", + "original": { + "from": "C7", + "kind": "data", + "to": "C8" + }, + "scope": "Pinned complex supplier F16 supplies this responsibility; this relation is not a local scalar-gate trace.", + "selected_status": "retained_complex_interface", + "source_block": "C7", + "target_block": "C8" + }, + { + "id": "HD044", + "inventory": "documentary_edges", + "original": { + "from": "C12a", + "kind": "data", + "to": "C12b" + }, + "scope": "Pinned complex supplier F16 supplies this responsibility; this relation is not a local scalar-gate trace.", + "selected_status": "retained_complex_interface", + "source_block": "C12a", + "target_block": "C12b" + }, + { + "id": "HD045", + "inventory": "documentary_edges", + "original": { + "from": "C12b", + "kind": "data", + "to": "C12c" + }, + "scope": "Pinned complex supplier F16 supplies this responsibility; this relation is not a local scalar-gate trace.", + "selected_status": "retained_complex_interface", + "source_block": "C12b", + "target_block": "C12c" + }, + { + "id": "HD046", + "inventory": "documentary_edges", + "original": { + "from": "D1", + "kind": "evidence", + "to": "D0" + }, + "scope": "Current evidence is allocated through F01-F21; historical PASS receipts are not current admission.", + "selected_status": "current_proof_reallocation", + "source_block": "D1", + "target_block": "D0" + }, + { + "id": "HD047", + "inventory": "documentary_edges", + "original": { + "from": "D0", + "kind": "evidence", + "to": "D2" + }, + "scope": "Current evidence is allocated through F01-F21; historical PASS receipts are not current admission.", + "selected_status": "current_proof_reallocation", + "source_block": "D0", + "target_block": "D2" + }, + { + "id": "HD048", + "inventory": "documentary_edges", + "original": { + "from": "D2", + "kind": "evidence", + "to": "D3" + }, + "scope": "Current evidence is allocated through F01-F21; historical PASS receipts are not current admission.", + "selected_status": "current_proof_reallocation", + "source_block": "D2", + "target_block": "D3" + }, + { + "id": "HD049", + "inventory": "documentary_edges", + "original": { + "from": "D3", + "kind": "evidence", + "to": "D4" + }, + "scope": "Current evidence is allocated through F01-F21; historical PASS receipts are not current admission.", + "selected_status": "current_proof_reallocation", + "source_block": "D3", + "target_block": "D4" + }, + { + "id": "HD050", + "inventory": "documentary_edges", + "original": { + "from": "D4", + "kind": "evidence", + "to": "D5" + }, + "scope": "Current evidence is allocated through F01-F21; historical PASS receipts are not current admission.", + "selected_status": "current_proof_reallocation", + "source_block": "D4", + "target_block": "D5" + }, + { + "id": "HD051", + "inventory": "documentary_edges", + "original": { + "from": "D5", + "kind": "evidence", + "to": "D6" + }, + "scope": "Current evidence is allocated through F01-F21; historical PASS receipts are not current admission.", + "selected_status": "current_proof_reallocation", + "source_block": "D5", + "target_block": "D6" + }, + { + "id": "HD052", + "inventory": "documentary_edges", + "original": { + "from": "A4b", + "kind": "detail", + "to": "A4b1" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A4b", + "target_block": "A4b1" + }, + { + "id": "HD053", + "inventory": "documentary_edges", + "original": { + "from": "A4b2", + "kind": "detail", + "to": "A4b2a" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A4b2", + "target_block": "A4b2a" + }, + { + "id": "HD054", + "inventory": "documentary_edges", + "original": { + "from": "A4b4", + "kind": "detail", + "to": "A4b4a" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A4b4", + "target_block": "A4b4a" + }, + { + "id": "HD055", + "inventory": "documentary_edges", + "original": { + "from": "A4c", + "kind": "detail", + "to": "A4c1" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A4c", + "target_block": "A4c1" + }, + { + "id": "HD056", + "inventory": "documentary_edges", + "original": { + "from": "A4a", + "kind": "support", + "to": "A4io" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A4a", + "target_block": "A4io" + }, + { + "id": "HD057", + "inventory": "documentary_edges", + "original": { + "from": "A4c3", + "kind": "support", + "to": "A4io" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A4c3", + "target_block": "A4io" + }, + { + "id": "HD058", + "inventory": "documentary_edges", + "original": { + "from": "A4b", + "kind": "support", + "to": "A4p1" + }, + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals.", + "selected_status": "retained_outer_contract", + "source_block": "A4b", + "target_block": "A4p1" + }, + { + "id": "HD059", + "inventory": "documentary_edges", + "original": { + "from": "A4b2b", + "kind": "support", + "to": "B0" + }, + "scope": "Caller/supplier responsibility is retained; current bit realization is F02-F15, with inherited all-size interface assumptions.", + "selected_status": "retained_bit_interface_contract", + "source_block": "A4b2b", + "target_block": "B0" + }, + { + "id": "HD060", + "inventory": "documentary_edges", + "original": { + "from": "A4b2b", + "kind": "support", + "to": "C1" + }, + "scope": "Pinned complex supplier F16 supplies this responsibility; this relation is not a local scalar-gate trace.", + "selected_status": "retained_complex_interface", + "source_block": "A4b2b", + "target_block": "C1" + }, + { + "id": "HD061", + "inventory": "documentary_edges", + "original": { + "from": "B0", + "kind": "detail", + "to": "B1" + }, + "scope": "Source471 internal order is not admitted as selected source527/hybrid execution. Current operation inventory and F02-F15 are authoritative.", + "selected_status": "historical_order_replaced", + "source_block": "B0", + "target_block": "B1" + }, + { + "id": "HD062", + "inventory": "documentary_edges", + "original": { + "from": "B2", + "kind": "detail", + "to": "B6a" + }, + "scope": "Source471 internal order is not admitted as selected source527/hybrid execution. Current operation inventory and F02-F15 are authoritative.", + "selected_status": "historical_order_replaced", + "source_block": "B2", + "target_block": "B6a" + }, + { + "id": "HD063", + "inventory": "documentary_edges", + "original": { + "from": "B4", + "kind": "detail", + "to": "B7a" + }, + "scope": "Source471 internal order is not admitted as selected source527/hybrid execution. Current operation inventory and F02-F15 are authoritative.", + "selected_status": "historical_order_replaced", + "source_block": "B4", + "target_block": "B7a" + }, + { + "id": "HD064", + "inventory": "documentary_edges", + "original": { + "from": "B5", + "kind": "support", + "to": "B8a" + }, + "scope": "Source471 internal order is not admitted as selected source527/hybrid execution. Current operation inventory and F02-F15 are authoritative.", + "selected_status": "historical_order_replaced", + "source_block": "B5", + "target_block": "B8a" + }, + { + "id": "HD065", + "inventory": "documentary_edges", + "original": { + "from": "B9a", + "kind": "support", + "to": "R5a" + }, + "scope": "Caller/supplier responsibility is retained; current bit realization is F02-F15, with inherited all-size interface assumptions.", + "selected_status": "retained_bit_interface_contract", + "source_block": "B9a", + "target_block": "R5a" + }, + { + "id": "HD066", + "inventory": "documentary_edges", + "original": { + "from": "A4b2a", + "kind": "support", + "to": "R5b" + }, + "scope": "Completed-child and restored-row interface remains an inherited theorem obligation; current charge is bound by F17-F20.", + "selected_status": "inherited_recursive_contract", + "source_block": "A4b2a", + "target_block": "R5b" + }, + { + "id": "HD067", + "inventory": "documentary_edges", + "original": { + "from": "C2", + "kind": "support", + "to": "C13" + }, + "scope": "Pinned complex supplier F16 supplies this responsibility; this relation is not a local scalar-gate trace.", + "selected_status": "retained_complex_interface", + "source_block": "C2", + "target_block": "C13" + }, + { + "id": "HD068", + "inventory": "documentary_edges", + "original": { + "from": "C4", + "kind": "detail", + "to": "C9" + }, + "scope": "Pinned complex supplier F16 supplies this responsibility; this relation is not a local scalar-gate trace.", + "selected_status": "retained_complex_interface", + "source_block": "C4", + "target_block": "C9" + }, + { + "id": "HD069", + "inventory": "documentary_edges", + "original": { + "from": "C4", + "kind": "detail", + "to": "C10" + }, + "scope": "Pinned complex supplier F16 supplies this responsibility; this relation is not a local scalar-gate trace.", + "selected_status": "retained_complex_interface", + "source_block": "C4", + "target_block": "C10" + }, + { + "id": "HD070", + "inventory": "documentary_edges", + "original": { + "from": "C8", + "kind": "support", + "to": "C12a" + }, + "scope": "Pinned complex supplier F16 supplies this responsibility; this relation is not a local scalar-gate trace.", + "selected_status": "retained_complex_interface", + "source_block": "C8", + "target_block": "C12a" + }, + { + "id": "HD071", + "inventory": "documentary_edges", + "original": { + "from": "R5a", + "kind": "support", + "to": "R1" + }, + "scope": "Completed-child and restored-row interface remains an inherited theorem obligation; current charge is bound by F17-F20.", + "selected_status": "inherited_recursive_contract", + "source_block": "R5a", + "target_block": "R1" + }, + { + "id": "HD072", + "inventory": "documentary_edges", + "original": { + "from": "C13", + "kind": "support", + "to": "R1" + }, + "scope": "Completed-child and restored-row interface remains an inherited theorem obligation; current charge is bound by F17-F20.", + "selected_status": "inherited_recursive_contract", + "source_block": "C13", + "target_block": "R1" + }, + { + "id": "HD073", + "inventory": "documentary_edges", + "original": { + "from": "R1", + "kind": "support", + "to": "R2" + }, + "scope": "Completed-child and restored-row interface remains an inherited theorem obligation; current charge is bound by F17-F20.", + "selected_status": "inherited_recursive_contract", + "source_block": "R1", + "target_block": "R2" + }, + { + "id": "HD074", + "inventory": "documentary_edges", + "original": { + "from": "R2", + "kind": "support", + "to": "R3" + }, + "scope": "Completed-child and restored-row interface remains an inherited theorem obligation; current charge is bound by F17-F20.", + "selected_status": "inherited_recursive_contract", + "source_block": "R2", + "target_block": "R3" + }, + { + "id": "HD075", + "inventory": "documentary_edges", + "original": { + "from": "R2", + "kind": "support", + "to": "R4" + }, + "scope": "Completed-child and restored-row interface remains an inherited theorem obligation; current charge is bound by F17-F20.", + "selected_status": "inherited_recursive_contract", + "source_block": "R2", + "target_block": "R4" + } + ], + "schema": "historical-edge-reconciliation/1", + "source_graph_sha256": "b70e794473cb75f76941e190ed102c236a15b9a868c4d277eb28e05f843d116c", + "typed_edges": 53 +} diff --git a/docs/multicut-delayed-inverse-checkpoint/hierarchy_reconciliation.json b/docs/multicut-delayed-inverse-checkpoint/hierarchy_reconciliation.json new file mode 100644 index 0000000000..195d496bb4 --- /dev/null +++ b/docs/multicut-delayed-inverse-checkpoint/hierarchy_reconciliation.json @@ -0,0 +1,5243 @@ +{ + "blocks": [ + { + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "historical_requirements": [ + "SYS-3" + ], + "id": "A0a", + "logical_functions": [ + "L0", + "L1" + ], + "name": "Read operands and lengths", + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "ports": { + "in": "Bits", + "out": "Descriptors" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/paired_cube_assembly.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/paired_cube_assembly.py", + "sha256": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + }, + "status": "inherited_outer_contract" + }, + { + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "historical_requirements": [ + "SYS-3", + "SYS-4", + "IF-5" + ], + "id": "A0b", + "logical_functions": [ + "L1" + ], + "name": "Select admissible sizes and precision", + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "ports": { + "in": "Descriptors", + "out": "Descriptors" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/paired_cube_assembly.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/paired_cube_assembly.py", + "sha256": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + }, + "status": "inherited_outer_contract" + }, + { + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "historical_requirements": [ + "SYS-3" + ], + "id": "A0c", + "logical_functions": [ + "L1" + ], + "name": "Generate descriptors", + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "ports": { + "in": "Descriptors", + "out": "Descriptors" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/paired_cube_assembly.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/paired_cube_assembly.py", + "sha256": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + }, + "status": "inherited_outer_contract" + }, + { + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "historical_requirements": [ + "SYS-3" + ], + "id": "A0d", + "logical_functions": [ + "L1" + ], + "name": "Select ordinary cutoff and guards", + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "ports": { + "in": "Descriptors", + "out": "Descriptors" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/paired_cube_assembly.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/paired_cube_assembly.py", + "sha256": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + }, + "status": "inherited_outer_contract" + }, + { + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "historical_requirements": [ + "SYS-1" + ], + "id": "A1", + "logical_functions": [ + "L0", + "L1" + ], + "name": "Extract radix digits", + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "ports": { + "in": "Descriptors", + "out": "Digits" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/integration_v2/upstream/build/references.bib": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/references.bib", + "sha256": "33cc2df13ccf85330849e8fb34d4ac7613b23f625787457a5b7b9aa6d7369476" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + }, + "status": "inherited_outer_contract" + }, + { + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "historical_requirements": [ + "SYS-1" + ], + "id": "A2", + "logical_functions": [ + "L0", + "L1" + ], + "name": "Scale bounded inputs", + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "ports": { + "in": "Digits", + "out": "ScaledInputs" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/integration_v2/upstream/build/references.bib": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/references.bib", + "sha256": "33cc2df13ccf85330849e8fb34d4ac7613b23f625787457a5b7b9aa6d7369476" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + }, + "status": "inherited_outer_contract" + }, + { + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "historical_requirements": [ + "SYS-1" + ], + "id": "A3a", + "logical_functions": [ + "L0", + "L2" + ], + "name": "Zero-pad operands", + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "ports": { + "in": "ScaledInputs", + "out": "PaddedInputs" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/integration_v2/upstream/build/references.bib": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/references.bib", + "sha256": "33cc2df13ccf85330849e8fb34d4ac7613b23f625787457a5b7b9aa6d7369476" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + }, + "status": "inherited_outer_contract" + }, + { + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "historical_requirements": [ + "SYS-1" + ], + "id": "A3b", + "logical_functions": [ + "L0", + "L2", + "L6" + ], + "name": "Apply convolution-preserving CRT index map", + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "ports": { + "in": "PaddedInputs", + "out": "CRTInputs" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/integration_v2/upstream/build/references.bib": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/references.bib", + "sha256": "33cc2df13ccf85330849e8fb34d4ac7613b23f625787457a5b7b9aa6d7369476" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + }, + "status": "inherited_outer_contract" + }, + { + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "historical_requirements": [ + "SYS-1", + "SYS-4", + "IF-1", + "IF-5" + ], + "id": "A4a", + "logical_functions": [ + "L0", + "L2", + "L3" + ], + "name": "Gaussian expansion", + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "ports": { + "in": "CRTInputs", + "out": "WorkingTensor" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/integration_v2/upstream/build/references.bib": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/references.bib", + "sha256": "33cc2df13ccf85330849e8fb34d4ac7613b23f625787457a5b7b9aa6d7369476" + }, + "processor_architectures/integration_v2/upstream/build/sections/06-transforms.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/06-transforms.tex", + "sha256": "924316e4bc905066281d8f9e8746a49d8829aeb393688608deb1e61c3c87853c" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + }, + "status": "inherited_outer_contract" + }, + { + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "historical_requirements": [ + "SYS-1", + "SYS-4", + "IF-1", + "IF-5" + ], + "id": "A4b", + "logical_functions": [ + "L2", + "L3" + ], + "name": "Chirp source transform", + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "ports": { + "in": "WorkingTensor", + "out": "WorkingSpectrum" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/integration_v2/upstream/build/references.bib": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/references.bib", + "sha256": "33cc2df13ccf85330849e8fb34d4ac7613b23f625787457a5b7b9aa6d7369476" + }, + "processor_architectures/integration_v2/upstream/build/sections/06-transforms.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/06-transforms.tex", + "sha256": "924316e4bc905066281d8f9e8746a49d8829aeb393688608deb1e61c3c87853c" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + }, + "status": "inherited_outer_contract" + }, + { + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-2", + "IF-5", + "IF-6" + ], + "id": "A4b1", + "logical_functions": [ + "L7" + ], + "name": "Twist into negacyclic ring", + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "ports": { + "in": "SyntheticState", + "out": "SyntheticState" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/integration_v2/upstream/build/references.bib": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/references.bib", + "sha256": "33cc2df13ccf85330849e8fb34d4ac7613b23f625787457a5b7b9aa6d7369476" + }, + "processor_architectures/integration_v2/upstream/build/sections/06-transforms.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/06-transforms.tex", + "sha256": "924316e4bc905066281d8f9e8746a49d8829aeb393688608deb1e61c3c87853c" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + }, + "status": "inherited_outer_contract" + }, + { + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-2", + "IF-5", + "IF-6" + ], + "id": "A4b2", + "logical_functions": [ + "L7" + ], + "name": "Two normalized synthetic transforms", + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "ports": { + "in": "SyntheticState", + "out": "SyntheticState" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/integration_v2/upstream/build/references.bib": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/references.bib", + "sha256": "33cc2df13ccf85330849e8fb34d4ac7613b23f625787457a5b7b9aa6d7369476" + }, + "processor_architectures/integration_v2/upstream/build/sections/06-transforms.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/06-transforms.tex", + "sha256": "924316e4bc905066281d8f9e8746a49d8829aeb393688608deb1e61c3c87853c" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + }, + "status": "inherited_outer_contract" + }, + { + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-2", + "IF-5", + "IF-6" + ], + "id": "A4b2a", + "logical_functions": [ + "L6" + ], + "name": "Arrange stored tensor layout", + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "ports": { + "in": "SyntheticState", + "out": "SyntheticState" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/integration_v2/upstream/build/sections/06-transforms.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/06-transforms.tex", + "sha256": "924316e4bc905066281d8f9e8746a49d8829aeb393688608deb1e61c3c87853c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + }, + "status": "inherited_outer_contract" + }, + { + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-2", + "IF-5", + "IF-6" + ], + "id": "A4b2b", + "logical_functions": [ + "L7" + ], + "name": "Execute normalized butterfly rounds", + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "ports": { + "call_B0": "BitState", + "call_C1": "ComplexState", + "in": "SyntheticState", + "out": "SyntheticState", + "receive_B0": "BitState", + "receive_C1": "ComplexState" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/integration_v2/upstream/build/sections/06-transforms.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/06-transforms.tex", + "sha256": "924316e4bc905066281d8f9e8746a49d8829aeb393688608deb1e61c3c87853c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + }, + "status": "inherited_outer_contract" + }, + { + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-2", + "IF-5", + "IF-6" + ], + "id": "A4b2c", + "logical_functions": [ + "L7" + ], + "name": "Apply exact signed polynomial twiddle", + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "ports": { + "in": "SyntheticState", + "out": "SyntheticState" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/integration_v2/upstream/build/sections/06-transforms.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/06-transforms.tex", + "sha256": "924316e4bc905066281d8f9e8746a49d8829aeb393688608deb1e61c3c87853c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + }, + "status": "inherited_outer_contract" + }, + { + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-2", + "IF-5", + "IF-6" + ], + "id": "A4b2d", + "logical_functions": [ + "L7" + ], + "name": "Truncate round and clear work", + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "ports": { + "in": "SyntheticState", + "out": "SyntheticState" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/integration_v2/upstream/build/sections/06-transforms.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/06-transforms.tex", + "sha256": "924316e4bc905066281d8f9e8746a49d8829aeb393688608deb1e61c3c87853c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + }, + "status": "inherited_outer_contract" + }, + { + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-2", + "IF-5", + "IF-6" + ], + "id": "A4b3", + "logical_functions": [ + "L7" + ], + "name": "Packed ring record products", + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "ports": { + "in": "SyntheticState", + "out": "SyntheticState" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/integration_v2/upstream/build/references.bib": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/references.bib", + "sha256": "33cc2df13ccf85330849e8fb34d4ac7613b23f625787457a5b7b9aa6d7369476" + }, + "processor_architectures/integration_v2/upstream/build/sections/06-transforms.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/06-transforms.tex", + "sha256": "924316e4bc905066281d8f9e8746a49d8829aeb393688608deb1e61c3c87853c" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + }, + "status": "inherited_outer_contract" + }, + { + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-2", + "IF-5", + "IF-6" + ], + "id": "A4b4", + "logical_functions": [ + "L7" + ], + "name": "Opposite synthetic transform", + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "ports": { + "in": "SyntheticState", + "out": "SyntheticState" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/integration_v2/upstream/build/references.bib": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/references.bib", + "sha256": "33cc2df13ccf85330849e8fb34d4ac7613b23f625787457a5b7b9aa6d7369476" + }, + "processor_architectures/integration_v2/upstream/build/sections/06-transforms.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/06-transforms.tex", + "sha256": "924316e4bc905066281d8f9e8746a49d8829aeb393688608deb1e61c3c87853c" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + }, + "status": "inherited_outer_contract" + }, + { + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-2", + "IF-5", + "IF-6" + ], + "id": "A4b4a", + "logical_functions": [ + "L6" + ], + "name": "Opposite rounds and normalization", + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "ports": { + "in": "SyntheticState", + "out": "SyntheticState" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/integration_v2/upstream/build/sections/06-transforms.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/06-transforms.tex", + "sha256": "924316e4bc905066281d8f9e8746a49d8829aeb393688608deb1e61c3c87853c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + }, + "status": "inherited_outer_contract" + }, + { + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-2", + "IF-5", + "IF-6" + ], + "id": "A4b5", + "logical_functions": [ + "L7" + ], + "name": "Untwist ring coefficients", + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "ports": { + "in": "SyntheticState", + "out": "SyntheticState" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/integration_v2/upstream/build/references.bib": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/references.bib", + "sha256": "33cc2df13ccf85330849e8fb34d4ac7613b23f625787457a5b7b9aa6d7369476" + }, + "processor_architectures/integration_v2/upstream/build/sections/06-transforms.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/06-transforms.tex", + "sha256": "924316e4bc905066281d8f9e8746a49d8829aeb393688608deb1e61c3c87853c" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + }, + "status": "inherited_outer_contract" + }, + { + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "historical_requirements": [ + "SYS-1", + "SYS-4", + "IF-1", + "IF-5" + ], + "id": "A4c", + "logical_functions": [ + "L2", + "L3" + ], + "name": "Gaussian compression", + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "ports": { + "in": "WorkingSpectrum", + "out": "SourceSpectrum" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/integration_v2/upstream/build/references.bib": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/references.bib", + "sha256": "33cc2df13ccf85330849e8fb34d4ac7613b23f625787457a5b7b9aa6d7369476" + }, + "processor_architectures/integration_v2/upstream/build/sections/06-transforms.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/06-transforms.tex", + "sha256": "924316e4bc905066281d8f9e8746a49d8829aeb393688608deb1e61c3c87853c" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + }, + "status": "inherited_outer_contract" + }, + { + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-2", + "IF-5", + "IF-6" + ], + "id": "A4c1", + "logical_functions": [ + "L7" + ], + "name": "Select ordered source samples", + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "ports": { + "in": "ResamplingState", + "out": "ResamplingState" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + }, + "status": "inherited_outer_contract" + }, + { + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-2", + "IF-5", + "IF-6" + ], + "id": "A4c2", + "logical_functions": [ + "L7" + ], + "name": "Apply bounded Neumann correction", + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "ports": { + "in": "ResamplingState", + "out": "ResamplingState" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + }, + "status": "inherited_outer_contract" + }, + { + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-2", + "IF-5", + "IF-6" + ], + "id": "A4c3", + "logical_functions": [ + "L7" + ], + "name": "Apply diagonal Gaussian correction", + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "ports": { + "in": "ResamplingState", + "out": "ResamplingState" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + }, + "status": "inherited_outer_contract" + }, + { + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "historical_requirements": [ + "SYS-1", + "SYS-4", + "IF-1", + "IF-5" + ], + "id": "A4d", + "logical_functions": [ + "L2", + "L3" + ], + "name": "Return ordered source transforms", + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "ports": { + "in": "SourceSpectrum", + "out": "PairedSpectrum" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/integration_v2/upstream/build/references.bib": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/references.bib", + "sha256": "33cc2df13ccf85330849e8fb34d4ac7613b23f625787457a5b7b9aa6d7369476" + }, + "processor_architectures/integration_v2/upstream/build/sections/06-transforms.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/06-transforms.tex", + "sha256": "924316e4bc905066281d8f9e8746a49d8829aeb393688608deb1e61c3c87853c" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + }, + "status": "inherited_outer_contract" + }, + { + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-2", + "IF-5", + "IF-6" + ], + "id": "A4io", + "logical_functions": [ + "L6" + ], + "name": "Adapt records and axis layout", + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "ports": { + "in": "WorkingTensor", + "out": "WorkingTensor" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + }, + "status": "inherited_outer_contract" + }, + { + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-2", + "IF-5", + "IF-6" + ], + "id": "A4p1", + "logical_functions": [ + "L7" + ], + "name": "Generate chirp and twist phase descriptors", + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "ports": { + "in": "Descriptors", + "out": "PhaseDescriptor" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/paired_cube_assembly.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/paired_cube_assembly.py", + "sha256": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + }, + "status": "inherited_outer_contract" + }, + { + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-2", + "IF-5", + "IF-6" + ], + "id": "A4p2", + "logical_functions": [ + "L7" + ], + "name": "Evaluate bounded complex exponential", + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "ports": { + "in": "PhaseDescriptor", + "out": "Factors" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/paired_cube_assembly.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/paired_cube_assembly.py", + "sha256": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + }, + "status": "inherited_outer_contract" + }, + { + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-2", + "IF-5", + "IF-6" + ], + "id": "A4p3", + "logical_functions": [ + "L7" + ], + "name": "Multiply phase factor and truncate", + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "ports": { + "in": "PhaseApplicationInput", + "out": "WorkingTensor" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/paired_cube_assembly.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/paired_cube_assembly.py", + "sha256": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + }, + "status": "inherited_outer_contract" + }, + { + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "historical_requirements": [ + "SYS-1" + ], + "id": "A5", + "logical_functions": [ + "L0", + "L3" + ], + "name": "Multiply matching Fourier entries", + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "ports": { + "in": "PairedSpectrum", + "out": "SpectrumProduct" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/integration_v2/upstream/build/references.bib": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/references.bib", + "sha256": "33cc2df13ccf85330849e8fb34d4ac7613b23f625787457a5b7b9aa6d7369476" + }, + "processor_architectures/integration_v2/upstream/build/sections/06-transforms.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/06-transforms.tex", + "sha256": "924316e4bc905066281d8f9e8746a49d8829aeb393688608deb1e61c3c87853c" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + }, + "status": "inherited_outer_contract" + }, + { + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "historical_requirements": [ + "SYS-1" + ], + "id": "A6", + "logical_functions": [ + "L0", + "L3" + ], + "name": "Apply opposite-sign source transform", + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "ports": { + "in": "SpectrumProduct", + "out": "ScaledConvolution" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/integration_v2/upstream/build/references.bib": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/references.bib", + "sha256": "33cc2df13ccf85330849e8fb34d4ac7613b23f625787457a5b7b9aa6d7369476" + }, + "processor_architectures/integration_v2/upstream/build/sections/06-transforms.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/06-transforms.tex", + "sha256": "924316e4bc905066281d8f9e8746a49d8829aeb393688608deb1e61c3c87853c" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + }, + "status": "inherited_outer_contract" + }, + { + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "historical_requirements": [ + "SYS-1", + "SYS-4", + "IF-5", + "ARC-4" + ], + "id": "A7a", + "logical_functions": [ + "L0", + "L4" + ], + "name": "First recovery normalization", + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "ports": { + "in": "ScaledConvolution", + "out": "PartialRecovery" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + }, + "status": "inherited_outer_contract" + }, + { + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "historical_requirements": [ + "SYS-1", + "SYS-4", + "IF-5", + "ARC-4" + ], + "id": "A7b", + "logical_functions": [ + "L0", + "L4" + ], + "name": "Complete recovery normalization and coefficient layout", + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "ports": { + "in": "PartialRecovery", + "out": "NearIntegerCoefficients" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + }, + "status": "inherited_outer_contract" + }, + { + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "historical_requirements": [ + "SYS-1", + "SYS-4", + "IF-5", + "ARC-4" + ], + "id": "A8", + "logical_functions": [ + "L0", + "L4" + ], + "name": "Round exact integer coefficients", + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "ports": { + "in": "NearIntegerCoefficients", + "out": "IntegerCoefficients" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + }, + "status": "inherited_outer_contract" + }, + { + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "historical_requirements": [ + "SYS-1", + "SYS-4", + "ARC-4" + ], + "id": "A9", + "logical_functions": [ + "L0", + "L5" + ], + "name": "Carry and serialize exact product", + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "ports": { + "in": "IntegerCoefficients", + "out": "Product" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + }, + "status": "inherited_outer_contract" + }, + { + "current_blocks": [ + "F10", + "F11", + "F14", + "F20" + ], + "historical_requirements": [ + "SYS-2", + "IF-1" + ], + "id": "B0", + "logical_functions": [ + "L7" + ], + "name": "Bit address-interchange contract", + "note": "Logical responsibility mapped to source527/hybrid. Historical source471 operations and counts are not transplanted one-for-one.", + "ports": { + "in": "BitState", + "out": "BitState", + "return_A4b2b": "BitState" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py", + "sha256": "0cbec81a11e758156e9303f63dc8c617601da69523073fdf2a77394d76acf56a" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/scalar_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/scalar_check.py", + "sha256": "ddedeb4d40262123287fb371f5aa5eab67ae73f65167f9144ef134c2edcce142" + } + }, + "status": "current_supplier_reallocation" + }, + { + "current_blocks": [ + "F02", + "F10" + ], + "historical_requirements": [ + "IF-2" + ], + "id": "B1", + "logical_functions": [ + "L7" + ], + "name": "Compensate old dirty response", + "note": "Logical responsibility mapped to source527/hybrid. Historical source471 operations and counts are not transplanted one-for-one.", + "ports": { + "in": "BitState", + "out": "BitState" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/five_stage_source471_physical_telescope_20261009.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/five_stage_source471_physical_telescope_20261009.py", + "sha256": "5c28c44e10548c234f8b3454e91c1f34695a20559ce6ff8ced009db6bcbbaf58" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/raw_ledger.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/raw_ledger.py", + "sha256": "89ba53114488a77a12b941db2787850c2c41612ad0332c47699a011c0c596b32" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py", + "sha256": "0cbec81a11e758156e9303f63dc8c617601da69523073fdf2a77394d76acf56a" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/scalar_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/scalar_check.py", + "sha256": "ddedeb4d40262123287fb371f5aa5eab67ae73f65167f9144ef134c2edcce142" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + }, + "status": "current_supplier_reallocation" + }, + { + "current_blocks": [ + "F11" + ], + "historical_requirements": [ + "IF-6", + "ARC-1" + ], + "id": "B10", + "logical_functions": [ + "L10" + ], + "name": "Compose five phase-major bit windows", + "note": "Logical responsibility mapped to source527/hybrid. Historical source471 operations and counts are not transplanted one-for-one.", + "ports": { + "in": "BitState", + "out": "BitState" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/five_stage_bit_global_lowering_20261009.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/five_stage_bit_global_lowering_20261009.py", + "sha256": "2f4fd25eebbfdfbf37e2375e23b4827fda62776dff3b3b64e971dd215b2664bc" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/five_stage_bit_global_lowering_geometry_20261009.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/five_stage_bit_global_lowering_geometry_20261009.py", + "sha256": "4a619e5d40c05295ef83183ee0d11bee12d0053bab2596ec9cfcd7fea4936157" + } + }, + "status": "current_supplier_reallocation" + }, + { + "current_blocks": [ + "F12", + "F13", + "F14" + ], + "historical_requirements": [ + "SYS-2", + "IF-3", + "IF-6", + "ARC-2" + ], + "id": "B11", + "logical_functions": [ + "L9" + ], + "name": "Complete independent dirty frames", + "note": "Independent completions are discharged only by the current full-bank proof and exact tags. The historical exterior-completion realization is replaced.", + "ports": { + "in": "BitState", + "out": "BitState" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/five_stage_bit_global_lowering_20261009.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/five_stage_bit_global_lowering_20261009.py", + "sha256": "2f4fd25eebbfdfbf37e2375e23b4827fda62776dff3b3b64e971dd215b2664bc" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/raw_ledger.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/raw_ledger.py", + "sha256": "89ba53114488a77a12b941db2787850c2c41612ad0332c47699a011c0c596b32" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/FINITE_BIT_ACCOUNTING.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/FINITE_BIT_ACCOUNTING.md", + "sha256": "602923520af184670170bf159fde7b4c72e79a72570eddd7746b7c97bc51fc5b" + } + }, + "status": "current_supplier_reallocation" + }, + { + "current_blocks": [ + "F11" + ], + "historical_requirements": [ + "SYS-2" + ], + "id": "B12", + "logical_functions": [ + "L9" + ], + "name": "Exchange terminal banks", + "note": "Logical responsibility mapped to source527/hybrid. Historical source471 operations and counts are not transplanted one-for-one.", + "ports": { + "in": "BitState", + "out": "BitState" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/five_stage_bit_global_lowering_20261009.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/five_stage_bit_global_lowering_20261009.py", + "sha256": "2f4fd25eebbfdfbf37e2375e23b4827fda62776dff3b3b64e971dd215b2664bc" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/raw_ledger.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/raw_ledger.py", + "sha256": "89ba53114488a77a12b941db2787850c2c41612ad0332c47699a011c0c596b32" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/FINITE_BIT_ACCOUNTING.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/FINITE_BIT_ACCOUNTING.md", + "sha256": "602923520af184670170bf159fde7b4c72e79a72570eddd7746b7c97bc51fc5b" + } + }, + "status": "current_supplier_reallocation" + }, + { + "current_blocks": [ + "F02", + "F03", + "F07", + "F08" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-2", + "IF-5", + "IF-6" + ], + "id": "B2", + "logical_functions": [ + "L7" + ], + "name": "Compute framed helper word", + "note": "Logical responsibility mapped to source527/hybrid. Historical source471 operations and counts are not transplanted one-for-one.", + "ports": { + "in": "BitState", + "out": "BitState" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/five_stage_source471_physical_telescope_20261009.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/five_stage_source471_physical_telescope_20261009.py", + "sha256": "5c28c44e10548c234f8b3454e91c1f34695a20559ce6ff8ced009db6bcbbaf58" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/raw_ledger.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/raw_ledger.py", + "sha256": "89ba53114488a77a12b941db2787850c2c41612ad0332c47699a011c0c596b32" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py", + "sha256": "0cbec81a11e758156e9303f63dc8c617601da69523073fdf2a77394d76acf56a" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/scalar_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/scalar_check.py", + "sha256": "ddedeb4d40262123287fb371f5aa5eab67ae73f65167f9144ef134c2edcce142" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + }, + "status": "current_supplier_reallocation" + }, + { + "current_blocks": [ + "F03", + "F11" + ], + "historical_requirements": [ + "IF-3" + ], + "id": "B3", + "logical_functions": [ + "L7", + "L8" + ], + "name": "Manage copied centers", + "note": "Logical responsibility mapped to source527/hybrid. Historical source471 operations and counts are not transplanted one-for-one.", + "ports": { + "in": "BitState", + "out": "BitState" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/five_stage_source471_physical_telescope_20261009.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/five_stage_source471_physical_telescope_20261009.py", + "sha256": "5c28c44e10548c234f8b3454e91c1f34695a20559ce6ff8ced009db6bcbbaf58" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/raw_ledger.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/raw_ledger.py", + "sha256": "89ba53114488a77a12b941db2787850c2c41612ad0332c47699a011c0c596b32" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py", + "sha256": "0cbec81a11e758156e9303f63dc8c617601da69523073fdf2a77394d76acf56a" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/scalar_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/scalar_check.py", + "sha256": "ddedeb4d40262123287fb371f5aa5eab67ae73f65167f9144ef134c2edcce142" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + }, + "status": "current_supplier_reallocation" + }, + { + "current_blocks": [ + "F03", + "F08", + "F10" + ], + "historical_requirements": [ + "IF-2" + ], + "id": "B4", + "logical_functions": [ + "L7" + ], + "name": "Deliver target updates", + "note": "Logical responsibility mapped to source527/hybrid. Historical source471 operations and counts are not transplanted one-for-one.", + "ports": { + "in": "BitState", + "out": "BitState" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/five_stage_source471_physical_telescope_20261009.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/five_stage_source471_physical_telescope_20261009.py", + "sha256": "5c28c44e10548c234f8b3454e91c1f34695a20559ce6ff8ced009db6bcbbaf58" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/raw_ledger.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/raw_ledger.py", + "sha256": "89ba53114488a77a12b941db2787850c2c41612ad0332c47699a011c0c596b32" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py", + "sha256": "0cbec81a11e758156e9303f63dc8c617601da69523073fdf2a77394d76acf56a" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/scalar_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/scalar_check.py", + "sha256": "ddedeb4d40262123287fb371f5aa5eab67ae73f65167f9144ef134c2edcce142" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + }, + "status": "current_supplier_reallocation" + }, + { + "current_blocks": [ + "F10" + ], + "historical_requirements": [ + "SYS-2", + "IF-2" + ], + "id": "B5", + "logical_functions": [ + "L7", + "L9" + ], + "name": "Restore scalar source and dirt", + "note": "Logical responsibility mapped to source527/hybrid. Historical source471 operations and counts are not transplanted one-for-one.", + "ports": { + "in": "BitState", + "out": "BitState" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/five_stage_source471_physical_telescope_20261009.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/five_stage_source471_physical_telescope_20261009.py", + "sha256": "5c28c44e10548c234f8b3454e91c1f34695a20559ce6ff8ced009db6bcbbaf58" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/raw_ledger.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/raw_ledger.py", + "sha256": "89ba53114488a77a12b941db2787850c2c41612ad0332c47699a011c0c596b32" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py", + "sha256": "0cbec81a11e758156e9303f63dc8c617601da69523073fdf2a77394d76acf56a" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/scalar_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/scalar_check.py", + "sha256": "ddedeb4d40262123287fb371f5aa5eab67ae73f65167f9144ef134c2edcce142" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + }, + "status": "current_supplier_reallocation" + }, + { + "current_blocks": [ + "F02" + ], + "historical_requirements": [ + "SYS-2", + "IF-3" + ], + "id": "B6a", + "logical_functions": [ + "L8" + ], + "name": "Start source loan", + "note": "Logical responsibility mapped to source527/hybrid. Historical source471 operations and counts are not transplanted one-for-one.", + "ports": { + "in": "BitState", + "out": "BitState" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/borrow/selection.json": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/borrow/selection.json", + "sha256": "6932749407e14b199651f0a7deff02c6de74e2c1be0a1300263f1e164927fb8b" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py", + "sha256": "0cbec81a11e758156e9303f63dc8c617601da69523073fdf2a77394d76acf56a" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/scalar_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/scalar_check.py", + "sha256": "ddedeb4d40262123287fb371f5aa5eab67ae73f65167f9144ef134c2edcce142" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + }, + "status": "current_supplier_reallocation" + }, + { + "current_blocks": [ + "F02" + ], + "historical_requirements": [ + "SYS-2", + "IF-3" + ], + "id": "B6b", + "logical_functions": [ + "L8" + ], + "name": "Mix source carrier", + "note": "Logical responsibility mapped to source527/hybrid. Historical source471 operations and counts are not transplanted one-for-one.", + "ports": { + "in": "BitState", + "out": "BitState" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/borrow/selection.json": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/borrow/selection.json", + "sha256": "6932749407e14b199651f0a7deff02c6de74e2c1be0a1300263f1e164927fb8b" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py", + "sha256": "0cbec81a11e758156e9303f63dc8c617601da69523073fdf2a77394d76acf56a" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/scalar_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/scalar_check.py", + "sha256": "ddedeb4d40262123287fb371f5aa5eab67ae73f65167f9144ef134c2edcce142" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + }, + "status": "current_supplier_reallocation" + }, + { + "current_blocks": [ + "F02" + ], + "historical_requirements": [ + "SYS-2", + "IF-3" + ], + "id": "B6c", + "logical_functions": [ + "L8" + ], + "name": "Use loan alias", + "note": "Logical responsibility mapped to source527/hybrid. Historical source471 operations and counts are not transplanted one-for-one.", + "ports": { + "in": "BitState", + "out": "BitState" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/borrow/selection.json": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/borrow/selection.json", + "sha256": "6932749407e14b199651f0a7deff02c6de74e2c1be0a1300263f1e164927fb8b" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py", + "sha256": "0cbec81a11e758156e9303f63dc8c617601da69523073fdf2a77394d76acf56a" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/scalar_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/scalar_check.py", + "sha256": "ddedeb4d40262123287fb371f5aa5eab67ae73f65167f9144ef134c2edcce142" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + }, + "status": "current_supplier_reallocation" + }, + { + "current_blocks": [ + "F02", + "F10" + ], + "historical_requirements": [ + "SYS-2", + "IF-3" + ], + "id": "B6d", + "logical_functions": [ + "L8", + "L9" + ], + "name": "Restore borrowed source", + "note": "Logical responsibility mapped to source527/hybrid. Historical source471 operations and counts are not transplanted one-for-one.", + "ports": { + "in": "BitState", + "out": "BitState" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/borrow/selection.json": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/borrow/selection.json", + "sha256": "6932749407e14b199651f0a7deff02c6de74e2c1be0a1300263f1e164927fb8b" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py", + "sha256": "0cbec81a11e758156e9303f63dc8c617601da69523073fdf2a77394d76acf56a" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/scalar_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/scalar_check.py", + "sha256": "ddedeb4d40262123287fb371f5aa5eab67ae73f65167f9144ef134c2edcce142" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + }, + "status": "current_supplier_reallocation" + }, + { + "current_blocks": [ + "F02", + "F10" + ], + "historical_requirements": [ + "SYS-2", + "IF-3" + ], + "id": "B6e", + "logical_functions": [ + "L8", + "L9" + ], + "name": "Undo carrier mix", + "note": "Logical responsibility mapped to source527/hybrid. Historical source471 operations and counts are not transplanted one-for-one.", + "ports": { + "in": "BitState", + "out": "BitState" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/borrow/selection.json": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/borrow/selection.json", + "sha256": "6932749407e14b199651f0a7deff02c6de74e2c1be0a1300263f1e164927fb8b" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py", + "sha256": "0cbec81a11e758156e9303f63dc8c617601da69523073fdf2a77394d76acf56a" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/scalar_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/scalar_check.py", + "sha256": "ddedeb4d40262123287fb371f5aa5eab67ae73f65167f9144ef134c2edcce142" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + }, + "status": "current_supplier_reallocation" + }, + { + "current_blocks": [ + "F02", + "F06" + ], + "historical_requirements": [ + "IF-2" + ], + "id": "B7a", + "logical_functions": [ + "L8" + ], + "name": "Prepare source-owned compensation", + "note": "Logical responsibility mapped to source527/hybrid. Historical source471 operations and counts are not transplanted one-for-one.", + "ports": { + "in": "BitState", + "out": "BitState" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/borrow/selection.json": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/borrow/selection.json", + "sha256": "6932749407e14b199651f0a7deff02c6de74e2c1be0a1300263f1e164927fb8b" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py", + "sha256": "0cbec81a11e758156e9303f63dc8c617601da69523073fdf2a77394d76acf56a" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/scalar_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/scalar_check.py", + "sha256": "ddedeb4d40262123287fb371f5aa5eab67ae73f65167f9144ef134c2edcce142" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + }, + "status": "current_supplier_reallocation" + }, + { + "current_blocks": [ + "F06", + "F08" + ], + "historical_requirements": [ + "IF-2" + ], + "id": "B7b", + "logical_functions": [ + "L8" + ], + "name": "Deliver compensated target response", + "note": "Logical responsibility mapped to source527/hybrid. Historical source471 operations and counts are not transplanted one-for-one.", + "ports": { + "in": "BitState", + "out": "BitState" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/borrow/selection.json": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/borrow/selection.json", + "sha256": "6932749407e14b199651f0a7deff02c6de74e2c1be0a1300263f1e164927fb8b" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py", + "sha256": "0cbec81a11e758156e9303f63dc8c617601da69523073fdf2a77394d76acf56a" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/scalar_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/scalar_check.py", + "sha256": "ddedeb4d40262123287fb371f5aa5eab67ae73f65167f9144ef134c2edcce142" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + }, + "status": "current_supplier_reallocation" + }, + { + "current_blocks": [ + "F06", + "F08", + "F10" + ], + "historical_requirements": [ + "IF-2" + ], + "id": "B7c", + "logical_functions": [ + "L8" + ], + "name": "Keep only desired signal", + "note": "Logical responsibility mapped to source527/hybrid. Historical source471 operations and counts are not transplanted one-for-one.", + "ports": { + "in": "BitState", + "out": "BitState" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/borrow/selection.json": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/borrow/selection.json", + "sha256": "6932749407e14b199651f0a7deff02c6de74e2c1be0a1300263f1e164927fb8b" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py", + "sha256": "0cbec81a11e758156e9303f63dc8c617601da69523073fdf2a77394d76acf56a" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/scalar_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/scalar_check.py", + "sha256": "ddedeb4d40262123287fb371f5aa5eab67ae73f65167f9144ef134c2edcce142" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + }, + "status": "current_supplier_reallocation" + }, + { + "current_blocks": [ + "F11", + "F14" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-4", + "ARC-2" + ], + "id": "B8a", + "logical_functions": [ + "L6" + ], + "name": "Describe full address identity", + "note": "Logical responsibility mapped to source527/hybrid. Historical source471 operations and counts are not transplanted one-for-one.", + "ports": { + "in": "BitState", + "out": "BitState" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/five_stage_bit_global_lowering_20261009.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/five_stage_bit_global_lowering_20261009.py", + "sha256": "2f4fd25eebbfdfbf37e2375e23b4827fda62776dff3b3b64e971dd215b2664bc" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/five_stage_bit_global_lowering_geometry_20261009.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/five_stage_bit_global_lowering_geometry_20261009.py", + "sha256": "4a619e5d40c05295ef83183ee0d11bee12d0053bab2596ec9cfcd7fea4936157" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/prime_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/prime_check.py", + "sha256": "79c013c703e1f52c6afc225342015a9572230b643b8a9dbf6206bc4f765f642c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/FINITE_BIT_ACCOUNTING.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/FINITE_BIT_ACCOUNTING.md", + "sha256": "602923520af184670170bf159fde7b4c72e79a72570eddd7746b7c97bc51fc5b" + } + }, + "status": "current_supplier_reallocation" + }, + { + "current_blocks": [ + "F20" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-4", + "ARC-2" + ], + "id": "B8b", + "logical_functions": [ + "L6" + ], + "name": "Execute charged complete-stream route", + "note": "Logical responsibility mapped to source527/hybrid. Historical source471 operations and counts are not transplanted one-for-one.", + "ports": { + "in": "BitState", + "out": "BitState" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/five_stage_bit_global_lowering_20261009.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/five_stage_bit_global_lowering_20261009.py", + "sha256": "2f4fd25eebbfdfbf37e2375e23b4827fda62776dff3b3b64e971dd215b2664bc" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/five_stage_bit_global_lowering_geometry_20261009.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/five_stage_bit_global_lowering_geometry_20261009.py", + "sha256": "4a619e5d40c05295ef83183ee0d11bee12d0053bab2596ec9cfcd7fea4936157" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/prime_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/prime_check.py", + "sha256": "79c013c703e1f52c6afc225342015a9572230b643b8a9dbf6206bc4f765f642c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/FINITE_BIT_ACCOUNTING.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/FINITE_BIT_ACCOUNTING.md", + "sha256": "602923520af184670170bf159fde7b4c72e79a72570eddd7746b7c97bc51fc5b" + } + }, + "status": "current_supplier_reallocation" + }, + { + "current_blocks": [ + "F11", + "F17", + "F20" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-4", + "ARC-3" + ], + "id": "B9a", + "logical_functions": [ + "L6" + ], + "name": "Call exact nested recursive residual", + "note": "Logical responsibility mapped to source527/hybrid. Historical source471 operations and counts are not transplanted one-for-one.", + "ports": { + "call_R1": "ResidualRequest", + "in": "BitState", + "out": "BitState", + "receive_R1": "ResidualResponse" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/five_stage_bit_global_lowering_20261009.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/five_stage_bit_global_lowering_20261009.py", + "sha256": "2f4fd25eebbfdfbf37e2375e23b4827fda62776dff3b3b64e971dd215b2664bc" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/five_stage_bit_global_lowering_geometry_20261009.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/five_stage_bit_global_lowering_geometry_20261009.py", + "sha256": "4a619e5d40c05295ef83183ee0d11bee12d0053bab2596ec9cfcd7fea4936157" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/prime_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/prime_check.py", + "sha256": "79c013c703e1f52c6afc225342015a9572230b643b8a9dbf6206bc4f765f642c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/FINITE_BIT_ACCOUNTING.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/FINITE_BIT_ACCOUNTING.md", + "sha256": "602923520af184670170bf159fde7b4c72e79a72570eddd7746b7c97bc51fc5b" + } + }, + "status": "current_supplier_reallocation" + }, + { + "current_blocks": [ + "F03", + "F04" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-4" + ], + "id": "B9b", + "logical_functions": [ + "L6" + ], + "name": "Apply equal-frame scalar gate", + "note": "Logical responsibility mapped to source527/hybrid. Historical source471 operations and counts are not transplanted one-for-one.", + "ports": { + "in": "BitState", + "out": "BitState" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/five_stage_bit_global_lowering_20261009.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/five_stage_bit_global_lowering_20261009.py", + "sha256": "2f4fd25eebbfdfbf37e2375e23b4827fda62776dff3b3b64e971dd215b2664bc" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/five_stage_bit_global_lowering_geometry_20261009.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/five_stage_bit_global_lowering_geometry_20261009.py", + "sha256": "4a619e5d40c05295ef83183ee0d11bee12d0053bab2596ec9cfcd7fea4936157" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/prime_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/prime_check.py", + "sha256": "79c013c703e1f52c6afc225342015a9572230b643b8a9dbf6206bc4f765f642c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/FINITE_BIT_ACCOUNTING.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/FINITE_BIT_ACCOUNTING.md", + "sha256": "602923520af184670170bf159fde7b4c72e79a72570eddd7746b7c97bc51fc5b" + } + }, + "status": "current_supplier_reallocation" + }, + { + "current_blocks": [ + "F16" + ], + "historical_requirements": [ + "IF-1" + ], + "id": "C1", + "logical_functions": [ + "L7", + "L8" + ], + "name": "Compensate old complex response", + "note": "Current pinned complex supplier expands this responsibility; use its exact labels, phases, lifetimes and source theorems.", + "ports": { + "in": "ComplexState", + "out": "ComplexState", + "return_A4b2b": "ComplexState" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/inputs/complex/source-pins.json": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/inputs/complex/source-pins.json", + "sha256": "de0daf6847185d7a6911535e3012c1a91de1e32b5da8204beec26b37523ad569" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/portable_complex.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/portable_complex.py", + "sha256": "797e144c0040d78a4731a6eaa61c0edb9803a08462f885ed014cbca9d9991d82" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + }, + "status": "retained_complex_recipe" + }, + { + "current_blocks": [ + "F16" + ], + "historical_requirements": [ + "IF-3" + ], + "id": "C10", + "logical_functions": [ + "L8" + ], + "name": "Backward transposed-center macro", + "note": "Current pinned complex supplier expands this responsibility; use its exact labels, phases, lifetimes and source theorems.", + "ports": { + "in": "ComplexState", + "out": "ComplexState" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/portable_complex.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/portable_complex.py", + "sha256": "797e144c0040d78a4731a6eaa61c0edb9803a08462f885ed014cbca9d9991d82" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/copied-centers-lemma.tex": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/copied-centers-lemma.tex", + "sha256": "d0ce6d3d504996aadb098227885224e48df46101daec8893523a0a8b7364d8fe" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + }, + "status": "retained_complex_recipe" + }, + { + "current_blocks": [ + "F16" + ], + "historical_requirements": [ + "SYS-3", + "SYS-4", + "IF-3", + "IF-5" + ], + "id": "C11a", + "logical_functions": [ + "L8" + ], + "name": "Copy scalar work", + "note": "Current pinned complex supplier expands this responsibility; use its exact labels, phases, lifetimes and source theorems.", + "ports": { + "in": "ComplexState", + "out": "ComplexState" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/portable_complex.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/portable_complex.py", + "sha256": "797e144c0040d78a4731a6eaa61c0edb9803a08462f885ed014cbca9d9991d82" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/copied-centers-lemma.tex": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/copied-centers-lemma.tex", + "sha256": "d0ce6d3d504996aadb098227885224e48df46101daec8893523a0a8b7364d8fe" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + }, + "status": "retained_complex_recipe" + }, + { + "current_blocks": [ + "F16" + ], + "historical_requirements": [ + "SYS-3", + "SYS-4", + "IF-3", + "IF-5" + ], + "id": "C11b", + "logical_functions": [ + "L8" + ], + "name": "Scale exact rational coefficient", + "note": "Current pinned complex supplier expands this responsibility; use its exact labels, phases, lifetimes and source theorems.", + "ports": { + "in": "ComplexState", + "out": "ComplexState" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/portable_complex.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/portable_complex.py", + "sha256": "797e144c0040d78a4731a6eaa61c0edb9803a08462f885ed014cbca9d9991d82" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/copied-centers-lemma.tex": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/copied-centers-lemma.tex", + "sha256": "d0ce6d3d504996aadb098227885224e48df46101daec8893523a0a8b7364d8fe" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + }, + "status": "retained_complex_recipe" + }, + { + "current_blocks": [ + "F16" + ], + "historical_requirements": [ + "SYS-3", + "SYS-4", + "IF-3", + "IF-5" + ], + "id": "C11c", + "logical_functions": [ + "L8" + ], + "name": "Accumulate scalar update", + "note": "Current pinned complex supplier expands this responsibility; use its exact labels, phases, lifetimes and source theorems.", + "ports": { + "in": "ComplexState", + "out": "ComplexState" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/portable_complex.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/portable_complex.py", + "sha256": "797e144c0040d78a4731a6eaa61c0edb9803a08462f885ed014cbca9d9991d82" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/copied-centers-lemma.tex": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/copied-centers-lemma.tex", + "sha256": "d0ce6d3d504996aadb098227885224e48df46101daec8893523a0a8b7364d8fe" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + }, + "status": "retained_complex_recipe" + }, + { + "current_blocks": [ + "F16" + ], + "historical_requirements": [ + "SYS-3", + "SYS-4", + "IF-3", + "IF-5" + ], + "id": "C11d", + "logical_functions": [ + "L8" + ], + "name": "Clear scalar work", + "note": "Current pinned complex supplier expands this responsibility; use its exact labels, phases, lifetimes and source theorems.", + "ports": { + "in": "ComplexState", + "out": "ComplexState" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/portable_complex.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/portable_complex.py", + "sha256": "797e144c0040d78a4731a6eaa61c0edb9803a08462f885ed014cbca9d9991d82" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/copied-centers-lemma.tex": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/copied-centers-lemma.tex", + "sha256": "d0ce6d3d504996aadb098227885224e48df46101daec8893523a0a8b7364d8fe" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + }, + "status": "retained_complex_recipe" + }, + { + "current_blocks": [ + "F16" + ], + "historical_requirements": [ + "ARC-1" + ], + "id": "C12a", + "logical_functions": [ + "L6" + ], + "name": "Route complex owner labels", + "note": "Current pinned complex supplier expands this responsibility; use its exact labels, phases, lifetimes and source theorems.", + "ports": { + "in": "ComplexState", + "out": "ComplexState" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/inputs/complex/sources/Work__GCert__Chain__NetDef.lean": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/inputs/complex/sources/Work__GCert__Chain__NetDef.lean", + "sha256": "6e17a68b1e988969f6eb77000028f7ed877e687b8ad3976ec1707fcfe1d2f520" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/portable_complex.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/portable_complex.py", + "sha256": "797e144c0040d78a4731a6eaa61c0edb9803a08462f885ed014cbca9d9991d82" + } + }, + "status": "retained_complex_recipe" + }, + { + "current_blocks": [ + "F16" + ], + "historical_requirements": [ + "ARC-1" + ], + "id": "C12b", + "logical_functions": [ + "L10" + ], + "name": "Compose five complex windows", + "note": "Current pinned complex supplier expands this responsibility; use its exact labels, phases, lifetimes and source theorems.", + "ports": { + "in": "ComplexState", + "out": "ComplexState" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/inputs/complex/sources/Work__GCert__Chain__NetDef.lean": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/inputs/complex/sources/Work__GCert__Chain__NetDef.lean", + "sha256": "6e17a68b1e988969f6eb77000028f7ed877e687b8ad3976ec1707fcfe1d2f520" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/portable_complex.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/portable_complex.py", + "sha256": "797e144c0040d78a4731a6eaa61c0edb9803a08462f885ed014cbca9d9991d82" + } + }, + "status": "retained_complex_recipe" + }, + { + "current_blocks": [ + "F16" + ], + "historical_requirements": [ + "ARC-1" + ], + "id": "C12c", + "logical_functions": [ + "L9" + ], + "name": "Complete terminal complex exchange", + "note": "Current pinned complex supplier expands this responsibility; use its exact labels, phases, lifetimes and source theorems.", + "ports": { + "in": "ComplexState", + "out": "ComplexState" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/inputs/complex/sources/Work__GCert__Chain__NetDef.lean": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/inputs/complex/sources/Work__GCert__Chain__NetDef.lean", + "sha256": "6e17a68b1e988969f6eb77000028f7ed877e687b8ad3976ec1707fcfe1d2f520" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/portable_complex.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/portable_complex.py", + "sha256": "797e144c0040d78a4731a6eaa61c0edb9803a08462f885ed014cbca9d9991d82" + } + }, + "status": "retained_complex_recipe" + }, + { + "current_blocks": [ + "F16" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-4", + "ARC-3" + ], + "id": "C13", + "logical_functions": [ + "L6", + "L7" + ], + "name": "Synthesize phase-correct residual", + "note": "Current pinned complex supplier expands this responsibility; use its exact labels, phases, lifetimes and source theorems.", + "ports": { + "call_R1": "ResidualRequest", + "in": "ComplexState", + "out": "ComplexState", + "receive_R1": "ResidualResponse" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/FINITE_BIT_ACCOUNTING.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/FINITE_BIT_ACCOUNTING.md", + "sha256": "602923520af184670170bf159fde7b4c72e79a72570eddd7746b7c97bc51fc5b" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + }, + "status": "retained_complex_recipe" + }, + { + "current_blocks": [ + "F16" + ], + "historical_requirements": [ + "IF-4" + ], + "id": "C2", + "logical_functions": [ + "L7" + ], + "name": "Adapt exact complex entry labels", + "note": "Current pinned complex supplier expands this responsibility; use its exact labels, phases, lifetimes and source theorems.", + "ports": { + "in": "ComplexState", + "out": "ComplexState" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/inputs/complex/source-pins.json": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/inputs/complex/source-pins.json", + "sha256": "de0daf6847185d7a6911535e3012c1a91de1e32b5da8204beec26b37523ad569" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/portable_complex.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/portable_complex.py", + "sha256": "797e144c0040d78a4731a6eaa61c0edb9803a08462f885ed014cbca9d9991d82" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + }, + "status": "retained_complex_recipe" + }, + { + "current_blocks": [ + "F16" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-2", + "IF-5", + "IF-6" + ], + "id": "C3", + "logical_functions": [ + "L7" + ], + "name": "Perform phase A live climbs", + "note": "Current pinned complex supplier expands this responsibility; use its exact labels, phases, lifetimes and source theorems.", + "ports": { + "in": "ComplexState", + "out": "ComplexState" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/inputs/complex/source-pins.json": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/inputs/complex/source-pins.json", + "sha256": "de0daf6847185d7a6911535e3012c1a91de1e32b5da8204beec26b37523ad569" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/portable_complex.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/portable_complex.py", + "sha256": "797e144c0040d78a4731a6eaa61c0edb9803a08462f885ed014cbca9d9991d82" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + }, + "status": "retained_complex_recipe" + }, + { + "current_blocks": [ + "F16" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-2", + "IF-5", + "IF-6" + ], + "id": "C4", + "logical_functions": [ + "L7" + ], + "name": "Run retained copied centers", + "note": "Current pinned complex supplier expands this responsibility; use its exact labels, phases, lifetimes and source theorems.", + "ports": { + "in": "ComplexState", + "out": "ComplexState" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/inputs/complex/source-pins.json": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/inputs/complex/source-pins.json", + "sha256": "de0daf6847185d7a6911535e3012c1a91de1e32b5da8204beec26b37523ad569" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/portable_complex.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/portable_complex.py", + "sha256": "797e144c0040d78a4731a6eaa61c0edb9803a08462f885ed014cbca9d9991d82" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + }, + "status": "retained_complex_recipe" + }, + { + "current_blocks": [ + "F16" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-2", + "IF-5", + "IF-6" + ], + "id": "C5", + "logical_functions": [ + "L7" + ], + "name": "Perform phase B live climbs", + "note": "Current pinned complex supplier expands this responsibility; use its exact labels, phases, lifetimes and source theorems.", + "ports": { + "in": "ComplexState", + "out": "ComplexState" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/inputs/complex/source-pins.json": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/inputs/complex/source-pins.json", + "sha256": "de0daf6847185d7a6911535e3012c1a91de1e32b5da8204beec26b37523ad569" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/portable_complex.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/portable_complex.py", + "sha256": "797e144c0040d78a4731a6eaa61c0edb9803a08462f885ed014cbca9d9991d82" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + }, + "status": "retained_complex_recipe" + }, + { + "current_blocks": [ + "F16" + ], + "historical_requirements": [ + "IF-2" + ], + "id": "C6", + "logical_functions": [ + "L7" + ], + "name": "Finish live climbs", + "note": "Current pinned complex supplier expands this responsibility; use its exact labels, phases, lifetimes and source theorems.", + "ports": { + "in": "ComplexState", + "out": "ComplexState" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/inputs/complex/source-pins.json": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/inputs/complex/source-pins.json", + "sha256": "de0daf6847185d7a6911535e3012c1a91de1e32b5da8204beec26b37523ad569" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/portable_complex.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/portable_complex.py", + "sha256": "797e144c0040d78a4731a6eaa61c0edb9803a08462f885ed014cbca9d9991d82" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + }, + "status": "retained_complex_recipe" + }, + { + "current_blocks": [ + "F16" + ], + "historical_requirements": [ + "IF-2", + "IF-4" + ], + "id": "C7", + "logical_functions": [ + "L7" + ], + "name": "Adapt exact complex exit labels", + "note": "Current pinned complex supplier expands this responsibility; use its exact labels, phases, lifetimes and source theorems.", + "ports": { + "in": "ComplexState", + "out": "ComplexState" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/inputs/complex/source-pins.json": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/inputs/complex/source-pins.json", + "sha256": "de0daf6847185d7a6911535e3012c1a91de1e32b5da8204beec26b37523ad569" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/portable_complex.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/portable_complex.py", + "sha256": "797e144c0040d78a4731a6eaa61c0edb9803a08462f885ed014cbca9d9991d82" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + }, + "status": "retained_complex_recipe" + }, + { + "current_blocks": [ + "F16" + ], + "historical_requirements": [ + "SYS-2", + "IF-2" + ], + "id": "C8", + "logical_functions": [ + "L7", + "L9" + ], + "name": "Restore complex borrowed payload", + "note": "Current pinned complex supplier expands this responsibility; use its exact labels, phases, lifetimes and source theorems.", + "ports": { + "in": "ComplexState", + "out": "ComplexState" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/inputs/complex/source-pins.json": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/inputs/complex/source-pins.json", + "sha256": "de0daf6847185d7a6911535e3012c1a91de1e32b5da8204beec26b37523ad569" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/portable_complex.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/portable_complex.py", + "sha256": "797e144c0040d78a4731a6eaa61c0edb9803a08462f885ed014cbca9d9991d82" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + }, + "status": "retained_complex_recipe" + }, + { + "current_blocks": [ + "F16" + ], + "historical_requirements": [ + "IF-3" + ], + "id": "C9", + "logical_functions": [ + "L8" + ], + "name": "Forward copied-center macro", + "note": "Current pinned complex supplier expands this responsibility; use its exact labels, phases, lifetimes and source theorems.", + "ports": { + "in": "ComplexState", + "out": "ComplexState" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/portable_complex.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/portable_complex.py", + "sha256": "797e144c0040d78a4731a6eaa61c0edb9803a08462f885ed014cbca9d9991d82" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/copied-centers-lemma.tex": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/copied-centers-lemma.tex", + "sha256": "d0ce6d3d504996aadb098227885224e48df46101daec8893523a0a8b7364d8fe" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + }, + "status": "retained_complex_recipe" + }, + { + "current_blocks": [ + "F02" + ], + "historical_requirements": [ + "SYS-5" + ], + "id": "D0", + "logical_functions": [ + "L11" + ], + "name": "Reconstruct source recipe", + "note": "Current hybrid proof/verification allocation; historical PASS receipts do not supply current scientific admission.", + "ports": { + "in": "Evidence", + "out": "Evidence" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/MANIFEST.json": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/MANIFEST.json", + "sha256": "fc691fdf74a7b06c9290d6e91e6d63dc1c7e20c6556519dcf9b7f53fa02350de" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/finite_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/finite_check.py", + "sha256": "cabcdba58e9508b064a33a916b949afd9872e97121e3ac1f10c6a2e3397dfad1" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_loader.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_loader.py", + "sha256": "e5e19ee6d6899fce8273d0f06a49caf7cd8bfe940a2a9a103dbc9d3a62b6b291" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/math_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/math_check.py", + "sha256": "7c1593a1cef1036969eff7fb0d061b15d6b82cd10f2ccf86283b3924a689f8d5" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/portable_bit.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/portable_bit.py", + "sha256": "c931bc575ed0f1fb9ec0c35557ad8be4bc83dd9e86b4850fd6d77ee12b0a714a" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/verify.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/verify.py", + "sha256": "827c559d949df4ec462691a42067355ebd6d6baff55c48410d5f36247f0ca9a9" + } + }, + "status": "current_evidence_allocation" + }, + { + "current_blocks": [ + "F01", + "F21" + ], + "historical_requirements": [ + "SYS-5" + ], + "id": "D1", + "logical_functions": [ + "L11" + ], + "name": "Check source pins and preflight", + "note": "Current hybrid proof/verification allocation; historical PASS receipts do not supply current scientific admission.", + "ports": { + "in": "Evidence", + "out": "Evidence" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/MANIFEST.json": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/MANIFEST.json", + "sha256": "fc691fdf74a7b06c9290d6e91e6d63dc1c7e20c6556519dcf9b7f53fa02350de" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/finite_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/finite_check.py", + "sha256": "cabcdba58e9508b064a33a916b949afd9872e97121e3ac1f10c6a2e3397dfad1" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_loader.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_loader.py", + "sha256": "e5e19ee6d6899fce8273d0f06a49caf7cd8bfe940a2a9a103dbc9d3a62b6b291" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/math_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/math_check.py", + "sha256": "7c1593a1cef1036969eff7fb0d061b15d6b82cd10f2ccf86283b3924a689f8d5" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/portable_bit.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/portable_bit.py", + "sha256": "c931bc575ed0f1fb9ec0c35557ad8be4bc83dd9e86b4850fd6d77ee12b0a714a" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/verify.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/verify.py", + "sha256": "827c559d949df4ec462691a42067355ebd6d6baff55c48410d5f36247f0ca9a9" + } + }, + "status": "current_evidence_allocation" + }, + { + "current_blocks": [ + "F10" + ], + "historical_requirements": [ + "SYS-5" + ], + "id": "D2", + "logical_functions": [ + "L11" + ], + "name": "Check complete bit columns and inverse", + "note": "Current hybrid proof/verification allocation; historical PASS receipts do not supply current scientific admission.", + "ports": { + "in": "Evidence", + "out": "Evidence" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/MANIFEST.json": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/MANIFEST.json", + "sha256": "fc691fdf74a7b06c9290d6e91e6d63dc1c7e20c6556519dcf9b7f53fa02350de" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/finite_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/finite_check.py", + "sha256": "cabcdba58e9508b064a33a916b949afd9872e97121e3ac1f10c6a2e3397dfad1" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_loader.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_loader.py", + "sha256": "e5e19ee6d6899fce8273d0f06a49caf7cd8bfe940a2a9a103dbc9d3a62b6b291" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/math_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/math_check.py", + "sha256": "7c1593a1cef1036969eff7fb0d061b15d6b82cd10f2ccf86283b3924a689f8d5" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/portable_bit.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/portable_bit.py", + "sha256": "c931bc575ed0f1fb9ec0c35557ad8be4bc83dd9e86b4850fd6d77ee12b0a714a" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/verify.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/verify.py", + "sha256": "827c559d949df4ec462691a42067355ebd6d6baff55c48410d5f36247f0ca9a9" + } + }, + "status": "current_evidence_allocation" + }, + { + "current_blocks": [ + "F11", + "F13", + "F14", + "F15" + ], + "historical_requirements": [ + "SYS-5" + ], + "id": "D3", + "logical_functions": [ + "L11" + ], + "name": "Check physical frames routes and primes", + "note": "Current hybrid proof/verification allocation; historical PASS receipts do not supply current scientific admission.", + "ports": { + "in": "Evidence", + "out": "Evidence" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/MANIFEST.json": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/MANIFEST.json", + "sha256": "fc691fdf74a7b06c9290d6e91e6d63dc1c7e20c6556519dcf9b7f53fa02350de" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/finite_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/finite_check.py", + "sha256": "cabcdba58e9508b064a33a916b949afd9872e97121e3ac1f10c6a2e3397dfad1" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_loader.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_loader.py", + "sha256": "e5e19ee6d6899fce8273d0f06a49caf7cd8bfe940a2a9a103dbc9d3a62b6b291" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/math_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/math_check.py", + "sha256": "7c1593a1cef1036969eff7fb0d061b15d6b82cd10f2ccf86283b3924a689f8d5" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/portable_bit.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/portable_bit.py", + "sha256": "c931bc575ed0f1fb9ec0c35557ad8be4bc83dd9e86b4850fd6d77ee12b0a714a" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/verify.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/verify.py", + "sha256": "827c559d949df4ec462691a42067355ebd6d6baff55c48410d5f36247f0ca9a9" + } + }, + "status": "current_evidence_allocation" + }, + { + "current_blocks": [ + "F16" + ], + "historical_requirements": [ + "SYS-5" + ], + "id": "D4", + "logical_functions": [ + "L11" + ], + "name": "Check complex splice and declarations", + "note": "Current hybrid proof/verification allocation; historical PASS receipts do not supply current scientific admission.", + "ports": { + "in": "Evidence", + "out": "Evidence" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/MANIFEST.json": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/MANIFEST.json", + "sha256": "fc691fdf74a7b06c9290d6e91e6d63dc1c7e20c6556519dcf9b7f53fa02350de" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/finite_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/finite_check.py", + "sha256": "cabcdba58e9508b064a33a916b949afd9872e97121e3ac1f10c6a2e3397dfad1" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_loader.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_loader.py", + "sha256": "e5e19ee6d6899fce8273d0f06a49caf7cd8bfe940a2a9a103dbc9d3a62b6b291" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/math_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/math_check.py", + "sha256": "7c1593a1cef1036969eff7fb0d061b15d6b82cd10f2ccf86283b3924a689f8d5" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/portable_bit.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/portable_bit.py", + "sha256": "c931bc575ed0f1fb9ec0c35557ad8be4bc83dd9e86b4850fd6d77ee12b0a714a" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/verify.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/verify.py", + "sha256": "827c559d949df4ec462691a42067355ebd6d6baff55c48410d5f36247f0ca9a9" + } + }, + "status": "current_evidence_allocation" + }, + { + "current_blocks": [ + "F17", + "F18", + "F19", + "F20" + ], + "historical_requirements": [ + "SYS-5", + "IF-6", + "ARC-5" + ], + "id": "D5", + "logical_functions": [ + "L11" + ], + "name": "Check finite bill and exact outer inequalities", + "note": "Current hybrid proof/verification allocation; historical PASS receipts do not supply current scientific admission.", + "ports": { + "in": "Evidence", + "out": "Evidence" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/MANIFEST.json": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/MANIFEST.json", + "sha256": "fc691fdf74a7b06c9290d6e91e6d63dc1c7e20c6556519dcf9b7f53fa02350de" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/finite_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/finite_check.py", + "sha256": "cabcdba58e9508b064a33a916b949afd9872e97121e3ac1f10c6a2e3397dfad1" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_loader.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_loader.py", + "sha256": "e5e19ee6d6899fce8273d0f06a49caf7cd8bfe940a2a9a103dbc9d3a62b6b291" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/math_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/math_check.py", + "sha256": "7c1593a1cef1036969eff7fb0d061b15d6b82cd10f2ccf86283b3924a689f8d5" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/portable_bit.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/portable_bit.py", + "sha256": "c931bc575ed0f1fb9ec0c35557ad8be4bc83dd9e86b4850fd6d77ee12b0a714a" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/verify.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/verify.py", + "sha256": "827c559d949df4ec462691a42067355ebd6d6baff55c48410d5f36247f0ca9a9" + } + }, + "status": "current_evidence_allocation" + }, + { + "current_blocks": [ + "F21" + ], + "historical_requirements": [ + "SYS-5" + ], + "id": "D6", + "logical_functions": [ + "L11" + ], + "name": "Expose inherited theorem obligations", + "note": "Current hybrid proof/verification allocation; historical PASS receipts do not supply current scientific admission.", + "ports": { + "in": "Evidence", + "out": "Evidence" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/MANIFEST.json": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/MANIFEST.json", + "sha256": "fc691fdf74a7b06c9290d6e91e6d63dc1c7e20c6556519dcf9b7f53fa02350de" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/finite_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/finite_check.py", + "sha256": "cabcdba58e9508b064a33a916b949afd9872e97121e3ac1f10c6a2e3397dfad1" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_loader.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_loader.py", + "sha256": "e5e19ee6d6899fce8273d0f06a49caf7cd8bfe940a2a9a103dbc9d3a62b6b291" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/math_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/math_check.py", + "sha256": "7c1593a1cef1036969eff7fb0d061b15d6b82cd10f2ccf86283b3924a689f8d5" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/portable_bit.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/portable_bit.py", + "sha256": "c931bc575ed0f1fb9ec0c35557ad8be4bc83dd9e86b4850fd6d77ee12b0a714a" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/verify.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/verify.py", + "sha256": "827c559d949df4ec462691a42067355ebd6d6baff55c48410d5f36247f0ca9a9" + } + }, + "status": "current_evidence_allocation" + }, + { + "current_blocks": [ + "F17", + "F18", + "F20" + ], + "historical_requirements": [ + "SYS-3", + "SYS-5", + "IF-6" + ], + "id": "R1", + "logical_functions": [ + "L10" + ], + "name": "Form completed residual request", + "note": "Completed-child, fallback and restored-row obligations are retained; current finite bill and exact moments bind their charges.", + "ports": { + "in": "ResidualRequest", + "out": "ResidualResponse", + "return_B9a": "ResidualResponse", + "return_C13": "ResidualResponse" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/paired_cube_assembly.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/paired_cube_assembly.py", + "sha256": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/math_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/math_check.py", + "sha256": "7c1593a1cef1036969eff7fb0d061b15d6b82cd10f2ccf86283b3924a689f8d5" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/FINITE_BIT_ACCOUNTING.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/FINITE_BIT_ACCOUNTING.md", + "sha256": "602923520af184670170bf159fde7b4c72e79a72570eddd7746b7c97bc51fc5b" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/three-stage-cover-bit.tex": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/three-stage-cover-bit.tex", + "sha256": "47123a756f823c83a0d48cca2bf5add6472cd88410b13aed345e70c8834fb511" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/three-stage-cover-rows.tex": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/three-stage-cover-rows.tex", + "sha256": "6ad97a5cd7d6aecf978a81226e1c2763d37840caca130c61f3bf5c4ac111c5c8" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + }, + "status": "inherited_recursive_contract" + }, + { + "current_blocks": [ + "F17", + "F18", + "F20" + ], + "historical_requirements": [ + "SYS-3", + "SYS-5", + "IF-6" + ], + "id": "R2", + "logical_functions": [ + "L10" + ], + "name": "Call smaller completed transform", + "note": "Completed-child, fallback and restored-row obligations are retained; current finite bill and exact moments bind their charges.", + "ports": { + "in": "ResidualRequest", + "out": "ResidualResponse" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/paired_cube_assembly.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/paired_cube_assembly.py", + "sha256": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/math_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/math_check.py", + "sha256": "7c1593a1cef1036969eff7fb0d061b15d6b82cd10f2ccf86283b3924a689f8d5" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/FINITE_BIT_ACCOUNTING.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/FINITE_BIT_ACCOUNTING.md", + "sha256": "602923520af184670170bf159fde7b4c72e79a72570eddd7746b7c97bc51fc5b" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/three-stage-cover-bit.tex": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/three-stage-cover-bit.tex", + "sha256": "47123a756f823c83a0d48cca2bf5add6472cd88410b13aed345e70c8834fb511" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/three-stage-cover-rows.tex": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/three-stage-cover-rows.tex", + "sha256": "6ad97a5cd7d6aecf978a81226e1c2763d37840caca130c61f3bf5c4ac111c5c8" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + }, + "status": "inherited_recursive_contract" + }, + { + "current_blocks": [ + "F17", + "F18", + "F20" + ], + "historical_requirements": [ + "SYS-3", + "SYS-5", + "IF-6", + "ARC-5" + ], + "id": "R3", + "logical_functions": [ + "L10" + ], + "name": "Stop at attained ordinary leaf", + "note": "Completed-child, fallback and restored-row obligations are retained; current finite bill and exact moments bind their charges.", + "ports": { + "in": "ResidualRequest", + "out": "ResidualResponse" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/paired_cube_assembly.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/paired_cube_assembly.py", + "sha256": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/math_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/math_check.py", + "sha256": "7c1593a1cef1036969eff7fb0d061b15d6b82cd10f2ccf86283b3924a689f8d5" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/FINITE_BIT_ACCOUNTING.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/FINITE_BIT_ACCOUNTING.md", + "sha256": "602923520af184670170bf159fde7b4c72e79a72570eddd7746b7c97bc51fc5b" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/three-stage-cover-bit.tex": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/three-stage-cover-bit.tex", + "sha256": "47123a756f823c83a0d48cca2bf5add6472cd88410b13aed345e70c8834fb511" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/three-stage-cover-rows.tex": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/three-stage-cover-rows.tex", + "sha256": "6ad97a5cd7d6aecf978a81226e1c2763d37840caca130c61f3bf5c4ac111c5c8" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + }, + "status": "inherited_recursive_contract" + }, + { + "current_blocks": [ + "F17", + "F18", + "F20" + ], + "historical_requirements": [ + "SYS-2", + "SYS-3", + "SYS-5", + "IF-3", + "IF-6", + "ARC-5" + ], + "id": "R4", + "logical_functions": [ + "L9", + "L10" + ], + "name": "Restore borrowed high rows", + "note": "Completed-child, fallback and restored-row obligations are retained; current finite bill and exact moments bind their charges.", + "ports": { + "in": "ResidualRequest", + "out": "ResidualResponse" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/paired_cube_assembly.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/paired_cube_assembly.py", + "sha256": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/math_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/math_check.py", + "sha256": "7c1593a1cef1036969eff7fb0d061b15d6b82cd10f2ccf86283b3924a689f8d5" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/FINITE_BIT_ACCOUNTING.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/FINITE_BIT_ACCOUNTING.md", + "sha256": "602923520af184670170bf159fde7b4c72e79a72570eddd7746b7c97bc51fc5b" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/three-stage-cover-bit.tex": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/three-stage-cover-bit.tex", + "sha256": "47123a756f823c83a0d48cca2bf5add6472cd88410b13aed345e70c8834fb511" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/three-stage-cover-rows.tex": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/three-stage-cover-rows.tex", + "sha256": "6ad97a5cd7d6aecf978a81226e1c2763d37840caca130c61f3bf5c4ac111c5c8" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + }, + "status": "inherited_recursive_contract" + }, + { + "current_blocks": [ + "F17", + "F18", + "F20" + ], + "historical_requirements": [ + "SYS-3", + "SYS-5", + "IF-4", + "IF-6", + "ARC-3" + ], + "id": "R5a", + "logical_functions": [ + "L10" + ], + "name": "Dispatch good and bad q-local edges", + "note": "Completed-child, fallback and restored-row obligations are retained; current finite bill and exact moments bind their charges.", + "ports": { + "in": "ResidualRequest", + "out": "ResidualResponse" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/FINITE_BIT_ACCOUNTING.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/FINITE_BIT_ACCOUNTING.md", + "sha256": "602923520af184670170bf159fde7b4c72e79a72570eddd7746b7c97bc51fc5b" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + }, + "status": "inherited_recursive_contract" + }, + { + "current_blocks": [ + "F17", + "F18", + "F20" + ], + "historical_requirements": [ + "SYS-3", + "SYS-5", + "IF-4", + "IF-6" + ], + "id": "R5b", + "logical_functions": [ + "L6" + ], + "name": "Repair exceptional layout records", + "note": "Completed-child, fallback and restored-row obligations are retained; current finite bill and exact moments bind their charges.", + "ports": { + "in": "ResidualRequest", + "out": "ResidualResponse" + }, + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/FINITE_BIT_ACCOUNTING.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/FINITE_BIT_ACCOUNTING.md", + "sha256": "602923520af184670170bf159fde7b4c72e79a72570eddd7746b7c97bc51fc5b" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + }, + "status": "inherited_recursive_contract" + } + ], + "completeness": "All87 original selected-realization block IDs accounted for; inherited/opaque internals are not promoted to executed operation coverage.", + "frozen_graph_sha256": "b70e794473cb75f76941e190ed102c236a15b9a868c4d277eb28e05f843d116c", + "historical_baseline": "PR234 frozen V8; not the selected source527 realization", + "logical_functions": [ + { + "id": "L0", + "input_ports": { + "I0": "two valid nonnegative n-bit operands U and V" + }, + "interface": "Only the externally specified product semantics are universal; transform, layout and storage choices belong to the selected realization.", + "name": "Produce the exact integer product", + "output_ports": { + "OUT": "exact UV in the requested output format" + }, + "purpose": "Return the specified mathematical result.", + "realization_blocks": [ + "A0a", + "A1", + "A2", + "A3a", + "A3b", + "A4a", + "A5", + "A6", + "A7a", + "A7b", + "A8", + "A9" + ], + "subfunctions": [ + "L1", + "L2", + "L3", + "L4", + "L5" + ], + "support_functions": [ + "L6", + "L7", + "L8", + "L9", + "L10" + ] + }, + { + "id": "L1", + "input_ports": { + "I0": "valid operand bit strings" + }, + "interface": "Encoding and scale are explicit and must preserve recoverable numeric values. A radix or particular precision formula is a realization choice.", + "name": "Accept and represent operands", + "output_ports": { + "P0": "preserved operands and admissible representation descriptors" + }, + "purpose": "Preserve operand values while making their representation usable.", + "realization_blocks": [ + "A0a", + "A0b", + "A0c", + "A0d", + "A1", + "A2" + ], + "subfunctions": [] + }, + { + "id": "L2", + "input_ports": { + "P0": "represented operands and descriptors" + }, + "interface": "The selected system pads, reindexes and transforms; the logical function does not require CRT, Fourier transforms or a particular decomposition.", + "name": "Make operands usable for product computation", + "output_ports": { + "P1": "valid inputs to the chosen product-computation interface" + }, + "purpose": "Provide the organization required by the chosen product method.", + "realization_blocks": [ + "A3a", + "A3b", + "A4a", + "A4b", + "A4c", + "A4d" + ], + "subfunctions": [] + }, + { + "id": "L3", + "input_ports": { + "P1": "valid represented operands" + }, + "interface": "The selected Fourier realization uses P2 matching-coordinate arrays internally. Different methods may satisfy the same goal with different internal ports.", + "name": "Compute sufficient product information", + "output_ports": { + "P3": "information sufficient to recover the exact product" + }, + "purpose": "Establish the product relation in the internal representation.", + "realization_blocks": [ + "A4a", + "A4b", + "A4c", + "A4d", + "A5", + "A6" + ], + "subfunctions": [] + }, + { + "id": "L4", + "input_ports": { + "P3": "internal product information plus validity/error guarantees" + }, + "interface": "If approximate arithmetic is used, recovery needs a sufficient exactness margin. The present two S factors, rounding and inverse CRT are conditional on this representation.", + "name": "Recover exact result values", + "output_ports": { + "E0": "exact values sufficient for output encoding" + }, + "purpose": "Resolve internal scales or approximations into exact integer information.", + "realization_blocks": [ + "A7a", + "A7b", + "A8" + ], + "subfunctions": [] + }, + { + "id": "L5", + "input_ports": { + "E0": "exact internal result values" + }, + "interface": "Frozen outer proof uses carries and exactly 2n output bits. An output-format change is possible only with a revised boundary contract.", + "name": "Normalize and emit the result", + "output_ports": { + "OUT": "the requested product bit string" + }, + "purpose": "Meet the requested external representation contract.", + "realization_blocks": [ + "A9" + ], + "subfunctions": [] + }, + { + "id": "L6", + "input_ports": { + "LOC_IN": "complete payload streams and logical owners" + }, + "interface": "Value identity, owner bijections, exact frame interpretation and movement cost must remain valid. The chosen address geometry is not universal.", + "name": "Place data at required interfaces", + "output_ports": { + "LOC_OUT": "the same intended values at the requested owners/frames" + }, + "purpose": "Deliver corresponding values to the locations and representations consumed by an operation.", + "realization_blocks": [ + "A3b", + "A4b2a", + "A4b4a", + "A4io", + "B8a", + "B8b", + "B9a", + "B9b", + "C12a", + "C13", + "R5b" + ], + "subfunctions": [] + }, + { + "id": "L7", + "input_ports": { + "MAP_IN": "payload and exact requested operator contract" + }, + "interface": "F\u2082 payload, rational-address and exact-complex phase contracts are different operator domains and cannot be interchanged by matching rank alone.", + "name": "Evaluate required component maps", + "output_ports": { + "MAP_OUT": "the requested output action at valid endpoint representations" + }, + "purpose": "Realize each caller-requested arithmetic or linear operator.", + "realization_blocks": [ + "A4b1", + "A4b2", + "A4b3", + "A4b4", + "A4b5", + "A4b2b", + "A4b2c", + "A4b2d", + "A4c1", + "A4c2", + "A4c3", + "A4p1", + "A4p2", + "A4p3", + "B0", + "B1", + "B2", + "B3", + "B4", + "B5", + "C1", + "C2", + "C3", + "C4", + "C5", + "C6", + "C7", + "C8", + "C13" + ], + "subfunctions": [] + }, + { + "id": "L8", + "input_ports": { + "WORK_IN": "live values, declared dirty/clean workspace and ownership" + }, + "interface": "The number of banks, ownership schedule and dirty-versus-clean choice are architectural. Any replacement must preserve alias, lifetime and resource contracts.", + "name": "Manage temporary and shared storage", + "output_ports": { + "WORK_OUT": "valid live values and legal work lifetimes" + }, + "purpose": "Give operations usable storage without undeclared interference.", + "realization_blocks": [ + "B3", + "B6a", + "B6b", + "B6c", + "B6d", + "B6e", + "B7a", + "B7b", + "B7c", + "C1", + "C9", + "C10", + "C11a", + "C11b", + "C11c", + "C11d" + ], + "subfunctions": [] + }, + { + "id": "L9", + "input_ports": { + "BORROWED_IN": "declared borrowed values/rows/frames" + }, + "interface": "Restoration is required where the caller grants a loan. Payload restoration, temporary erasure and address-frame completion are separate conditions.", + "name": "Restore borrowed state", + "output_ports": { + "BORROWED_OUT": "the specified restored state and completed frame effect" + }, + "purpose": "Prevent a subroutine from corrupting externally owned values or representations.", + "realization_blocks": [ + "B5", + "B6d", + "B6e", + "B11", + "B12", + "C8", + "C12c", + "R4" + ], + "subfunctions": [] + }, + { + "id": "L10", + "input_ports": { + "CHILD_IN": "an exact residual problem and allowed resources" + }, + "interface": "Recursion, stage count and fallback strategy are realization choices. The chosen proof requires valid proper children, finite leaves, paid exceptional work and composable boundaries.", + "name": "Complete and compose subproblems", + "output_ports": { + "CHILD_OUT": "a completed result with required state returned" + }, + "purpose": "Close each delegated computation under its caller\u2019s endpoint and cost contracts.", + "realization_blocks": [ + "B10", + "C12b", + "R1", + "R2", + "R3", + "R4", + "R5a" + ], + "subfunctions": [] + }, + { + "id": "L11", + "input_ports": { + "EVIDENCE_IN": "pinned sources, declared interfaces and reconstructed finite recipes" + }, + "interface": "This is an assurance function, not another runtime multiplication step. A passed finite check does not replace an inherited theorem.", + "name": "Establish the evidence for system claims", + "output_ports": { + "EVIDENCE_OUT": "checked finite facts plus explicit remaining theorem dependencies" + }, + "purpose": "Separate executable finite checks from retained assumptions and justify stated bounds.", + "realization_blocks": [ + "D0", + "D1", + "D2", + "D3", + "D4", + "D5", + "D6" + ], + "subfunctions": [] + } + ], + "requirement_definitions": [ + { + "classification": "outcome", + "id": "SYS-1", + "logical_functions": [ + "L0", + "L1", + "L2", + "L3", + "L4", + "L5" + ], + "overconstraint_audit": { + "escape_route": "Change any internal representation or algorithm while preserving the external product meaning; revise the external contract explicitly if input/output meaning changes.", + "reopened_obligations": "Affected encoding, product relation, decoding, and cost dependencies.", + "universal_only_at_stated_scope": true + }, + "parents": [], + "rationale": "This is the requested mathematical result.", + "realization_blocks": [ + "A1", + "A2", + "A3a", + "A3b", + "A4a", + "A4b", + "A4c", + "A4d", + "A5", + "A6", + "A7a", + "A7b", + "A8", + "A9" + ], + "sources": [ + "P1", + "P7" + ], + "statement": "For every allowed input, output represents the exact integer product.", + "status": "conditional_retained_proof", + "title": "Exact integer product", + "verification_method": "Composed encoding/product/decoding proof." + }, + { + "classification": "outcome_relative_to_promised_interface", + "id": "SYS-2", + "logical_functions": [ + "L6", + "L7", + "L8", + "L9" + ], + "overconstraint_audit": { + "escape_route": "Retire or reassign owned state under a changed caller contract; restoration is required only where promised.", + "reopened_obligations": "Affected caller observations, ownership, live versions, endpoints and storage bill.", + "universal_only_at_stated_scope": true + }, + "parents": [], + "rationale": "Endpoint-only equality can hide corrupted intermediate users.", + "realization_blocks": [ + "B0", + "B5", + "B6a", + "B6b", + "B6c", + "B6d", + "B6e", + "B11", + "B12", + "C8", + "R4" + ], + "sources": [ + "P2", + "P3", + "P4", + "P6" + ], + "statement": "Preserve caller-promised values and properties at every required observation.", + "status": "source_specific_local_and_inherited_evidence", + "title": "Honor promised state and observations", + "verification_method": "Full boundary and trace relation on arbitrary allowed state." + }, + { + "classification": "model", + "id": "SYS-3", + "logical_functions": [ + "L6", + "L7", + "L8", + "L9", + "L10" + ], + "overconstraint_audit": { + "escape_route": "Change machine model or compiler with an explicit translation or new theorem.", + "reopened_obligations": "Cost model, lowering, routing, workspace and composed complexity claims.", + "universal_only_at_stated_scope": true + }, + "parents": [], + "rationale": "Algebra alone is not a physical cost proof.", + "realization_blocks": [ + "A0a", + "A0b", + "A0c", + "A0d", + "B8a", + "B8b", + "B9a", + "B9b", + "C11a", + "C11b", + "C11c", + "C11d", + "C13", + "R1", + "R2", + "R3", + "R4", + "R5a", + "R5b" + ], + "sources": [ + "P2", + "P5", + "P8" + ], + "statement": "Implement every operation and movement claimed in the stated model with legal resources.", + "status": "inherited_model_interfaces_with_open_sparse_tariff", + "title": "Realizable execution in the declared model", + "verification_method": "Frame, routing, workspace and lowering arguments." + }, + { + "classification": "outcome", + "id": "SYS-4", + "logical_functions": [ + "L1", + "L2", + "L3", + "L4", + "L5", + "L7" + ], + "overconstraint_audit": { + "escape_route": "Use exact arithmetic or another successful decoder; neither rounding nor fixed dyadic precision is universal.", + "reopened_obligations": "Affected approximation propagation, normalization, widths, decoder and physical cost.", + "universal_only_at_stated_scope": true + }, + "parents": [], + "rationale": "Local exact algebra does not bound accumulated numerical error.", + "realization_blocks": [ + "A0b", + "A4a", + "A4b", + "A4c", + "A4d", + "A7a", + "A7b", + "A8", + "A9", + "C11a", + "C11b", + "C11c", + "C11d" + ], + "sources": [ + "P7" + ], + "statement": "Prove every numerical approximation affecting the result is compatible with exact decoding.", + "status": "conditional_retained_precision_proof", + "title": "Justified exact recovery", + "verification_method": "Complete error/range/width/decoding proof." + }, + { + "classification": "model_and_claim_dependent_outcome", + "id": "SYS-5", + "logical_functions": [ + "L0", + "L6", + "L7", + "L8", + "L9", + "L10", + "L11" + ], + "overconstraint_audit": { + "escape_route": "A correctness experiment need not improve an exponent; an implementation may stay within an unchanged envelope.", + "reopened_obligations": "Only the changed costs and downstream claims that consume them.", + "universal_only_at_stated_scope": true + }, + "parents": [], + "rationale": "Omitted costs and conflated evidence can reverse a comparison.", + "realization_blocks": [ + "R1", + "R2", + "R3", + "R4", + "R5a", + "R5b", + "D0", + "D1", + "D2", + "D3", + "D4", + "D5", + "D6" + ], + "sources": [ + "P2", + "P5", + "P8" + ], + "statement": "Account for all resources relevant to the claimed result and bind evidence to exact sources and scope.", + "status": "source_specific_conditional_bounds", + "title": "Complete support for the claimed cost", + "verification_method": "Complete net inventory, recurrence, finite/outer argument and evidence binding." + }, + { + "classification": "model_and_interface", + "id": "IF-1", + "logical_functions": [ + "L1", + "L6", + "L7" + ], + "overconstraint_audit": { + "escape_route": "Change field, encoding, integer lift or address model with a new interface proof.", + "reopened_obligations": "Semantics, primes, geometry and numerical bounds.", + "universal_only_at_stated_scope": true + }, + "parents": [ + "SYS-1", + "SYS-3" + ], + "rationale": "Equal notation across fields may denote different maps.", + "realization_blocks": [ + "B0", + "B8a", + "B8b", + "B9a", + "B9b", + "C1", + "C13", + "A4a", + "A4b", + "A4c", + "A4d" + ], + "sources": [ + "P2", + "P3", + "P4" + ], + "statement": "Specify payload/address domains, sizes, legal inputs and inherited hypotheses.", + "status": "explicit_in_retained_bit_contract", + "title": "Declared mathematical domains", + "verification_method": "Algebraic model and domain checks." + }, + { + "classification": "outcome_and_interface", + "id": "IF-2", + "logical_functions": [ + "L2", + "L3", + "L4", + "L5", + "L6", + "L7", + "L8", + "L9" + ], + "overconstraint_audit": { + "escape_route": "Change private intermediate values or enlarge the closed interval.", + "reopened_obligations": "Every newly enclosed consumer, observation and source version.", + "universal_only_at_stated_scope": true + }, + "parents": [ + "SYS-1", + "SYS-2" + ], + "rationale": "An unobserved intermediate coordinate need not be fixed.", + "realization_blocks": [ + "B1", + "B4", + "B5", + "B7a", + "B7b", + "B7c", + "C6", + "C7", + "C8" + ], + "sources": [ + "P2", + "P4" + ], + "statement": "Specify endpoint and every required observation at semantic events.", + "status": "local_exact_interval_pass_global_composite_pending", + "title": "Complete boundary and observations", + "verification_method": "Full operator/trace relation; all-column check when linearity is proved." + }, + { + "classification": "interface", + "id": "IF-3", + "logical_functions": [ + "L8", + "L9" + ], + "overconstraint_audit": { + "escape_route": "Use different sharing/loan/retirement contracts accepted by affected callers.", + "reopened_obligations": "Owners, aliasing, copy/erase, inverse dependencies and actual stock.", + "universal_only_at_stated_scope": true + }, + "parents": [ + "SYS-2", + "SYS-3" + ], + "rationale": "Forward last-use is not inverse restoration.", + "realization_blocks": [ + "B3", + "B6a", + "B6b", + "B6c", + "B6d", + "B6e", + "B11", + "C9", + "C10", + "C11a", + "C11b", + "C11c", + "C11d", + "R4" + ], + "sources": [ + "P2", + "P3", + "P4", + "P6" + ], + "statement": "Declare owners, live versions, dirty/old state, loans, retirement and copy/erase conditions in both directions.", + "status": "source_specific_exact_checks", + "title": "Ownership and lifetimes", + "verification_method": "Dependency/lifetime proof and arbitrary-state endpoint." + }, + { + "classification": "model_and_interface", + "id": "IF-4", + "logical_functions": [ + "L6", + "L7" + ], + "overconstraint_audit": { + "escape_route": "Choose different legal bases, frame plateaus, factorizations or routes.", + "reopened_obligations": "Actual projector identities, primes, cover/namespace, observers and paid movement.", + "universal_only_at_stated_scope": true + }, + "parents": [ + "SYS-3" + ], + "rationale": "Equal ranks or small address-matrix similarity are insufficient.", + "realization_blocks": [ + "B8a", + "B8b", + "B9a", + "B9b", + "C2", + "C7", + "C13", + "R5a", + "R5b" + ], + "sources": [ + "P2", + "P5", + "P6" + ], + "statement": "Specify exact frames/labels and complete address action, spectators, inverse and simultaneous injectivity.", + "status": "semantic_route_pass_sparse_tariff_open", + "title": "Physical representations and routes", + "verification_method": "Exact projectors/charts, complete payload action and route proof." + }, + { + "classification": "interface", + "id": "IF-5", + "logical_functions": [ + "L1", + "L2", + "L3", + "L4", + "L5", + "L7" + ], + "overconstraint_audit": { + "escape_route": "Use a different lift or a tighter bound; old coefficients need not match.", + "reopened_obligations": "Any downstream assumption exceeded by the new envelope.", + "universal_only_at_stated_scope": true + }, + "parents": [ + "SYS-4", + "SYS-5" + ], + "rationale": "A new representative may be valid but have different growth.", + "realization_blocks": [ + "A0b", + "A4a", + "A4b", + "A4c", + "A4d", + "A7a", + "A7b", + "A8", + "C11a", + "C11b", + "C11c", + "C11d" + ], + "sources": [ + "P2", + "P4", + "P7" + ], + "statement": "Bound coefficients, signed growth, norms, errors and record widths consumed by callers.", + "status": "source_specific_exact_and_inherited_proofs", + "title": "Consumed numerical envelope", + "verification_method": "Signed prefix bounds and full analytic error propagation." + }, + { + "classification": "model_and_interface", + "id": "IF-6", + "logical_functions": [ + "L6", + "L7", + "L8", + "L9", + "L10" + ], + "overconstraint_audit": { + "escape_route": "Change counts, width, replicas, stage count or recurrence type with complete new accounting.", + "reopened_obligations": "Stock/lifetime compatibility, full profile, finite constants, fallback, leaf and outer consumers.", + "universal_only_at_stated_scope": true + }, + "parents": [ + "SYS-3", + "SYS-5" + ], + "rationale": "Lower call count is not equivalent to lower paid moment.", + "realization_blocks": [ + "B10", + "B11", + "R1", + "R2", + "R3", + "R4", + "R5a", + "R5b", + "D5" + ], + "sources": [ + "P2", + "P3", + "P8" + ], + "statement": "Declare net child inventory, true stock, replicas, finite costs, fallback, shrink and normalization.", + "status": "whole_supplier_evidence_is_source_specific", + "title": "Complete paid resource interface", + "verification_method": "Full ledger and applicable scalar/stateful recurrence." + }, + { + "classification": "selected_architecture", + "id": "ARC-1", + "logical_functions": [ + "L6", + "L7", + "L8", + "L9", + "L10" + ], + "overconstraint_audit": { + "escape_route": "Use a different proved schedule or different stage topology.", + "reopened_obligations": "Observation/owner/route dependencies, joint endpoints and full schedule bill.", + "universal_only_at_stated_scope": true + }, + "parents": [ + "IF-2", + "IF-3", + "IF-4" + ], + "rationale": "Interleaving may expose unfinished state.", + "realization_blocks": [ + "B10", + "C12a", + "C12b", + "C12c" + ], + "sources": [ + "P3" + ], + "statement": "When retaining the current global theorem, respect complete-cover phase barriers and dependencies.", + "status": "conditional_on_retained_stage_theorem", + "title": "Retained phase-major composition", + "verification_method": "Source schedule and endpoint-composition proof." + }, + { + "classification": "selected_architecture", + "id": "ARC-2", + "logical_functions": [ + "L8", + "L9" + ], + "overconstraint_audit": { + "escape_route": "Change to coupled completion or a new live helper.", + "reopened_obligations": "Joint payload endpoint, ownership/lifetimes, complete routing and resulting recurrence.", + "universal_only_at_stated_scope": true + }, + "parents": [ + "IF-3", + "IF-4", + "IF-6" + ], + "rationale": "Volume and ranks alone do not complete a bank.", + "realization_blocks": [ + "B8a", + "B8b", + "B11" + ], + "sources": [ + "P3", + "P6" + ], + "statement": "When using independent banks, actual routed block projectors are disjoint and sum to each required bank endpoint.", + "status": "source_bound_bank_proof_not_new_composite_admission", + "title": "Independent completed bank realization", + "verification_method": "Actual chart identities, census, injectivity, endpoint and reverse schedule." + }, + { + "classification": "selected_architecture_and_model", + "id": "ARC-3", + "logical_functions": [ + "L6", + "L7", + "L10" + ], + "overconstraint_audit": { + "escape_route": "Choose different bases, prime set or reduction.", + "reopened_obligations": "Complete new prime coverage, good/bad dispatch and fallback.", + "universal_only_at_stated_scope": true + }, + "parents": [ + "IF-1", + "IF-4" + ], + "rationale": "Invalid denominators make routing undefined.", + "realization_blocks": [ + "B9a", + "C13", + "R5a" + ], + "sources": [ + "P3", + "P5" + ], + "statement": "For the rational-chart reduction, every consumed inverse/scaling exists at each eligible prime/ring.", + "status": "source_bound_prime_evidence", + "title": "Eligible chart arithmetic", + "verification_method": "Cleared Gram and denominator factors; unit checks." + }, + { + "classification": "selected_architecture", + "id": "ARC-4", + "logical_functions": [ + "L4", + "L5" + ], + "overconstraint_audit": { + "escape_route": "Change representation, normalization or decoder with a complete alternative recovery proof.", + "reopened_obligations": "Affected error, scales, layout, widths, carry and finite costs.", + "universal_only_at_stated_scope": true + }, + "parents": [ + "IF-5" + ], + "rationale": "The decoder's input assumptions must be established.", + "realization_blocks": [ + "A7a", + "A7b", + "A8", + "A9" + ], + "sources": [ + "P7" + ], + "statement": "For this recovery, restore both normalizations and coefficient order and achieve pre-rounding error below one half.", + "status": "conditional_retained_analytic_proof", + "title": "Retained approximate convolution recovery", + "verification_method": "Exact scaling/width equations, inverse layout, nearest-integer and carry proofs." + }, + { + "classification": "selected_architecture", + "id": "ARC-5", + "logical_functions": [ + "L10", + "L11" + ], + "overconstraint_audit": { + "escape_route": "Change bootstrap depth, balanced family or outer reduction.", + "reopened_obligations": "The replacement recurrence/leaf bridge and all affected analytic inequalities.", + "universal_only_at_stated_scope": true + }, + "parents": [ + "IF-6" + ], + "rationale": "A limiting coarse rate is not a completed leaf.", + "realization_blocks": [ + "R3", + "R4", + "D5" + ], + "sources": [ + "P8" + ], + "statement": "For this bound, use attained ordinary savings and valid bridge data in the selected outer inequalities.", + "status": "finite_rational_checks_plus_inherited_analytic_interfaces", + "title": "Selected ordinary-leaf and outer assembly", + "verification_method": "Three levels, 47 strict constraints and seven margins in current source." + } + ], + "schema": "full-hierarchy-reconciliation/1", + "selected_manifest": "9f6d8637b9a119cfe4566a02ab2d704f23c502e5e4357b40c28ef85a3fd4de89", + "types": { + "BitState": { + "address": "rational charts then eligible odd-prime address ring", + "meaning": "versioned complete source/target/dirty arrays with exact frames and owners", + "payload": "F2" + }, + "Bits": { + "meaning": "two nonnegative n-bit operands", + "payload": "N", + "shape": "U,V,n" + }, + "CRTInputs": { + "address": "coprime source-axis product", + "meaning": "convolution-preserving CRT layout", + "payload": "dyadic complex grid" + }, + "ComplexState": { + "address": "exact phase-sensitive frame labels", + "meaning": "versioned source/target/tableau/work streams", + "payload": "exact complex linear action plus chosen dyadic realization" + }, + "Descriptors": { + "meaning": "preserved U,V plus selected size, radix, precision and guards", + "payload": "N and exact metadata" + }, + "Digits": { + "meaning": "U=sum u_i 2^(bi); V=sum v_i 2^(bi)", + "payload": "Z", + "shape": "two N-digit arrays, base 2^b" + }, + "Evidence": { + "meaning": "version-bound proof claim, checked receipt, inherited hypothesis or open obligation", + "payload": "no runtime payload" + }, + "Factors": { + "meaning": "generated chirp/Gaussian factors and precision descriptors", + "payload": "dyadic approximations plus exact bounds" + }, + "IntegerCoefficients": { + "meaning": "exact uncarried convolution coefficients", + "payload": "Z" + }, + "NearIntegerCoefficients": { + "meaning": "all scales and inverse coefficient layout restored; error <1/2", + "payload": "dyadic complex grid" + }, + "PaddedInputs": { + "meaning": "zero-padded length S>2N-2", + "payload": "dyadic complex grid" + }, + "PairedSpectrum": { + "meaning": "both operand spectra in the same retained R order", + "payload": "dyadic complex grid" + }, + "PartialRecovery": { + "meaning": "after first recovery scale; nearest integer is not yet justified", + "payload": "dyadic complex grid" + }, + "PhaseApplicationInput": { + "meaning": "factor approximation, bounded values and precision contract", + "payload": "dyadic factor and dyadic complex tensor" + }, + "PhaseDescriptor": { + "meaning": "chirp or twist exponent for the numerical factor routine", + "payload": "exact address/axis/precision metadata" + }, + "Product": { + "meaning": "requested exact serialization of UV", + "payload": "N" + }, + "ResamplingState": { + "meaning": "ordered sample-selection/Neumann/diagonal-correction state, with exact axis/width refinements", + "payload": "dyadic complex grid" + }, + "ResidualRequest": { + "meaning": "full residual, m,r,n,w, required entry/exit frames and borrowed-row contract", + "payload": "tagged bit or complex operator" + }, + "ResidualResponse": { + "meaning": "completed smaller residual and promised restored rows", + "payload": "same operator tag as request" + }, + "ScaledConvolution": { + "meaning": "approximation to (a*b)/S^2", + "payload": "dyadic complex grid" + }, + "ScaledInputs": { + "meaning": "two digit arrays scaled by 2^(-b-2)", + "payload": "dyadic complex grid" + }, + "SourceSpectrum": { + "meaning": "resampled RF_s output; F_s normalized by 1/S", + "payload": "dyadic complex grid" + }, + "SpectrumProduct": { + "meaning": "pointwise product with declared rounding envelope", + "payload": "dyadic complex grid" + }, + "SyntheticState": { + "meaning": "normalized ring records; exact phase and LB order supplied by refinement", + "payload": "dyadic complex polynomial ring" + }, + "WorkingSpectrum": { + "meaning": "chirp-normalized QF_t tensor", + "payload": "dyadic complex grid" + }, + "WorkingTensor": { + "address": "power-of-two axes", + "meaning": "Gaussian-expanded tensor", + "payload": "dyadic complex grid" + } + } +} diff --git a/docs/multicut-delayed-inverse-checkpoint/incremental_receipt.json b/docs/multicut-delayed-inverse-checkpoint/incremental_receipt.json new file mode 100644 index 0000000000..d077f20ea7 --- /dev/null +++ b/docs/multicut-delayed-inverse-checkpoint/incremental_receipt.json @@ -0,0 +1,196 @@ +{ + "auxiliary_models": { + "joint259_system_docs_hierarchy.json": "5254b3b9c8c29d29e482e8b5ad2ec0469c1541b3c09ac817eff86f66e3a3ab4c", + "joint259_system_docs_hierarchy_edges.json": "53a1d2d2e37e3d30c15d174993a1115e0ea793d9bda88fd7c8169b6c8b90ae1a" + }, + "dependencies": { + "configuration": { + "font": "Vera", + "height": 790, + "invariant": 1, + "pdf_compression": 0, + "width": 1120 + }, + "extra": {}, + "files": { + "cache_implementation": "6f58d535d1bcbae03bc0ad55d13d9712e6b8fede7a30ed208d48dc373fb2e0c0", + "font_Vera.ttf": "c4c45690b345435b2cba52ecabe275f05e49b389b39fe68ad03afbb551288d3d", + "font_VeraBd.ttf": "cc037385e4d55bfde89b13e03091ee93bf40c0c52ddd391ff031ab276f13b8e9", + "renderer": "5cffa0f1fd4482880c4eac652a7ac64bb8e8a7ffc10324f9e8fb1f791aea0c88", + "renderer_module_hierarchy_views": "defdda0f0434bd6ec7200e6c2863916e52425445729d381af751dfc791a07353", + "renderer_module_previews": "c56d7888582da9c617f87926c481242900bdb3e92080003b30e751a6d014d361", + "renderer_module_source_views": "b87a69833347df7f56d93c83b185fb3be3c616df22c860555385f33ea485be2c", + "requirements": "a9dbb802817bb330332628dc8c98fac5178600766e0837e9cd042438e159d9c3", + "source_binding": "53acbfc4c9cb93404f951789e866339a315ae84d6218a32932638a6ecc6d961c" + }, + "packages": { + "Pillow": "12.3.0", + "charset-normalizer": "3.5.1", + "pypdf": "6.10.0", + "reportlab": "4.4.9" + }, + "python_version": [ + 3, + 14, + 2 + ], + "schema": "joint259-vector-page-cache/1", + "source_manifest_sha256": "9f6d8637b9a119cfe4566a02ab2d704f23c502e5e4357b40c28ef85a3fd4de89" + }, + "dependency_sha256": "3573eb79be53fb633485c43af72ac181fb635db6688ebe1d8aff0786c82ed984", + "model_sha256": "70efd42b62459028187d1fe040b343cfabd8a8e6744dcdb48bbd61d5f0908010", + "page_cache_validation": "Schema, dependency and drawing-plan keys, PDF hash and single-page structure checked before reuse.", + "pdfs": { + "complete_system.pdf": "1db865c17ef25786c715a5c7bbaa58707a9b565303da6b4261134157d757ce20", + "functional_architecture.pdf": "4bbee6f185f11d8283b9432a2e8fb011f70c335defc881027220c3c90dcbc37c", + "logical_wiring.pdf": "f700f70c7192d57271fcb6434b16720b4f39d60850c72d76040b5d67cd9497f5" + }, + "schema": "joint259-vector-page-cache/1", + "scope": "Vector-page rendering cache only; science replay is separate.", + "source_binding": { + "accepted_public_manifest_sha256": "0af10dcca505cbd913cf1b9220a08b6a62687650ace4e3d1efd093e828e3990e", + "certificate_sha256": "7eb58ec449c932b7092481746390c776365f302a742836cddef5643c0351802b", + "consumed_manifest_members": 136, + "consumed_manifest_sha256": "0af10dcca505cbd913cf1b9220a08b6a62687650ace4e3d1efd093e828e3990e", + "consumed_total_paths": 137, + "documentation_only_edits": [ + "BANK-PROOF.md", + "NOTICE.md", + "PR259-PROVENANCE.md", + "PROOF.md", + "README.md", + "UPSTREAM-PR234-PROOF.md", + "proof/FINITE_BIT_ACCOUNTING.md", + "proof/INTEGRATED_PROOF.md" + ], + "public_manifest_members": 136, + "public_paths": 137, + "retained_numerical_pins": { + "LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "bank_check.py": "64790d1d45032e7f8ae2252d592759ff82def8033544107f9f0dd3bbc6841581", + "bank_template.py": "e255bdc0c0aa4465485ee34ece7d1f04ce3ce363d8ac62edc9de5608e46f8965", + "base_two_moment.py": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098", + "code/complex_basis.py": "52d68781eaf6d9decf02446a532a7336fcf15924a9f6781ba0833d038decb9f8", + "code/complex_labels.py": "ff5d5e914ef1be0f0cc30283a1ee39089b77e4b572f09543e7313d126bd26256", + "code/complex_scalars.py": "fa035447c1f3a5e878dfc18a900942aa180d8bfde03cdce2d21d9bf8b8409429", + "code/complex_splice.py": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c", + "code/geometry527.py": "bff96140e93c0cea01ed618b49b913f913c12d99ebb0e4e4342336cf5a102800", + "code/global_lowering.py": "c888c4d3c38d4a59b48f8a328fc495b3b38ee36ede133495522d8d76c100794b", + "code/physical527.py": "1723a5c53ec236529e46980c8eb2c45134c61275ac7fb85c8ad92223784de07c", + "finite_check.py": "dfb8dd62c4d068417434f6a43e15e5f69dfa40b4d95b7a8d4995b6950c095c61", + "hybrid-selection.json": "0229c2fad3b448d33ad1f21900ad67d13ab1e0c8e716ced9ec66b4ab0445c0b1", + "hybrid_transform.py": "c06837bbc6ccf068362e1f09f110319f20135588f42e3cb3f8bc753436802e09", + "inputs/complex/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "inputs/complex/NOTICE": "9419dd03a2f52cf8bdfc4d18216ce29f263ab583b27f01ced8e420985bcb7c81", + "inputs/complex/gcert1-p11-pr193.json.gz": "15251deb0c11e0504d7b297c9786818888a93f08b92b03c6c122784b70488633", + "inputs/complex/retained/FINITE_BRIDGE.txt": "66d8f4ea8752abd89952d6674a636575a0db16e18b1c16e293f48f64242f0c46", + "inputs/complex/retained/compact-control-layout.tex": "2bc28e50f3eb092195294cafa81213e520f6d42e7935e9905ad8a6199e2a7c87", + "inputs/complex/retained/compact-control-movement.tex": "b963c3d2f4e1b7059aa289bb4b4ac89b688920bcf42f5b20d7698cdef0132cc6", + "inputs/complex/retained/copied-centers-assembly.tex": "00117892971ae766188ace0af03030c44164fda105e42b70d84f52c3339a7dcb", + "inputs/complex/retained/copied-centers-lemma.tex": "d0ce6d3d504996aadb098227885224e48df46101daec8893523a0a8b7364d8fe", + "inputs/complex/retained/endpoint-gauge-complex.tex": "dfee33b0281e5551bb6927f757ff0240abade60ae1800f715afd88853ae0191e", + "inputs/complex/retained/general-clifford-frames.tex": "c9bb9655b594583c6b4bab8cb485233f1d1e588f83858cf1e4c3530cee8fed54", + "inputs/complex/retained/stopped-product-complex.tex": "4738089103a4b263b3b0ef458f5ef35519c696f1ea871ae79e508d3720f5870a", + "inputs/complex/source-pins.json": "de0daf6847185d7a6911535e3012c1a91de1e32b5da8204beec26b37523ad569", + "inputs/complex/sources/Work__Bridge__Cert.lean": "5c24746a6330907b9b37d6064095035a58575d64ce793d6d7c9881121fdc3980", + "inputs/complex/sources/Work__Bridge__Net.lean": "cf7d7d330b1bffe2e66712c873e647b13dc32db1ccfc0e0f4cd62ee6caf584f0", + "inputs/complex/sources/Work__Carrier__Live.lean": "6d0649eb62589e66057f044e1e2103fc42f3f57a1498f82a26565bd8eb4026d0", + "inputs/complex/sources/Work__Carrier__Phases.lean": "71dc3dda23dfe510d5d53cbada3a6c540cd1dc2825503fda618a5bd6cfc3e812", + "inputs/complex/sources/Work__Fourier__Main.lean": "2e8e88efd4dcbdf0b1a6e39ce7eea8c5fd5ffee2faf360a8c0c9cba84c0e4ef3", + "inputs/complex/sources/Work__GCert__Chain__Geom.lean": "c302f5834287421f11f3b0da7112fcde876cbc702896f2af4145b2d72ee393a2", + "inputs/complex/sources/Work__GCert__Chain__InvThm.lean": "ade7e7873da75ca63a4b5ce2f562dde9c12bfbb69d87d7ae831039ff790e5adb", + "inputs/complex/sources/Work__GCert__Chain__NetCert.lean": "22ae34809466b4ac2a2c5cdde526f51ff246f5189f7c142b38aa4c0dcffb04a4", + "inputs/complex/sources/Work__GCert__Chain__NetDef.lean": "6e17a68b1e988969f6eb77000028f7ed877e687b8ad3976ec1707fcfe1d2f520", + "inputs/complex/sources/Work__GCert__Chain__NetStage.lean": "c122bc01392a6fdcc0bee918fed81804d3c9b1d3e071016dab65a4ed804ef0b6", + "inputs/complex/sources/Work__GCert__Chain__Phased.lean": "0de429c80231334f1ce92575c1e8ac382ca2d5e7d956767b547639a8941d9a8c", + "inputs/complex/sources/Work__GCert__Chain__WinB.lean": "c33ec3fce09c0971c32ddcbb86d9383ffbe4c6d05cf36f20460005e6547bb845", + "inputs/complex/sources/Work__GCert__Data__B2Gp193Main.lean": "cb61f304da51f1dd0a2ec25bca4b63eb095eeb2863289e1e2bdee7c82beff48b", + "inputs/complex/sources/Work__GCert__Data__Glue.lean": "d5314f2b93a7f0e1c949fb502331825bfc6d9d8762d35f865443e7c95b6c7ef7", + "inputs/complex/sources/Work__GCert__Data__InstB2Gp193.lean": "9587ddb9961f44938032b609307ab91c0b0e757e3991f1ad95480dd50fd4f72b", + "inputs/complex/sources/Work__GCert__Data__P193Cert.lean": "d92ee6889be4753fc99f467bd84039743325123a1165128378b9c906a04f2703", + "inputs/complex/sources/Work__GCert__Data__P193Price.lean": "0299bcd0fe255960eec682eef0f045f7e5cb1e4711af2aab4393526eae2caea3", + "inputs/complex/sources/Work__GCert__Data__P193ScalOK.lean": "479434815822e98f015e335361089c3788d00dc3dd39c2944f75410aa0c158fe", + "inputs/complex/sources/Work__GCert__Data__RateB2Gp193x.lean": "6b40cac1481c931d47b1a092e382d04716ede0e785c492a2f2983e886a257c3f", + "inputs/complex/sources/Work__GCert__Data__Raw.lean": "aba94a004c94dcae7cf3047c88a6da9561555f4ebe8ab92e299e6ce09ee7aa66", + "inputs/complex/sources/Work__GCert__Data__SolutionB2Gp193x.lean": "45c768c9d71a7cc18bd6db74cb036db880d89580ca60557bb4a492280296b169", + "inputs/complex/sources/Work__GFrame__Engine__Adapt.lean": "feec0a3828867968a5c7c2c30b86ed70449abc3c660a60ada67203a75bae2ef7", + "inputs/complex/sources/Work__GFrame__Engine__Letters.lean": "34906dbf5ae16b5174db00b4881a5cc1d2e583b8c8806db6523a5e2f86565f09", + "inputs/complex/sources/Work__GFrame__Engine__Level.lean": "80fb3daa9a45de0ed6da570eb4476b9104734be65d0116f58bcfcbcd67f771d0", + "inputs/complex/sources/tools__gx__gxbind.py": "9c9dcfac47f0535bf3aa8ebf7c662cdef0ebda50a9f0a9282b8f3cf34809f835", + "inputs/complex/sources/tools__gx__gxconv.py": "dab7fec9f44c2d368ed334055d7126e202017feb46e41a8d86e2d998720f67c2", + "inputs/complex/sources/tools__gx__gxcore.py": "eb972c06fe8c322db2d9a8d9a7d05596e8f40c4ca8e5f42eb6df3c7361b5d517", + "kernel-candidates.json.gz": "5f6863ad27eb9f2fcb14db10320c00607451c01e12da303def13e48eda7a5d2d", + "loader/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "loader/SOURCE_PINS.json": "5a4fa413ea0ecc74050359329e90521723151e421cc0c19f774b92bd608a3ac9", + "loader/expected_ledger.json": "4910004287e016f7f2db10f0a54eed24bf1912aa148b347b3cb4795fa3ac63f5", + "loader/expected_semantics.json": "b7de3178436c824b6be6d99842270a82e1821b8008dda66d8b18519ad347da2d", + "loader/raw_ledger.py": "89ba53114488a77a12b941db2787850c2c41612ad0332c47699a011c0c596b32", + "loader/source_inputs/base_bit/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "loader/source_inputs/base_bit/NOTICE": "c9850418622aea8d1382a230306c940947b5da818f4854b4b272ed60cf239f6c", + "loader/source_inputs/base_bit/research/paired-cube-diagonal-bit-168/bit/base_word.py": "9fe3a81b7561d2b09c086f63fac4626e88a32369ef8bc5579c94878de1218a89", + "loader/source_inputs/base_bit/research/paired-cube-diagonal-bit-168/bit/word.py": "85822e9cca5b1b2335c3704a3df2f3c6ef01e42d8328daacb33701d30cee80ab", + "loader/source_inputs/base_bit/research/paired-cube-diagonal-bit-168/references/pr168-v4/research/paired-cube-bit/check_paired_cube_bit.py": "4d7c86cd999a1519e0dfb6dcf33a8f26e442a353c3665a0f06881216a260fbf3", + "loader/source_inputs/base_bit/research/paired-cube-diagonal-bit-168/selected/bit/frames_p12.json.gz": "ad8e2705652b68476713d7647a8592505e222f2b3ccd1728dedce153aac6d462", + "loader/source_inputs/base_bit/research/paired-cube-diagonal-bit-168/selected/bit/graph_p12.json": "31a09a55920e64c8bfbac8b845dc01754c112aa6e207812e2fd1f4939d8f64cb", + "loader/source_inputs/base_bit/research/paired-cube-diagonal-bit-168/selected/bit/kchron_p12.json": "0fab548e84cf5ca7c04e8bd19b5810850463f36e0f92180efe73aeff17105e39", + "loader/source_inputs/base_bit/research/paired-cube-diagonal-bit-168/selected/bit/profile_p12.json": "c44ef8640cbcbcc9bac3a30e13373bd79efddde55d7cea514354ca2cdb60d66d", + "loader/source_inputs/base_bit/research/paired-cube-diagonal-bit-168/selected/bit/sinks.json": "c00ff70c564829d4b97740f92796fc6ce14fbcd5ca519663828650552b80249d", + "loader/source_inputs/base_bit/research/paired-cube-diagonal-bit-168/selected/bit/word_p12.json.gz": "1cb7e8ed45cf542e304fddc4b12247dbb248a0dc84dedbd832f336b2d172793a", + "loader/source_inputs/pr210/research/coordinated-crossover-pr200/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "loader/source_inputs/pr210/research/coordinated-crossover-pr200/NOTICE": "9fc5561c0995892dbdde777c713899486920c32d3562392f5f72377a4953bf98", + "loader/source_inputs/pr210/research/coordinated-crossover-pr200/borrow/selection.json": "6932749407e14b199651f0a7deff02c6de74e2c1be0a1300263f1e164927fb8b", + "loader/source_inputs/pr210/research/coordinated-crossover-pr200/frames/opframe-bases.json": "687496f3c15818e7cad1beb5fdf3812b8e38825ea302bfd60aea7ac23f3516b4", + "loader/source_inputs/pr210/research/coordinated-crossover-pr200/gaugeb/selection.json": "b0f9f0e67f94a3c21069f393ea27f9483d315bff2f53f77270163065a6345d1c", + "loader/source_inputs/pr210/research/coordinated-crossover-pr200/joint/joint-selection.json": "13f6420d6c341c22235c9d136d5f7c32896974bb165a893fecd7e583b790d133", + "loader/source_inputs/pr210/research/coordinated-crossover-pr200/joint/joint_word.py": "de37cbed753fc6f13a7e5dc25c8346279cfee5f1868df8c12a5fcb6ca8f631c0", + "loader/source_inputs/pr210/research/coordinated-crossover-pr200/joint/pairs.json": "da54b863601b5cbc21d27fc5cd623bf805f974a3e47b81ed29a85aa5bad0fa05", + "loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py": "0cbec81a11e758156e9303f63dc8c617601da69523073fdf2a77394d76acf56a", + "loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/schedule.json": "ab39d61fff7a2cfcb13e2c10d65f2c603e76a91013d197260d6c7b645ccb27a1", + "loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/selection.json": "d94ef4e0b8ca98a7385b364cf245816a7cad08f850a60ce8b67aab4c3a89f3f4", + "loader/source_loader.py": "e5e19ee6d6899fce8273d0f06a49caf7cd8bfe940a2a9a103dbc9d3a62b6b291", + "loader/test_public.py": "2103c953b37cf447d1a2bbb86c26f96fa5569a3ab018567e93884c12ebde8a2d", + "math_check.py": "bb7c80571104d9b9c30ce7be53654090dc006583ba1838557a5307b8a9db4a39", + "moment.py": "9d465c716c6b910ff66e1453e3bf0057608a787b5f5361be93781f42cb3370f7", + "outer.py": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c", + "parity_transform.py": "ef6f5224b91c409c30fc0886143787a0839a13cc6b148e42ca5db858d502ec4d", + "portable_bit.py": "51760a4ba5b431d55b245aca2036ef51249942503fdcd5d9317d515ce411b87c", + "portable_complex.py": "797e144c0040d78a4731a6eaa61c0edb9803a08462f885ed014cbca9d9991d82", + "prepare.py": "fc109fe81d7d9d3f53483ce7d648dc9fcf6d9fb71b8fde1c867ece5283fadbcc", + "prime_check.py": "80b764f53b92b299569a401754047b1a86f80ba4046502bfbfea924f6ec95e0e", + "prime_witnesses.py": "98cd03bc9582e7bd0ab194c191ea8eea940539e510051443ab9fd3e572a364ab", + "proof/copied-centers-lemma.tex": "d0ce6d3d504996aadb098227885224e48df46101daec8893523a0a8b7364d8fe", + "proof/primary/03-motifs.tex": "ed76761194988a01af77ead0ea6469cb5dcd29690ab985a0b5a4006b0f2b69bb", + "proof/primary/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "proof/three-stage-cover-bit.tex": "47123a756f823c83a0d48cca2bf5add6472cd88410b13aed345e70c8834fb511", + "proof/three-stage-cover-rows.tex": "6ad97a5cd7d6aecf978a81226e1c2763d37840caca130c61f3bf5c4ac111c5c8", + "raw_ledger.py": "d5dae7b56d403adb778251e4b42903695632d522c1392505723e2125162cef78", + "regauge-selection.json": "135e314f37bd611a021776991c9d786377b3829f84ca576d5006696c2d8bfbed", + "regauge_transform.py": "baa1c7390f449722e7e700fa1ce9afc3d00cd4c0f7faa5f41693ff88ec02fd61", + "requirements.txt": "25f9f1fb1988b230147a1d3092d34e09c069eb7a6c6d6df46b3973b9f2d36efc", + "retiming-selection.json": "b173080a2884d5bfb28e35ed5b4256e233cafc6275cbfe5a76619b406f2ce989", + "retiming25-selection.json": "e66ba924727efa06f6d2f75357a3d5d4eea97c5eb0eccdc786e5814eb877ce14", + "retiming25.py": "5e9e835730aac1b0752019530daa1e75c8938686bf8a8a01640ab69ceada90f2", + "retiming_transform.py": "483cb8da83a1444cbc8b1bbe60473e571a27e6e589fa64f9a26910ca0d678407", + "scalar_check.py": "13ac9a3ef3c131739478ac1ba5903acd638cf5a41c6fa463fa3e27325413c7f9", + "source527/echelon/selection.json": "8e6ce5e257aa7656898ab46bc3421df4a619497b1e9f5956d2c546b3014050a7", + "source527/extra/selection.json": "791f6ddeb19add7026ba37461256c13efe3d35bba0bccf1cb9787a01fc16f0f2", + "source527/fresh/selection.json": "4df5f96064349415882ece4ac9abd19cc778f18c0306a27b3d65027dcb04b6c7", + "source527/paired-selection.json": "67a24896e5ff6a16735efdff57fbb875aa411aba00cbabb22c43a91cdf63e084", + "source527/pr230/NOTICE": "7dfbad087ee49b74fd5075d517eaa263c5dd3d4fbd4c69bfba34ee1cb55e837f", + "source527/pr230/PROVENANCE.json": "19957e28a8ad26281bfe8bfaf8ae16191be53e729a8870a6154671b3384959d4", + "source527/pr230/active-opframe-bases.json": "9a2bba5c72aebc9ee4f21e59b10ce810b2da98a1fa1748fbc44c50a080e584ff", + "source527/rank/selection.json": "5c97c6413f1eb56c7b8f9ba9e839329d212fae7ac3a08c29e9efdee42f5048a0", + "source527/targetagg/selection.json": "b7a4d5eb2a6d2f7df867f9be5af7da1d1aa99cfbd5214195967b0ff60642d77a", + "source527/word.py": "e675d4eb9d90ff0b44279fae0b46f1a8b39f65421cc38454b70a6b75d0e10b42", + "verify.py": "489bee6d23fbed6732e60d62f8fa98e7d2dfb2d2b7f75fd2bd3bc4a920155f10" + }, + "schema": "selected-docs-source-binding/1", + "scientific_archive_manifest_sha256": "9f6d8637b9a119cfe4566a02ab2d704f23c502e5e4357b40c28ef85a3fd4de89", + "scope": "Public extraction reuses the exact117 numerical inputs from the all-eight-stage tested143-file archive. It is not a second all-eight-stage execution of the137-file tree.", + "source_binding_configuration_sha256": "53acbfc4c9cb93404f951789e866339a315ae84d6218a32932638a6ecc6d961c" + }, + "svg_converter": { + "executable_sha256": "95a779ec46131bb296cccef9526e6d6a73fd6c11df3b119531e767f0f00ee734", + "version": "pdftocairo version 26.02.0\nCopyright 2005-2026 The Poppler Developers - http://poppler.freedesktop.org\nCopyright 1996-2011, 2022 Glyph & Cog, LLC" + } +} diff --git a/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_build.py b/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_build.py new file mode 100644 index 0000000000..d2bde29654 --- /dev/null +++ b/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_build.py @@ -0,0 +1,352 @@ +#!/usr/bin/env python3 +"""Regenerate both selected-construction diagrams, master PDF and connection index. + +No Graphviz is used. Diagrams are vector paths in deterministic ReportLab PDFs. +The source package is read-only. The default build writes only to a new --output. +--emit-json produces the same ASCII artifacts on stdout for managed write tools. +""" +from __future__ import annotations +import argparse, base64, hashlib, io, json, math, re, sys +import reportlab +from pathlib import Path +from collections import Counter +from reportlab.pdfgen import canvas +from reportlab.lib.colors import HexColor, white +from reportlab.lib.utils import simpleSplit +from pypdf import PdfReader, PdfWriter +from pypdf.generic import NameObject, StreamObject +from reportlab.pdfbase import pdfmetrics +from reportlab.pdfbase.ttfonts import TTFont +import joint259_system_docs_hierarchy_views as hierarchy_views +import joint259_system_docs_previews as previews +import joint259_system_docs_sources as source_views +BASE=Path(__file__).resolve().parent +PREFIX="joint259_system_docs" +MODEL=BASE/(PREFIX+"_model.json") +W,H=1120,790 +INK="#142D3A"; BLUE="#176B8B"; TEAL="#147D77"; GOLD="#B2761B"; PALE="#EAF4F7"; MUTED="#526873"; RED="#99432F" +FONT="Vera" +for name,file in [(FONT,"Vera.ttf"),(FONT+"-Bold","VeraBd.ttf")]: + pdfmetrics.registerFont(TTFont(name,str(Path(reportlab.__file__).parent/"fonts"/file))) +def sha(b):return hashlib.sha256(b).hexdigest() +def stable(obj):return json.dumps(obj,sort_keys=True,indent=2,ensure_ascii=True)+"\n" +def validate_model(model): + blocks={b['id']:b for b in model['blocks']} + if len(blocks)!=len(model['blocks']):raise ValueError('Duplicate block ID') + req={r['id']for r in model['requirements']} + if len(req)!=len(model['requirements']):raise ValueError('Duplicate requirement ID') + ids=set();fed=set() + for b in blocks.values(): + if not set(b['requirements'])<=req:raise ValueError('Unknown requirement '+b['id']) + for edge in model['edges']: + if edge['id'] in ids:raise ValueError('Duplicate edge ID') + ids.add(edge['id']) + if edge['from'] not in blocks or edge['to'] not in blocks:raise ValueError('Unknown edge endpoint') + for direction,bid,field in [('outputs',edge['from'],'out'),('inputs',edge['to'],'in')]: + ports={p.split(':',1)[0]for p in blocks[bid][direction]} + if edge[field] not in ports:raise ValueError('Undeclared port '+edge['id']+' '+bid+'.'+edge[field]) + fed.add((edge['to'],edge['in'])) + for e in model.get('external_inputs',[]): + if e['block'] not in blocks or e['port'] not in {p.split(':',1)[0]for p in blocks[e['block']]['inputs']}:raise ValueError('Unknown external port') + fed.add((e['block'],e['port'])) + required={(b['id'],p.split(':',1)[0])for b in blocks.values()for p in b['inputs']} + if required-fed:raise ValueError('Unbound input ports: '+str(sorted(required-fed))) +def source_index(root,model): + refs={} + for b in model["blocks"]: + for token in b["sources"]: + path,anchor=token.split("|",1) + text=(root/path).read_text();lines=text.splitlines() + found=[i for i,line in enumerate(lines) if anchor in line] + if not found:raise ValueError("Missing source anchor: "+token) + i=found[0];key="S%02d"%(len(refs)+1) + if token in refs:continue + refs[token]={"id":key,"path":path,"anchor":anchor,"line":i+1,"sha256":sha((root/path).read_bytes()),"excerpt":" ".join(lines[i:i+2]).strip()[:205]} + return refs +class Doc: + def __init__(self,kind,model,refs): + self.kind,self.model,self.refs=kind,model,refs + self.buf=io.BytesIO();self.c=canvas.Canvas(self.buf,pagesize=(W,H),pageCompression=0,invariant=1) + self.c.setTitle(model["title"]);self.c.setAuthor("Henry Grant; prepared with OpenAI assistance") + self.n=0;self.ids=set();self.links=[];self.used_blocks=set();self.pages=[];self.boxes=[] + def text(self,x,y,text,size=12,color=INK,width=990,bold=False,leading=None): + initial_y=y + self.c.setFillColor(HexColor(color));self.c.setFont(FONT+("-Bold" if bold else ""),size) + leading=leading or size*1.35 + for line in str(text).split("\n"): + pieces=simpleSplit(line,FONT+("-Bold" if bold else ""),size,width) or [""] + for p in pieces:self.c.drawString(x,y,p);y-=leading + if initial_y>39 and y<39:raise ValueError("Text overflow page %s: %s"%(self.n,str(text)[:90])) + return y + def link(self,x,y,text,target,width=None,size=10): + width=width or self.c.stringWidth(text,FONT,size) + self.text(x,y,text,size,BLUE,width=width+8) + self.c.linkRect("",target,(x,y-3,x+width,y+size+2),relative=0,thickness=0) + self.links.append((self.n,target)) + def page(self,key,title,kicker): + if self.n:self.c.showPage() + self.n+=1;self.ids.add(key);self.pages.append({"id":key,"title":title,"page":self.n}) + self.c.bookmarkPage(key);self.c.addOutlineEntry(title,key,0,False) + self.c.setFillColor(HexColor("#F7FAFB"));self.c.rect(0,0,W,H,fill=1,stroke=0) + self.text(42,H-33,kicker.upper(),10,TEAL,bold=True) + self.text(42,H-71,title,25,INK,bold=True) + self.text(42,23,"SELECTED HYBRID | science archive 9f6d8637... | conditional construction",9,MUTED) + self.text(W-95,23,str(self.n),10,MUTED) + if key!="CONTENTS":self.link(W-160,H-33,"Contents","CONTENTS",100) + def panel(self,x,y,w,h,title,text,color=BLUE,compact=False): + self.c.setFillColor(white);self.c.setStrokeColor(HexColor("#C8D9DF")) + self.c.roundRect(x,y,w,h,8,fill=1,stroke=1) + self.c.setFillColor(HexColor(color));self.c.roundRect(x,y+h-6,w,6,2,fill=1,stroke=0) + yy=self.text(x+15,y+h-28,title,11.5 if compact else 13,color,w-30,True) + yy=self.text(x+15,yy-7,text,9.5 if compact else 11,INK,w-30,leading=12.5 if compact else 15) + if yyx1:p=(x1+w1,y1+h1/2);q=(x2,y2+h2/2) + else:p=(x1,y1+h1/2);q=(x2+w2,y2+h2/2) + else: + p=(x1+w1/2,y1 if y2" + obj[NameObject("/Filter")]=NameObject("/ASCII85Decode") + obj.pop(NameObject("/DecodeParms"),None) + if hasattr(obj,"decoded_self"):obj.decoded_self=None + buf=io.BytesIO();writer.write(buf);raw=buf.getvalue() + # ReportLab's four high-bit header bytes are a binary-file marker only. + # Replace with same-length ASCII so this PDF can be persisted losslessly + # through a text patch. Streams use ASCII85; offsets stay unchanged. + raw=raw.replace(b"%\x93\x8c\x8b\x9e",b"%ASCI",1).replace(b"%\xe2\xe3\xcf\xd3",b"%ASCI",1) + raw.decode("ascii") + r=PdfReader(io.BytesIO(raw));assert len(r.pages)==self.n + for page in r.pages:assert (page.extract_text()or"").strip() + return raw,{"pages":self.pages,"internal_links":len(self.links),"blocks":sorted(self.used_blocks),"sha256":sha(raw)} +def cover(d): + d.page("CONTENTS","The selected construction, at three levels","Functional architecture and logical wiring") + d.text(42,673,d.model["title"],14,INK,width=1000,bold=True) + d.panel(42,458,500,155,"THE NUMERICAL CONTRACT","513 retained PR259 cohorts + seven delayed-inverse intervals + the same 25 PR258/260 retimings applied once.\nConditional kappa: 0.000711045547624400.\nLiteral stock 867,045; 19,786,600 paid children.",TEAL) + d.panel(566,458,512,155,"HOW TO READ THE CONNECTIONS",str(len(d.model['blocks']))+" current blocks and "+str(len(d.model['edges']))+" typed block dependencies. All 87 original hierarchy IDs are reconciled separately.\nL01-L05 expand parametric wiring. The literal event inventory is separate; inherited all-size internals remain contracts.",GOLD) + y=418 + d.link(46,y,"Full integer-product hierarchy and all 87 original blocks","H_SYSTEM",850,12);y-=27 + if d.kind in ("functional","combined"): + for key,t in [("FVIEW1","Functional: source-bound local supplier"),("FVIEW2","Functional: global assembly and exact closure")]: + d.link(46,y,t,key,600,13);y-=29 + if d.kind in ("logical","combined"): + for key,t in [("L01","Logical: stream ABI and state transitions"),("L02","Logical: seven delayed-inverse interval wires"),("L03","Logical: five-stage data-bank wiring"),("L04","Logical: bank address and replica mapping"),("L05","Logical: proof ports and unexpanded interfaces")]: + d.link(46,y,t,key,750,13);y-=29 + for key,t in [("CATALOG","Block catalog: what, why, ports, requirements and proof"),("REQUIREMENTS","Requirements and source traceability"),("SOURCES","Exact source anchors and hashes"),("SCOPE","Coverage, heritage and reproduction boundary")]: + d.link(46,y,t,key,820,12);y-=27 + d.text(46,y-12,"Navigation: clickable blocks open the catalog; source IDs open exact proof anchors; every page returns here.",11,MUTED,width=1000) +def fviews(d): + d.page("FVIEW1","Functional architecture | local supplier","Actual compiler flow; not experiment chronology") + positions={} + ids=["F01","F02","F03","F04","F05","F06","F07","F08","F09","F10"] + for i,b in enumerate(ids): + row=i//5;col=i%5 if row==0 else 4-i%5 + positions[b]=d.node(b,42+col*210,496-row*181,190,113) + for i in range(9):d.arrow(positions[ids[i]],positions[ids[i+1]]) + d.text(42,663,"Pinned source recipes -> literal records -> selected compatible transformations -> independently checked payload.",13,MUTED) + d.panel(42,126,510,141,"ONE COMPOSITION","The kernel and interval transforms share the exact PR249 base. Five conflicting quartets are removed before the seven intervals enter. The interval helper prefix columns are checked against all retained cohort operands.",TEAL) + d.panel(575,126,503,141,"STABLE IDENTITIES","F06 output: 2e0bc2a5... (exact PR249 base)\nF08 output: 6ab38175... (joint replacement)\nF09 output: acf510b1... (25 retimings once)\nFull digests are in the catalog and source index.",BLUE) + d.text(44,82,"Cross-edges: F01 supplies all selections; F06 supplies the interval witness base. F09 also feeds F11/F15 on the next sheet.",11,MUTED) + d.page("FVIEW2","Functional architecture | complete conditional closure","Independent evidence flows meet before admission") + pos={} + for bid,x,y in [("F11",42,509),("F12",253,509),("F13",464,509),("F14",675,509),("F15",886,509),("F16",42,327),("F17",253,327),("F18",464,327),("F19",675,327),("F20",886,327),("F21",675,142)]: + pos[bid]=d.node(bid,x,y,190,118) + for a,b in [("F11","F12"),("F12","F13"),("F13","F14"),("F16","F17"),("F17","F18"),("F18","F19"),("F15","F20"),("F19","F21"),("F20","F21")]:d.arrow(pos[a],pos[b]) + d.arrow(pos["F14"],pos["F17"],"literal profile") + d.text(42,663,"The bit and complex suppliers remain distinct. Scalar, geometric, bank, moment and finite proof ports must all close.",13,MUTED) + d.panel(42,128,589,135,"SIDE INPUTS AND BOUNDARIES","F10 semantics/prefix and F15 geometry/primes feed F20. F11 records feed F14; F16 guards also feed F19. The connection index names all declared block inputs.\nF21 requires raw, bit, scalar, primes, banks, complex, math and finite results, then rechecks the source manifest.",TEAL) + d.text(42,77,"The arrows are compiler/proof dataflow. No local optimization or individual PR contributes an independent additive kappa gain.",11,MUTED) +def lviews(d): + d.page("L01","Logical wiring | actual stream ABI","Six-field local word to eight-field global record") + d.panel(42,502,498,148,"LOCAL REGISTER INTERFACE","source s: 0 <= s < 1,760\nold target t: 1,760 <= t < 3,520\nindependent helper h: 3,520 <= h < 20,107\ntemporary work: 20,107, live only inside COPY/ERASE",BLUE) + d.panel(565,502,513,148,"LOCAL RECORD (op,a,b,c,f,z)","MOVE: (0, q, before, after, rank, 0)\nADD: (1, dst, src, coefficient, common_frame, category)\nCOPY: (2, source, temporary, input_frame, output_frame, rank)\nERASE: (3, source, temporary, input_frame, output_frame, rank)\nThe local center rank is 22 for both COPY and ERASE.",TEAL,True) + y=419 + for title,txt in [("ADD state transition","dst[v+1] <- dst[v] + coefficient * src[u]; every other payload version survives. MOVE changes address-frame state, not the scalar payload version."),("COPY lifecycle","COPY creates a temporary view of an immutable source in an explicit frame. Its 220 scatter consumers occur before ERASE; reflected stages create a fresh copy and never invert erasure."),("Global record","(op, family_a, family_b, coefficient_or_frame, frame_or_rank, category_or_boundary, stage, complement). Interpretation is opcode-specific; frame fields are never mistaken for stream IDs."),("Connection extraction boundary","The authoritative word has explicit source/destination IDs and lifetime delimiters. SSA-style versions and producer/consumer edges are a derived inventory, not native fields. Block-edge E IDs do not enumerate these operations.")]: + y=d.text(45,y,title,14,TEAL,bold=True);y=d.text(45,y-5,txt,12,INK,1020)-20 + d.link(45,88,"F03 emitter","B_F03",140);d.link(215,88,"F10 semantic replay","B_F10",180);d.link(430,88,"F11 global ABI","B_F11",165) + d.page("L02","Logical wiring | delayed target inverse","Exact parametric six-stream network; repeated seven times") + d.text(42,666,"For one interval j: targets [p,t1,t2,t3], helpers [low,high]. All old target and helper values are arbitrary.",13,MUTED) + xs=[155,370,585,800,1000];ys=[580,516,452,388,324,260];names=["pivot p","target t1","target t2","target t3","helper low","helper high"] + for yy,name in zip(ys,names): + d.text(42,yy-4,name,12,INK,bold=True);d.c.setStrokeColor(HexColor("#C0CFD5"));d.c.line(142,yy,1044,yy) + for x,lab in zip(xs[1:4],["frame ZERO","L: rank 5 / H: rank 14","K: rank 20"]):d.text(x-73,620,lab,12,TEAL,width=215,bold=True) + # Three target subtractions, then two pivot compensations, then inverse. + for yy in ys[1:4]: + d.c.setStrokeColor(HexColor(BLUE));d.c.line(xs[1],ys[0],xs[1],yy) + d.c.setFillColor(HexColor(BLUE));d.c.circle(xs[1],yy,6,fill=1,stroke=0);d.text(xs[1]+11,yy+7,"-p",10,BLUE) + for off,yy,label in [(-15,ys[4],"-low @L"),(15,ys[5],"-high @H")]: + d.c.setStrokeColor(HexColor(TEAL));d.c.line(xs[2]+off,yy,xs[2]+off,ys[0]);d.c.setFillColor(HexColor(TEAL));d.c.circle(xs[2]+off,ys[0],6,fill=1,stroke=0);d.text(xs[2]-65,yy+12,label,10,TEAL) + for yy in ys[1:4]: + d.c.setStrokeColor(HexColor(GOLD));d.c.line(xs[3],ys[0],xs[3],yy) + d.c.setFillColor(HexColor(GOLD));d.c.circle(xs[3],yy,6,fill=1,stroke=0);d.text(xs[3]+12,yy+7,"+p",10,GOLD) + d.panel(42,78,502,121,"EXACT ENDPOINT","Each of p,t1,t2,t3 receives -low-high. Helpers retain their values. The literal inverse restores all six columns.\n8 ADDs per interval; 56 total replacement ADDs.",TEAL) + d.panel(566,78,512,121,"FRAME / OBSERVER CONTRACT","L <= H <= K, with nonzero exact Gram determinants. No surviving external observer crosses the interval. Four retained-cohort cuts see zero on all 14 chosen helper-prefix columns.",GOLD) + d.link(800,226,"F08 proof and witnesses","B_F08",230) + d.page("L03","Logical wiring | five-stage data paths","One logical replica; literal expansion repeats forty times") + d.text(42,666,"Every stage iterates its complete local word for all cover classes. Helper families are reused logically, then banked stage-privately.",13,MUTED) + lanes=[("X1",578),("Y1",492),("X2",406),("Y2",320)] + for name,yy in lanes: + d.text(42,yy-4,name,14,INK,bold=True);d.c.setStrokeColor(HexColor("#C0CFD5"));d.c.line(113,yy,1070,yy) + pairs=[(0,1),(1,0),(0,1),(3,2),(2,3)] + for i,((a,b),x) in enumerate(zip(pairs,[175,354,533,712,891])): + d.text(x-39,620,"stage %d %s"%(i,"R" if i in(1,3)else"F"),13,TEAL,bold=True) + ya,yb=lanes[a][1],lanes[b][1];d.c.setStrokeColor(HexColor(BLUE));d.c.setLineWidth(2);d.c.line(x,ya,x,yb) + for yy in [ya,yb]:d.c.setFillColor(HexColor(BLUE));d.c.circle(x,yy,8,fill=1,stroke=0) + d.text(x-56,245,"source %s"%lanes[a][0],10,MUTED,140);d.text(x-56,229,"target %s"%lanes[b][0],10,MUTED,140) + if i in(1,2,4):d.text(x-66,286,"idle + bridges",10,GOLD,width=150) + d.panel(42,73,1028,111,"EXACT BOUNDARY CONNECTIONS","After stage 1: X1 += X2; Y2 -= Y1. After stage 2: Y2 += Y1; X1 -= X2.\nAfter stage 4: Y1 -= Y2; X2 += X1. Final pairs (X1,Y1) and (X2,Y2) exchange as newX=oldY, newY=-oldX.\nIDLE projector widths: (46,46), (23,23), then (50,50,4,4). Each applies across all 1,760 ports.",TEAL) + d.link(842,208,"F11 exact route projectors","B_F11",240) + d.page("L04","Logical wiring | exact bank and replica map","Parametric expansion, not millions of drawn edges") + d.panel(42,491,485,157,"INDEX DOMAIN","stage i in [0,5); replica r in [0,40); port t in [0,1760).\nResidual width a=24-dim(entrance(u)). Index j_a(u) is local to the sorted role family of width a, not the global helper census.\nOccurrence q=40*j_a(u)+r; symbolic cover class d.",BLUE) + d.panel(554,491,524,157,"FULL ADDRESS","data family=(4*r+bank)*1760+t\nhelper family=281600+i*117089+stage_bank\nhelper route=d*tau_i*N^-1\nexternal work family=867045, route=(external_work,0)\nN=(block+1)*Pi*embed_i(B^-1)",TEAL) + d.text(43,459,"E-BANK: choose the unique rank-a segment [lo,hi) containing q, with block-slot list S and stage-bank base beta.",11,INK) + d.text(43,439,"k=floor((q-lo)/len(S)); b=S[(q-lo) mod len(S)]; stage_bank=beta+k; offset=sum(widths[0:b]); widths is this pattern.",11,TEAL) + d.text(43,418,'Example pattern 17: five residual blocks of width 24, totaling 120 coordinates.',10,MUTED) + x=43;y=337;unit=8.4 + for k,rank in enumerate([24,24,24,24,24]): + d.c.setFillColor(HexColor(["#C4E2E9","#A8D2DA"][k%2]));d.c.rect(x,y,rank*unit,60,fill=1,stroke=0) + d.text(x+20,y+22,"block %d: rank %d"%(k,rank),12,INK,width=rank*unit-22);x+=rank*unit + d.panel(42,133,503,163,"RECONCILIATION","3,317,400 assignments = 5*40*16,587.\n200 complete stage/replica namespaces are injective in (family,route), even with 34,965 intentional same-family coincidences.\n770 frame-ID charts; 459 distinct entrance bases.",TEAL) + d.panel(568,133,510,163,"COMPLETION DISCHARGE","Match all 2,827 tagged entrances and prove each full 240-column bank/work swap. Subtract only tagged counts.\nOrdinary children sharing widths 5,10,15,20,50 survive. map_boundary_row rejects COMPLETE opcode 6.",GOLD) + d.link(43,86,"F12 assignment","B_F12",180);d.link(260,86,"F13 actual charts","B_F13",180);d.link(480,86,"F14 full addresses","B_F14",200) + d.page("L05","Logical wiring | closed proof ports","What is expanded, parameterized, and still inherited") + d.panel(42,456,322,186,"EXPANDED / EXACT","Local ADD/MOVE/COPY/ERASE ABI; seven interval templates; five active data-bank pairs; boundary shears/exchanges; exact stage/replica/helper address formulas.\nAll F01-F21 ports have source anchors.",TEAL) + d.panel(389,456,332,186,"PARAMETRIC REPETITION","513 retained cohorts with exact candidate bases; 25 scalar-keyed retimings; 18 packing patterns; 40 replicas; 200 stage/replica namespaces; all symbolic cover classes.\nWitness IDs remain authoritative.",BLUE) + d.panel(747,456,331,186,"UNEXPANDED INTERNALS","All-size weighted compiler, full GL-cover/common-ancestor charts, restored-row routing primitives, eligible-prime supply, recovery and complex symbolic/analytic theorems.\nThese are contracts, not gate-level drawings.",GOLD) + d.text(44,412,"Required proof ports into F21",19,INK,bold=True) + ports=[("raw","reconstructed source ledger"),("bit","physical / global / geometry"),("scalar","F2, chosen lift, source decoder"),("primes","actual determinant inventory"),("banks","full-address callable bank word"),("complex","pinned complex source and guard"),("math","two moments + bootstrap + outer47"),("finite","complete bill and full cutoff")] + for i,(a,b) in enumerate(ports): + x=45+(i%2)*526;y=342-(i//2)*60 + d.text(x,y,a,13,TEAL,bold=True);d.text(x+84,y,b,12,INK,width=418) + d.text(44,71,"Coverage limit: these PDFs do not claim an individual-operation connection inventory. See connection_index.json for exact level and extraction status.",11,RED,width=1010) +def catalog(d): + for i in range(0,len(d.model["blocks"]),2): + bs=d.model["blocks"][i:i+2] + d.page("CATALOG" if i==0 else "CATALOG%02d"%i,"Functional blocks | "+" + ".join(b["id"] for b in bs),"What / why / ports / invariants / heritage / proof") + for n,b in enumerate(bs): + d.bookmark("B_"+b["id"]);d.used_blocks.add(b["id"]) + x=43+n*530;y=669 + y=d.text(x,y,b["id"]+" "+b["name"],20,INK,495,True)-6 + for title,value in [("WHAT",b["what"]),("WHY",b["why"]),("INPUT PORTS","; ".join(b["inputs"])),("OUTPUT PORTS","; ".join(b["outputs"])),("REQUIREMENTS"," ".join(b["requirements"])),("INVARIANTS"," ".join(b["invariants"])),("HERITAGE",b["heritage"])]: + y=d.text(x,y,title,9,TEAL,495,True)-1 + y=d.text(x,y,value,11,INK,495,leading=14.2)-10 + y=d.text(x,y,"PROOF / IMPLEMENTATION",9,TEAL,495,True)-3 + for token in b["sources"]: + r=d.refs[token];d.link(x,y,r["id"]+" "+r["path"]+" : "+str(r["line"]),"SRC_"+r["id"],480,9);y-=18 + if y<58:raise ValueError("Block catalog overflow "+b["id"]) +def requirements(d): + for start in [0,6]: + d.page("REQUIREMENTS" if start==0 else "REQUIREMENTS2","Requirement traceability | %d-%d"%(start+1,start+6),"Derived construction obligations; not a new theorem specification") + y=673 + for r in d.model["requirements"][start:start+6]: + owners=[b["id"] for b in d.model["blocks"] if r["id"] in b["requirements"]] + y=d.text(43,y,r["id"]+" "+r["name"],15,TEAL,bold=True) + y=d.text(43,y-5,r["text"],12,INK,1020) + x=43 + for bid in owners:d.link(x,y-2,bid,"B_"+bid,46,10);x+=53 + y-=39 +def sources(d): + values=list(d.refs.values()) + for i in range(0,len(values),8): + d.page("SOURCES" if i==0 else "SOURCES%d"%i,"Source anchors | %d-%d"%(i+1,min(i+8,len(values))),"Pinned active implementation and proof locations") + y=672 + for r in values[i:i+8]: + d.bookmark("SRC_"+r["id"]) + y=d.text(43,y,r["id"]+" "+r["path"]+" : "+str(r["line"]),13,TEAL,bold=True) + y=d.text(43,y-2,r["anchor"],10,INK,1010) + y=d.text(43,y-1,"SHA256 "+r["sha256"],9,MUTED,1010)-17 +def scope(d): + d.page("SCOPE","Coverage and publication boundary","Source-faithful documents; scientific replay is separate") + sections=[ + ("Selected active heritage","PR249's 21 transported entrances -> PR259's 513 retained cohorts (five quartets removed) + seven new delayed-inverse intervals -> 25 same-gate PR258/PR260 retimings once. PR254 is ancestry, not another additive saving. PR251's extra sixteen entrances are excluded."), + ("Architectural and theorem heritage","PR234 supplies Henry Grant / hcg890's five-stage architecture and finite interfaces. PR237 is a prior width-120 bank extension; no exclusive priority is claimed. The source527 and completed-bank chains retain all upstream licenses and contributor notices. Complex source is Jacob Sussman's f010392 snapshot; PR209 is its documentation pointer, and PR193 supplies the helper lineage."), + ("Coverage stated exactly","The current block catalog and connection index account for every declared input port. All 87 original hierarchy IDs are explicitly reconciled. Logical sheets give compact parametric wiring; the separate local event extractor provides value/frame versions and producer-consumer edges. The symbolic cover domain and inherited theorem internals remain unexpanded."), + ("Evidence and pending checks","The recorded cloud admission freshly executed changed stages and reused byte/AST-bound unchanged signed-source and complex evidence. Mac standalone replay has now reported all eight stages passing with 143 unchanged source files. This explicit PR259 hybrid checkpoint remains mathematically conditional and is below the later PR266 frontier. Documentation checks are separate from scientific replay."), + ("Public follow-up only","Construction checkpoint PR #277: https://github.com/CrocSwap/integer-mult-bounds/pull/277. Public source commit c2f07d311bfdad0d89bf961e4da133ee97bb78de is linked in README.md. Source anchors retain exact relative paths, symbols, line numbers and hashes. The historical combined_system_schematic_20261010 generator is preserved unchanged.") + ] + y=666 + for title,body in sections: + y=d.text(43,y,title,15,TEAL,bold=True)-4;y=d.text(43,y,body,12,INK,1018)-21 + d.page("BUILD","Reproduce both diagram families","Pinned Python dependencies; no Graphviz requirement") + y=672 + for title,body in [ + ("Install","Python 3.11+; python -m pip install -r joint259_system_docs_requirements.txt. Pinned reportlab 4.4.9, pypdf 6.10.0, Pillow 12.3.0, charset-normalizer 3.5.1. Graphviz is not used or required."), + ("One build command","python -B joint259_system_docs_incremental.py --source /path/to/public-package --output joint259-docs-build --svg. An admitted source ZIP also works. Actual consumed manifest is recorded separately from the tested science archive in source_binding.json and QA.json."), + ("Outputs","functional_architecture.pdf; logical_wiring.pdf; complete_system.pdf; connection_index.json; source_index.json; requirement_traceability.json; diagram_model.json; QA.json. Both families are regenerated from the same block/edge model and same pinned source."), + ("Automatic reproducibility checks","Build every PDF twice in memory and require byte-identical SHA256, unchanged manifest, no missing/extra source files, valid proof anchors, all catalog block IDs present, all internal links resolved, nonempty extractable page text and no layout overflow. QA.json records counts, pins and output digests."), + ("Independent visual check","Use Poppler: pdftoppm -png -r 100 complete_system.pdf review/page. Inspect every page for clipping, missing glyphs and readable connectors. Poppler is an optional renderer, not a generation dependency; record its actual version in visual QA."), + ("Scientific verification remains separate","From a clean source package, use Python 3.11+ and SymPy 1.14.0 with assertions enabled: python -B verify.py --output /new/output/directory. Never write inside the immutable source package; never use -O. A successful documentation build is not an all-eight-stage science replay.") + ]: + y=d.text(43,y,title,15,TEAL,bold=True)-5;y=d.text(43,y,body,12,INK,1015)-25 +def render(kind,model,refs): + validate_model(model) + d=Doc(kind,model,refs);cover(d) + hierarchy_views.overview(d);hierarchy_views.transforms(d) + if kind in("functional","combined"):fviews(d) + if kind in("logical","combined"):lviews(d) + catalog(d);hierarchy_views.catalog(d);hierarchy_views.connections(d);hierarchy_views.requirements(d);requirements(d);sources(d);scope(d) + return d.finish() +def integrity(root,expected): + return source_views.integrity(root,expected) +def main(source_override=None): + ap=argparse.ArgumentParser(description=__doc__);ap.add_argument("--source",type=Path,required=True);ap.add_argument("--output",type=Path);ap.add_argument("--emit-json",action="store_true");args=ap.parse_args() + model=json.loads(MODEL.read_text());root=source_views.open_source(source_override if source_override is not None else args.source.resolve());count=integrity(root,model["source_manifest_sha256"]);refs=source_index(root,model) + consumed_manifest=sha((root/'MANIFEST.json').read_bytes()) + source_binding={**source_views.BINDING,'consumed_manifest_sha256':consumed_manifest,'consumed_manifest_members':count,'consumed_total_paths':count+1,'source_binding_configuration_sha256':sha((BASE/'joint259_system_docs_source_binding.json').read_bytes())} + files={};reports={} + for kind,name in [("functional","functional_architecture.pdf"),("logical","logical_wiring.pdf"),("combined","complete_system.pdf")]: + one,report=render(kind,model,refs);two,_=render(kind,model,refs) + if one!=two:raise ValueError("Nondeterministic "+kind) + files[name]=one.decode("ascii");reports[name]=report + index={"schema":"selected-construction-connections/1","source_manifest_sha256":model["source_manifest_sha256"],"level":"functional blocks with exact parametric wiring contracts","complete_individual_operation_inventory":False,"blocks":model["blocks"],"block_edges":model["edges"],"operation_schema":{"local_fields":["op","a","b","c","f","z"],"global_fields":["op","operand_a","operand_b","coefficient_or_frame","frame_or_rank","category_or_boundary","stage","complement"],"opcodes":{"MOVE":0,"ADD":1,"COPY":2,"ERASE":3,"IDLE":4,"BRIDGE":5,"COMPLETE":6,"EXCHANGE":7},"local_source_ids":[0,1759],"local_target_ids":[1760,3519],"local_helper_ids":[3520,20106],"local_work_id":20107},"parametric_domains":{"stages":5,"replicas":40,"ports":1760,"helper_roles":16587,"helper_assignments":3317400,"cover_classes":"symbolic finite GL cover; compiler theorem supplies enumeration"},"state_versions":{"native":False,"derived_ssa_extraction":"Separate JOINT259_CONNECTION_EXTRACT.py generates complete local value/frame producer-consumer inventory; this overview index is not that trace."},"unexpanded":["all-size weighted compiler internals","full GL-cover and common-ancestor charts","restored-row and routing primitive internals","prime-supply theorem","recovery theorem","complex symbolic and analytic theorems"],"coverage_limits":["E-series IDs are block dependencies, not scalar/COPY events.","Global numerical operation counts do not prove complete per-operation extraction.","Parametric address formulas are anchored to BankPlan; no fabricated gate-level internals."]} + files["connection_index.json"]=stable(index) + index['source_manifest_sha256']=consumed_manifest + index['scientific_archive_manifest_sha256']=model['source_manifest_sha256'] + files["connection_index.json"]=stable(index) + files['source_binding.json']=stable(source_binding) + files["source_index.json"]=stable(list(refs.values())) + files["requirement_traceability.json"]=stable([{**r,"blocks":[b["id"]for b in model["blocks"]if r["id"]in b["requirements"]]}for r in model["requirements"]]) + files["diagram_model.json"]=stable(model) + files["hierarchy_reconciliation.json"]=stable(hierarchy_views.DATA) + files["hierarchy_edges.json"]=stable(hierarchy_views.EDGES) + files.update(previews.files(model)) + files["scientific_reproduction.json"]=(BASE/'joint259_system_docs_evidence.json').read_text() + integrity(root,model["source_manifest_sha256"]) + qa={"status":"PASS_DOCUMENT_STRUCTURE_AND_DETERMINISM","source_files":count,"source_manifest_sha256":model["source_manifest_sha256"],"block_count":len(model["blocks"]),"typed_block_edges":len(model["edges"]),"requirements":len(model["requirements"]),"source_anchors":len(refs),"pdfs":reports,"byte_identical_rebuilds":True,"visual_review":"separate; not inferred from structural checks","science_replay":"not run by documentation build","Graphviz":"not used"} + files["QA.json"]=stable(qa) + qa['source_manifest_sha256']=consumed_manifest + qa['scientific_archive_manifest_sha256']=model['source_manifest_sha256'] + qa['source_binding_configuration_sha256']=source_binding['source_binding_configuration_sha256'] + files['QA.json']=stable(qa) + if args.emit_json:print(stable(files),end="") + else: + if not args.output:ap.error("--output or --emit-json required") + args.output.mkdir(parents=True,exist_ok=False) + for name,content in files.items():(args.output/name).write_bytes(content.encode("ascii")) + print(stable(qa),end="") +if __name__=="__main__":main() + diff --git a/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_evidence.json b/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_evidence.json new file mode 100644 index 0000000000..cad55bc86d --- /dev/null +++ b/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_evidence.json @@ -0,0 +1,54 @@ +{ + "status": "PASS_LOCAL_ALL_EIGHT_FRESH_STAGES", + "archive_sha256": "0461e04fbf0fa0951534e3a41371e004adde8c71e2e2fe56b039c17a0f775412", + "manifest_sha256": "9f6d8637b9a119cfe4566a02ab2d704f23c502e5e4357b40c28ef85a3fd4de89", + "source_files": 143, + "source_drift": [], + "assertions_enabled": true, + "started_at_utc": "2026-10-10T03:06:46.003930+00:00", + "completed_at_utc": "2026-10-10T03:16:26.881867+00:00", + "exit_status": 0, + "elapsed_seconds": 580.8764400000218, + "verifier_seconds": 580.0584316670429, + "fresh_stages": [ + "banks", + "bit", + "complex", + "finite", + "math", + "primes", + "raw", + "scalar" + ], + "stage_timings_seconds": { + "banks": 56.94726499996614, + "bit": 95.11896820901893, + "complex": 43.77407150005456, + "finite": 0.16010216693393886, + "math": 0.6504860840504989, + "primes": 17.10306049999781, + "raw": 10.393582792021334, + "scalar": 328.12508979195263 + }, + "kappa_exact": "1777613869061/2500000000000000", + "kappa_decimal": "0.000711045547624400", + "scalar_negative_controls": 25, + "prime_negative_controls": 6, + "omitted_stage_negative_controls": [ + "omitted banks stage", + "omitted bit stage", + "omitted complex stage", + "omitted finite stage", + "omitted math stage", + "omitted primes stage", + "omitted raw stage", + "omitted scalar stage" + ], + "scope": "Conditional finite construction; inherited all-size compiler, weighted selector, common-ancestor chart, restored-row, routing, prime, recovery, complex symbolic and analytic interfaces remain assumptions.", + "original_receipt_sha256": "327b8b0d5b7b27bc3f25e17222168262671364a3a698e4915a249bed863a8b06", + "certificate_sha256": "7eb58ec449c932b7092481746390c776365f302a742836cddef5643c0351802b", + "python": "3.14.2", + "sympy": "1.14.0", + "platform": "macOS arm64", + "scope_note": "Sanitized scientific reproduction facts; local account paths and process details omitted. Public source closure will have a separate documentation manifest." +} diff --git a/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_hierarchy.json b/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_hierarchy.json new file mode 100644 index 0000000000..686a43b1c6 --- /dev/null +++ b/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_hierarchy.json @@ -0,0 +1,5243 @@ +{ + "schema": "full-hierarchy-reconciliation/1", + "frozen_graph_sha256": "b70e794473cb75f76941e190ed102c236a15b9a868c4d277eb28e05f843d116c", + "historical_baseline": "PR234 frozen V8; not the selected source527 realization", + "selected_manifest": "9f6d8637b9a119cfe4566a02ab2d704f23c502e5e4357b40c28ef85a3fd4de89", + "blocks": [ + { + "id": "A0a", + "name": "Read operands and lengths", + "ports": { + "in": "Bits", + "out": "Descriptors" + }, + "status": "inherited_outer_contract", + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "logical_functions": [ + "L0", + "L1" + ], + "historical_requirements": [ + "SYS-3" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/paired_cube_assembly.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/paired_cube_assembly.py", + "sha256": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + } + }, + { + "id": "A0b", + "name": "Select admissible sizes and precision", + "ports": { + "in": "Descriptors", + "out": "Descriptors" + }, + "status": "inherited_outer_contract", + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "logical_functions": [ + "L1" + ], + "historical_requirements": [ + "SYS-3", + "SYS-4", + "IF-5" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/paired_cube_assembly.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/paired_cube_assembly.py", + "sha256": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + } + }, + { + "id": "A0c", + "name": "Generate descriptors", + "ports": { + "in": "Descriptors", + "out": "Descriptors" + }, + "status": "inherited_outer_contract", + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "logical_functions": [ + "L1" + ], + "historical_requirements": [ + "SYS-3" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/paired_cube_assembly.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/paired_cube_assembly.py", + "sha256": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + } + }, + { + "id": "A0d", + "name": "Select ordinary cutoff and guards", + "ports": { + "in": "Descriptors", + "out": "Descriptors" + }, + "status": "inherited_outer_contract", + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "logical_functions": [ + "L1" + ], + "historical_requirements": [ + "SYS-3" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/paired_cube_assembly.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/paired_cube_assembly.py", + "sha256": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + } + }, + { + "id": "A1", + "name": "Extract radix digits", + "ports": { + "in": "Descriptors", + "out": "Digits" + }, + "status": "inherited_outer_contract", + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "logical_functions": [ + "L0", + "L1" + ], + "historical_requirements": [ + "SYS-1" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/integration_v2/upstream/build/references.bib": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/references.bib", + "sha256": "33cc2df13ccf85330849e8fb34d4ac7613b23f625787457a5b7b9aa6d7369476" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + } + }, + { + "id": "A2", + "name": "Scale bounded inputs", + "ports": { + "in": "Digits", + "out": "ScaledInputs" + }, + "status": "inherited_outer_contract", + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "logical_functions": [ + "L0", + "L1" + ], + "historical_requirements": [ + "SYS-1" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/integration_v2/upstream/build/references.bib": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/references.bib", + "sha256": "33cc2df13ccf85330849e8fb34d4ac7613b23f625787457a5b7b9aa6d7369476" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + } + }, + { + "id": "A3a", + "name": "Zero-pad operands", + "ports": { + "in": "ScaledInputs", + "out": "PaddedInputs" + }, + "status": "inherited_outer_contract", + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "logical_functions": [ + "L0", + "L2" + ], + "historical_requirements": [ + "SYS-1" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/integration_v2/upstream/build/references.bib": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/references.bib", + "sha256": "33cc2df13ccf85330849e8fb34d4ac7613b23f625787457a5b7b9aa6d7369476" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + } + }, + { + "id": "A3b", + "name": "Apply convolution-preserving CRT index map", + "ports": { + "in": "PaddedInputs", + "out": "CRTInputs" + }, + "status": "inherited_outer_contract", + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "logical_functions": [ + "L0", + "L2", + "L6" + ], + "historical_requirements": [ + "SYS-1" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/integration_v2/upstream/build/references.bib": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/references.bib", + "sha256": "33cc2df13ccf85330849e8fb34d4ac7613b23f625787457a5b7b9aa6d7369476" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + } + }, + { + "id": "A4a", + "name": "Gaussian expansion", + "ports": { + "in": "CRTInputs", + "out": "WorkingTensor" + }, + "status": "inherited_outer_contract", + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "logical_functions": [ + "L0", + "L2", + "L3" + ], + "historical_requirements": [ + "SYS-1", + "SYS-4", + "IF-1", + "IF-5" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/integration_v2/upstream/build/references.bib": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/references.bib", + "sha256": "33cc2df13ccf85330849e8fb34d4ac7613b23f625787457a5b7b9aa6d7369476" + }, + "processor_architectures/integration_v2/upstream/build/sections/06-transforms.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/06-transforms.tex", + "sha256": "924316e4bc905066281d8f9e8746a49d8829aeb393688608deb1e61c3c87853c" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + } + }, + { + "id": "A4b", + "name": "Chirp source transform", + "ports": { + "in": "WorkingTensor", + "out": "WorkingSpectrum" + }, + "status": "inherited_outer_contract", + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "logical_functions": [ + "L2", + "L3" + ], + "historical_requirements": [ + "SYS-1", + "SYS-4", + "IF-1", + "IF-5" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/integration_v2/upstream/build/references.bib": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/references.bib", + "sha256": "33cc2df13ccf85330849e8fb34d4ac7613b23f625787457a5b7b9aa6d7369476" + }, + "processor_architectures/integration_v2/upstream/build/sections/06-transforms.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/06-transforms.tex", + "sha256": "924316e4bc905066281d8f9e8746a49d8829aeb393688608deb1e61c3c87853c" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + } + }, + { + "id": "A4b1", + "name": "Twist into negacyclic ring", + "ports": { + "in": "SyntheticState", + "out": "SyntheticState" + }, + "status": "inherited_outer_contract", + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "logical_functions": [ + "L7" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-2", + "IF-5", + "IF-6" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/integration_v2/upstream/build/references.bib": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/references.bib", + "sha256": "33cc2df13ccf85330849e8fb34d4ac7613b23f625787457a5b7b9aa6d7369476" + }, + "processor_architectures/integration_v2/upstream/build/sections/06-transforms.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/06-transforms.tex", + "sha256": "924316e4bc905066281d8f9e8746a49d8829aeb393688608deb1e61c3c87853c" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + } + }, + { + "id": "A4b2", + "name": "Two normalized synthetic transforms", + "ports": { + "in": "SyntheticState", + "out": "SyntheticState" + }, + "status": "inherited_outer_contract", + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "logical_functions": [ + "L7" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-2", + "IF-5", + "IF-6" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/integration_v2/upstream/build/references.bib": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/references.bib", + "sha256": "33cc2df13ccf85330849e8fb34d4ac7613b23f625787457a5b7b9aa6d7369476" + }, + "processor_architectures/integration_v2/upstream/build/sections/06-transforms.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/06-transforms.tex", + "sha256": "924316e4bc905066281d8f9e8746a49d8829aeb393688608deb1e61c3c87853c" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + } + }, + { + "id": "A4b2a", + "name": "Arrange stored tensor layout", + "ports": { + "in": "SyntheticState", + "out": "SyntheticState" + }, + "status": "inherited_outer_contract", + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "logical_functions": [ + "L6" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-2", + "IF-5", + "IF-6" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/integration_v2/upstream/build/sections/06-transforms.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/06-transforms.tex", + "sha256": "924316e4bc905066281d8f9e8746a49d8829aeb393688608deb1e61c3c87853c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + } + }, + { + "id": "A4b2b", + "name": "Execute normalized butterfly rounds", + "ports": { + "call_B0": "BitState", + "call_C1": "ComplexState", + "in": "SyntheticState", + "out": "SyntheticState", + "receive_B0": "BitState", + "receive_C1": "ComplexState" + }, + "status": "inherited_outer_contract", + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "logical_functions": [ + "L7" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-2", + "IF-5", + "IF-6" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/integration_v2/upstream/build/sections/06-transforms.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/06-transforms.tex", + "sha256": "924316e4bc905066281d8f9e8746a49d8829aeb393688608deb1e61c3c87853c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + } + }, + { + "id": "A4b2c", + "name": "Apply exact signed polynomial twiddle", + "ports": { + "in": "SyntheticState", + "out": "SyntheticState" + }, + "status": "inherited_outer_contract", + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "logical_functions": [ + "L7" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-2", + "IF-5", + "IF-6" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/integration_v2/upstream/build/sections/06-transforms.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/06-transforms.tex", + "sha256": "924316e4bc905066281d8f9e8746a49d8829aeb393688608deb1e61c3c87853c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + } + }, + { + "id": "A4b2d", + "name": "Truncate round and clear work", + "ports": { + "in": "SyntheticState", + "out": "SyntheticState" + }, + "status": "inherited_outer_contract", + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "logical_functions": [ + "L7" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-2", + "IF-5", + "IF-6" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/integration_v2/upstream/build/sections/06-transforms.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/06-transforms.tex", + "sha256": "924316e4bc905066281d8f9e8746a49d8829aeb393688608deb1e61c3c87853c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + } + }, + { + "id": "A4b3", + "name": "Packed ring record products", + "ports": { + "in": "SyntheticState", + "out": "SyntheticState" + }, + "status": "inherited_outer_contract", + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "logical_functions": [ + "L7" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-2", + "IF-5", + "IF-6" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/integration_v2/upstream/build/references.bib": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/references.bib", + "sha256": "33cc2df13ccf85330849e8fb34d4ac7613b23f625787457a5b7b9aa6d7369476" + }, + "processor_architectures/integration_v2/upstream/build/sections/06-transforms.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/06-transforms.tex", + "sha256": "924316e4bc905066281d8f9e8746a49d8829aeb393688608deb1e61c3c87853c" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + } + }, + { + "id": "A4b4", + "name": "Opposite synthetic transform", + "ports": { + "in": "SyntheticState", + "out": "SyntheticState" + }, + "status": "inherited_outer_contract", + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "logical_functions": [ + "L7" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-2", + "IF-5", + "IF-6" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/integration_v2/upstream/build/references.bib": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/references.bib", + "sha256": "33cc2df13ccf85330849e8fb34d4ac7613b23f625787457a5b7b9aa6d7369476" + }, + "processor_architectures/integration_v2/upstream/build/sections/06-transforms.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/06-transforms.tex", + "sha256": "924316e4bc905066281d8f9e8746a49d8829aeb393688608deb1e61c3c87853c" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + } + }, + { + "id": "A4b4a", + "name": "Opposite rounds and normalization", + "ports": { + "in": "SyntheticState", + "out": "SyntheticState" + }, + "status": "inherited_outer_contract", + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "logical_functions": [ + "L6" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-2", + "IF-5", + "IF-6" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/integration_v2/upstream/build/sections/06-transforms.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/06-transforms.tex", + "sha256": "924316e4bc905066281d8f9e8746a49d8829aeb393688608deb1e61c3c87853c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + } + }, + { + "id": "A4b5", + "name": "Untwist ring coefficients", + "ports": { + "in": "SyntheticState", + "out": "SyntheticState" + }, + "status": "inherited_outer_contract", + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "logical_functions": [ + "L7" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-2", + "IF-5", + "IF-6" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/integration_v2/upstream/build/references.bib": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/references.bib", + "sha256": "33cc2df13ccf85330849e8fb34d4ac7613b23f625787457a5b7b9aa6d7369476" + }, + "processor_architectures/integration_v2/upstream/build/sections/06-transforms.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/06-transforms.tex", + "sha256": "924316e4bc905066281d8f9e8746a49d8829aeb393688608deb1e61c3c87853c" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + } + }, + { + "id": "A4c", + "name": "Gaussian compression", + "ports": { + "in": "WorkingSpectrum", + "out": "SourceSpectrum" + }, + "status": "inherited_outer_contract", + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "logical_functions": [ + "L2", + "L3" + ], + "historical_requirements": [ + "SYS-1", + "SYS-4", + "IF-1", + "IF-5" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/integration_v2/upstream/build/references.bib": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/references.bib", + "sha256": "33cc2df13ccf85330849e8fb34d4ac7613b23f625787457a5b7b9aa6d7369476" + }, + "processor_architectures/integration_v2/upstream/build/sections/06-transforms.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/06-transforms.tex", + "sha256": "924316e4bc905066281d8f9e8746a49d8829aeb393688608deb1e61c3c87853c" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + } + }, + { + "id": "A4c1", + "name": "Select ordered source samples", + "ports": { + "in": "ResamplingState", + "out": "ResamplingState" + }, + "status": "inherited_outer_contract", + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "logical_functions": [ + "L7" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-2", + "IF-5", + "IF-6" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + } + }, + { + "id": "A4c2", + "name": "Apply bounded Neumann correction", + "ports": { + "in": "ResamplingState", + "out": "ResamplingState" + }, + "status": "inherited_outer_contract", + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "logical_functions": [ + "L7" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-2", + "IF-5", + "IF-6" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + } + }, + { + "id": "A4c3", + "name": "Apply diagonal Gaussian correction", + "ports": { + "in": "ResamplingState", + "out": "ResamplingState" + }, + "status": "inherited_outer_contract", + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "logical_functions": [ + "L7" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-2", + "IF-5", + "IF-6" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + } + }, + { + "id": "A4d", + "name": "Return ordered source transforms", + "ports": { + "in": "SourceSpectrum", + "out": "PairedSpectrum" + }, + "status": "inherited_outer_contract", + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "logical_functions": [ + "L2", + "L3" + ], + "historical_requirements": [ + "SYS-1", + "SYS-4", + "IF-1", + "IF-5" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/integration_v2/upstream/build/references.bib": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/references.bib", + "sha256": "33cc2df13ccf85330849e8fb34d4ac7613b23f625787457a5b7b9aa6d7369476" + }, + "processor_architectures/integration_v2/upstream/build/sections/06-transforms.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/06-transforms.tex", + "sha256": "924316e4bc905066281d8f9e8746a49d8829aeb393688608deb1e61c3c87853c" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + } + }, + { + "id": "A4io", + "name": "Adapt records and axis layout", + "ports": { + "in": "WorkingTensor", + "out": "WorkingTensor" + }, + "status": "inherited_outer_contract", + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "logical_functions": [ + "L6" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-2", + "IF-5", + "IF-6" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + } + }, + { + "id": "A4p1", + "name": "Generate chirp and twist phase descriptors", + "ports": { + "in": "Descriptors", + "out": "PhaseDescriptor" + }, + "status": "inherited_outer_contract", + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "logical_functions": [ + "L7" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-2", + "IF-5", + "IF-6" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/paired_cube_assembly.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/paired_cube_assembly.py", + "sha256": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + } + }, + { + "id": "A4p2", + "name": "Evaluate bounded complex exponential", + "ports": { + "in": "PhaseDescriptor", + "out": "Factors" + }, + "status": "inherited_outer_contract", + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "logical_functions": [ + "L7" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-2", + "IF-5", + "IF-6" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/paired_cube_assembly.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/paired_cube_assembly.py", + "sha256": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + } + }, + { + "id": "A4p3", + "name": "Multiply phase factor and truncate", + "ports": { + "in": "PhaseApplicationInput", + "out": "WorkingTensor" + }, + "status": "inherited_outer_contract", + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "logical_functions": [ + "L7" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-2", + "IF-5", + "IF-6" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/paired_cube_assembly.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/paired_cube_assembly.py", + "sha256": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + } + }, + { + "id": "A5", + "name": "Multiply matching Fourier entries", + "ports": { + "in": "PairedSpectrum", + "out": "SpectrumProduct" + }, + "status": "inherited_outer_contract", + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "logical_functions": [ + "L0", + "L3" + ], + "historical_requirements": [ + "SYS-1" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/integration_v2/upstream/build/references.bib": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/references.bib", + "sha256": "33cc2df13ccf85330849e8fb34d4ac7613b23f625787457a5b7b9aa6d7369476" + }, + "processor_architectures/integration_v2/upstream/build/sections/06-transforms.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/06-transforms.tex", + "sha256": "924316e4bc905066281d8f9e8746a49d8829aeb393688608deb1e61c3c87853c" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + } + }, + { + "id": "A6", + "name": "Apply opposite-sign source transform", + "ports": { + "in": "SpectrumProduct", + "out": "ScaledConvolution" + }, + "status": "inherited_outer_contract", + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "logical_functions": [ + "L0", + "L3" + ], + "historical_requirements": [ + "SYS-1" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/integration_v2/upstream/build/references.bib": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/references.bib", + "sha256": "33cc2df13ccf85330849e8fb34d4ac7613b23f625787457a5b7b9aa6d7369476" + }, + "processor_architectures/integration_v2/upstream/build/sections/06-transforms.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/06-transforms.tex", + "sha256": "924316e4bc905066281d8f9e8746a49d8829aeb393688608deb1e61c3c87853c" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + } + }, + { + "id": "A7a", + "name": "First recovery normalization", + "ports": { + "in": "ScaledConvolution", + "out": "PartialRecovery" + }, + "status": "inherited_outer_contract", + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "logical_functions": [ + "L0", + "L4" + ], + "historical_requirements": [ + "SYS-1", + "SYS-4", + "IF-5", + "ARC-4" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + } + }, + { + "id": "A7b", + "name": "Complete recovery normalization and coefficient layout", + "ports": { + "in": "PartialRecovery", + "out": "NearIntegerCoefficients" + }, + "status": "inherited_outer_contract", + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "logical_functions": [ + "L0", + "L4" + ], + "historical_requirements": [ + "SYS-1", + "SYS-4", + "IF-5", + "ARC-4" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + } + }, + { + "id": "A8", + "name": "Round exact integer coefficients", + "ports": { + "in": "NearIntegerCoefficients", + "out": "IntegerCoefficients" + }, + "status": "inherited_outer_contract", + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "logical_functions": [ + "L0", + "L4" + ], + "historical_requirements": [ + "SYS-1", + "SYS-4", + "IF-5", + "ARC-4" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + } + }, + { + "id": "A9", + "name": "Carry and serialize exact product", + "ports": { + "in": "IntegerCoefficients", + "out": "Product" + }, + "status": "inherited_outer_contract", + "current_blocks": [ + "F16", + "F19", + "F20" + ], + "note": "Retained outer algorithm interface; this package does not execute the all-size transform/recovery internals.", + "logical_functions": [ + "L0", + "L5" + ], + "historical_requirements": [ + "SYS-1", + "SYS-4", + "ARC-4" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/integration_v2/upstream/build/sections/07-resampling.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/07-resampling.tex", + "sha256": "8a6b91670f9163afb54892489fa2210c77fe1b058f0325ec7d18b44b94be6e2c" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + } + }, + { + "id": "B0", + "name": "Bit address-interchange contract", + "ports": { + "in": "BitState", + "out": "BitState", + "return_A4b2b": "BitState" + }, + "status": "current_supplier_reallocation", + "current_blocks": [ + "F10", + "F11", + "F14", + "F20" + ], + "note": "Logical responsibility mapped to source527/hybrid. Historical source471 operations and counts are not transplanted one-for-one.", + "logical_functions": [ + "L7" + ], + "historical_requirements": [ + "SYS-2", + "IF-1" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py", + "sha256": "0cbec81a11e758156e9303f63dc8c617601da69523073fdf2a77394d76acf56a" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/scalar_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/scalar_check.py", + "sha256": "ddedeb4d40262123287fb371f5aa5eab67ae73f65167f9144ef134c2edcce142" + } + } + }, + { + "id": "B1", + "name": "Compensate old dirty response", + "ports": { + "in": "BitState", + "out": "BitState" + }, + "status": "current_supplier_reallocation", + "current_blocks": [ + "F02", + "F10" + ], + "note": "Logical responsibility mapped to source527/hybrid. Historical source471 operations and counts are not transplanted one-for-one.", + "logical_functions": [ + "L7" + ], + "historical_requirements": [ + "IF-2" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/five_stage_source471_physical_telescope_20261009.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/five_stage_source471_physical_telescope_20261009.py", + "sha256": "5c28c44e10548c234f8b3454e91c1f34695a20559ce6ff8ced009db6bcbbaf58" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/raw_ledger.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/raw_ledger.py", + "sha256": "89ba53114488a77a12b941db2787850c2c41612ad0332c47699a011c0c596b32" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py", + "sha256": "0cbec81a11e758156e9303f63dc8c617601da69523073fdf2a77394d76acf56a" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/scalar_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/scalar_check.py", + "sha256": "ddedeb4d40262123287fb371f5aa5eab67ae73f65167f9144ef134c2edcce142" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + } + }, + { + "id": "B10", + "name": "Compose five phase-major bit windows", + "ports": { + "in": "BitState", + "out": "BitState" + }, + "status": "current_supplier_reallocation", + "current_blocks": [ + "F11" + ], + "note": "Logical responsibility mapped to source527/hybrid. Historical source471 operations and counts are not transplanted one-for-one.", + "logical_functions": [ + "L10" + ], + "historical_requirements": [ + "IF-6", + "ARC-1" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/five_stage_bit_global_lowering_20261009.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/five_stage_bit_global_lowering_20261009.py", + "sha256": "2f4fd25eebbfdfbf37e2375e23b4827fda62776dff3b3b64e971dd215b2664bc" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/five_stage_bit_global_lowering_geometry_20261009.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/five_stage_bit_global_lowering_geometry_20261009.py", + "sha256": "4a619e5d40c05295ef83183ee0d11bee12d0053bab2596ec9cfcd7fea4936157" + } + } + }, + { + "id": "B11", + "name": "Complete independent dirty frames", + "ports": { + "in": "BitState", + "out": "BitState" + }, + "status": "current_supplier_reallocation", + "current_blocks": [ + "F12", + "F13", + "F14" + ], + "note": "Independent completions are discharged only by the current full-bank proof and exact tags. The historical exterior-completion realization is replaced.", + "logical_functions": [ + "L9" + ], + "historical_requirements": [ + "SYS-2", + "IF-3", + "IF-6", + "ARC-2" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/five_stage_bit_global_lowering_20261009.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/five_stage_bit_global_lowering_20261009.py", + "sha256": "2f4fd25eebbfdfbf37e2375e23b4827fda62776dff3b3b64e971dd215b2664bc" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/raw_ledger.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/raw_ledger.py", + "sha256": "89ba53114488a77a12b941db2787850c2c41612ad0332c47699a011c0c596b32" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/FINITE_BIT_ACCOUNTING.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/FINITE_BIT_ACCOUNTING.md", + "sha256": "602923520af184670170bf159fde7b4c72e79a72570eddd7746b7c97bc51fc5b" + } + } + }, + { + "id": "B12", + "name": "Exchange terminal banks", + "ports": { + "in": "BitState", + "out": "BitState" + }, + "status": "current_supplier_reallocation", + "current_blocks": [ + "F11" + ], + "note": "Logical responsibility mapped to source527/hybrid. Historical source471 operations and counts are not transplanted one-for-one.", + "logical_functions": [ + "L9" + ], + "historical_requirements": [ + "SYS-2" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/five_stage_bit_global_lowering_20261009.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/five_stage_bit_global_lowering_20261009.py", + "sha256": "2f4fd25eebbfdfbf37e2375e23b4827fda62776dff3b3b64e971dd215b2664bc" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/raw_ledger.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/raw_ledger.py", + "sha256": "89ba53114488a77a12b941db2787850c2c41612ad0332c47699a011c0c596b32" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/FINITE_BIT_ACCOUNTING.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/FINITE_BIT_ACCOUNTING.md", + "sha256": "602923520af184670170bf159fde7b4c72e79a72570eddd7746b7c97bc51fc5b" + } + } + }, + { + "id": "B2", + "name": "Compute framed helper word", + "ports": { + "in": "BitState", + "out": "BitState" + }, + "status": "current_supplier_reallocation", + "current_blocks": [ + "F02", + "F03", + "F07", + "F08" + ], + "note": "Logical responsibility mapped to source527/hybrid. Historical source471 operations and counts are not transplanted one-for-one.", + "logical_functions": [ + "L7" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-2", + "IF-5", + "IF-6" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/five_stage_source471_physical_telescope_20261009.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/five_stage_source471_physical_telescope_20261009.py", + "sha256": "5c28c44e10548c234f8b3454e91c1f34695a20559ce6ff8ced009db6bcbbaf58" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/raw_ledger.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/raw_ledger.py", + "sha256": "89ba53114488a77a12b941db2787850c2c41612ad0332c47699a011c0c596b32" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py", + "sha256": "0cbec81a11e758156e9303f63dc8c617601da69523073fdf2a77394d76acf56a" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/scalar_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/scalar_check.py", + "sha256": "ddedeb4d40262123287fb371f5aa5eab67ae73f65167f9144ef134c2edcce142" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + } + }, + { + "id": "B3", + "name": "Manage copied centers", + "ports": { + "in": "BitState", + "out": "BitState" + }, + "status": "current_supplier_reallocation", + "current_blocks": [ + "F03", + "F11" + ], + "note": "Logical responsibility mapped to source527/hybrid. Historical source471 operations and counts are not transplanted one-for-one.", + "logical_functions": [ + "L7", + "L8" + ], + "historical_requirements": [ + "IF-3" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/five_stage_source471_physical_telescope_20261009.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/five_stage_source471_physical_telescope_20261009.py", + "sha256": "5c28c44e10548c234f8b3454e91c1f34695a20559ce6ff8ced009db6bcbbaf58" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/raw_ledger.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/raw_ledger.py", + "sha256": "89ba53114488a77a12b941db2787850c2c41612ad0332c47699a011c0c596b32" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py", + "sha256": "0cbec81a11e758156e9303f63dc8c617601da69523073fdf2a77394d76acf56a" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/scalar_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/scalar_check.py", + "sha256": "ddedeb4d40262123287fb371f5aa5eab67ae73f65167f9144ef134c2edcce142" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + } + }, + { + "id": "B4", + "name": "Deliver target updates", + "ports": { + "in": "BitState", + "out": "BitState" + }, + "status": "current_supplier_reallocation", + "current_blocks": [ + "F03", + "F08", + "F10" + ], + "note": "Logical responsibility mapped to source527/hybrid. Historical source471 operations and counts are not transplanted one-for-one.", + "logical_functions": [ + "L7" + ], + "historical_requirements": [ + "IF-2" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/five_stage_source471_physical_telescope_20261009.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/five_stage_source471_physical_telescope_20261009.py", + "sha256": "5c28c44e10548c234f8b3454e91c1f34695a20559ce6ff8ced009db6bcbbaf58" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/raw_ledger.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/raw_ledger.py", + "sha256": "89ba53114488a77a12b941db2787850c2c41612ad0332c47699a011c0c596b32" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py", + "sha256": "0cbec81a11e758156e9303f63dc8c617601da69523073fdf2a77394d76acf56a" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/scalar_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/scalar_check.py", + "sha256": "ddedeb4d40262123287fb371f5aa5eab67ae73f65167f9144ef134c2edcce142" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + } + }, + { + "id": "B5", + "name": "Restore scalar source and dirt", + "ports": { + "in": "BitState", + "out": "BitState" + }, + "status": "current_supplier_reallocation", + "current_blocks": [ + "F10" + ], + "note": "Logical responsibility mapped to source527/hybrid. Historical source471 operations and counts are not transplanted one-for-one.", + "logical_functions": [ + "L7", + "L9" + ], + "historical_requirements": [ + "SYS-2", + "IF-2" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/five_stage_source471_physical_telescope_20261009.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/five_stage_source471_physical_telescope_20261009.py", + "sha256": "5c28c44e10548c234f8b3454e91c1f34695a20559ce6ff8ced009db6bcbbaf58" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/raw_ledger.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/raw_ledger.py", + "sha256": "89ba53114488a77a12b941db2787850c2c41612ad0332c47699a011c0c596b32" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py", + "sha256": "0cbec81a11e758156e9303f63dc8c617601da69523073fdf2a77394d76acf56a" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/scalar_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/scalar_check.py", + "sha256": "ddedeb4d40262123287fb371f5aa5eab67ae73f65167f9144ef134c2edcce142" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + } + }, + { + "id": "B6a", + "name": "Start source loan", + "ports": { + "in": "BitState", + "out": "BitState" + }, + "status": "current_supplier_reallocation", + "current_blocks": [ + "F02" + ], + "note": "Logical responsibility mapped to source527/hybrid. Historical source471 operations and counts are not transplanted one-for-one.", + "logical_functions": [ + "L8" + ], + "historical_requirements": [ + "SYS-2", + "IF-3" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/borrow/selection.json": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/borrow/selection.json", + "sha256": "6932749407e14b199651f0a7deff02c6de74e2c1be0a1300263f1e164927fb8b" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py", + "sha256": "0cbec81a11e758156e9303f63dc8c617601da69523073fdf2a77394d76acf56a" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/scalar_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/scalar_check.py", + "sha256": "ddedeb4d40262123287fb371f5aa5eab67ae73f65167f9144ef134c2edcce142" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + } + }, + { + "id": "B6b", + "name": "Mix source carrier", + "ports": { + "in": "BitState", + "out": "BitState" + }, + "status": "current_supplier_reallocation", + "current_blocks": [ + "F02" + ], + "note": "Logical responsibility mapped to source527/hybrid. Historical source471 operations and counts are not transplanted one-for-one.", + "logical_functions": [ + "L8" + ], + "historical_requirements": [ + "SYS-2", + "IF-3" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/borrow/selection.json": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/borrow/selection.json", + "sha256": "6932749407e14b199651f0a7deff02c6de74e2c1be0a1300263f1e164927fb8b" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py", + "sha256": "0cbec81a11e758156e9303f63dc8c617601da69523073fdf2a77394d76acf56a" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/scalar_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/scalar_check.py", + "sha256": "ddedeb4d40262123287fb371f5aa5eab67ae73f65167f9144ef134c2edcce142" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + } + }, + { + "id": "B6c", + "name": "Use loan alias", + "ports": { + "in": "BitState", + "out": "BitState" + }, + "status": "current_supplier_reallocation", + "current_blocks": [ + "F02" + ], + "note": "Logical responsibility mapped to source527/hybrid. Historical source471 operations and counts are not transplanted one-for-one.", + "logical_functions": [ + "L8" + ], + "historical_requirements": [ + "SYS-2", + "IF-3" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/borrow/selection.json": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/borrow/selection.json", + "sha256": "6932749407e14b199651f0a7deff02c6de74e2c1be0a1300263f1e164927fb8b" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py", + "sha256": "0cbec81a11e758156e9303f63dc8c617601da69523073fdf2a77394d76acf56a" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/scalar_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/scalar_check.py", + "sha256": "ddedeb4d40262123287fb371f5aa5eab67ae73f65167f9144ef134c2edcce142" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + } + }, + { + "id": "B6d", + "name": "Restore borrowed source", + "ports": { + "in": "BitState", + "out": "BitState" + }, + "status": "current_supplier_reallocation", + "current_blocks": [ + "F02", + "F10" + ], + "note": "Logical responsibility mapped to source527/hybrid. Historical source471 operations and counts are not transplanted one-for-one.", + "logical_functions": [ + "L8", + "L9" + ], + "historical_requirements": [ + "SYS-2", + "IF-3" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/borrow/selection.json": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/borrow/selection.json", + "sha256": "6932749407e14b199651f0a7deff02c6de74e2c1be0a1300263f1e164927fb8b" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py", + "sha256": "0cbec81a11e758156e9303f63dc8c617601da69523073fdf2a77394d76acf56a" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/scalar_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/scalar_check.py", + "sha256": "ddedeb4d40262123287fb371f5aa5eab67ae73f65167f9144ef134c2edcce142" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + } + }, + { + "id": "B6e", + "name": "Undo carrier mix", + "ports": { + "in": "BitState", + "out": "BitState" + }, + "status": "current_supplier_reallocation", + "current_blocks": [ + "F02", + "F10" + ], + "note": "Logical responsibility mapped to source527/hybrid. Historical source471 operations and counts are not transplanted one-for-one.", + "logical_functions": [ + "L8", + "L9" + ], + "historical_requirements": [ + "SYS-2", + "IF-3" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/borrow/selection.json": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/borrow/selection.json", + "sha256": "6932749407e14b199651f0a7deff02c6de74e2c1be0a1300263f1e164927fb8b" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py", + "sha256": "0cbec81a11e758156e9303f63dc8c617601da69523073fdf2a77394d76acf56a" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/scalar_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/scalar_check.py", + "sha256": "ddedeb4d40262123287fb371f5aa5eab67ae73f65167f9144ef134c2edcce142" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + } + }, + { + "id": "B7a", + "name": "Prepare source-owned compensation", + "ports": { + "in": "BitState", + "out": "BitState" + }, + "status": "current_supplier_reallocation", + "current_blocks": [ + "F02", + "F06" + ], + "note": "Logical responsibility mapped to source527/hybrid. Historical source471 operations and counts are not transplanted one-for-one.", + "logical_functions": [ + "L8" + ], + "historical_requirements": [ + "IF-2" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/borrow/selection.json": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/borrow/selection.json", + "sha256": "6932749407e14b199651f0a7deff02c6de74e2c1be0a1300263f1e164927fb8b" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py", + "sha256": "0cbec81a11e758156e9303f63dc8c617601da69523073fdf2a77394d76acf56a" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/scalar_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/scalar_check.py", + "sha256": "ddedeb4d40262123287fb371f5aa5eab67ae73f65167f9144ef134c2edcce142" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + } + }, + { + "id": "B7b", + "name": "Deliver compensated target response", + "ports": { + "in": "BitState", + "out": "BitState" + }, + "status": "current_supplier_reallocation", + "current_blocks": [ + "F06", + "F08" + ], + "note": "Logical responsibility mapped to source527/hybrid. Historical source471 operations and counts are not transplanted one-for-one.", + "logical_functions": [ + "L8" + ], + "historical_requirements": [ + "IF-2" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/borrow/selection.json": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/borrow/selection.json", + "sha256": "6932749407e14b199651f0a7deff02c6de74e2c1be0a1300263f1e164927fb8b" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py", + "sha256": "0cbec81a11e758156e9303f63dc8c617601da69523073fdf2a77394d76acf56a" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/scalar_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/scalar_check.py", + "sha256": "ddedeb4d40262123287fb371f5aa5eab67ae73f65167f9144ef134c2edcce142" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + } + }, + { + "id": "B7c", + "name": "Keep only desired signal", + "ports": { + "in": "BitState", + "out": "BitState" + }, + "status": "current_supplier_reallocation", + "current_blocks": [ + "F06", + "F08", + "F10" + ], + "note": "Logical responsibility mapped to source527/hybrid. Historical source471 operations and counts are not transplanted one-for-one.", + "logical_functions": [ + "L8" + ], + "historical_requirements": [ + "IF-2" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/borrow/selection.json": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/borrow/selection.json", + "sha256": "6932749407e14b199651f0a7deff02c6de74e2c1be0a1300263f1e164927fb8b" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py", + "sha256": "0cbec81a11e758156e9303f63dc8c617601da69523073fdf2a77394d76acf56a" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/scalar_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/scalar_check.py", + "sha256": "ddedeb4d40262123287fb371f5aa5eab67ae73f65167f9144ef134c2edcce142" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + } + }, + { + "id": "B8a", + "name": "Describe full address identity", + "ports": { + "in": "BitState", + "out": "BitState" + }, + "status": "current_supplier_reallocation", + "current_blocks": [ + "F11", + "F14" + ], + "note": "Logical responsibility mapped to source527/hybrid. Historical source471 operations and counts are not transplanted one-for-one.", + "logical_functions": [ + "L6" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-4", + "ARC-2" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/five_stage_bit_global_lowering_20261009.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/five_stage_bit_global_lowering_20261009.py", + "sha256": "2f4fd25eebbfdfbf37e2375e23b4827fda62776dff3b3b64e971dd215b2664bc" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/five_stage_bit_global_lowering_geometry_20261009.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/five_stage_bit_global_lowering_geometry_20261009.py", + "sha256": "4a619e5d40c05295ef83183ee0d11bee12d0053bab2596ec9cfcd7fea4936157" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/prime_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/prime_check.py", + "sha256": "79c013c703e1f52c6afc225342015a9572230b643b8a9dbf6206bc4f765f642c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/FINITE_BIT_ACCOUNTING.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/FINITE_BIT_ACCOUNTING.md", + "sha256": "602923520af184670170bf159fde7b4c72e79a72570eddd7746b7c97bc51fc5b" + } + } + }, + { + "id": "B8b", + "name": "Execute charged complete-stream route", + "ports": { + "in": "BitState", + "out": "BitState" + }, + "status": "current_supplier_reallocation", + "current_blocks": [ + "F20" + ], + "note": "Logical responsibility mapped to source527/hybrid. Historical source471 operations and counts are not transplanted one-for-one.", + "logical_functions": [ + "L6" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-4", + "ARC-2" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/five_stage_bit_global_lowering_20261009.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/five_stage_bit_global_lowering_20261009.py", + "sha256": "2f4fd25eebbfdfbf37e2375e23b4827fda62776dff3b3b64e971dd215b2664bc" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/five_stage_bit_global_lowering_geometry_20261009.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/five_stage_bit_global_lowering_geometry_20261009.py", + "sha256": "4a619e5d40c05295ef83183ee0d11bee12d0053bab2596ec9cfcd7fea4936157" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/prime_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/prime_check.py", + "sha256": "79c013c703e1f52c6afc225342015a9572230b643b8a9dbf6206bc4f765f642c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/FINITE_BIT_ACCOUNTING.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/FINITE_BIT_ACCOUNTING.md", + "sha256": "602923520af184670170bf159fde7b4c72e79a72570eddd7746b7c97bc51fc5b" + } + } + }, + { + "id": "B9a", + "name": "Call exact nested recursive residual", + "ports": { + "call_R1": "ResidualRequest", + "in": "BitState", + "out": "BitState", + "receive_R1": "ResidualResponse" + }, + "status": "current_supplier_reallocation", + "current_blocks": [ + "F11", + "F17", + "F20" + ], + "note": "Logical responsibility mapped to source527/hybrid. Historical source471 operations and counts are not transplanted one-for-one.", + "logical_functions": [ + "L6" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-4", + "ARC-3" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/five_stage_bit_global_lowering_20261009.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/five_stage_bit_global_lowering_20261009.py", + "sha256": "2f4fd25eebbfdfbf37e2375e23b4827fda62776dff3b3b64e971dd215b2664bc" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/five_stage_bit_global_lowering_geometry_20261009.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/five_stage_bit_global_lowering_geometry_20261009.py", + "sha256": "4a619e5d40c05295ef83183ee0d11bee12d0053bab2596ec9cfcd7fea4936157" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/prime_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/prime_check.py", + "sha256": "79c013c703e1f52c6afc225342015a9572230b643b8a9dbf6206bc4f765f642c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/FINITE_BIT_ACCOUNTING.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/FINITE_BIT_ACCOUNTING.md", + "sha256": "602923520af184670170bf159fde7b4c72e79a72570eddd7746b7c97bc51fc5b" + } + } + }, + { + "id": "B9b", + "name": "Apply equal-frame scalar gate", + "ports": { + "in": "BitState", + "out": "BitState" + }, + "status": "current_supplier_reallocation", + "current_blocks": [ + "F03", + "F04" + ], + "note": "Logical responsibility mapped to source527/hybrid. Historical source471 operations and counts are not transplanted one-for-one.", + "logical_functions": [ + "L6" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-4" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/five_stage_bit_global_lowering_20261009.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/five_stage_bit_global_lowering_20261009.py", + "sha256": "2f4fd25eebbfdfbf37e2375e23b4827fda62776dff3b3b64e971dd215b2664bc" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/five_stage_bit_global_lowering_geometry_20261009.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/five_stage_bit_global_lowering_geometry_20261009.py", + "sha256": "4a619e5d40c05295ef83183ee0d11bee12d0053bab2596ec9cfcd7fea4936157" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/prime_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/prime_check.py", + "sha256": "79c013c703e1f52c6afc225342015a9572230b643b8a9dbf6206bc4f765f642c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/FINITE_BIT_ACCOUNTING.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/FINITE_BIT_ACCOUNTING.md", + "sha256": "602923520af184670170bf159fde7b4c72e79a72570eddd7746b7c97bc51fc5b" + } + } + }, + { + "id": "C1", + "name": "Compensate old complex response", + "ports": { + "in": "ComplexState", + "out": "ComplexState", + "return_A4b2b": "ComplexState" + }, + "status": "retained_complex_recipe", + "current_blocks": [ + "F16" + ], + "note": "Current pinned complex supplier expands this responsibility; use its exact labels, phases, lifetimes and source theorems.", + "logical_functions": [ + "L7", + "L8" + ], + "historical_requirements": [ + "IF-1" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/inputs/complex/source-pins.json": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/inputs/complex/source-pins.json", + "sha256": "de0daf6847185d7a6911535e3012c1a91de1e32b5da8204beec26b37523ad569" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/portable_complex.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/portable_complex.py", + "sha256": "797e144c0040d78a4731a6eaa61c0edb9803a08462f885ed014cbca9d9991d82" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + } + }, + { + "id": "C10", + "name": "Backward transposed-center macro", + "ports": { + "in": "ComplexState", + "out": "ComplexState" + }, + "status": "retained_complex_recipe", + "current_blocks": [ + "F16" + ], + "note": "Current pinned complex supplier expands this responsibility; use its exact labels, phases, lifetimes and source theorems.", + "logical_functions": [ + "L8" + ], + "historical_requirements": [ + "IF-3" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/portable_complex.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/portable_complex.py", + "sha256": "797e144c0040d78a4731a6eaa61c0edb9803a08462f885ed014cbca9d9991d82" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/copied-centers-lemma.tex": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/copied-centers-lemma.tex", + "sha256": "d0ce6d3d504996aadb098227885224e48df46101daec8893523a0a8b7364d8fe" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + } + }, + { + "id": "C11a", + "name": "Copy scalar work", + "ports": { + "in": "ComplexState", + "out": "ComplexState" + }, + "status": "retained_complex_recipe", + "current_blocks": [ + "F16" + ], + "note": "Current pinned complex supplier expands this responsibility; use its exact labels, phases, lifetimes and source theorems.", + "logical_functions": [ + "L8" + ], + "historical_requirements": [ + "SYS-3", + "SYS-4", + "IF-3", + "IF-5" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/portable_complex.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/portable_complex.py", + "sha256": "797e144c0040d78a4731a6eaa61c0edb9803a08462f885ed014cbca9d9991d82" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/copied-centers-lemma.tex": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/copied-centers-lemma.tex", + "sha256": "d0ce6d3d504996aadb098227885224e48df46101daec8893523a0a8b7364d8fe" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + } + }, + { + "id": "C11b", + "name": "Scale exact rational coefficient", + "ports": { + "in": "ComplexState", + "out": "ComplexState" + }, + "status": "retained_complex_recipe", + "current_blocks": [ + "F16" + ], + "note": "Current pinned complex supplier expands this responsibility; use its exact labels, phases, lifetimes and source theorems.", + "logical_functions": [ + "L8" + ], + "historical_requirements": [ + "SYS-3", + "SYS-4", + "IF-3", + "IF-5" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/portable_complex.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/portable_complex.py", + "sha256": "797e144c0040d78a4731a6eaa61c0edb9803a08462f885ed014cbca9d9991d82" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/copied-centers-lemma.tex": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/copied-centers-lemma.tex", + "sha256": "d0ce6d3d504996aadb098227885224e48df46101daec8893523a0a8b7364d8fe" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + } + }, + { + "id": "C11c", + "name": "Accumulate scalar update", + "ports": { + "in": "ComplexState", + "out": "ComplexState" + }, + "status": "retained_complex_recipe", + "current_blocks": [ + "F16" + ], + "note": "Current pinned complex supplier expands this responsibility; use its exact labels, phases, lifetimes and source theorems.", + "logical_functions": [ + "L8" + ], + "historical_requirements": [ + "SYS-3", + "SYS-4", + "IF-3", + "IF-5" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/portable_complex.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/portable_complex.py", + "sha256": "797e144c0040d78a4731a6eaa61c0edb9803a08462f885ed014cbca9d9991d82" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/copied-centers-lemma.tex": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/copied-centers-lemma.tex", + "sha256": "d0ce6d3d504996aadb098227885224e48df46101daec8893523a0a8b7364d8fe" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + } + }, + { + "id": "C11d", + "name": "Clear scalar work", + "ports": { + "in": "ComplexState", + "out": "ComplexState" + }, + "status": "retained_complex_recipe", + "current_blocks": [ + "F16" + ], + "note": "Current pinned complex supplier expands this responsibility; use its exact labels, phases, lifetimes and source theorems.", + "logical_functions": [ + "L8" + ], + "historical_requirements": [ + "SYS-3", + "SYS-4", + "IF-3", + "IF-5" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/portable_complex.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/portable_complex.py", + "sha256": "797e144c0040d78a4731a6eaa61c0edb9803a08462f885ed014cbca9d9991d82" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/copied-centers-lemma.tex": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/copied-centers-lemma.tex", + "sha256": "d0ce6d3d504996aadb098227885224e48df46101daec8893523a0a8b7364d8fe" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + } + }, + { + "id": "C12a", + "name": "Route complex owner labels", + "ports": { + "in": "ComplexState", + "out": "ComplexState" + }, + "status": "retained_complex_recipe", + "current_blocks": [ + "F16" + ], + "note": "Current pinned complex supplier expands this responsibility; use its exact labels, phases, lifetimes and source theorems.", + "logical_functions": [ + "L6" + ], + "historical_requirements": [ + "ARC-1" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/inputs/complex/sources/Work__GCert__Chain__NetDef.lean": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/inputs/complex/sources/Work__GCert__Chain__NetDef.lean", + "sha256": "6e17a68b1e988969f6eb77000028f7ed877e687b8ad3976ec1707fcfe1d2f520" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/portable_complex.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/portable_complex.py", + "sha256": "797e144c0040d78a4731a6eaa61c0edb9803a08462f885ed014cbca9d9991d82" + } + } + }, + { + "id": "C12b", + "name": "Compose five complex windows", + "ports": { + "in": "ComplexState", + "out": "ComplexState" + }, + "status": "retained_complex_recipe", + "current_blocks": [ + "F16" + ], + "note": "Current pinned complex supplier expands this responsibility; use its exact labels, phases, lifetimes and source theorems.", + "logical_functions": [ + "L10" + ], + "historical_requirements": [ + "ARC-1" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/inputs/complex/sources/Work__GCert__Chain__NetDef.lean": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/inputs/complex/sources/Work__GCert__Chain__NetDef.lean", + "sha256": "6e17a68b1e988969f6eb77000028f7ed877e687b8ad3976ec1707fcfe1d2f520" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/portable_complex.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/portable_complex.py", + "sha256": "797e144c0040d78a4731a6eaa61c0edb9803a08462f885ed014cbca9d9991d82" + } + } + }, + { + "id": "C12c", + "name": "Complete terminal complex exchange", + "ports": { + "in": "ComplexState", + "out": "ComplexState" + }, + "status": "retained_complex_recipe", + "current_blocks": [ + "F16" + ], + "note": "Current pinned complex supplier expands this responsibility; use its exact labels, phases, lifetimes and source theorems.", + "logical_functions": [ + "L9" + ], + "historical_requirements": [ + "ARC-1" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/inputs/complex/sources/Work__GCert__Chain__NetDef.lean": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/inputs/complex/sources/Work__GCert__Chain__NetDef.lean", + "sha256": "6e17a68b1e988969f6eb77000028f7ed877e687b8ad3976ec1707fcfe1d2f520" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/portable_complex.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/portable_complex.py", + "sha256": "797e144c0040d78a4731a6eaa61c0edb9803a08462f885ed014cbca9d9991d82" + } + } + }, + { + "id": "C13", + "name": "Synthesize phase-correct residual", + "ports": { + "call_R1": "ResidualRequest", + "in": "ComplexState", + "out": "ComplexState", + "receive_R1": "ResidualResponse" + }, + "status": "retained_complex_recipe", + "current_blocks": [ + "F16" + ], + "note": "Current pinned complex supplier expands this responsibility; use its exact labels, phases, lifetimes and source theorems.", + "logical_functions": [ + "L6", + "L7" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-4", + "ARC-3" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/FINITE_BIT_ACCOUNTING.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/FINITE_BIT_ACCOUNTING.md", + "sha256": "602923520af184670170bf159fde7b4c72e79a72570eddd7746b7c97bc51fc5b" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + } + }, + { + "id": "C2", + "name": "Adapt exact complex entry labels", + "ports": { + "in": "ComplexState", + "out": "ComplexState" + }, + "status": "retained_complex_recipe", + "current_blocks": [ + "F16" + ], + "note": "Current pinned complex supplier expands this responsibility; use its exact labels, phases, lifetimes and source theorems.", + "logical_functions": [ + "L7" + ], + "historical_requirements": [ + "IF-4" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/inputs/complex/source-pins.json": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/inputs/complex/source-pins.json", + "sha256": "de0daf6847185d7a6911535e3012c1a91de1e32b5da8204beec26b37523ad569" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/portable_complex.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/portable_complex.py", + "sha256": "797e144c0040d78a4731a6eaa61c0edb9803a08462f885ed014cbca9d9991d82" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + } + }, + { + "id": "C3", + "name": "Perform phase A live climbs", + "ports": { + "in": "ComplexState", + "out": "ComplexState" + }, + "status": "retained_complex_recipe", + "current_blocks": [ + "F16" + ], + "note": "Current pinned complex supplier expands this responsibility; use its exact labels, phases, lifetimes and source theorems.", + "logical_functions": [ + "L7" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-2", + "IF-5", + "IF-6" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/inputs/complex/source-pins.json": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/inputs/complex/source-pins.json", + "sha256": "de0daf6847185d7a6911535e3012c1a91de1e32b5da8204beec26b37523ad569" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/portable_complex.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/portable_complex.py", + "sha256": "797e144c0040d78a4731a6eaa61c0edb9803a08462f885ed014cbca9d9991d82" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + } + }, + { + "id": "C4", + "name": "Run retained copied centers", + "ports": { + "in": "ComplexState", + "out": "ComplexState" + }, + "status": "retained_complex_recipe", + "current_blocks": [ + "F16" + ], + "note": "Current pinned complex supplier expands this responsibility; use its exact labels, phases, lifetimes and source theorems.", + "logical_functions": [ + "L7" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-2", + "IF-5", + "IF-6" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/inputs/complex/source-pins.json": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/inputs/complex/source-pins.json", + "sha256": "de0daf6847185d7a6911535e3012c1a91de1e32b5da8204beec26b37523ad569" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/portable_complex.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/portable_complex.py", + "sha256": "797e144c0040d78a4731a6eaa61c0edb9803a08462f885ed014cbca9d9991d82" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + } + }, + { + "id": "C5", + "name": "Perform phase B live climbs", + "ports": { + "in": "ComplexState", + "out": "ComplexState" + }, + "status": "retained_complex_recipe", + "current_blocks": [ + "F16" + ], + "note": "Current pinned complex supplier expands this responsibility; use its exact labels, phases, lifetimes and source theorems.", + "logical_functions": [ + "L7" + ], + "historical_requirements": [ + "SYS-3", + "IF-1", + "IF-2", + "IF-5", + "IF-6" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/inputs/complex/source-pins.json": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/inputs/complex/source-pins.json", + "sha256": "de0daf6847185d7a6911535e3012c1a91de1e32b5da8204beec26b37523ad569" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/portable_complex.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/portable_complex.py", + "sha256": "797e144c0040d78a4731a6eaa61c0edb9803a08462f885ed014cbca9d9991d82" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + } + }, + { + "id": "C6", + "name": "Finish live climbs", + "ports": { + "in": "ComplexState", + "out": "ComplexState" + }, + "status": "retained_complex_recipe", + "current_blocks": [ + "F16" + ], + "note": "Current pinned complex supplier expands this responsibility; use its exact labels, phases, lifetimes and source theorems.", + "logical_functions": [ + "L7" + ], + "historical_requirements": [ + "IF-2" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/inputs/complex/source-pins.json": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/inputs/complex/source-pins.json", + "sha256": "de0daf6847185d7a6911535e3012c1a91de1e32b5da8204beec26b37523ad569" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/portable_complex.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/portable_complex.py", + "sha256": "797e144c0040d78a4731a6eaa61c0edb9803a08462f885ed014cbca9d9991d82" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + } + }, + { + "id": "C7", + "name": "Adapt exact complex exit labels", + "ports": { + "in": "ComplexState", + "out": "ComplexState" + }, + "status": "retained_complex_recipe", + "current_blocks": [ + "F16" + ], + "note": "Current pinned complex supplier expands this responsibility; use its exact labels, phases, lifetimes and source theorems.", + "logical_functions": [ + "L7" + ], + "historical_requirements": [ + "IF-2", + "IF-4" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/inputs/complex/source-pins.json": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/inputs/complex/source-pins.json", + "sha256": "de0daf6847185d7a6911535e3012c1a91de1e32b5da8204beec26b37523ad569" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/portable_complex.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/portable_complex.py", + "sha256": "797e144c0040d78a4731a6eaa61c0edb9803a08462f885ed014cbca9d9991d82" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + } + }, + { + "id": "C8", + "name": "Restore complex borrowed payload", + "ports": { + "in": "ComplexState", + "out": "ComplexState" + }, + "status": "retained_complex_recipe", + "current_blocks": [ + "F16" + ], + "note": "Current pinned complex supplier expands this responsibility; use its exact labels, phases, lifetimes and source theorems.", + "logical_functions": [ + "L7", + "L9" + ], + "historical_requirements": [ + "SYS-2", + "IF-2" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/inputs/complex/source-pins.json": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/inputs/complex/source-pins.json", + "sha256": "de0daf6847185d7a6911535e3012c1a91de1e32b5da8204beec26b37523ad569" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/portable_complex.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/portable_complex.py", + "sha256": "797e144c0040d78a4731a6eaa61c0edb9803a08462f885ed014cbca9d9991d82" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + } + }, + { + "id": "C9", + "name": "Forward copied-center macro", + "ports": { + "in": "ComplexState", + "out": "ComplexState" + }, + "status": "retained_complex_recipe", + "current_blocks": [ + "F16" + ], + "note": "Current pinned complex supplier expands this responsibility; use its exact labels, phases, lifetimes and source theorems.", + "logical_functions": [ + "L8" + ], + "historical_requirements": [ + "IF-3" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/portable_complex.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/portable_complex.py", + "sha256": "797e144c0040d78a4731a6eaa61c0edb9803a08462f885ed014cbca9d9991d82" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/copied-centers-lemma.tex": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/copied-centers-lemma.tex", + "sha256": "d0ce6d3d504996aadb098227885224e48df46101daec8893523a0a8b7364d8fe" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + } + }, + { + "id": "D0", + "name": "Reconstruct source recipe", + "ports": { + "in": "Evidence", + "out": "Evidence" + }, + "status": "current_evidence_allocation", + "current_blocks": [ + "F02" + ], + "note": "Current hybrid proof/verification allocation; historical PASS receipts do not supply current scientific admission.", + "logical_functions": [ + "L11" + ], + "historical_requirements": [ + "SYS-5" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/MANIFEST.json": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/MANIFEST.json", + "sha256": "fc691fdf74a7b06c9290d6e91e6d63dc1c7e20c6556519dcf9b7f53fa02350de" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/finite_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/finite_check.py", + "sha256": "cabcdba58e9508b064a33a916b949afd9872e97121e3ac1f10c6a2e3397dfad1" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_loader.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_loader.py", + "sha256": "e5e19ee6d6899fce8273d0f06a49caf7cd8bfe940a2a9a103dbc9d3a62b6b291" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/math_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/math_check.py", + "sha256": "7c1593a1cef1036969eff7fb0d061b15d6b82cd10f2ccf86283b3924a689f8d5" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/portable_bit.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/portable_bit.py", + "sha256": "c931bc575ed0f1fb9ec0c35557ad8be4bc83dd9e86b4850fd6d77ee12b0a714a" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/verify.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/verify.py", + "sha256": "827c559d949df4ec462691a42067355ebd6d6baff55c48410d5f36247f0ca9a9" + } + } + }, + { + "id": "D1", + "name": "Check source pins and preflight", + "ports": { + "in": "Evidence", + "out": "Evidence" + }, + "status": "current_evidence_allocation", + "current_blocks": [ + "F01", + "F21" + ], + "note": "Current hybrid proof/verification allocation; historical PASS receipts do not supply current scientific admission.", + "logical_functions": [ + "L11" + ], + "historical_requirements": [ + "SYS-5" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/MANIFEST.json": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/MANIFEST.json", + "sha256": "fc691fdf74a7b06c9290d6e91e6d63dc1c7e20c6556519dcf9b7f53fa02350de" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/finite_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/finite_check.py", + "sha256": "cabcdba58e9508b064a33a916b949afd9872e97121e3ac1f10c6a2e3397dfad1" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_loader.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_loader.py", + "sha256": "e5e19ee6d6899fce8273d0f06a49caf7cd8bfe940a2a9a103dbc9d3a62b6b291" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/math_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/math_check.py", + "sha256": "7c1593a1cef1036969eff7fb0d061b15d6b82cd10f2ccf86283b3924a689f8d5" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/portable_bit.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/portable_bit.py", + "sha256": "c931bc575ed0f1fb9ec0c35557ad8be4bc83dd9e86b4850fd6d77ee12b0a714a" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/verify.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/verify.py", + "sha256": "827c559d949df4ec462691a42067355ebd6d6baff55c48410d5f36247f0ca9a9" + } + } + }, + { + "id": "D2", + "name": "Check complete bit columns and inverse", + "ports": { + "in": "Evidence", + "out": "Evidence" + }, + "status": "current_evidence_allocation", + "current_blocks": [ + "F10" + ], + "note": "Current hybrid proof/verification allocation; historical PASS receipts do not supply current scientific admission.", + "logical_functions": [ + "L11" + ], + "historical_requirements": [ + "SYS-5" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/MANIFEST.json": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/MANIFEST.json", + "sha256": "fc691fdf74a7b06c9290d6e91e6d63dc1c7e20c6556519dcf9b7f53fa02350de" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/finite_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/finite_check.py", + "sha256": "cabcdba58e9508b064a33a916b949afd9872e97121e3ac1f10c6a2e3397dfad1" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_loader.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_loader.py", + "sha256": "e5e19ee6d6899fce8273d0f06a49caf7cd8bfe940a2a9a103dbc9d3a62b6b291" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/math_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/math_check.py", + "sha256": "7c1593a1cef1036969eff7fb0d061b15d6b82cd10f2ccf86283b3924a689f8d5" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/portable_bit.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/portable_bit.py", + "sha256": "c931bc575ed0f1fb9ec0c35557ad8be4bc83dd9e86b4850fd6d77ee12b0a714a" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/verify.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/verify.py", + "sha256": "827c559d949df4ec462691a42067355ebd6d6baff55c48410d5f36247f0ca9a9" + } + } + }, + { + "id": "D3", + "name": "Check physical frames routes and primes", + "ports": { + "in": "Evidence", + "out": "Evidence" + }, + "status": "current_evidence_allocation", + "current_blocks": [ + "F11", + "F13", + "F14", + "F15" + ], + "note": "Current hybrid proof/verification allocation; historical PASS receipts do not supply current scientific admission.", + "logical_functions": [ + "L11" + ], + "historical_requirements": [ + "SYS-5" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/MANIFEST.json": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/MANIFEST.json", + "sha256": "fc691fdf74a7b06c9290d6e91e6d63dc1c7e20c6556519dcf9b7f53fa02350de" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/finite_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/finite_check.py", + "sha256": "cabcdba58e9508b064a33a916b949afd9872e97121e3ac1f10c6a2e3397dfad1" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_loader.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_loader.py", + "sha256": "e5e19ee6d6899fce8273d0f06a49caf7cd8bfe940a2a9a103dbc9d3a62b6b291" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/math_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/math_check.py", + "sha256": "7c1593a1cef1036969eff7fb0d061b15d6b82cd10f2ccf86283b3924a689f8d5" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/portable_bit.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/portable_bit.py", + "sha256": "c931bc575ed0f1fb9ec0c35557ad8be4bc83dd9e86b4850fd6d77ee12b0a714a" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/verify.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/verify.py", + "sha256": "827c559d949df4ec462691a42067355ebd6d6baff55c48410d5f36247f0ca9a9" + } + } + }, + { + "id": "D4", + "name": "Check complex splice and declarations", + "ports": { + "in": "Evidence", + "out": "Evidence" + }, + "status": "current_evidence_allocation", + "current_blocks": [ + "F16" + ], + "note": "Current hybrid proof/verification allocation; historical PASS receipts do not supply current scientific admission.", + "logical_functions": [ + "L11" + ], + "historical_requirements": [ + "SYS-5" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/MANIFEST.json": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/MANIFEST.json", + "sha256": "fc691fdf74a7b06c9290d6e91e6d63dc1c7e20c6556519dcf9b7f53fa02350de" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/finite_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/finite_check.py", + "sha256": "cabcdba58e9508b064a33a916b949afd9872e97121e3ac1f10c6a2e3397dfad1" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_loader.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_loader.py", + "sha256": "e5e19ee6d6899fce8273d0f06a49caf7cd8bfe940a2a9a103dbc9d3a62b6b291" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/math_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/math_check.py", + "sha256": "7c1593a1cef1036969eff7fb0d061b15d6b82cd10f2ccf86283b3924a689f8d5" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/portable_bit.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/portable_bit.py", + "sha256": "c931bc575ed0f1fb9ec0c35557ad8be4bc83dd9e86b4850fd6d77ee12b0a714a" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/verify.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/verify.py", + "sha256": "827c559d949df4ec462691a42067355ebd6d6baff55c48410d5f36247f0ca9a9" + } + } + }, + { + "id": "D5", + "name": "Check finite bill and exact outer inequalities", + "ports": { + "in": "Evidence", + "out": "Evidence" + }, + "status": "current_evidence_allocation", + "current_blocks": [ + "F17", + "F18", + "F19", + "F20" + ], + "note": "Current hybrid proof/verification allocation; historical PASS receipts do not supply current scientific admission.", + "logical_functions": [ + "L11" + ], + "historical_requirements": [ + "SYS-5", + "IF-6", + "ARC-5" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/MANIFEST.json": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/MANIFEST.json", + "sha256": "fc691fdf74a7b06c9290d6e91e6d63dc1c7e20c6556519dcf9b7f53fa02350de" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/finite_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/finite_check.py", + "sha256": "cabcdba58e9508b064a33a916b949afd9872e97121e3ac1f10c6a2e3397dfad1" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_loader.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_loader.py", + "sha256": "e5e19ee6d6899fce8273d0f06a49caf7cd8bfe940a2a9a103dbc9d3a62b6b291" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/math_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/math_check.py", + "sha256": "7c1593a1cef1036969eff7fb0d061b15d6b82cd10f2ccf86283b3924a689f8d5" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/portable_bit.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/portable_bit.py", + "sha256": "c931bc575ed0f1fb9ec0c35557ad8be4bc83dd9e86b4850fd6d77ee12b0a714a" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/verify.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/verify.py", + "sha256": "827c559d949df4ec462691a42067355ebd6d6baff55c48410d5f36247f0ca9a9" + } + } + }, + { + "id": "D6", + "name": "Expose inherited theorem obligations", + "ports": { + "in": "Evidence", + "out": "Evidence" + }, + "status": "current_evidence_allocation", + "current_blocks": [ + "F21" + ], + "note": "Current hybrid proof/verification allocation; historical PASS receipts do not supply current scientific admission.", + "logical_functions": [ + "L11" + ], + "historical_requirements": [ + "SYS-5" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/MANIFEST.json": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/MANIFEST.json", + "sha256": "fc691fdf74a7b06c9290d6e91e6d63dc1c7e20c6556519dcf9b7f53fa02350de" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/finite_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/finite_check.py", + "sha256": "cabcdba58e9508b064a33a916b949afd9872e97121e3ac1f10c6a2e3397dfad1" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/loader/source_loader.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/loader/source_loader.py", + "sha256": "e5e19ee6d6899fce8273d0f06a49caf7cd8bfe940a2a9a103dbc9d3a62b6b291" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/math_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/math_check.py", + "sha256": "7c1593a1cef1036969eff7fb0d061b15d6b82cd10f2ccf86283b3924a689f8d5" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/portable_bit.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/portable_bit.py", + "sha256": "c931bc575ed0f1fb9ec0c35557ad8be4bc83dd9e86b4850fd6d77ee12b0a714a" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/verify.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/verify.py", + "sha256": "827c559d949df4ec462691a42067355ebd6d6baff55c48410d5f36247f0ca9a9" + } + } + }, + { + "id": "R1", + "name": "Form completed residual request", + "ports": { + "in": "ResidualRequest", + "out": "ResidualResponse", + "return_B9a": "ResidualResponse", + "return_C13": "ResidualResponse" + }, + "status": "inherited_recursive_contract", + "current_blocks": [ + "F17", + "F18", + "F20" + ], + "note": "Completed-child, fallback and restored-row obligations are retained; current finite bill and exact moments bind their charges.", + "logical_functions": [ + "L10" + ], + "historical_requirements": [ + "SYS-3", + "SYS-5", + "IF-6" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/paired_cube_assembly.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/paired_cube_assembly.py", + "sha256": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/math_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/math_check.py", + "sha256": "7c1593a1cef1036969eff7fb0d061b15d6b82cd10f2ccf86283b3924a689f8d5" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/FINITE_BIT_ACCOUNTING.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/FINITE_BIT_ACCOUNTING.md", + "sha256": "602923520af184670170bf159fde7b4c72e79a72570eddd7746b7c97bc51fc5b" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/three-stage-cover-bit.tex": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/three-stage-cover-bit.tex", + "sha256": "47123a756f823c83a0d48cca2bf5add6472cd88410b13aed345e70c8834fb511" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/three-stage-cover-rows.tex": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/three-stage-cover-rows.tex", + "sha256": "6ad97a5cd7d6aecf978a81226e1c2763d37840caca130c61f3bf5c4ac111c5c8" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + } + }, + { + "id": "R2", + "name": "Call smaller completed transform", + "ports": { + "in": "ResidualRequest", + "out": "ResidualResponse" + }, + "status": "inherited_recursive_contract", + "current_blocks": [ + "F17", + "F18", + "F20" + ], + "note": "Completed-child, fallback and restored-row obligations are retained; current finite bill and exact moments bind their charges.", + "logical_functions": [ + "L10" + ], + "historical_requirements": [ + "SYS-3", + "SYS-5", + "IF-6" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/paired_cube_assembly.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/paired_cube_assembly.py", + "sha256": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/math_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/math_check.py", + "sha256": "7c1593a1cef1036969eff7fb0d061b15d6b82cd10f2ccf86283b3924a689f8d5" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/FINITE_BIT_ACCOUNTING.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/FINITE_BIT_ACCOUNTING.md", + "sha256": "602923520af184670170bf159fde7b4c72e79a72570eddd7746b7c97bc51fc5b" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/three-stage-cover-bit.tex": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/three-stage-cover-bit.tex", + "sha256": "47123a756f823c83a0d48cca2bf5add6472cd88410b13aed345e70c8834fb511" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/three-stage-cover-rows.tex": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/three-stage-cover-rows.tex", + "sha256": "6ad97a5cd7d6aecf978a81226e1c2763d37840caca130c61f3bf5c4ac111c5c8" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + } + }, + { + "id": "R3", + "name": "Stop at attained ordinary leaf", + "ports": { + "in": "ResidualRequest", + "out": "ResidualResponse" + }, + "status": "inherited_recursive_contract", + "current_blocks": [ + "F17", + "F18", + "F20" + ], + "note": "Completed-child, fallback and restored-row obligations are retained; current finite bill and exact moments bind their charges.", + "logical_functions": [ + "L10" + ], + "historical_requirements": [ + "SYS-3", + "SYS-5", + "IF-6", + "ARC-5" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/paired_cube_assembly.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/paired_cube_assembly.py", + "sha256": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/math_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/math_check.py", + "sha256": "7c1593a1cef1036969eff7fb0d061b15d6b82cd10f2ccf86283b3924a689f8d5" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/FINITE_BIT_ACCOUNTING.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/FINITE_BIT_ACCOUNTING.md", + "sha256": "602923520af184670170bf159fde7b4c72e79a72570eddd7746b7c97bc51fc5b" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/three-stage-cover-bit.tex": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/three-stage-cover-bit.tex", + "sha256": "47123a756f823c83a0d48cca2bf5add6472cd88410b13aed345e70c8834fb511" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/three-stage-cover-rows.tex": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/three-stage-cover-rows.tex", + "sha256": "6ad97a5cd7d6aecf978a81226e1c2763d37840caca130c61f3bf5c4ac111c5c8" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + } + }, + { + "id": "R4", + "name": "Restore borrowed high rows", + "ports": { + "in": "ResidualRequest", + "out": "ResidualResponse" + }, + "status": "inherited_recursive_contract", + "current_blocks": [ + "F17", + "F18", + "F20" + ], + "note": "Completed-child, fallback and restored-row obligations are retained; current finite bill and exact moments bind their charges.", + "logical_functions": [ + "L9", + "L10" + ], + "historical_requirements": [ + "SYS-2", + "SYS-3", + "SYS-5", + "IF-3", + "IF-6", + "ARC-5" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/paired_cube_assembly.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/paired_cube_assembly.py", + "sha256": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/math_check.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/math_check.py", + "sha256": "7c1593a1cef1036969eff7fb0d061b15d6b82cd10f2ccf86283b3924a689f8d5" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/FINITE_BIT_ACCOUNTING.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/FINITE_BIT_ACCOUNTING.md", + "sha256": "602923520af184670170bf159fde7b4c72e79a72570eddd7746b7c97bc51fc5b" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/three-stage-cover-bit.tex": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/three-stage-cover-bit.tex", + "sha256": "47123a756f823c83a0d48cca2bf5add6472cd88410b13aed345e70c8834fb511" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/three-stage-cover-rows.tex": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/three-stage-cover-rows.tex", + "sha256": "6ad97a5cd7d6aecf978a81226e1c2763d37840caca130c61f3bf5c4ac111c5c8" + }, + "processor_architectures/v9_frontier_review/V8_ATTRIBUTION_MAP_2349.md": { + "primary_url": null, + "sha256": "8c871c182d25a8fd79889afd54d7bcfe166de370ecefb406084b5f9b4a8d0236" + } + } + }, + { + "id": "R5a", + "name": "Dispatch good and bad q-local edges", + "ports": { + "in": "ResidualRequest", + "out": "ResidualResponse" + }, + "status": "inherited_recursive_contract", + "current_blocks": [ + "F17", + "F18", + "F20" + ], + "note": "Completed-child, fallback and restored-row obligations are retained; current finite bill and exact moments bind their charges.", + "logical_functions": [ + "L10" + ], + "historical_requirements": [ + "SYS-3", + "SYS-5", + "IF-4", + "IF-6", + "ARC-3" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/FINITE_BIT_ACCOUNTING.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/FINITE_BIT_ACCOUNTING.md", + "sha256": "602923520af184670170bf159fde7b4c72e79a72570eddd7746b7c97bc51fc5b" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + } + }, + { + "id": "R5b", + "name": "Repair exceptional layout records", + "ports": { + "in": "ResidualRequest", + "out": "ResidualResponse" + }, + "status": "inherited_recursive_contract", + "current_blocks": [ + "F17", + "F18", + "F20" + ], + "note": "Completed-child, fallback and restored-row obligations are retained; current finite bill and exact moments bind their charges.", + "logical_functions": [ + "L6" + ], + "historical_requirements": [ + "SYS-3", + "SYS-5", + "IF-4", + "IF-6" + ], + "source_refs": { + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/PROOF.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/PROOF.md", + "sha256": "c9722b07256758cd3b307dd46689f99984c66e16c3dd934f9c34e551620bfc0f" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/README.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/README.md", + "sha256": "991e30cfa8d9d588844bceba0700ace138e1d5cab8d78c91fce888afe0d1f9a7" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/code/complex_splice.py": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/code/complex_splice.py", + "sha256": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c" + }, + "processor_architectures/five_stage_mac_export_20261009/integer_mult_local_lab_V8/proof/FINITE_BIT_ACCOUNTING.md": { + "primary_url": "https://github.com/hcg890/integer-mult-bounds/blob/af3fe331ca60c936229e060681ffccbc1c208678/research/five-stage-source-bound-v8/proof/FINITE_BIT_ACCOUNTING.md", + "sha256": "602923520af184670170bf159fde7b4c72e79a72570eddd7746b7c97bc51fc5b" + }, + "processor_architectures/integration_v2/upstream/build/sections/08-assembly.tex": { + "primary_url": "https://github.com/openai/math/blob/adc7f1241b42e322a6451854ab7e4b4c146bf78a/preprints/Integer-multiplication-below-n-log-n-September-23-2026/build/sections/08-assembly.tex", + "sha256": "763d7945b1e1ec4ebae9b799bcefcc45fa9bae6e2ffad799868a9c3d513dbd4a" + } + } + } + ], + "types": { + "BitState": { + "address": "rational charts then eligible odd-prime address ring", + "meaning": "versioned complete source/target/dirty arrays with exact frames and owners", + "payload": "F2" + }, + "Bits": { + "meaning": "two nonnegative n-bit operands", + "payload": "N", + "shape": "U,V,n" + }, + "CRTInputs": { + "address": "coprime source-axis product", + "meaning": "convolution-preserving CRT layout", + "payload": "dyadic complex grid" + }, + "ComplexState": { + "address": "exact phase-sensitive frame labels", + "meaning": "versioned source/target/tableau/work streams", + "payload": "exact complex linear action plus chosen dyadic realization" + }, + "Descriptors": { + "meaning": "preserved U,V plus selected size, radix, precision and guards", + "payload": "N and exact metadata" + }, + "Digits": { + "meaning": "U=sum u_i 2^(bi); V=sum v_i 2^(bi)", + "payload": "Z", + "shape": "two N-digit arrays, base 2^b" + }, + "Evidence": { + "meaning": "version-bound proof claim, checked receipt, inherited hypothesis or open obligation", + "payload": "no runtime payload" + }, + "Factors": { + "meaning": "generated chirp/Gaussian factors and precision descriptors", + "payload": "dyadic approximations plus exact bounds" + }, + "IntegerCoefficients": { + "meaning": "exact uncarried convolution coefficients", + "payload": "Z" + }, + "NearIntegerCoefficients": { + "meaning": "all scales and inverse coefficient layout restored; error <1/2", + "payload": "dyadic complex grid" + }, + "PaddedInputs": { + "meaning": "zero-padded length S>2N-2", + "payload": "dyadic complex grid" + }, + "PairedSpectrum": { + "meaning": "both operand spectra in the same retained R order", + "payload": "dyadic complex grid" + }, + "PartialRecovery": { + "meaning": "after first recovery scale; nearest integer is not yet justified", + "payload": "dyadic complex grid" + }, + "PhaseApplicationInput": { + "meaning": "factor approximation, bounded values and precision contract", + "payload": "dyadic factor and dyadic complex tensor" + }, + "PhaseDescriptor": { + "meaning": "chirp or twist exponent for the numerical factor routine", + "payload": "exact address/axis/precision metadata" + }, + "Product": { + "meaning": "requested exact serialization of UV", + "payload": "N" + }, + "ResamplingState": { + "meaning": "ordered sample-selection/Neumann/diagonal-correction state, with exact axis/width refinements", + "payload": "dyadic complex grid" + }, + "ResidualRequest": { + "meaning": "full residual, m,r,n,w, required entry/exit frames and borrowed-row contract", + "payload": "tagged bit or complex operator" + }, + "ResidualResponse": { + "meaning": "completed smaller residual and promised restored rows", + "payload": "same operator tag as request" + }, + "ScaledConvolution": { + "meaning": "approximation to (a*b)/S^2", + "payload": "dyadic complex grid" + }, + "ScaledInputs": { + "meaning": "two digit arrays scaled by 2^(-b-2)", + "payload": "dyadic complex grid" + }, + "SourceSpectrum": { + "meaning": "resampled RF_s output; F_s normalized by 1/S", + "payload": "dyadic complex grid" + }, + "SpectrumProduct": { + "meaning": "pointwise product with declared rounding envelope", + "payload": "dyadic complex grid" + }, + "SyntheticState": { + "meaning": "normalized ring records; exact phase and LB order supplied by refinement", + "payload": "dyadic complex polynomial ring" + }, + "WorkingSpectrum": { + "meaning": "chirp-normalized QF_t tensor", + "payload": "dyadic complex grid" + }, + "WorkingTensor": { + "address": "power-of-two axes", + "meaning": "Gaussian-expanded tensor", + "payload": "dyadic complex grid" + } + }, + "logical_functions": [ + { + "id": "L0", + "input_ports": { + "I0": "two valid nonnegative n-bit operands U and V" + }, + "interface": "Only the externally specified product semantics are universal; transform, layout and storage choices belong to the selected realization.", + "name": "Produce the exact integer product", + "output_ports": { + "OUT": "exact UV in the requested output format" + }, + "purpose": "Return the specified mathematical result.", + "realization_blocks": [ + "A0a", + "A1", + "A2", + "A3a", + "A3b", + "A4a", + "A5", + "A6", + "A7a", + "A7b", + "A8", + "A9" + ], + "subfunctions": [ + "L1", + "L2", + "L3", + "L4", + "L5" + ], + "support_functions": [ + "L6", + "L7", + "L8", + "L9", + "L10" + ] + }, + { + "id": "L1", + "input_ports": { + "I0": "valid operand bit strings" + }, + "interface": "Encoding and scale are explicit and must preserve recoverable numeric values. A radix or particular precision formula is a realization choice.", + "name": "Accept and represent operands", + "output_ports": { + "P0": "preserved operands and admissible representation descriptors" + }, + "purpose": "Preserve operand values while making their representation usable.", + "realization_blocks": [ + "A0a", + "A0b", + "A0c", + "A0d", + "A1", + "A2" + ], + "subfunctions": [] + }, + { + "id": "L2", + "input_ports": { + "P0": "represented operands and descriptors" + }, + "interface": "The selected system pads, reindexes and transforms; the logical function does not require CRT, Fourier transforms or a particular decomposition.", + "name": "Make operands usable for product computation", + "output_ports": { + "P1": "valid inputs to the chosen product-computation interface" + }, + "purpose": "Provide the organization required by the chosen product method.", + "realization_blocks": [ + "A3a", + "A3b", + "A4a", + "A4b", + "A4c", + "A4d" + ], + "subfunctions": [] + }, + { + "id": "L3", + "input_ports": { + "P1": "valid represented operands" + }, + "interface": "The selected Fourier realization uses P2 matching-coordinate arrays internally. Different methods may satisfy the same goal with different internal ports.", + "name": "Compute sufficient product information", + "output_ports": { + "P3": "information sufficient to recover the exact product" + }, + "purpose": "Establish the product relation in the internal representation.", + "realization_blocks": [ + "A4a", + "A4b", + "A4c", + "A4d", + "A5", + "A6" + ], + "subfunctions": [] + }, + { + "id": "L4", + "input_ports": { + "P3": "internal product information plus validity/error guarantees" + }, + "interface": "If approximate arithmetic is used, recovery needs a sufficient exactness margin. The present two S factors, rounding and inverse CRT are conditional on this representation.", + "name": "Recover exact result values", + "output_ports": { + "E0": "exact values sufficient for output encoding" + }, + "purpose": "Resolve internal scales or approximations into exact integer information.", + "realization_blocks": [ + "A7a", + "A7b", + "A8" + ], + "subfunctions": [] + }, + { + "id": "L5", + "input_ports": { + "E0": "exact internal result values" + }, + "interface": "Frozen outer proof uses carries and exactly 2n output bits. An output-format change is possible only with a revised boundary contract.", + "name": "Normalize and emit the result", + "output_ports": { + "OUT": "the requested product bit string" + }, + "purpose": "Meet the requested external representation contract.", + "realization_blocks": [ + "A9" + ], + "subfunctions": [] + }, + { + "id": "L6", + "input_ports": { + "LOC_IN": "complete payload streams and logical owners" + }, + "interface": "Value identity, owner bijections, exact frame interpretation and movement cost must remain valid. The chosen address geometry is not universal.", + "name": "Place data at required interfaces", + "output_ports": { + "LOC_OUT": "the same intended values at the requested owners/frames" + }, + "purpose": "Deliver corresponding values to the locations and representations consumed by an operation.", + "realization_blocks": [ + "A3b", + "A4b2a", + "A4b4a", + "A4io", + "B8a", + "B8b", + "B9a", + "B9b", + "C12a", + "C13", + "R5b" + ], + "subfunctions": [] + }, + { + "id": "L7", + "input_ports": { + "MAP_IN": "payload and exact requested operator contract" + }, + "interface": "F₂ payload, rational-address and exact-complex phase contracts are different operator domains and cannot be interchanged by matching rank alone.", + "name": "Evaluate required component maps", + "output_ports": { + "MAP_OUT": "the requested output action at valid endpoint representations" + }, + "purpose": "Realize each caller-requested arithmetic or linear operator.", + "realization_blocks": [ + "A4b1", + "A4b2", + "A4b3", + "A4b4", + "A4b5", + "A4b2b", + "A4b2c", + "A4b2d", + "A4c1", + "A4c2", + "A4c3", + "A4p1", + "A4p2", + "A4p3", + "B0", + "B1", + "B2", + "B3", + "B4", + "B5", + "C1", + "C2", + "C3", + "C4", + "C5", + "C6", + "C7", + "C8", + "C13" + ], + "subfunctions": [] + }, + { + "id": "L8", + "input_ports": { + "WORK_IN": "live values, declared dirty/clean workspace and ownership" + }, + "interface": "The number of banks, ownership schedule and dirty-versus-clean choice are architectural. Any replacement must preserve alias, lifetime and resource contracts.", + "name": "Manage temporary and shared storage", + "output_ports": { + "WORK_OUT": "valid live values and legal work lifetimes" + }, + "purpose": "Give operations usable storage without undeclared interference.", + "realization_blocks": [ + "B3", + "B6a", + "B6b", + "B6c", + "B6d", + "B6e", + "B7a", + "B7b", + "B7c", + "C1", + "C9", + "C10", + "C11a", + "C11b", + "C11c", + "C11d" + ], + "subfunctions": [] + }, + { + "id": "L9", + "input_ports": { + "BORROWED_IN": "declared borrowed values/rows/frames" + }, + "interface": "Restoration is required where the caller grants a loan. Payload restoration, temporary erasure and address-frame completion are separate conditions.", + "name": "Restore borrowed state", + "output_ports": { + "BORROWED_OUT": "the specified restored state and completed frame effect" + }, + "purpose": "Prevent a subroutine from corrupting externally owned values or representations.", + "realization_blocks": [ + "B5", + "B6d", + "B6e", + "B11", + "B12", + "C8", + "C12c", + "R4" + ], + "subfunctions": [] + }, + { + "id": "L10", + "input_ports": { + "CHILD_IN": "an exact residual problem and allowed resources" + }, + "interface": "Recursion, stage count and fallback strategy are realization choices. The chosen proof requires valid proper children, finite leaves, paid exceptional work and composable boundaries.", + "name": "Complete and compose subproblems", + "output_ports": { + "CHILD_OUT": "a completed result with required state returned" + }, + "purpose": "Close each delegated computation under its caller’s endpoint and cost contracts.", + "realization_blocks": [ + "B10", + "C12b", + "R1", + "R2", + "R3", + "R4", + "R5a" + ], + "subfunctions": [] + }, + { + "id": "L11", + "input_ports": { + "EVIDENCE_IN": "pinned sources, declared interfaces and reconstructed finite recipes" + }, + "interface": "This is an assurance function, not another runtime multiplication step. A passed finite check does not replace an inherited theorem.", + "name": "Establish the evidence for system claims", + "output_ports": { + "EVIDENCE_OUT": "checked finite facts plus explicit remaining theorem dependencies" + }, + "purpose": "Separate executable finite checks from retained assumptions and justify stated bounds.", + "realization_blocks": [ + "D0", + "D1", + "D2", + "D3", + "D4", + "D5", + "D6" + ], + "subfunctions": [] + } + ], + "requirement_definitions": [ + { + "classification": "outcome", + "id": "SYS-1", + "logical_functions": [ + "L0", + "L1", + "L2", + "L3", + "L4", + "L5" + ], + "overconstraint_audit": { + "escape_route": "Change any internal representation or algorithm while preserving the external product meaning; revise the external contract explicitly if input/output meaning changes.", + "reopened_obligations": "Affected encoding, product relation, decoding, and cost dependencies.", + "universal_only_at_stated_scope": true + }, + "parents": [], + "rationale": "This is the requested mathematical result.", + "realization_blocks": [ + "A1", + "A2", + "A3a", + "A3b", + "A4a", + "A4b", + "A4c", + "A4d", + "A5", + "A6", + "A7a", + "A7b", + "A8", + "A9" + ], + "sources": [ + "P1", + "P7" + ], + "statement": "For every allowed input, output represents the exact integer product.", + "status": "conditional_retained_proof", + "title": "Exact integer product", + "verification_method": "Composed encoding/product/decoding proof." + }, + { + "classification": "outcome_relative_to_promised_interface", + "id": "SYS-2", + "logical_functions": [ + "L6", + "L7", + "L8", + "L9" + ], + "overconstraint_audit": { + "escape_route": "Retire or reassign owned state under a changed caller contract; restoration is required only where promised.", + "reopened_obligations": "Affected caller observations, ownership, live versions, endpoints and storage bill.", + "universal_only_at_stated_scope": true + }, + "parents": [], + "rationale": "Endpoint-only equality can hide corrupted intermediate users.", + "realization_blocks": [ + "B0", + "B5", + "B6a", + "B6b", + "B6c", + "B6d", + "B6e", + "B11", + "B12", + "C8", + "R4" + ], + "sources": [ + "P2", + "P3", + "P4", + "P6" + ], + "statement": "Preserve caller-promised values and properties at every required observation.", + "status": "source_specific_local_and_inherited_evidence", + "title": "Honor promised state and observations", + "verification_method": "Full boundary and trace relation on arbitrary allowed state." + }, + { + "classification": "model", + "id": "SYS-3", + "logical_functions": [ + "L6", + "L7", + "L8", + "L9", + "L10" + ], + "overconstraint_audit": { + "escape_route": "Change machine model or compiler with an explicit translation or new theorem.", + "reopened_obligations": "Cost model, lowering, routing, workspace and composed complexity claims.", + "universal_only_at_stated_scope": true + }, + "parents": [], + "rationale": "Algebra alone is not a physical cost proof.", + "realization_blocks": [ + "A0a", + "A0b", + "A0c", + "A0d", + "B8a", + "B8b", + "B9a", + "B9b", + "C11a", + "C11b", + "C11c", + "C11d", + "C13", + "R1", + "R2", + "R3", + "R4", + "R5a", + "R5b" + ], + "sources": [ + "P2", + "P5", + "P8" + ], + "statement": "Implement every operation and movement claimed in the stated model with legal resources.", + "status": "inherited_model_interfaces_with_open_sparse_tariff", + "title": "Realizable execution in the declared model", + "verification_method": "Frame, routing, workspace and lowering arguments." + }, + { + "classification": "outcome", + "id": "SYS-4", + "logical_functions": [ + "L1", + "L2", + "L3", + "L4", + "L5", + "L7" + ], + "overconstraint_audit": { + "escape_route": "Use exact arithmetic or another successful decoder; neither rounding nor fixed dyadic precision is universal.", + "reopened_obligations": "Affected approximation propagation, normalization, widths, decoder and physical cost.", + "universal_only_at_stated_scope": true + }, + "parents": [], + "rationale": "Local exact algebra does not bound accumulated numerical error.", + "realization_blocks": [ + "A0b", + "A4a", + "A4b", + "A4c", + "A4d", + "A7a", + "A7b", + "A8", + "A9", + "C11a", + "C11b", + "C11c", + "C11d" + ], + "sources": [ + "P7" + ], + "statement": "Prove every numerical approximation affecting the result is compatible with exact decoding.", + "status": "conditional_retained_precision_proof", + "title": "Justified exact recovery", + "verification_method": "Complete error/range/width/decoding proof." + }, + { + "classification": "model_and_claim_dependent_outcome", + "id": "SYS-5", + "logical_functions": [ + "L0", + "L6", + "L7", + "L8", + "L9", + "L10", + "L11" + ], + "overconstraint_audit": { + "escape_route": "A correctness experiment need not improve an exponent; an implementation may stay within an unchanged envelope.", + "reopened_obligations": "Only the changed costs and downstream claims that consume them.", + "universal_only_at_stated_scope": true + }, + "parents": [], + "rationale": "Omitted costs and conflated evidence can reverse a comparison.", + "realization_blocks": [ + "R1", + "R2", + "R3", + "R4", + "R5a", + "R5b", + "D0", + "D1", + "D2", + "D3", + "D4", + "D5", + "D6" + ], + "sources": [ + "P2", + "P5", + "P8" + ], + "statement": "Account for all resources relevant to the claimed result and bind evidence to exact sources and scope.", + "status": "source_specific_conditional_bounds", + "title": "Complete support for the claimed cost", + "verification_method": "Complete net inventory, recurrence, finite/outer argument and evidence binding." + }, + { + "classification": "model_and_interface", + "id": "IF-1", + "logical_functions": [ + "L1", + "L6", + "L7" + ], + "overconstraint_audit": { + "escape_route": "Change field, encoding, integer lift or address model with a new interface proof.", + "reopened_obligations": "Semantics, primes, geometry and numerical bounds.", + "universal_only_at_stated_scope": true + }, + "parents": [ + "SYS-1", + "SYS-3" + ], + "rationale": "Equal notation across fields may denote different maps.", + "realization_blocks": [ + "B0", + "B8a", + "B8b", + "B9a", + "B9b", + "C1", + "C13", + "A4a", + "A4b", + "A4c", + "A4d" + ], + "sources": [ + "P2", + "P3", + "P4" + ], + "statement": "Specify payload/address domains, sizes, legal inputs and inherited hypotheses.", + "status": "explicit_in_retained_bit_contract", + "title": "Declared mathematical domains", + "verification_method": "Algebraic model and domain checks." + }, + { + "classification": "outcome_and_interface", + "id": "IF-2", + "logical_functions": [ + "L2", + "L3", + "L4", + "L5", + "L6", + "L7", + "L8", + "L9" + ], + "overconstraint_audit": { + "escape_route": "Change private intermediate values or enlarge the closed interval.", + "reopened_obligations": "Every newly enclosed consumer, observation and source version.", + "universal_only_at_stated_scope": true + }, + "parents": [ + "SYS-1", + "SYS-2" + ], + "rationale": "An unobserved intermediate coordinate need not be fixed.", + "realization_blocks": [ + "B1", + "B4", + "B5", + "B7a", + "B7b", + "B7c", + "C6", + "C7", + "C8" + ], + "sources": [ + "P2", + "P4" + ], + "statement": "Specify endpoint and every required observation at semantic events.", + "status": "local_exact_interval_pass_global_composite_pending", + "title": "Complete boundary and observations", + "verification_method": "Full operator/trace relation; all-column check when linearity is proved." + }, + { + "classification": "interface", + "id": "IF-3", + "logical_functions": [ + "L8", + "L9" + ], + "overconstraint_audit": { + "escape_route": "Use different sharing/loan/retirement contracts accepted by affected callers.", + "reopened_obligations": "Owners, aliasing, copy/erase, inverse dependencies and actual stock.", + "universal_only_at_stated_scope": true + }, + "parents": [ + "SYS-2", + "SYS-3" + ], + "rationale": "Forward last-use is not inverse restoration.", + "realization_blocks": [ + "B3", + "B6a", + "B6b", + "B6c", + "B6d", + "B6e", + "B11", + "C9", + "C10", + "C11a", + "C11b", + "C11c", + "C11d", + "R4" + ], + "sources": [ + "P2", + "P3", + "P4", + "P6" + ], + "statement": "Declare owners, live versions, dirty/old state, loans, retirement and copy/erase conditions in both directions.", + "status": "source_specific_exact_checks", + "title": "Ownership and lifetimes", + "verification_method": "Dependency/lifetime proof and arbitrary-state endpoint." + }, + { + "classification": "model_and_interface", + "id": "IF-4", + "logical_functions": [ + "L6", + "L7" + ], + "overconstraint_audit": { + "escape_route": "Choose different legal bases, frame plateaus, factorizations or routes.", + "reopened_obligations": "Actual projector identities, primes, cover/namespace, observers and paid movement.", + "universal_only_at_stated_scope": true + }, + "parents": [ + "SYS-3" + ], + "rationale": "Equal ranks or small address-matrix similarity are insufficient.", + "realization_blocks": [ + "B8a", + "B8b", + "B9a", + "B9b", + "C2", + "C7", + "C13", + "R5a", + "R5b" + ], + "sources": [ + "P2", + "P5", + "P6" + ], + "statement": "Specify exact frames/labels and complete address action, spectators, inverse and simultaneous injectivity.", + "status": "semantic_route_pass_sparse_tariff_open", + "title": "Physical representations and routes", + "verification_method": "Exact projectors/charts, complete payload action and route proof." + }, + { + "classification": "interface", + "id": "IF-5", + "logical_functions": [ + "L1", + "L2", + "L3", + "L4", + "L5", + "L7" + ], + "overconstraint_audit": { + "escape_route": "Use a different lift or a tighter bound; old coefficients need not match.", + "reopened_obligations": "Any downstream assumption exceeded by the new envelope.", + "universal_only_at_stated_scope": true + }, + "parents": [ + "SYS-4", + "SYS-5" + ], + "rationale": "A new representative may be valid but have different growth.", + "realization_blocks": [ + "A0b", + "A4a", + "A4b", + "A4c", + "A4d", + "A7a", + "A7b", + "A8", + "C11a", + "C11b", + "C11c", + "C11d" + ], + "sources": [ + "P2", + "P4", + "P7" + ], + "statement": "Bound coefficients, signed growth, norms, errors and record widths consumed by callers.", + "status": "source_specific_exact_and_inherited_proofs", + "title": "Consumed numerical envelope", + "verification_method": "Signed prefix bounds and full analytic error propagation." + }, + { + "classification": "model_and_interface", + "id": "IF-6", + "logical_functions": [ + "L6", + "L7", + "L8", + "L9", + "L10" + ], + "overconstraint_audit": { + "escape_route": "Change counts, width, replicas, stage count or recurrence type with complete new accounting.", + "reopened_obligations": "Stock/lifetime compatibility, full profile, finite constants, fallback, leaf and outer consumers.", + "universal_only_at_stated_scope": true + }, + "parents": [ + "SYS-3", + "SYS-5" + ], + "rationale": "Lower call count is not equivalent to lower paid moment.", + "realization_blocks": [ + "B10", + "B11", + "R1", + "R2", + "R3", + "R4", + "R5a", + "R5b", + "D5" + ], + "sources": [ + "P2", + "P3", + "P8" + ], + "statement": "Declare net child inventory, true stock, replicas, finite costs, fallback, shrink and normalization.", + "status": "whole_supplier_evidence_is_source_specific", + "title": "Complete paid resource interface", + "verification_method": "Full ledger and applicable scalar/stateful recurrence." + }, + { + "classification": "selected_architecture", + "id": "ARC-1", + "logical_functions": [ + "L6", + "L7", + "L8", + "L9", + "L10" + ], + "overconstraint_audit": { + "escape_route": "Use a different proved schedule or different stage topology.", + "reopened_obligations": "Observation/owner/route dependencies, joint endpoints and full schedule bill.", + "universal_only_at_stated_scope": true + }, + "parents": [ + "IF-2", + "IF-3", + "IF-4" + ], + "rationale": "Interleaving may expose unfinished state.", + "realization_blocks": [ + "B10", + "C12a", + "C12b", + "C12c" + ], + "sources": [ + "P3" + ], + "statement": "When retaining the current global theorem, respect complete-cover phase barriers and dependencies.", + "status": "conditional_on_retained_stage_theorem", + "title": "Retained phase-major composition", + "verification_method": "Source schedule and endpoint-composition proof." + }, + { + "classification": "selected_architecture", + "id": "ARC-2", + "logical_functions": [ + "L8", + "L9" + ], + "overconstraint_audit": { + "escape_route": "Change to coupled completion or a new live helper.", + "reopened_obligations": "Joint payload endpoint, ownership/lifetimes, complete routing and resulting recurrence.", + "universal_only_at_stated_scope": true + }, + "parents": [ + "IF-3", + "IF-4", + "IF-6" + ], + "rationale": "Volume and ranks alone do not complete a bank.", + "realization_blocks": [ + "B8a", + "B8b", + "B11" + ], + "sources": [ + "P3", + "P6" + ], + "statement": "When using independent banks, actual routed block projectors are disjoint and sum to each required bank endpoint.", + "status": "source_bound_bank_proof_not_new_composite_admission", + "title": "Independent completed bank realization", + "verification_method": "Actual chart identities, census, injectivity, endpoint and reverse schedule." + }, + { + "classification": "selected_architecture_and_model", + "id": "ARC-3", + "logical_functions": [ + "L6", + "L7", + "L10" + ], + "overconstraint_audit": { + "escape_route": "Choose different bases, prime set or reduction.", + "reopened_obligations": "Complete new prime coverage, good/bad dispatch and fallback.", + "universal_only_at_stated_scope": true + }, + "parents": [ + "IF-1", + "IF-4" + ], + "rationale": "Invalid denominators make routing undefined.", + "realization_blocks": [ + "B9a", + "C13", + "R5a" + ], + "sources": [ + "P3", + "P5" + ], + "statement": "For the rational-chart reduction, every consumed inverse/scaling exists at each eligible prime/ring.", + "status": "source_bound_prime_evidence", + "title": "Eligible chart arithmetic", + "verification_method": "Cleared Gram and denominator factors; unit checks." + }, + { + "classification": "selected_architecture", + "id": "ARC-4", + "logical_functions": [ + "L4", + "L5" + ], + "overconstraint_audit": { + "escape_route": "Change representation, normalization or decoder with a complete alternative recovery proof.", + "reopened_obligations": "Affected error, scales, layout, widths, carry and finite costs.", + "universal_only_at_stated_scope": true + }, + "parents": [ + "IF-5" + ], + "rationale": "The decoder's input assumptions must be established.", + "realization_blocks": [ + "A7a", + "A7b", + "A8", + "A9" + ], + "sources": [ + "P7" + ], + "statement": "For this recovery, restore both normalizations and coefficient order and achieve pre-rounding error below one half.", + "status": "conditional_retained_analytic_proof", + "title": "Retained approximate convolution recovery", + "verification_method": "Exact scaling/width equations, inverse layout, nearest-integer and carry proofs." + }, + { + "classification": "selected_architecture", + "id": "ARC-5", + "logical_functions": [ + "L10", + "L11" + ], + "overconstraint_audit": { + "escape_route": "Change bootstrap depth, balanced family or outer reduction.", + "reopened_obligations": "The replacement recurrence/leaf bridge and all affected analytic inequalities.", + "universal_only_at_stated_scope": true + }, + "parents": [ + "IF-6" + ], + "rationale": "A limiting coarse rate is not a completed leaf.", + "realization_blocks": [ + "R3", + "R4", + "D5" + ], + "sources": [ + "P8" + ], + "statement": "For this bound, use attained ordinary savings and valid bridge data in the selected outer inequalities.", + "status": "finite_rational_checks_plus_inherited_analytic_interfaces", + "title": "Selected ordinary-leaf and outer assembly", + "verification_method": "Three levels, 47 strict constraints and seven margins in current source." + } + ], + "completeness": "All87 original selected-realization block IDs accounted for; inherited/opaque internals are not promoted to executed operation coverage." +} diff --git a/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_hierarchy_edges.json b/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_hierarchy_edges.json new file mode 100644 index 0000000000..752787a69c --- /dev/null +++ b/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_hierarchy_edges.json @@ -0,0 +1,1778 @@ +{ + "schema": "historical-edge-reconciliation/1", + "source_graph_sha256": "b70e794473cb75f76941e190ed102c236a15b9a868c4d277eb28e05f843d116c", + "typed_edges": 53, + "documentary_edges": 75, + "relations": [ + { + "id": "HT001", + "inventory": "typed_edges", + "source_block": "A0a", + "target_block": "A0b", + "original": { + "guarantee_implies_assumption": "inherited_outer_theorem; not re-proved", + "kind": "data", + "source": "A0a.out", + "target": "A0b.in", + "type": "Descriptors" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HT002", + "inventory": "typed_edges", + "source_block": "A0b", + "target_block": "A0c", + "original": { + "guarantee_implies_assumption": "inherited_outer_theorem; not re-proved", + "kind": "data", + "source": "A0b.out", + "target": "A0c.in", + "type": "Descriptors" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HT003", + "inventory": "typed_edges", + "source_block": "A0c", + "target_block": "A0d", + "original": { + "guarantee_implies_assumption": "inherited_outer_theorem; not re-proved", + "kind": "data", + "source": "A0c.out", + "target": "A0d.in", + "type": "Descriptors" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HT004", + "inventory": "typed_edges", + "source_block": "A0d", + "target_block": "A1", + "original": { + "guarantee_implies_assumption": "inherited_outer_theorem; not re-proved", + "kind": "data", + "source": "A0d.out", + "target": "A1.in", + "type": "Descriptors" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HT005", + "inventory": "typed_edges", + "source_block": "A1", + "target_block": "A2", + "original": { + "guarantee_implies_assumption": "inherited_outer_theorem; not re-proved", + "kind": "data", + "source": "A1.out", + "target": "A2.in", + "type": "Digits" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HT006", + "inventory": "typed_edges", + "source_block": "A2", + "target_block": "A3a", + "original": { + "guarantee_implies_assumption": "inherited_outer_theorem; not re-proved", + "kind": "data", + "source": "A2.out", + "target": "A3a.in", + "type": "ScaledInputs" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HT007", + "inventory": "typed_edges", + "source_block": "A3a", + "target_block": "A3b", + "original": { + "guarantee_implies_assumption": "inherited_outer_theorem; not re-proved", + "kind": "data", + "source": "A3a.out", + "target": "A3b.in", + "type": "PaddedInputs" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HT008", + "inventory": "typed_edges", + "source_block": "A3b", + "target_block": "A4a", + "original": { + "guarantee_implies_assumption": "inherited_outer_theorem; not re-proved", + "kind": "data", + "source": "A3b.out", + "target": "A4a.in", + "type": "CRTInputs" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HT009", + "inventory": "typed_edges", + "source_block": "A4a", + "target_block": "A4b", + "original": { + "guarantee_implies_assumption": "inherited_outer_theorem; not re-proved", + "kind": "data", + "source": "A4a.out", + "target": "A4b.in", + "type": "WorkingTensor" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HT010", + "inventory": "typed_edges", + "source_block": "A4b", + "target_block": "A4c", + "original": { + "guarantee_implies_assumption": "inherited_outer_theorem; not re-proved", + "kind": "data", + "source": "A4b.out", + "target": "A4c.in", + "type": "WorkingSpectrum" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HT011", + "inventory": "typed_edges", + "source_block": "A4c", + "target_block": "A4d", + "original": { + "guarantee_implies_assumption": "inherited_outer_theorem; not re-proved", + "kind": "data", + "source": "A4c.out", + "target": "A4d.in", + "type": "SourceSpectrum" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HT012", + "inventory": "typed_edges", + "source_block": "A4d", + "target_block": "A5", + "original": { + "guarantee_implies_assumption": "inherited_outer_theorem; not re-proved", + "kind": "data", + "source": "A4d.out", + "target": "A5.in", + "type": "PairedSpectrum" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HT013", + "inventory": "typed_edges", + "source_block": "A5", + "target_block": "A6", + "original": { + "guarantee_implies_assumption": "inherited_outer_theorem; not re-proved", + "kind": "data", + "source": "A5.out", + "target": "A6.in", + "type": "SpectrumProduct" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HT014", + "inventory": "typed_edges", + "source_block": "A6", + "target_block": "A7a", + "original": { + "guarantee_implies_assumption": "inherited_outer_theorem; not re-proved", + "kind": "data", + "source": "A6.out", + "target": "A7a.in", + "type": "ScaledConvolution" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HT015", + "inventory": "typed_edges", + "source_block": "A7a", + "target_block": "A7b", + "original": { + "guarantee_implies_assumption": "inherited_outer_theorem; not re-proved", + "kind": "data", + "source": "A7a.out", + "target": "A7b.in", + "type": "PartialRecovery" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HT016", + "inventory": "typed_edges", + "source_block": "A7b", + "target_block": "A8", + "original": { + "guarantee_implies_assumption": "inherited_outer_theorem; not re-proved", + "kind": "data", + "source": "A7b.out", + "target": "A8.in", + "type": "NearIntegerCoefficients" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HT017", + "inventory": "typed_edges", + "source_block": "A8", + "target_block": "A9", + "original": { + "guarantee_implies_assumption": "inherited_outer_theorem; not re-proved", + "kind": "data", + "source": "A8.out", + "target": "A9.in", + "type": "IntegerCoefficients" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HT018", + "inventory": "typed_edges", + "source_block": "A4b1", + "target_block": "A4b2", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "A4b1.out", + "target": "A4b2.in", + "type": "SyntheticState" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HT019", + "inventory": "typed_edges", + "source_block": "A4b2", + "target_block": "A4b3", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "A4b2.out", + "target": "A4b3.in", + "type": "SyntheticState" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HT020", + "inventory": "typed_edges", + "source_block": "A4b3", + "target_block": "A4b4", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "A4b3.out", + "target": "A4b4.in", + "type": "SyntheticState" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HT021", + "inventory": "typed_edges", + "source_block": "A4b4", + "target_block": "A4b5", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "A4b4.out", + "target": "A4b5.in", + "type": "SyntheticState" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HT022", + "inventory": "typed_edges", + "source_block": "A4b2a", + "target_block": "A4b2b", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "A4b2a.out", + "target": "A4b2b.in", + "type": "SyntheticState" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HT023", + "inventory": "typed_edges", + "source_block": "A4b2b", + "target_block": "A4b2c", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "A4b2b.out", + "target": "A4b2c.in", + "type": "SyntheticState" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HT024", + "inventory": "typed_edges", + "source_block": "A4b2c", + "target_block": "A4b2d", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "A4b2c.out", + "target": "A4b2d.in", + "type": "SyntheticState" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HT025", + "inventory": "typed_edges", + "source_block": "A4c1", + "target_block": "A4c2", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "A4c1.out", + "target": "A4c2.in", + "type": "ResamplingState" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HT026", + "inventory": "typed_edges", + "source_block": "A4c2", + "target_block": "A4c3", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "A4c2.out", + "target": "A4c3.in", + "type": "ResamplingState" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HT027", + "inventory": "typed_edges", + "source_block": "B1", + "target_block": "B2", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "B1.out", + "target": "B2.in", + "type": "BitState" + }, + "selected_status": "historical_order_replaced", + "scope": "Source471 internal order is not admitted as selected source527/hybrid execution. Current operation inventory and F02-F15 are authoritative." + }, + { + "id": "HT028", + "inventory": "typed_edges", + "source_block": "B2", + "target_block": "B3", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "B2.out", + "target": "B3.in", + "type": "BitState" + }, + "selected_status": "historical_order_replaced", + "scope": "Source471 internal order is not admitted as selected source527/hybrid execution. Current operation inventory and F02-F15 are authoritative." + }, + { + "id": "HT029", + "inventory": "typed_edges", + "source_block": "B3", + "target_block": "B4", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "B3.out", + "target": "B4.in", + "type": "BitState" + }, + "selected_status": "historical_order_replaced", + "scope": "Source471 internal order is not admitted as selected source527/hybrid execution. Current operation inventory and F02-F15 are authoritative." + }, + { + "id": "HT030", + "inventory": "typed_edges", + "source_block": "B4", + "target_block": "B5", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "B4.out", + "target": "B5.in", + "type": "BitState" + }, + "selected_status": "historical_order_replaced", + "scope": "Source471 internal order is not admitted as selected source527/hybrid execution. Current operation inventory and F02-F15 are authoritative." + }, + { + "id": "HT031", + "inventory": "typed_edges", + "source_block": "B8a", + "target_block": "B8b", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "B8a.out", + "target": "B8b.in", + "type": "BitState" + }, + "selected_status": "historical_order_replaced", + "scope": "Source471 internal order is not admitted as selected source527/hybrid execution. Current operation inventory and F02-F15 are authoritative." + }, + { + "id": "HT032", + "inventory": "typed_edges", + "source_block": "B8b", + "target_block": "B9a", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "B8b.out", + "target": "B9a.in", + "type": "BitState" + }, + "selected_status": "historical_order_replaced", + "scope": "Source471 internal order is not admitted as selected source527/hybrid execution. Current operation inventory and F02-F15 are authoritative." + }, + { + "id": "HT033", + "inventory": "typed_edges", + "source_block": "B9a", + "target_block": "B9b", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "B9a.out", + "target": "B9b.in", + "type": "BitState" + }, + "selected_status": "historical_order_replaced", + "scope": "Source471 internal order is not admitted as selected source527/hybrid execution. Current operation inventory and F02-F15 are authoritative." + }, + { + "id": "HT034", + "inventory": "typed_edges", + "source_block": "B9b", + "target_block": "B10", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "B9b.out", + "target": "B10.in", + "type": "BitState" + }, + "selected_status": "historical_order_replaced", + "scope": "Source471 internal order is not admitted as selected source527/hybrid execution. Current operation inventory and F02-F15 are authoritative." + }, + { + "id": "HT035", + "inventory": "typed_edges", + "source_block": "B10", + "target_block": "B11", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "B10.out", + "target": "B11.in", + "type": "BitState" + }, + "selected_status": "historical_order_replaced", + "scope": "Source471 internal order is not admitted as selected source527/hybrid execution. Current operation inventory and F02-F15 are authoritative." + }, + { + "id": "HT036", + "inventory": "typed_edges", + "source_block": "B11", + "target_block": "B12", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "B11.out", + "target": "B12.in", + "type": "BitState" + }, + "selected_status": "historical_order_replaced", + "scope": "Source471 internal order is not admitted as selected source527/hybrid execution. Current operation inventory and F02-F15 are authoritative." + }, + { + "id": "HT037", + "inventory": "typed_edges", + "source_block": "C1", + "target_block": "C2", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "C1.out", + "target": "C2.in", + "type": "ComplexState" + }, + "selected_status": "retained_complex_interface", + "scope": "Pinned complex supplier F16 supplies this responsibility; this relation is not a local scalar-gate trace." + }, + { + "id": "HT038", + "inventory": "typed_edges", + "source_block": "C2", + "target_block": "C3", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "C2.out", + "target": "C3.in", + "type": "ComplexState" + }, + "selected_status": "retained_complex_interface", + "scope": "Pinned complex supplier F16 supplies this responsibility; this relation is not a local scalar-gate trace." + }, + { + "id": "HT039", + "inventory": "typed_edges", + "source_block": "C3", + "target_block": "C4", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "C3.out", + "target": "C4.in", + "type": "ComplexState" + }, + "selected_status": "retained_complex_interface", + "scope": "Pinned complex supplier F16 supplies this responsibility; this relation is not a local scalar-gate trace." + }, + { + "id": "HT040", + "inventory": "typed_edges", + "source_block": "C4", + "target_block": "C5", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "C4.out", + "target": "C5.in", + "type": "ComplexState" + }, + "selected_status": "retained_complex_interface", + "scope": "Pinned complex supplier F16 supplies this responsibility; this relation is not a local scalar-gate trace." + }, + { + "id": "HT041", + "inventory": "typed_edges", + "source_block": "C5", + "target_block": "C6", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "C5.out", + "target": "C6.in", + "type": "ComplexState" + }, + "selected_status": "retained_complex_interface", + "scope": "Pinned complex supplier F16 supplies this responsibility; this relation is not a local scalar-gate trace." + }, + { + "id": "HT042", + "inventory": "typed_edges", + "source_block": "C6", + "target_block": "C7", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "C6.out", + "target": "C7.in", + "type": "ComplexState" + }, + "selected_status": "retained_complex_interface", + "scope": "Pinned complex supplier F16 supplies this responsibility; this relation is not a local scalar-gate trace." + }, + { + "id": "HT043", + "inventory": "typed_edges", + "source_block": "C7", + "target_block": "C8", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "C7.out", + "target": "C8.in", + "type": "ComplexState" + }, + "selected_status": "retained_complex_interface", + "scope": "Pinned complex supplier F16 supplies this responsibility; this relation is not a local scalar-gate trace." + }, + { + "id": "HT044", + "inventory": "typed_edges", + "source_block": "C12a", + "target_block": "C12b", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "C12a.out", + "target": "C12b.in", + "type": "ComplexState" + }, + "selected_status": "retained_complex_interface", + "scope": "Pinned complex supplier F16 supplies this responsibility; this relation is not a local scalar-gate trace." + }, + { + "id": "HT045", + "inventory": "typed_edges", + "source_block": "C12b", + "target_block": "C12c", + "original": { + "guarantee_implies_assumption": "opaque_refinement_join; type equality is not proof", + "kind": "data", + "source": "C12b.out", + "target": "C12c.in", + "type": "ComplexState" + }, + "selected_status": "retained_complex_interface", + "scope": "Pinned complex supplier F16 supplies this responsibility; this relation is not a local scalar-gate trace." + }, + { + "id": "HT046", + "inventory": "typed_edges", + "source_block": "A4b2b", + "target_block": "B0", + "original": { + "guarantee_implies_assumption": "opaque_call_adapter", + "kind": "call", + "source": "A4b2b.call_B0", + "target": "B0.in", + "type": "BitState" + }, + "selected_status": "retained_bit_interface_contract", + "scope": "Caller/supplier responsibility is retained; current bit realization is F02-F15, with inherited all-size interface assumptions." + }, + { + "id": "HT047", + "inventory": "typed_edges", + "source_block": "B0", + "target_block": "A4b2b", + "original": { + "guarantee_implies_assumption": "opaque_return_adapter", + "kind": "return", + "source": "B0.return_A4b2b", + "target": "A4b2b.receive_B0", + "type": "BitState" + }, + "selected_status": "retained_bit_interface_contract", + "scope": "Caller/supplier responsibility is retained; current bit realization is F02-F15, with inherited all-size interface assumptions." + }, + { + "id": "HT048", + "inventory": "typed_edges", + "source_block": "A4b2b", + "target_block": "C1", + "original": { + "guarantee_implies_assumption": "opaque_call_adapter", + "kind": "call", + "source": "A4b2b.call_C1", + "target": "C1.in", + "type": "ComplexState" + }, + "selected_status": "retained_complex_interface", + "scope": "Pinned complex supplier F16 supplies this responsibility; this relation is not a local scalar-gate trace." + }, + { + "id": "HT049", + "inventory": "typed_edges", + "source_block": "C1", + "target_block": "A4b2b", + "original": { + "guarantee_implies_assumption": "opaque_return_adapter", + "kind": "return", + "source": "C1.return_A4b2b", + "target": "A4b2b.receive_C1", + "type": "ComplexState" + }, + "selected_status": "retained_complex_interface", + "scope": "Pinned complex supplier F16 supplies this responsibility; this relation is not a local scalar-gate trace." + }, + { + "id": "HT050", + "inventory": "typed_edges", + "source_block": "B9a", + "target_block": "R1", + "original": { + "guarantee_implies_assumption": "opaque_call_adapter", + "kind": "call", + "source": "B9a.call_R1", + "target": "R1.in", + "type": "ResidualRequest" + }, + "selected_status": "retained_bit_interface_contract", + "scope": "Caller/supplier responsibility is retained; current bit realization is F02-F15, with inherited all-size interface assumptions." + }, + { + "id": "HT051", + "inventory": "typed_edges", + "source_block": "R1", + "target_block": "B9a", + "original": { + "guarantee_implies_assumption": "opaque_return_adapter", + "kind": "return", + "source": "R1.return_B9a", + "target": "B9a.receive_R1", + "type": "ResidualResponse" + }, + "selected_status": "retained_bit_interface_contract", + "scope": "Caller/supplier responsibility is retained; current bit realization is F02-F15, with inherited all-size interface assumptions." + }, + { + "id": "HT052", + "inventory": "typed_edges", + "source_block": "C13", + "target_block": "R1", + "original": { + "guarantee_implies_assumption": "opaque_call_adapter", + "kind": "call", + "source": "C13.call_R1", + "target": "R1.in", + "type": "ResidualRequest" + }, + "selected_status": "inherited_recursive_contract", + "scope": "Completed-child and restored-row interface remains an inherited theorem obligation; current charge is bound by F17-F20." + }, + { + "id": "HT053", + "inventory": "typed_edges", + "source_block": "R1", + "target_block": "C13", + "original": { + "guarantee_implies_assumption": "opaque_return_adapter", + "kind": "return", + "source": "R1.return_C13", + "target": "C13.receive_R1", + "type": "ResidualResponse" + }, + "selected_status": "inherited_recursive_contract", + "scope": "Completed-child and restored-row interface remains an inherited theorem obligation; current charge is bound by F17-F20." + }, + { + "id": "HD001", + "inventory": "documentary_edges", + "source_block": "A0a", + "target_block": "A0b", + "original": { + "from": "A0a", + "kind": "data", + "to": "A0b" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HD002", + "inventory": "documentary_edges", + "source_block": "A0b", + "target_block": "A0c", + "original": { + "from": "A0b", + "kind": "data", + "to": "A0c" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HD003", + "inventory": "documentary_edges", + "source_block": "A0c", + "target_block": "A0d", + "original": { + "from": "A0c", + "kind": "data", + "to": "A0d" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HD004", + "inventory": "documentary_edges", + "source_block": "A0d", + "target_block": "A1", + "original": { + "from": "A0d", + "kind": "data", + "to": "A1" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HD005", + "inventory": "documentary_edges", + "source_block": "A1", + "target_block": "A2", + "original": { + "from": "A1", + "kind": "data", + "to": "A2" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HD006", + "inventory": "documentary_edges", + "source_block": "A2", + "target_block": "A3a", + "original": { + "from": "A2", + "kind": "data", + "to": "A3a" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HD007", + "inventory": "documentary_edges", + "source_block": "A3a", + "target_block": "A3b", + "original": { + "from": "A3a", + "kind": "data", + "to": "A3b" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HD008", + "inventory": "documentary_edges", + "source_block": "A3b", + "target_block": "A4a", + "original": { + "from": "A3b", + "kind": "data", + "to": "A4a" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HD009", + "inventory": "documentary_edges", + "source_block": "A4a", + "target_block": "A4b", + "original": { + "from": "A4a", + "kind": "data", + "to": "A4b" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HD010", + "inventory": "documentary_edges", + "source_block": "A4b", + "target_block": "A4c", + "original": { + "from": "A4b", + "kind": "data", + "to": "A4c" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HD011", + "inventory": "documentary_edges", + "source_block": "A4c", + "target_block": "A4d", + "original": { + "from": "A4c", + "kind": "data", + "to": "A4d" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HD012", + "inventory": "documentary_edges", + "source_block": "A4d", + "target_block": "A5", + "original": { + "from": "A4d", + "kind": "data", + "to": "A5" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HD013", + "inventory": "documentary_edges", + "source_block": "A5", + "target_block": "A6", + "original": { + "from": "A5", + "kind": "data", + "to": "A6" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HD014", + "inventory": "documentary_edges", + "source_block": "A6", + "target_block": "A7a", + "original": { + "from": "A6", + "kind": "data", + "to": "A7a" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HD015", + "inventory": "documentary_edges", + "source_block": "A7a", + "target_block": "A7b", + "original": { + "from": "A7a", + "kind": "data", + "to": "A7b" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HD016", + "inventory": "documentary_edges", + "source_block": "A7b", + "target_block": "A8", + "original": { + "from": "A7b", + "kind": "data", + "to": "A8" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HD017", + "inventory": "documentary_edges", + "source_block": "A8", + "target_block": "A9", + "original": { + "from": "A8", + "kind": "data", + "to": "A9" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HD018", + "inventory": "documentary_edges", + "source_block": "A4b1", + "target_block": "A4b2", + "original": { + "from": "A4b1", + "kind": "data", + "to": "A4b2" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HD019", + "inventory": "documentary_edges", + "source_block": "A4b2", + "target_block": "A4b3", + "original": { + "from": "A4b2", + "kind": "data", + "to": "A4b3" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HD020", + "inventory": "documentary_edges", + "source_block": "A4b3", + "target_block": "A4b4", + "original": { + "from": "A4b3", + "kind": "data", + "to": "A4b4" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HD021", + "inventory": "documentary_edges", + "source_block": "A4b4", + "target_block": "A4b5", + "original": { + "from": "A4b4", + "kind": "data", + "to": "A4b5" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HD022", + "inventory": "documentary_edges", + "source_block": "A4b2a", + "target_block": "A4b2b", + "original": { + "from": "A4b2a", + "kind": "data", + "to": "A4b2b" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HD023", + "inventory": "documentary_edges", + "source_block": "A4b2b", + "target_block": "A4b2c", + "original": { + "from": "A4b2b", + "kind": "data", + "to": "A4b2c" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HD024", + "inventory": "documentary_edges", + "source_block": "A4b2c", + "target_block": "A4b2d", + "original": { + "from": "A4b2c", + "kind": "data", + "to": "A4b2d" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HD025", + "inventory": "documentary_edges", + "source_block": "A4c1", + "target_block": "A4c2", + "original": { + "from": "A4c1", + "kind": "data", + "to": "A4c2" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HD026", + "inventory": "documentary_edges", + "source_block": "A4c2", + "target_block": "A4c3", + "original": { + "from": "A4c2", + "kind": "data", + "to": "A4c3" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HD027", + "inventory": "documentary_edges", + "source_block": "B1", + "target_block": "B2", + "original": { + "from": "B1", + "kind": "data", + "to": "B2" + }, + "selected_status": "historical_order_replaced", + "scope": "Source471 internal order is not admitted as selected source527/hybrid execution. Current operation inventory and F02-F15 are authoritative." + }, + { + "id": "HD028", + "inventory": "documentary_edges", + "source_block": "B2", + "target_block": "B3", + "original": { + "from": "B2", + "kind": "data", + "to": "B3" + }, + "selected_status": "historical_order_replaced", + "scope": "Source471 internal order is not admitted as selected source527/hybrid execution. Current operation inventory and F02-F15 are authoritative." + }, + { + "id": "HD029", + "inventory": "documentary_edges", + "source_block": "B3", + "target_block": "B4", + "original": { + "from": "B3", + "kind": "data", + "to": "B4" + }, + "selected_status": "historical_order_replaced", + "scope": "Source471 internal order is not admitted as selected source527/hybrid execution. Current operation inventory and F02-F15 are authoritative." + }, + { + "id": "HD030", + "inventory": "documentary_edges", + "source_block": "B4", + "target_block": "B5", + "original": { + "from": "B4", + "kind": "data", + "to": "B5" + }, + "selected_status": "historical_order_replaced", + "scope": "Source471 internal order is not admitted as selected source527/hybrid execution. Current operation inventory and F02-F15 are authoritative." + }, + { + "id": "HD031", + "inventory": "documentary_edges", + "source_block": "B8a", + "target_block": "B8b", + "original": { + "from": "B8a", + "kind": "data", + "to": "B8b" + }, + "selected_status": "historical_order_replaced", + "scope": "Source471 internal order is not admitted as selected source527/hybrid execution. Current operation inventory and F02-F15 are authoritative." + }, + { + "id": "HD032", + "inventory": "documentary_edges", + "source_block": "B8b", + "target_block": "B9a", + "original": { + "from": "B8b", + "kind": "data", + "to": "B9a" + }, + "selected_status": "historical_order_replaced", + "scope": "Source471 internal order is not admitted as selected source527/hybrid execution. Current operation inventory and F02-F15 are authoritative." + }, + { + "id": "HD033", + "inventory": "documentary_edges", + "source_block": "B9a", + "target_block": "B9b", + "original": { + "from": "B9a", + "kind": "data", + "to": "B9b" + }, + "selected_status": "historical_order_replaced", + "scope": "Source471 internal order is not admitted as selected source527/hybrid execution. Current operation inventory and F02-F15 are authoritative." + }, + { + "id": "HD034", + "inventory": "documentary_edges", + "source_block": "B9b", + "target_block": "B10", + "original": { + "from": "B9b", + "kind": "data", + "to": "B10" + }, + "selected_status": "historical_order_replaced", + "scope": "Source471 internal order is not admitted as selected source527/hybrid execution. Current operation inventory and F02-F15 are authoritative." + }, + { + "id": "HD035", + "inventory": "documentary_edges", + "source_block": "B10", + "target_block": "B11", + "original": { + "from": "B10", + "kind": "data", + "to": "B11" + }, + "selected_status": "historical_order_replaced", + "scope": "Source471 internal order is not admitted as selected source527/hybrid execution. Current operation inventory and F02-F15 are authoritative." + }, + { + "id": "HD036", + "inventory": "documentary_edges", + "source_block": "B11", + "target_block": "B12", + "original": { + "from": "B11", + "kind": "data", + "to": "B12" + }, + "selected_status": "historical_order_replaced", + "scope": "Source471 internal order is not admitted as selected source527/hybrid execution. Current operation inventory and F02-F15 are authoritative." + }, + { + "id": "HD037", + "inventory": "documentary_edges", + "source_block": "C1", + "target_block": "C2", + "original": { + "from": "C1", + "kind": "data", + "to": "C2" + }, + "selected_status": "retained_complex_interface", + "scope": "Pinned complex supplier F16 supplies this responsibility; this relation is not a local scalar-gate trace." + }, + { + "id": "HD038", + "inventory": "documentary_edges", + "source_block": "C2", + "target_block": "C3", + "original": { + "from": "C2", + "kind": "data", + "to": "C3" + }, + "selected_status": "retained_complex_interface", + "scope": "Pinned complex supplier F16 supplies this responsibility; this relation is not a local scalar-gate trace." + }, + { + "id": "HD039", + "inventory": "documentary_edges", + "source_block": "C3", + "target_block": "C4", + "original": { + "from": "C3", + "kind": "data", + "to": "C4" + }, + "selected_status": "retained_complex_interface", + "scope": "Pinned complex supplier F16 supplies this responsibility; this relation is not a local scalar-gate trace." + }, + { + "id": "HD040", + "inventory": "documentary_edges", + "source_block": "C4", + "target_block": "C5", + "original": { + "from": "C4", + "kind": "data", + "to": "C5" + }, + "selected_status": "retained_complex_interface", + "scope": "Pinned complex supplier F16 supplies this responsibility; this relation is not a local scalar-gate trace." + }, + { + "id": "HD041", + "inventory": "documentary_edges", + "source_block": "C5", + "target_block": "C6", + "original": { + "from": "C5", + "kind": "data", + "to": "C6" + }, + "selected_status": "retained_complex_interface", + "scope": "Pinned complex supplier F16 supplies this responsibility; this relation is not a local scalar-gate trace." + }, + { + "id": "HD042", + "inventory": "documentary_edges", + "source_block": "C6", + "target_block": "C7", + "original": { + "from": "C6", + "kind": "data", + "to": "C7" + }, + "selected_status": "retained_complex_interface", + "scope": "Pinned complex supplier F16 supplies this responsibility; this relation is not a local scalar-gate trace." + }, + { + "id": "HD043", + "inventory": "documentary_edges", + "source_block": "C7", + "target_block": "C8", + "original": { + "from": "C7", + "kind": "data", + "to": "C8" + }, + "selected_status": "retained_complex_interface", + "scope": "Pinned complex supplier F16 supplies this responsibility; this relation is not a local scalar-gate trace." + }, + { + "id": "HD044", + "inventory": "documentary_edges", + "source_block": "C12a", + "target_block": "C12b", + "original": { + "from": "C12a", + "kind": "data", + "to": "C12b" + }, + "selected_status": "retained_complex_interface", + "scope": "Pinned complex supplier F16 supplies this responsibility; this relation is not a local scalar-gate trace." + }, + { + "id": "HD045", + "inventory": "documentary_edges", + "source_block": "C12b", + "target_block": "C12c", + "original": { + "from": "C12b", + "kind": "data", + "to": "C12c" + }, + "selected_status": "retained_complex_interface", + "scope": "Pinned complex supplier F16 supplies this responsibility; this relation is not a local scalar-gate trace." + }, + { + "id": "HD046", + "inventory": "documentary_edges", + "source_block": "D1", + "target_block": "D0", + "original": { + "from": "D1", + "kind": "evidence", + "to": "D0" + }, + "selected_status": "current_proof_reallocation", + "scope": "Current evidence is allocated through F01-F21; historical PASS receipts are not current admission." + }, + { + "id": "HD047", + "inventory": "documentary_edges", + "source_block": "D0", + "target_block": "D2", + "original": { + "from": "D0", + "kind": "evidence", + "to": "D2" + }, + "selected_status": "current_proof_reallocation", + "scope": "Current evidence is allocated through F01-F21; historical PASS receipts are not current admission." + }, + { + "id": "HD048", + "inventory": "documentary_edges", + "source_block": "D2", + "target_block": "D3", + "original": { + "from": "D2", + "kind": "evidence", + "to": "D3" + }, + "selected_status": "current_proof_reallocation", + "scope": "Current evidence is allocated through F01-F21; historical PASS receipts are not current admission." + }, + { + "id": "HD049", + "inventory": "documentary_edges", + "source_block": "D3", + "target_block": "D4", + "original": { + "from": "D3", + "kind": "evidence", + "to": "D4" + }, + "selected_status": "current_proof_reallocation", + "scope": "Current evidence is allocated through F01-F21; historical PASS receipts are not current admission." + }, + { + "id": "HD050", + "inventory": "documentary_edges", + "source_block": "D4", + "target_block": "D5", + "original": { + "from": "D4", + "kind": "evidence", + "to": "D5" + }, + "selected_status": "current_proof_reallocation", + "scope": "Current evidence is allocated through F01-F21; historical PASS receipts are not current admission." + }, + { + "id": "HD051", + "inventory": "documentary_edges", + "source_block": "D5", + "target_block": "D6", + "original": { + "from": "D5", + "kind": "evidence", + "to": "D6" + }, + "selected_status": "current_proof_reallocation", + "scope": "Current evidence is allocated through F01-F21; historical PASS receipts are not current admission." + }, + { + "id": "HD052", + "inventory": "documentary_edges", + "source_block": "A4b", + "target_block": "A4b1", + "original": { + "from": "A4b", + "kind": "detail", + "to": "A4b1" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HD053", + "inventory": "documentary_edges", + "source_block": "A4b2", + "target_block": "A4b2a", + "original": { + "from": "A4b2", + "kind": "detail", + "to": "A4b2a" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HD054", + "inventory": "documentary_edges", + "source_block": "A4b4", + "target_block": "A4b4a", + "original": { + "from": "A4b4", + "kind": "detail", + "to": "A4b4a" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HD055", + "inventory": "documentary_edges", + "source_block": "A4c", + "target_block": "A4c1", + "original": { + "from": "A4c", + "kind": "detail", + "to": "A4c1" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HD056", + "inventory": "documentary_edges", + "source_block": "A4a", + "target_block": "A4io", + "original": { + "from": "A4a", + "kind": "support", + "to": "A4io" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HD057", + "inventory": "documentary_edges", + "source_block": "A4c3", + "target_block": "A4io", + "original": { + "from": "A4c3", + "kind": "support", + "to": "A4io" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HD058", + "inventory": "documentary_edges", + "source_block": "A4b", + "target_block": "A4p1", + "original": { + "from": "A4b", + "kind": "support", + "to": "A4p1" + }, + "selected_status": "retained_outer_contract", + "scope": "Outer algorithm relation remains conditional; selected package does not execute arbitrary-size outer internals." + }, + { + "id": "HD059", + "inventory": "documentary_edges", + "source_block": "A4b2b", + "target_block": "B0", + "original": { + "from": "A4b2b", + "kind": "support", + "to": "B0" + }, + "selected_status": "retained_bit_interface_contract", + "scope": "Caller/supplier responsibility is retained; current bit realization is F02-F15, with inherited all-size interface assumptions." + }, + { + "id": "HD060", + "inventory": "documentary_edges", + "source_block": "A4b2b", + "target_block": "C1", + "original": { + "from": "A4b2b", + "kind": "support", + "to": "C1" + }, + "selected_status": "retained_complex_interface", + "scope": "Pinned complex supplier F16 supplies this responsibility; this relation is not a local scalar-gate trace." + }, + { + "id": "HD061", + "inventory": "documentary_edges", + "source_block": "B0", + "target_block": "B1", + "original": { + "from": "B0", + "kind": "detail", + "to": "B1" + }, + "selected_status": "historical_order_replaced", + "scope": "Source471 internal order is not admitted as selected source527/hybrid execution. Current operation inventory and F02-F15 are authoritative." + }, + { + "id": "HD062", + "inventory": "documentary_edges", + "source_block": "B2", + "target_block": "B6a", + "original": { + "from": "B2", + "kind": "detail", + "to": "B6a" + }, + "selected_status": "historical_order_replaced", + "scope": "Source471 internal order is not admitted as selected source527/hybrid execution. Current operation inventory and F02-F15 are authoritative." + }, + { + "id": "HD063", + "inventory": "documentary_edges", + "source_block": "B4", + "target_block": "B7a", + "original": { + "from": "B4", + "kind": "detail", + "to": "B7a" + }, + "selected_status": "historical_order_replaced", + "scope": "Source471 internal order is not admitted as selected source527/hybrid execution. Current operation inventory and F02-F15 are authoritative." + }, + { + "id": "HD064", + "inventory": "documentary_edges", + "source_block": "B5", + "target_block": "B8a", + "original": { + "from": "B5", + "kind": "support", + "to": "B8a" + }, + "selected_status": "historical_order_replaced", + "scope": "Source471 internal order is not admitted as selected source527/hybrid execution. Current operation inventory and F02-F15 are authoritative." + }, + { + "id": "HD065", + "inventory": "documentary_edges", + "source_block": "B9a", + "target_block": "R5a", + "original": { + "from": "B9a", + "kind": "support", + "to": "R5a" + }, + "selected_status": "retained_bit_interface_contract", + "scope": "Caller/supplier responsibility is retained; current bit realization is F02-F15, with inherited all-size interface assumptions." + }, + { + "id": "HD066", + "inventory": "documentary_edges", + "source_block": "A4b2a", + "target_block": "R5b", + "original": { + "from": "A4b2a", + "kind": "support", + "to": "R5b" + }, + "selected_status": "inherited_recursive_contract", + "scope": "Completed-child and restored-row interface remains an inherited theorem obligation; current charge is bound by F17-F20." + }, + { + "id": "HD067", + "inventory": "documentary_edges", + "source_block": "C2", + "target_block": "C13", + "original": { + "from": "C2", + "kind": "support", + "to": "C13" + }, + "selected_status": "retained_complex_interface", + "scope": "Pinned complex supplier F16 supplies this responsibility; this relation is not a local scalar-gate trace." + }, + { + "id": "HD068", + "inventory": "documentary_edges", + "source_block": "C4", + "target_block": "C9", + "original": { + "from": "C4", + "kind": "detail", + "to": "C9" + }, + "selected_status": "retained_complex_interface", + "scope": "Pinned complex supplier F16 supplies this responsibility; this relation is not a local scalar-gate trace." + }, + { + "id": "HD069", + "inventory": "documentary_edges", + "source_block": "C4", + "target_block": "C10", + "original": { + "from": "C4", + "kind": "detail", + "to": "C10" + }, + "selected_status": "retained_complex_interface", + "scope": "Pinned complex supplier F16 supplies this responsibility; this relation is not a local scalar-gate trace." + }, + { + "id": "HD070", + "inventory": "documentary_edges", + "source_block": "C8", + "target_block": "C12a", + "original": { + "from": "C8", + "kind": "support", + "to": "C12a" + }, + "selected_status": "retained_complex_interface", + "scope": "Pinned complex supplier F16 supplies this responsibility; this relation is not a local scalar-gate trace." + }, + { + "id": "HD071", + "inventory": "documentary_edges", + "source_block": "R5a", + "target_block": "R1", + "original": { + "from": "R5a", + "kind": "support", + "to": "R1" + }, + "selected_status": "inherited_recursive_contract", + "scope": "Completed-child and restored-row interface remains an inherited theorem obligation; current charge is bound by F17-F20." + }, + { + "id": "HD072", + "inventory": "documentary_edges", + "source_block": "C13", + "target_block": "R1", + "original": { + "from": "C13", + "kind": "support", + "to": "R1" + }, + "selected_status": "inherited_recursive_contract", + "scope": "Completed-child and restored-row interface remains an inherited theorem obligation; current charge is bound by F17-F20." + }, + { + "id": "HD073", + "inventory": "documentary_edges", + "source_block": "R1", + "target_block": "R2", + "original": { + "from": "R1", + "kind": "support", + "to": "R2" + }, + "selected_status": "inherited_recursive_contract", + "scope": "Completed-child and restored-row interface remains an inherited theorem obligation; current charge is bound by F17-F20." + }, + { + "id": "HD074", + "inventory": "documentary_edges", + "source_block": "R2", + "target_block": "R3", + "original": { + "from": "R2", + "kind": "support", + "to": "R3" + }, + "selected_status": "inherited_recursive_contract", + "scope": "Completed-child and restored-row interface remains an inherited theorem obligation; current charge is bound by F17-F20." + }, + { + "id": "HD075", + "inventory": "documentary_edges", + "source_block": "R2", + "target_block": "R4", + "original": { + "from": "R2", + "kind": "support", + "to": "R4" + }, + "selected_status": "inherited_recursive_contract", + "scope": "Completed-child and restored-row interface remains an inherited theorem obligation; current charge is bound by F17-F20." + } + ] +} diff --git a/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_hierarchy_views.py b/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_hierarchy_views.py new file mode 100644 index 0000000000..1d5f7ed746 --- /dev/null +++ b/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_hierarchy_views.py @@ -0,0 +1,186 @@ +"""Full-system overview and reconciliation of all 87 prior stable block IDs.""" +from pathlib import Path +import json +BASE=Path(__file__).resolve().parent +DATA=json.loads((BASE/"joint259_system_docs_hierarchy.json").read_text()) +EDGES=json.loads((BASE/"joint259_system_docs_hierarchy_edges.json").read_text()) +WHY={ +"A0a":"Determine the exact input domain and operand lengths.", +"A0b":"Choose sizes and precision that satisfy every later interface.", +"A0c":"Make address, scale and phase choices explicit and reproducible.", +"A0d":"Route small cases to the attained ordinary leaf and retain finite guards.", +"A1":"Expose a convolution whose integer coefficients recover the product.", +"A2":"Keep transform inputs within the declared numerical envelope.", +"A3a":"Prevent cyclic wraparound from corrupting ordinary convolution.", +"A3b":"Preserve convolution while using the selected multidimensional layout.", +"A4a":"Move source samples into the working transform grid.", +"A4b":"Realize the source transform through the retained chirp reduction.", +"A4b1":"Represent the chirp convolution in the required negacyclic ring.", +"A4b2":"Evaluate the two normalized transforms used by ring convolution.", +"A4b3":"Form the ring convolution without hiding record-product work.", +"A4b4":"Return transformed products through the opposite normalization.", +"A4b5":"Remove the twist and restore the promised coefficient representation.", +"A4c":"Return from working-grid values to ordered source samples.", +"A4d":"Put both operand spectra in the same declared order.", +"A5":"Compute transform-domain convolution products at the chosen precision.", +"A6":"Recover a scaled convolution using the opposite transform sign.", +"A7a":"Undo the first transform normalization before exact recovery.", +"A7b":"Restore every remaining scale and the original coefficient layout.", +"A8":"Use the strict error bound to recover exact integer coefficients.", +"A9":"Propagate carries and serialize the exact integer product.", +"A4p1":"Generate phase exponents with their exact address/precision context.", +"A4p2":"Approximate phase factors within the allocated error budget.", +"A4p3":"Charge factor multiplication and truncation, rather than treating phases as free.", +"A4b2a":"Present stored records in the order required by each transform round.", +"A4b2b":"Realize the normalized local synthetic transform maps.", +"A4b2c":"Preserve the exact signed polynomial phase convention.", +"A4b2d":"Contain numerical growth and restore temporary work after each round.", +"A4b4a":"Reverse the transform orientation with its exact normalization.", +"A4c1":"Select the correct ordered source sample set.", +"A4c2":"Correct the bounded interpolation discrepancy.", +"A4c3":"Undo the diagonal Gaussian weighting with a paid factor.", +"A4io":"Make record shape and axis-order adapters explicit.", +"B0":"Keep F2 payload semantics separate from odd-prime address geometry.", +"B1":"Cancel arbitrary pre-existing dirty response before desired updates.", +"B2":"Produce the local helper action in exact admissible common frames.", +"B3":"Use a copied center without mutating its source or reading expired work.", +"B4":"Deliver only the specified target shear while preserving old target values.", +"B5":"Return all promised source and dirty payload states.", +"B6a":"Enter a source loan with a declared ownership and observation boundary.", +"B6b":"Prepare the source-carrier mix needed by the selected alias recipe.", +"B6c":"Consume the alias only inside its admitted lifetime and frames.", +"B6d":"Return the borrowed source before it is observed by its caller.", +"B6e":"Remove the carrier mix after its compensation obligations close.", +"B7a":"Prepare exact compensation for source-owned response.", +"B7b":"Transport the compensated target contribution to its legal observation cut.", +"B7c":"Cancel unwanted response without discarding the desired signal.", +"B8a":"Distinguish full routed addresses, not merely equal family numbers.", +"B8b":"Move complete streams with the exact route and finite charge.", +"B9a":"Invoke the exact smaller residual operator with restored-row obligations.", +"B9b":"Apply payload updates only at their common required frame.", +"B10":"Compose five routed orientations with legal phase-major boundaries.", +"B11":"Close arbitrary dirty residuals through the selected exact bank proof.", +"B12":"Restore the final external data-bank ordering by a paid exchange.", +"C1":"Cancel the old complex dirty response before the desired linear update.", +"C2":"Meet the exact phase-sensitive source entry labels.", +"C3":"Execute the first set of paid live-frame transitions.", +"C4":"Retain every copied-center child and scalar consumer.", +"C5":"Execute the second set of paid live-frame transitions.", +"C6":"Finish all live climbs before exit adaptation and cleanup.", +"C7":"Meet the exact complex exit labels, not a same-rank substitute.", +"C8":"Restore borrowed complex payload and clear the tableau.", +"C9":"Implement the literal forward center-copy scalar macro.", +"C10":"Implement the backward/transposed macro with fresh work.", +"C11a":"Create scalar work while preserving its source.", +"C11b":"Realize each exact rational coefficient on the declared common grid.", +"C11c":"Accumulate the signed scalar response at its correct destination.", +"C11d":"Clear temporary scalar work before reuse or recursion.", +"C12a":"Route each complex owner to its exact label and cover class.", +"C12b":"Compose all five complex windows, including idle banks.", +"C12c":"Finish the signed terminal exchange and restore external ownership.", +"C13":"Supply the residual with exact complex phases and normalization.", +"R1":"Package the complete residual operator and ownership obligations.", +"R2":"Call a genuinely smaller completed transform under the induction hypothesis.", +"R3":"Terminate at an attained ordinary algorithm below the finite cutoff.", +"R4":"Return every borrowed high row and spectator state.", +"R5a":"Retain both good-edge dispatch and the complete bad-edge fallback.", +"R5b":"Repair exceptional record layouts with paid primitives.", +"D0":"Bind every later check to a reconstructed source recipe.", +"D1":"Reject missing, changed or unpinned inputs.", +"D2":"Prove every formal bit column and its inverse restoration.", +"D3":"Check actual geometry, route order and determinant inventory.", +"D4":"Bind complex numerical checks to the pinned symbolic declarations.", +"D5":"Prevent a local cost improvement from bypassing complete closure.", +"D6":"Keep inherited all-size assumptions visible at the certificate boundary." +} +def card(d,x,y,w,h,key,title,body,target): + d.panel(x,y,w,h,key+" "+title,body,compact=True) + d.link(x+15,y+12,"Drill down: "+target,"H_"+target if target[0]in"ABCRD" else "B_"+target,w-30,9) + return (x,y,w,h) +def overview(d): + d.page("H_SYSTEM","Functional hierarchy | integers to exact product","Runtime data path; supplier and theorem support are separate") + d.text(42,666,"The selected hybrid replaces the BIT supplier inside this retained conditional integer-multiplication architecture.",13,"#526873") + groups=[ + ("A0","Accept and configure","U,V,n -> admissible sizes, precision and descriptors\nA0a-A0d","A0a"), + ("A1-A3","Represent operands","radix digits -> bounded arrays -> padded/CRT layout\nA1,A2,A3a,A3b","A1"), + ("A4","Two source transforms","normalized source Fourier arrays, same retained order\nGaussian / chirp / resampling hierarchy","A4a"), + ("A5-A6","Convolve and invert","matching Fourier products -> opposite-sign transform\nscaled convolution coefficients","A5"), + ("A7-A8","Recover exactly","undo all scales/layout -> error below 1/2 -> integer coefficients","A7a"), + ("A9","Normalize output","carry propagation and serialization -> exact UV","A9")] + for i,(key,title,body,target) in enumerate(groups): + col=i%3;row=i//3 + p=card(d,42+col*352,487-row*171,324,124,key,title,body,target) + if col:d.arrow(last,p) + last=p + d.panel(42,95,323,159,"BIT SUPPLIER B0-B12","Current F02-F15 expand source527, kernels, intervals, frame paths, copied centers, 40-replica banks and exact completion. Historical source471 details are replaced, not silently retained.",compact=True) + d.panel(394,95,323,159,"COMPLEX C1-C13","F16 expands the pinned complex supplier: labels, two scalar orientations, copied centers, live climbs, exact phases and finite guards. Its symbolic/analytic source theorem remains inherited.",compact=True) + d.panel(746,95,332,159,"RECURSION / PROOF","R1-R5b state completed-child, row and fallback contracts. D0-D6 are evidence flow, not runtime payload. F17-F21 bind the selected literal cost and conditional outer closure.",compact=True) + d.text(45,278,"Continuation: the output of A4 enters A5 on the next row. Each grouped ID opens its preserved detailed allocation.",10,"#526873") +def transforms(d): + d.page("H_TRANSFORMS","Functional hierarchy | source-transform internals","Retained outer interfaces; not new executable helper gates") + d.panel(42,492,320,156,"A4a GAUSSIAN EXPANSION","CRTInputs -> WorkingTensor\nPaid descriptors and phase factors come from A4p1-A4p3; layout adapters are A4io.\nWhy: put source samples in the working grid.",compact=True) + d.panel(390,492,334,156,"A4b CHIRP TRANSFORM","A4b1 twist -> A4b2 two normalized transforms -> A4b3 ring products -> A4b4 opposite transform -> A4b5 untwist.\nWorkingTensor -> WorkingSpectrum.",compact=True) + d.panel(752,492,326,156,"A4c / A4d RESAMPLE","A4c1 sample selection -> A4c2 bounded Neumann correction -> A4c3 diagonal correction -> ordered SourceSpectrum / PairedSpectrum.",compact=True) + d.arrow((42,492,320,156),(390,492,334,156));d.arrow((390,492,334,156),(752,492,326,156)) + d.panel(42,250,498,166,"A4b2 / A4b4 SYNTHETIC TRANSFORM","A4b2a tensor layout; A4b2b normalized butterfly rounds; A4b2c exact signed polynomial twiddle; A4b2d truncation and work cleanup. A4b4a supplies opposite rounds and normalization.\nTyped input/output: SyntheticState, with explicit numerical and ownership refinement.",compact=True) + d.panel(567,250,511,166,"SUPPLIER CONNECTIONS","Bit supplier B supplies exact address movement, with F2 payload and rational address frames.\nComplex supplier C supplies phase-correct linear residuals.\nR supplies completed recursive returns and restored borrowed rows. Supplier proofs do not prove all outer internals.",compact=True) + d.text(43,191,"Every original A/B/C/R/D ID appears below with its typed ports, why it exists, current allocation and exact scope.",13,"#147D77",bold=True) + d.text(43,157,"Unexpanded all-size numerical routines and theorem primitives remain explicit contracts. No transistor/gate-level or all-size implementation completeness is claimed.",12,"#526873",width=1010) +def catalog(d): + rows=DATA["blocks"] + if len(rows)!=87 or len({z["id"]for z in rows})!=87 or set(WHY)!={z["id"]for z in rows}:raise ValueError("Historical block coverage mismatch") + for start in range(0,len(rows),6): + d.page("H_CATALOG" if start==0 else "H_CATALOG%d"%start,"Full hierarchy | blocks %d-%d of 87"%(start+1,min(start+6,87)),"Preserved stable IDs; current allocation and explicit implementation boundary") + for j,z in enumerate(rows[start:start+6]): + x=43+(j%2)*532;y=646-(j//2)*199 + d.bookmark("H_"+z["id"]) + y=d.text(x,y,z["id"]+" "+z["name"],13,"#142D3A",492,True)-6 + y=d.text(x,y,"WHY: "+WHY[z["id"]],10,"#147D77",492,leading=13)-6 + ports="; ".join(k+": "+v for k,v in z["ports"].items()) + y=d.text(x,y,"PORTS: "+ports,9.5,"#142D3A",492,leading=12.5)-7 + y=d.text(x,y,z["note"],9.3,"#526873",492,leading=12)-7 + xx=x + for bid in z["current_blocks"]:d.link(xx,y,bid,"B_"+bid,43,9.5);xx+=55 + d.text(xx,y,z["status"].replace("_"," "),8.4,"#526873",width=max(10,x+495-xx)) + y-=18 + for rid in z['historical_requirements']: + d.link(x,y,rid,'H_REQ_'+rid,47,8.5);x+=52 + refs=list(z['source_refs'].items()) + preferred=[v for p,v in refs if '/sections/' in p]or[v for p,v in refs] + url=preferred[0].get('primary_url') if preferred else None + if url: + label='Exact historical proof/source' + d.text(x,y,label,8.5,'#176B8B',230) + d.c.linkURL(url,(x,y-3,x+180,y+11),relative=0,thickness=0) + +def requirements(d): + rows=DATA['requirement_definitions'] + for start in range(0,len(rows),5): + d.page('H_REQUIREMENTS' if start==0 else 'H_REQUIREMENTS%d'%start,'Original requirement vocabulary | %d-%d'%(start+1,min(start+5,len(rows))),'Retained outcome/model obligations; not source471 implementation mandates') + y=671 + for row in rows[start:start+5]: + d.bookmark('H_REQ_'+row['id']) + y=d.text(43,y,row['id']+' '+row['title'],14,'#147D77',1020,True)-4 + y=d.text(43,y,row['statement'],11,'#142D3A',1020)-6 + y=d.text(43,y,'Why: '+row['rationale'],10,'#526873',1020)-22 + +def connections(d): + rows=[z for z in EDGES['relations']if z['inventory']=='typed_edges'] + if len(rows)!=53 or len(EDGES['relations'])!=128:raise ValueError('Historical edge reconciliation incomplete') + ids={z['id']for z in DATA['blocks']} + if any(e['source_block']not in ids or e['target_block']not in ids for e in EDGES['relations']):raise ValueError('Unknown historical endpoint') + for start in range(0,len(rows),10): + d.page('H_CONNECTIONS'if start==0 else'H_CONNECTIONS%d'%start,'Preserved interface connections | %d-%d of 53'%(start+1,min(start+10,53)),'Original typed relations reconciled; not promoted to current scalar execution') + y=671 + for r in rows[start:start+10]: + e=r['original'];d.bookmark(r['id']) + d.text(43,y,r['id'],10,'#147D77',70,True) + d.link(110,y,e['source'],'H_'+r['source_block'],194,10) + d.text(305,y,'->',10,'#142D3A',30) + d.link(334,y,e['target'],'H_'+r['target_block'],194,10) + d.text(543,y,e['kind']+' / '+e.get('type','contract'),9.5,'#142D3A',500) + d.text(110,y-17,r['selected_status'].replace('_',' '),9,'#526873',850) + y-=49 + d.text(43,91,'Also preserved: 75 documentary relations with separate classification in hierarchy_edges.json. Neither inventory is silently relabeled as current gate order.',10,'#526873',1020) + d.text(43,68,'Current F01-F21 dependencies and the exact selected local event inventory are separate, source-bound layers.',10,'#526873',1020) + diff --git a/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_incremental.py b/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_incremental.py new file mode 100644 index 0000000000..6eca2a0ec4 --- /dev/null +++ b/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_incremental.py @@ -0,0 +1,425 @@ +#!/usr/bin/env python3 +"""Content-addressed vector-page cache for joint259_system_docs_build. + +The normal renderer is executed against a recording canvas, without painting. +Only new drawing-operation sequences are painted. Every run reconstructs PDF +destinations, links, outlines and nonvisual indexes from the current model. +Use --clean to bypass saved pages, --svg for linked per-page vector SVGs, and +--emit-json to return text artifacts without writing to the filesystem. +""" +from __future__ import annotations + +import argparse +import base64 +import contextlib +import hashlib +import importlib.metadata +import io +import json +import re +import shutil +import subprocess +import sys +import time +from pathlib import Path +from xml.sax.saxutils import escape, quoteattr + +import reportlab +from reportlab.lib.colors import Color +from reportlab.pdfbase import pdfmetrics +from reportlab.pdfgen import canvas +from pypdf import PdfReader, PdfWriter +from pypdf.annotations import Link +from pypdf.generic import NameObject, StreamObject + +import joint259_system_docs_build as renderer + +SCHEMA = "joint259-vector-page-cache/1" +BASE_DOC = renderer.Doc +BASE_RENDER = renderer.render +KINDS = {"functional": "functional_architecture", "logical": "logical_wiring", "combined": "complete_system"} + + +def canonical(value): + return json.dumps(value, sort_keys=True, separators=(",", ":"), ensure_ascii=True).encode("ascii") + + +def digest(value): + return hashlib.sha256(value).hexdigest() + + +class RecordedPath: + def __init__(self): + self.calls = [] + + def __getattr__(self, name): + def record(*args, **kwargs): + self.calls.append([name, pack(args), pack(kwargs)]) + return record + + +def pack(value): + if isinstance(value, RecordedPath): + return {"__path__": value.calls} + if isinstance(value, Color): + return {"__color__": [value.red, value.green, value.blue, value.alpha]} + if isinstance(value, (list, tuple)): + return [pack(v) for v in value] + if isinstance(value, dict): + return {k: pack(v) for k, v in value.items()} + if value is None or isinstance(value, (str, bool, int, float)): + return value + raise TypeError("Unsupported drawing argument: " + type(value).__name__) + + +def unpack(value, target): + if isinstance(value, dict): + if "__color__" in value: + return Color(*value["__color__"]) + if "__path__" in value: + path = target.beginPath() + for name, args, kwargs in value["__path__"]: + getattr(path, name)(*unpack(args, target), **unpack(kwargs, target)) + return path + return {k: unpack(v, target) for k, v in value.items()} + if isinstance(value, list): + return [unpack(v, target) for v in value] + return value + + +class RecordingCanvas: + """The renderer's supported canvas protocol; unsupported values fail closed.""" + def __init__(self): + self.pages = [] + self.current = {"paint": [], "destinations": [], "links": [], "outlines": []} + + def beginPath(self): + return RecordedPath() + + def stringWidth(self, text, fontName, fontSize, encoding="utf8"): + return pdfmetrics.stringWidth(text, fontName, fontSize, encoding) + + def getPageNumber(self): + return len(self.pages) + 1 + + def bookmarkPage(self, key, **kwargs): + if kwargs: + raise ValueError("New bookmark options require explicit cache support") + self.current["destinations"].append(key) + + def addOutlineEntry(self, title, key, level=0, closed=None): + self.current["outlines"].append([title, key, level, bool(closed)]) + + def linkRect(self, contents, destinationname, Rect=None, addtopage=1, name=None, + relative=1, thickness=0, color=None, dashArray=None, **kwargs): + if relative or not addtopage or name or kwargs or thickness or color or dashArray: + raise ValueError("New link style requires explicit cache support") + self.current["links"].append({"target": destinationname, "rect": list(Rect)}) + + def linkURL(self, url, rect, relative=0, thickness=0, color=None, dashArray=None, kind="URI", **kwargs): + if relative or thickness or color or dashArray or kind != "URI" or kwargs: + raise ValueError("New external-link style requires explicit cache support") + self.current["links"].append({"url": url, "rect": list(rect)}) + + def showPage(self): + if self.current["paint"] or self.current["destinations"]: + self.pages.append(self.current) + self.current = {"paint": [], "destinations": [], "links": [], "outlines": []} + + def save(self): + self.showPage() + + def __getattr__(self, name): + if name.startswith("_"): + raise AttributeError(name) + if name in {"setTitle", "setAuthor", "setSubject", "setCreator", "setKeywords"}: + return lambda *a, **k: None + if not hasattr(canvas.Canvas, name): + raise AttributeError("Unsupported Canvas method " + name) + def record(*args, **kwargs): + self.current["paint"].append([name, pack(args), pack(kwargs)]) + return record + + +class PlanningDoc(BASE_DOC): + def __init__(self, kind, model, refs): + self.kind, self.model, self.refs = kind, model, refs + self.buf = io.BytesIO() + self.c = RecordingCanvas() + self.n = 0 + self.ids, self.links, self.used_blocks, self.pages, self.boxes = set(), [], set(), [], [] + + def finish(self): + missing = {t for _, t in self.links} - self.ids + if missing: + raise ValueError("Broken internal links " + str(missing)) + self.c.save() + if len(self.c.pages) != self.n: + raise ValueError("Page recording mismatch") + return self.c.pages, {"pages": self.pages, "internal_links": len(self.links), + "blocks": sorted(self.used_blocks)} + + +def plan(kind, model, refs): + """Uses the authoritative renderer; no duplicated page-dispatch logic.""" + previous = renderer.Doc + renderer.Doc = PlanningDoc + try: + return BASE_RENDER(kind, model, refs) + finally: + renderer.Doc = previous + + +def dependencies(model, extra=None): + files = {"renderer": Path(renderer.__file__), "cache_implementation": Path(__file__), + "requirements": renderer.BASE / "joint259_system_docs_requirements.txt", + "source_binding": renderer.BASE / "joint259_system_docs_source_binding.json"} + # Imported drawing code is a renderer dependency as well. Model JSON is + # deliberately projected through recorded page operations, so a single + # block edit does not invalidate every unrelated visual page. + for name, module in vars(renderer).items(): + module_file = getattr(module, "__file__", None) + if module_file and Path(module_file).resolve().parent == renderer.BASE.resolve(): + files["renderer_module_" + name] = Path(module_file) + font_root = Path(reportlab.__file__).parent / "fonts" + files.update({"font_" + f: font_root / f for f in ("Vera.ttf", "VeraBd.ttf")}) + return {"schema": SCHEMA, "files": {k: digest(v.read_bytes()) for k, v in files.items()}, + "source_manifest_sha256": model["source_manifest_sha256"], + "python_version": list(sys.version_info[:3]), + "packages": {n: importlib.metadata.version(n) for n in ("reportlab", "pypdf", "Pillow", "charset-normalizer")}, + "configuration": {"width": renderer.W, "height": renderer.H, "font": renderer.FONT, + "pdf_compression": 0, "invariant": 1}, + "extra": extra or {}} + + +def ascii_pdf(writer): + for obj in writer._objects: + if isinstance(obj, StreamObject): + obj._data = base64.a85encode(obj.get_data()) + b"~>" + obj[NameObject("/Filter")] = NameObject("/ASCII85Decode") + obj.pop(NameObject("/DecodeParms"), None) + if hasattr(obj, "decoded_self"): + obj.decoded_self = None + buf = io.BytesIO() + writer.write(buf) + raw = buf.getvalue().replace(b"%\x93\x8c\x8b\x9e", b"%ASCI", 1).replace(b"%\xe2\xe3\xcf\xd3", b"%ASCI", 1) + raw.decode("ascii") + return raw + + +def paint_page(operations): + buf = io.BytesIO() + target = canvas.Canvas(buf, pagesize=(renderer.W, renderer.H), pageCompression=0, invariant=1) + for name, args, kwargs in operations: + getattr(target, name)(*unpack(args, target), **unpack(kwargs, target)) + target.save() + return buf.getvalue() + + +def entry_pdf(entry): + return base64.b64decode(entry["pdf_base64"], validate=True) + + +def valid_entry(entry, key, plan_hash, dependency_hash): + try: + if (entry["schema"], entry["key"], entry["plan_sha256"], entry["dependency_sha256"]) != (SCHEMA, key, plan_hash, dependency_hash): + return False + raw = entry_pdf(entry) + if digest(raw) != entry["pdf_sha256"]: + return False + reader = PdfReader(io.BytesIO(raw), strict=True) + return len(reader.pages) == 1 and not reader.pages[0].get("/Annots") + except Exception: + return False + + +def assemble(pages, page_pdfs, model): + writer = PdfWriter() + for raw in page_pdfs: + writer.add_page(PdfReader(io.BytesIO(raw)).pages[0]) + targets = {} + for number, page in enumerate(pages): + for name in page["destinations"]: + if name in targets: + raise ValueError("Duplicate destination " + name) + targets[name] = number + for name in sorted(targets): + writer.add_named_destination(name, targets[name]) + parents = {} + for number, page in enumerate(pages): + for title, key, level, closed in page["outlines"]: + if level and level - 1 not in parents: + raise ValueError("Outline skips a level") + parents[level] = writer.add_outline_item(title, targets[key], parent=parents.get(level - 1), is_open=not closed) + for obsolete in [i for i in parents if i > level]: + del parents[obsolete] + for link in page["links"]: + if "url" in link: + annotation = Link(rect=tuple(link["rect"]), url=link["url"]) + else: + annotation = Link(rect=tuple(link["rect"]), target_page_index=targets[link["target"]]) + inserted = writer.add_annotation(number, annotation) + if "url" not in link: + # pypdf 6.10 leaves target_page_index as an integer here; + # an explicit same-document destination requires a page ref. + inserted["/Dest"][0] = writer.pages[targets[link["target"]]].indirect_reference + writer.add_metadata({"/Title": model["title"], "/Author": "Henry Grant; prepared with OpenAI assistance", + "/Creator": "joint259_system_docs_incremental", "/Producer": "pypdf"}) + # Each isolated page carries self-contained fonts. Coalesce identical + # resources before final serialization, keeping the assembled PDF compact. + writer.compress_identical_objects(remove_identicals=True, remove_orphans=True) + return ascii_pdf(writer) + + +def svg_version(): + result = subprocess.run(["pdftocairo", "-v"], stdout=subprocess.PIPE, stderr=subprocess.PIPE, check=True) + return {"version": (result.stdout + result.stderr).decode("utf8").strip(), + "executable_sha256": digest(Path(shutil.which("pdftocairo")).read_bytes())} + + +def paint_svg(raw): + result = subprocess.run(["pdftocairo", "-svg", "-", "-"], input=raw, + stdout=subprocess.PIPE, stderr=subprocess.PIPE, check=True) + value = result.stdout.decode("utf8") + if "' % + (quoteattr(link["url"] if "url" in link else targets[link["target"]]), x1, renderer.H-y2, x2-x1, y2-y1)) + files[svg_name(kind, info["id"])] = saved["text"].replace("", "\n" + "\n".join(overlays) + "\n") + return files + + +class Engine: + def __init__(self, model, cache=None, extra_dependencies=None, svg=False): + self.cache = cache if cache is not None else {} + self.dependencies = dependencies(model, extra_dependencies) + self.dependency_hash = digest(canonical(self.dependencies)) + self.events = [] + self.svg_files = {} + self.svg_version = svg_version() if svg else None + + def render(self, kind, model, refs): + start = time.perf_counter() + pages, report = plan(kind, model, refs) + planning_seconds = time.perf_counter() - start + page_pdfs, entries, rebuilt, reused = [], [], [], [] + for page, info in zip(pages, report["pages"]): + plan_hash = digest(canonical(page["paint"])) + key = digest(canonical([self.dependency_hash, plan_hash])) + entry = self.cache.get(key) + if not valid_entry(entry, key, plan_hash, self.dependency_hash): + raw = paint_page(page["paint"]) + entry = {"schema": SCHEMA, "key": key, "plan_sha256": plan_hash, + "dependency_sha256": self.dependency_hash, "pdf_sha256": digest(raw), "pdf_base64": base64.b64encode(raw).decode("ascii")} + self.cache[key] = entry + rebuilt.append(info["id"]) + else: + reused.append(info["id"]) + entries.append(entry) + page_pdfs.append(entry_pdf(entry)) + raw = assemble(pages, page_pdfs, model) + if self.svg_version is not None: + self.svg_files.update(linked_svgs(kind, pages, report, entries, self.svg_version)) + report["sha256"] = digest(raw) + self.events.append({"kind": kind, "rendered_pages": rebuilt, "reused_pages": reused, + "planning_seconds": planning_seconds, "elapsed_seconds": time.perf_counter() - start}) + return raw, report + + +def build(source, model, engine): + """Run authoritative integrity/index/QA code with this engine's rendering.""" + source = renderer.source_views.open_source(source) + previous_render, previous_model, previous_argv = renderer.render, renderer.MODEL, sys.argv + class ModelInput: + def read_text(self): + return json.dumps(model) + renderer.render, renderer.MODEL = engine.render, ModelInput() + sys.argv = [str(Path(renderer.__file__)), "--source", str(source), "--emit-json"] + output = io.StringIO() + try: + with contextlib.redirect_stdout(output): + renderer.main(source_override=source) + finally: + renderer.render, renderer.MODEL, sys.argv = previous_render, previous_model, previous_argv + files = json.loads(output.getvalue()) + files.update(engine.svg_files) + receipt = {"schema": SCHEMA, "dependencies": engine.dependencies, + "dependency_sha256": engine.dependency_hash, "model_sha256": digest(canonical(model)), + "auxiliary_models": {p.name: digest(p.read_bytes()) for p in renderer.BASE.glob("joint259_system_docs_hierarchy*.json")}, + "pdfs": {n: digest(v.encode("ascii")) for n, v in files.items() if n.endswith(".pdf")}, + "source_binding": json.loads(files['source_binding.json']), + "svg_converter": engine.svg_version, + "scope": "Vector-page rendering cache only; science replay is separate.", + "page_cache_validation": "Schema, dependency and drawing-plan keys, PDF hash and single-page structure checked before reuse."} + files["incremental_receipt.json"] = renderer.stable(receipt) + return files + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--source", type=Path, required=True) + parser.add_argument("--model", type=Path, default=renderer.MODEL) + parser.add_argument("--output", type=Path) + parser.add_argument("--cache", type=Path, help="Persistent cache JSON; default OUTPUT/../joint259-page-cache.json") + parser.add_argument("--clean", action="store_true") + parser.add_argument("--svg", action="store_true", help="Also export linked vector SVGs; requires pdftocairo") + parser.add_argument("--emit-json", action="store_true", help="No filesystem writes; emit artifacts and cache in one JSON object") + args = parser.parse_args() + if not args.emit_json and args.output is None: + parser.error("--output or --emit-json is required") + cache_path = args.cache or (args.output.parent / "joint259-page-cache.json" if args.output else None) + cache = {} + if not args.clean and cache_path and cache_path.exists(): + try: + saved = json.loads(cache_path.read_text()) + if saved.get("schema") == SCHEMA and isinstance(saved.get("pages"), dict): + cache = saved["pages"] + except (OSError, ValueError): + pass # An absent or damaged cache is a clean rebuild, never success by receipt. + model = json.loads(args.model.read_text()) + engine = Engine(model, cache, svg=args.svg) + files = build(args.source.resolve(), model, engine) + saved = {"schema": SCHEMA, "pages": engine.cache} + result = {"files": files, "cache": saved, "measurements": engine.events} + if args.emit_json: + print(renderer.stable(result), end="") + return + # Fail before touching prior output; deliberately never writes scientific inputs. + source = args.source.resolve() + for candidate in (args.output.resolve(), cache_path.resolve()): + if candidate == source or source in candidate.parents: + parser.error("Output and cache must be outside the scientific source package") + args.output.mkdir(parents=True, exist_ok=False) + for name, content in files.items(): + (args.output / name).write_text(content, encoding="utf8") + cache_path.parent.mkdir(parents=True, exist_ok=True) + temporary = cache_path.with_name(cache_path.name + ".tmp") + temporary.write_text(renderer.stable(saved), encoding="utf8") + temporary.replace(cache_path) + print(renderer.stable({"output": str(args.output), "cache": str(cache_path), "measurements": engine.events}), end="") + + +if __name__ == "__main__": + main() diff --git a/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_incremental_README.md b/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_incremental_README.md new file mode 100644 index 0000000000..22f3b9527a --- /dev/null +++ b/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_incremental_README.md @@ -0,0 +1,101 @@ +# Incremental vector-page builds + +This is a documentation cache for the selected hybrid construction. It does not +cache or substitute for scientific verification. The authoritative source-tree +integrity check still runs before and after the documentation build. + +## One command: PDF and SVG + +From `processor_architectures`, with the pinned Python requirements installed: + +```sh +python -B joint259_system_docs_incremental.py \ + --source pr259_interval_compatibility_20261010/hybrid_package \ + --cache joint259-page-cache.json \ + --output joint259-docs-new \ + --svg +``` + +Choose a **new output directory** each time. Reuse the same cache file. Remove +`--svg` for a Python-only PDF build. SVG requires Poppler's `pdftocairo` on PATH; +the exact converter version is recorded. Graphviz is not used. The command +creates the same document/index families as the ordinary builder, plus linked +per-page SVG files and `incremental_receipt.json`. + +`--clean` ignores the saved cache. `--emit-json` emits `{files, cache, +measurements}` without filesystem writes, for environments with managed write +tools. An explicit `--cache` can still be read in this mode. The ordinary builder +remains available as an independent full-render reference. + +## What is actually incremental + +1. Execute the original document functions with a recording canvas. This is + lightweight layout and dependency planning; it does not paint PDF pages. +2. Hash each page's actual drawing commands, including text, geometry, colors, + widths and page-number text. This is a precise projection of the model fields + that affect that page. Unused model metadata does not repaint unrelated pages. +3. Bind that page hash to renderer and imported renderer code, cache code, + configuration, source manifest, font bytes, pinned requirements file and + installed package versions. +4. Check cached entry schema, keys, content digest and single-page structure. + Repaint only missing, changed or damaged entries. Retain old entries so an undo + can reuse the original pages. +5. Assemble the current ordered pages; rebuild every bookmark, outline and + internal/external link from the current plan. Deduplicate repeated font + resources. Regenerate all indexes and receipts from current inputs. + +Navigation is intentionally not part of a page's paint key. A link-target-only +edit reuses the page appearance and rebuilds the correct link. Added/deleted +pages can repaint later pages because their visible page numbers change. +Renderer/font/configuration/source-pin/dependency changes conservatively +invalidate all page paintings. Model changes repaint only affected appearances. + +SVGs are self-contained vector exports of the same one-page PDFs, with current +clickable link overlays. Their cache also depends on the converter version. +Text is exported as vector glyph outlines. No raster images are introduced. + +This implementation is single-process: its short-lived renderer substitution +is not thread-safe. Run independent CLI processes rather than concurrent calls +to `Engine.render` inside one Python process. The cache is trusted local build +state, with accidental-corruption/staleness checks, not an authenticated store +against someone who can replace both an entry and its hashes. + +## Reproducibility contract + +A clean build through the incremental command and a warm/changed incremental +build produce byte-identical final PDFs for identical inputs. Their page content +streams, extracted text, link rectangles/targets and rasterized appearance are +also compared against the original monolithic renderer. The original renderer's +PDF object/resource layout differs, so its whole-file bytes are not expected to +match the assembled output. + +Cache reuse means only that the visual page bytes match the recorded build key. +It does not imply human visual approval or scientific correctness. A full model +digest and auxiliary hierarchy digest remain in the receipt even when no page +painting changes. `QA.json` retains the ordinary builder's stated scope. + +## Tests and measured timing + +```sh +python -B joint259_system_docs_incremental_test.py --source /path/to/verified/construction --raster-dpi 40 +``` + +Tests run in memory and print JSON. They do not edit the selected source package +or write generated files. Poppler's `pdftoppm` is required for raster equality; +`--raster-dpi 0` skips those checks, and `--skip-svg` skips SVG checks. + +The suite checks all three document families, byte-identical cold/warm/clean +results, exact decoded drawing-stream/text/link agreement with the original, +and every page's raster pixels at the stated resolution. Controlled edits cover +block behavior, visible names, summary text, requirements, source-index hashes, +diagram wiring, index formulas, catalog add/delete/ID rename, index-only edits, +navigation-only edits, stale receipts/content, wrong source pins and undo. +Dependency invalidation uses changed-digest overrides in memory rather than +modifying immutable source files. Changed variants compare to a fresh clean +build and check the first repainted page's pixels. SVG checks parse every output, +verify internal targets, count preserved external links and reject raster images. + +The JSON reports actual cold, warm and changed timings. These are local single +runs, not a statistical performance guarantee. Final assembly, validation and +source hashing still run, so speedup depends on workload and filesystem speed. +Human layout review remains separate from automated pixel equality. diff --git a/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_incremental_test.py b/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_incremental_test.py new file mode 100644 index 0000000000..bf8e1d7ab7 --- /dev/null +++ b/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_incremental_test.py @@ -0,0 +1,272 @@ +#!/usr/bin/env python3 +"""Read-only, in-memory mutation and equivalence tests for the visual cache.""" +from __future__ import annotations +import argparse, contextlib, copy, hashlib, io, json, subprocess, time +from pathlib import Path +from xml.etree import ElementTree +import joint259_system_docs_incremental as inc + + +def raster(raw, dpi, page=None): + command = ["pdftoppm", "-r", str(dpi)] + if page: + command += ["-f", str(page), "-l", str(page), "-singlefile"] + return subprocess.run(command + ["-"], input=raw, stdout=subprocess.PIPE, + stderr=subprocess.PIPE, check=True).stdout + + +def pdf_structure(raw): + reader = inc.PdfReader(io.BytesIO(raw), strict=True) + targets = {p.indirect_reference.idnum: i for i, p in enumerate(reader.pages)} + links = [] + for i, page in enumerate(reader.pages): + assert (page.extract_text() or "").strip(), ("Empty page", i) + for item in page.get("/Annots", []): + annotation = item.get_object() + action = annotation.get("/A", {}) + if action.get("/S") == "/URI": + links.append((i, tuple(annotation["/Rect"]), str(action["/URI"]))) + continue + dest = annotation.get("/Dest") + if dest is None: + dest = action["/D"] + assert dest[0].idnum in targets, ("Dangling link", i, dest) + links.append((i, tuple(annotation["/Rect"]), targets[dest[0].idnum])) + destinations = {n: reader.get_destination_page_number(d) for n, d in reader.named_destinations.items()} + assert all(0 <= p < len(reader.pages) for p in destinations.values()) + return {"texts": [p.extract_text() for p in reader.pages], + "streams": [hashlib.sha256(p.get_contents().get_data()).hexdigest() for p in reader.pages], + "links": links, "destinations": destinations, "page_count": len(reader.pages)} + + +@contextlib.contextmanager +def patched(cls, attribute, function): + old = getattr(cls, attribute) + setattr(cls, attribute, function(old)) + try: + yield + finally: + setattr(cls, attribute, old) + + +def run(source, dpi=40, svg=True): + r = inc.renderer + model = json.loads(r.MODEL.read_text()) + source_count = r.integrity(source, model["source_manifest_sha256"]) + refs = r.source_index(source, model) + report = {"status": "RUNNING", "source_files": source_count, "raster_dpi": dpi, + "scope": "Documentation and cache tests only; no scientific replay.", + "baseline": {}, "mutations": [], "invalidation": [], "stale_cache": []} + if dpi: + version = subprocess.run(["pdftoppm", "-v"], stdout=subprocess.PIPE, stderr=subprocess.PIPE, check=True) + report["raster_renderer"] = (version.stdout + version.stderr).decode("utf8").strip() + cache, baseline = {}, {} + for kind in inc.KINDS: + cold = inc.Engine(model, cache) + raw, details = cold.render(kind, model, refs) + warm = inc.Engine(model, cache) + warm_raw, _ = warm.render(kind, model, refs) + clean = inc.Engine(model) + clean_raw, _ = clean.render(kind, model, refs) + t = time.perf_counter() + original, _ = r.render(kind, model, refs) + original_seconds = time.perf_counter() - t + assert raw == warm_raw == clean_raw, kind + assert not warm.events[-1]["rendered_pages"], kind + one, two = pdf_structure(raw), pdf_structure(original) + assert one["texts"] == two["texts"], (kind, "text") + assert one["streams"] == two["streams"], (kind, "drawing streams") + assert one["links"] == two["links"], (kind, "link destinations") + if dpi: + pixels = raster(raw, dpi) + assert pixels == raster(original, dpi), (kind, "full raster") + assert pixels == raster(clean_raw, dpi), (kind, "clean raster") + baseline[kind] = (raw, details) + report["baseline"][kind] = {"pages": one["page_count"], "links": len(one["links"]), + "cold_seconds": cold.events[-1]["elapsed_seconds"], + "warm_seconds": warm.events[-1]["elapsed_seconds"], + "original_seconds": original_seconds, + "warm_rendered_pages": 0, "sha256": inc.digest(raw), + "clean_warm_byte_identical": True, + "original_decoded_streams_text_links_identical": True, + "all_pages_raster_identical": bool(dpi)} + base_raw, base_details = baseline["combined"] + + def compare(label, changed_model, expected=None, changed_refs=None): + current_refs = changed_refs if changed_refs is not None else r.source_index(source, changed_model) + incremental = inc.Engine(changed_model, cache) + actual, details = incremental.render("combined", changed_model, current_refs) + clean = inc.Engine(changed_model) + expected_raw, _ = clean.render("combined", changed_model, current_refs) + assert actual == expected_raw, label + assert pdf_structure(actual) == pdf_structure(expected_raw), label + event = incremental.events[-1] + rebuilt = event["rendered_pages"] + if expected is not None: + assert set(rebuilt) == set(expected), (label, rebuilt, expected) + if dpi and rebuilt: + changed_page = next(v["page"] for v in details["pages"] if v["id"] == rebuilt[0]) + assert raster(actual, dpi, changed_page) == raster(expected_raw, dpi, changed_page), label + report["mutations"].append({"case": label, "rendered_pages": rebuilt, + "reused_page_count": len(event["reused_pages"]), + "incremental_seconds": event["elapsed_seconds"], + "clean_seconds": clean.events[-1]["elapsed_seconds"], + "byte_identical_to_clean": True, "navigation_valid": True}) + return actual + + changed = copy.deepcopy(model) + changed["blocks"][0]["what"] += " Test." + compare("block behavior", changed, ["CATALOG"]) + changed = copy.deepcopy(model) + changed["blocks"][0]["brief"] += " Test." + compare("block diagram summary", changed, ["FVIEW1"]) + changed = copy.deepcopy(model) + changed["blocks"][0]["name"] += " test" + compare("block display rename", changed, ["FVIEW1", "CATALOG"]) + changed = copy.deepcopy(model) + changed["requirements"][0]["text"] += " Test." + compare("requirement wording", changed, ["REQUIREMENTS"]) + changed = copy.deepcopy(model) + changed["edges"][0]["cache_test_note"] = "An index-only controlled edit" + compare("index-only edge metadata", changed, []) + engine = inc.Engine(changed, cache) + files = inc.build(source, changed, engine) + assert json.loads(files["connection_index.json"])["block_edges"][0]["cache_test_note"] == "An index-only controlled edit" + altered_refs = copy.deepcopy(refs) + next(iter(altered_refs.values()))["sha256"] = "0" * 64 + compare("source traceability hash projection", model, ["SOURCES"], altered_refs) + + def change_wire(old): + def wrapped(self, a, b, *args, **kwargs): + if self.pages[-1]["id"] == "FVIEW1": + a = (a[0] + 1, *a[1:]) + return old(self, a, b, *args, **kwargs) + return wrapped + with patched(inc.PlanningDoc, "arrow", change_wire): + compare("diagram wiring coordinate", model, ["FVIEW1"]) + + def change_formula(old): + def wrapped(self, x, y, text, *args, **kwargs): + if self.pages[-1]["id"] == "L04" and "helper family=" in str(text): + text = str(text).replace("helper family=", "helper family=1+") + return old(self, x, y, text, *args, **kwargs) + return wrapped + with patched(inc.PlanningDoc, "text", change_formula): + compare("index formula drawing", model, ["L04"]) + + def change_target(old): + def wrapped(self, contents, destinationname, *args, **kwargs): + if destinationname == "B_F01": + destinationname = "B_F03" + return old(self, contents, destinationname, *args, **kwargs) + return wrapped + with patched(inc.RecordingCanvas, "linkRect", change_target): + redirected = compare("navigation-only internal target", model, []) + assert redirected != base_raw + + def change_url(old): + def wrapped(self, url, *args, **kwargs): + return old(self, url + "#cache-test", *args, **kwargs) + return wrapped + base_links = pdf_structure(base_raw)["links"] + if any(isinstance(link[2], str) for link in base_links): + with patched(inc.RecordingCanvas, "linkURL", change_url): + redirected = compare("navigation-only external URL", model, []) + assert redirected != base_raw + + extended = copy.deepcopy(model) + for identifier in ("F98", "F99"): + block = copy.deepcopy(model["blocks"][-1]) + block["id"], block["name"] = identifier, "Test-only catalog block" + block["inputs"], block["outputs"] = [], [] + block["requirements"] = [] + extended["blocks"].append(block) + compare("add catalog blocks and page", extended) + renamed = copy.deepcopy(extended) + renamed["blocks"][-1]["id"] = "F97" + compare("stable block ID rename", renamed, ["CATALOG22"]) + restored = compare("delete added blocks and undo all edits", model, []) + assert restored == base_raw + + return finish_checks(report, source, model, refs, cache, base_raw, base_details, source_count, svg) + + +def finish_checks(report, source, model, refs, cache, base_raw, base_details, source_count, svg): + r = inc.renderer + # Controlled dependency digests avoid writing scientific inputs. + for dependency in ("renderer_code", "font_bytes", "requirements_pin", "source_manifest", "configuration"): + engine = inc.Engine(model, cache, extra_dependencies={dependency: "controlled different digest"}) + raw, details = engine.render("combined", model, refs) + assert len(engine.events[-1]["rendered_pages"]) == len(details["pages"]) + assert raw == base_raw + report["invalidation"].append({"dependency": dependency, "rendered_page_count": len(details["pages"])}) + pages, _ = inc.plan("combined", model, refs) + engine = inc.Engine(model, cache) + plan_hash = inc.digest(inc.canonical(pages[0]["paint"])) + first_key = inc.digest(inc.canonical([engine.dependency_hash, plan_hash])) + for field, value in (("schema", "obsolete"), ("plan_sha256", "0" * 64), + ("dependency_sha256", "0" * 64), ("pdf_sha256", "0" * 64), + ("pdf_base64", "not a PDF")): + damaged = dict(cache) + damaged[first_key] = dict(cache[first_key], **{field: value}) + repair = inc.Engine(model, damaged) + raw, _ = repair.render("combined", model, refs) + assert raw == base_raw + assert repair.events[-1]["rendered_pages"] == ["CONTENTS"] + report["stale_cache"].append({"damaged_field": field, "rebuilt": ["CONTENTS"], "clean_equality": True}) + wrong = copy.deepcopy(model) + wrong["source_manifest_sha256"] = "0" * 64 + try: + inc.build(source, wrong, inc.Engine(wrong, cache)) + except ValueError as error: + assert "Unrecognized scientific/public source manifest" in str(error) + else: + raise AssertionError("A stale cache bypassed source-pin checking") + report["wrong_scientific_pin_rejected"] = True + persisted_cache = json.loads(json.dumps(cache)) + warm_files = inc.build(source, model, inc.Engine(model, persisted_cache)) + clean_files = inc.build(source, model, inc.Engine(model)) + assert warm_files == clean_files + report["all_clean_warm_artifacts_identical_after_cache_json_roundtrip"] = sorted(warm_files) + if svg: + exporter = inc.Engine(model, cache, svg=True) + exporter.render("combined", model, refs) + first = dict(exporter.svg_files) + exporter.render("combined", model, refs) + assert first == exporter.svg_files + all_links, external_links = 0, 0 + for name, value in first.items(): + parsed = ElementTree.fromstring(value) + assert "2^80 after fixed exclusions; prime supply is an inherited theorem dependency.", + "Every physical basis plus all defining-source and added-transform bases is covered." + ], + "heritage": "PR234 geometric interface plus source527/current entrance inventory; retained exact-prime framework.", + "sources": [ + "code/geometry527.py|def run(", + "prime_check.py|def run(" + ], + "requirements": [ + "R03", + "R07", + "R11" + ] + }, + { + "id": "F16", + "name": "Independent complex supplier", + "brief": "Pinned labels, scalar splice and guard", + "what": "Reconstruct the pinned complex gcert/1 certificate, both scalar orientations, temporary lifetimes, label/scalar splice, all final climbs and finite precision/row guards. Feed its independent profile into the outer assembly.", + "why": "The integer-multiplication closure uses both a bit supplier and a complex supplier. The complex theorem is not implied by a successful bit-word check.", + "inputs": [ + "complexpins: certificate, source theorems and exact matrices" + ], + "outputs": [ + "complex: m=110, W=14,692, 361,405 children", + "guard: row coefficient 20,161; exact denominator grid" + ], + "invariants": [ + "Rank mass 1,613,040; deficit 3,080; largest child 46.", + "Three forward plus two backward calls use 7,577,864 real-component primitive steps.", + "Denominators 1,2,3,6; no return rounding; source symbolic/analytic theorems remain dependencies." + ], + "heritage": "Jacob Sussman source f010392c923279e3dd59ef3aa5fedad23affc5fd; Avi Eisenberg / ikeboy PR193 helper and retained Claude assistance disclosures.", + "sources": [ + "portable_complex.py|def run(", + "portable_complex.py|def finite_guard(" + ], + "requirements": [ + "R04", + "R06", + "R10", + "R11" + ] + }, + { + "id": "F17", + "name": "Independent directed moments", + "brief": "Full rare fallback; adjacent grid rejected", + "what": "Price the literal banked bit histogram and unchanged complex histogram with outward exact-rational bounds. Independently cross-check the bit moment with the base-two engine and include the entire rare fallback allowance.", + "why": "Concavity-based savings are only admissible with a rigorous strict gap and every paid residual, including the low-probability expensive branch.", + "inputs": [ + "literal: bit histogram, m=120, W=867,045", + "complex: independent supplier profile" + ], + "outputs": [ + "rates: strict bit/complex moment enclosures", + "grid: next bit-grid exclusion" + ], + "invariants": [ + "Bit max child 50 < 120/2; literal deficit 176,000.", + "Fallback adds 10^-16 times 32*m^2 rank-one calls per paid child.", + "Two independent interval engines agree; decimals are display/proposal only." + ], + "heritage": "Inherited weighted moment interface; independently implemented current literal repricing.", + "sources": [ + "math_check.py|def run(", + "moment.py|def moment(", + "base_two_moment.py|def moment(" + ], + "requirements": [ + "R04", + "R08", + "R09" + ] + }, + { + "id": "F18", + "name": "Finite ordinary bootstrap", + "brief": "Three completed finite levels", + "what": "Start with completed ordinary a0=384599/10^10 and repeat a_(j+1)=(1-c)c+c*a_j exactly three times. Require every atom, borrowing, remainder and row-stock gap to remain positive.", + "why": "The bit moment rate is converted to an actual completed ordinary supplier through a finite induction, rather than using an unattained limiting rate.", + "inputs": [ + "rates: exact coarse bit c and inherited ordinary a0" + ], + "outputs": [ + "ordinary: three-step exact chain and positive gaps" + ], + "invariants": [ + "Every a_j < a_(j+1) < c < 1-a_(j+1).", + "Each stage includes an inherited-constant-dependent finite cutoff and old-leaf fallback." + ], + "heritage": "Retained ordinary-bootstrap and restored-row framework, freshly evaluated for this literal construction.", + "sources": [ + "math_check.py| chain=[", + "finite_check.py|chain=[" + ], + "requirements": [ + "R08", + "R09" + ] + }, + { + "id": "F19", + "name": "Outer 47-constraint assembly", + "brief": "Balanced two-supplier closure", + "what": "Combine the finite ordinary bit saving with the complex saving, row/recovery bridge, eta=10^-12 and stopping fraction beta=10^-9. Check all 47 strict inequalities and seven margins before choosing the admissible rational kappa grid point.", + "why": "A local helper saving is not the integer-multiplication exponent. The full coupled outer system determines which supplier and margin is binding.", + "inputs": [ + "ordinary: completed bit saving", + "complex: rate and finite row/precision bridge" + ], + "outputs": [ + "bound: kappa=1777613869061/2500000000000000", + "margins: 47 strict constraints and seven margins" + ], + "invariants": [ + "kappa decimal 0.000711045547624400; bit is binding.", + "Adjacent kappa grid point is rejected separately.", + "Full all-size, recovery, symbolic and analytic interfaces remain conditional." + ], + "heritage": "Inherited balanced outer assembly, re-evaluated for current construction.", + "sources": [ + "outer.py|def assembly(", + "math_check.py| assembly=outer.assembly(" + ], + "requirements": [ + "R09", + "R10" + ] + }, + { + "id": "F20", + "name": "Full finite bill and cutoff", + "brief": "Pay every literal mechanism", + "what": "Bind the selected word, tags, global streams, banks, geometry, prime inventory and moment profile. Add scalar primitives, movement, bridges, routes, chart normalizers, selectors, matrix preparation, copy/erase, fallback and restored-row costs.", + "why": "Neither a better histogram nor a displayed finite coefficient can replace the complete accounting and full inherited-constant cutoff rule.", + "inputs": [ + "final/global/literal: bound physical evidence", + "semantics/primes/rates: proof outputs" + ], + "outputs": [ + "finite: coefficient 62,644,197,182,478,801", + "prefix: 288305228198350917154735200000", + "cutoff: all inherited constants retained" + ], + "invariants": [ + "Coefficient below 2^80; prefix is 98 bits and below 2^104.", + "Selector allowance 667,542,305,600 < 2^40; normalizer tariff 838.", + "One-level max-child half-shrink holds; no recursive child hidden in a fixed constant." + ], + "heritage": "Current finite re-bill over inherited bit/row/copy primitives; exact theorem bytes remain pinned.", + "sources": [ + "finite_check.py|def run(", + "finite_check.py|def cutoff_log2(" + ], + "requirements": [ + "R04", + "R06", + "R07", + "R08", + "R09" + ] + }, + { + "id": "F21", + "name": "Conditional admission gate", + "brief": "Eight stages; source unchanged", + "what": "Run all eight mandatory stages from inputs, check complete result coverage and expected rational kappa, then recheck the source manifest before emitting the certificate. Omitted stages must fail hostile controls.", + "why": "The certificate must close every proof port and bind one immutable package. Documentation regeneration is not a substitute for scientific replay.", + "inputs": [ + "raw: freshly reconstructed source ledger", + "bit: physical/global/geometry proof", + "scalar: F2, signed source and chosen-lift prefix proof", + "primes: current basis/determinant evidence", + "banks: callable full-address banked word and census", + "complex: pinned source, splice and finite guard", + "math: moments, bootstrap and outer47", + "finite: complete bill and cutoff" + ], + "outputs": [ + "certificate: conditional finite-construction result", + "verification: timings, stage coverage and immutable-source status" + ], + "invariants": [ + "Standalone verify.py executes all eight stages; output must be new and outside source.", + "Recorded cloud admission freshly ran changed stages and reused byte/AST-bound unchanged signed-source and complex evidence.", + "Mac standalone reproduction passes all eight stages with 143 source files unchanged; certificate SHA256 7eb58ec449c932b7092481746390c776365f302a742836cddef5643c0351802b. The construction remains mathematically conditional and is below the later PR266 frontier." + ], + "heritage": "Current source-bound verification orchestrator and separately scoped review/admission receipts.", + "sources": [ + "verify.py|def main()", + "verify.py|def validate_required(" + ], + "requirements": [ + "R01", + "R11", + "R12" + ] + } + ], + "requirements": [ + { + "id": "R01", + "name": "Immutable construction", + "text": "All numerical code, witness bytes and exact source pins must remain bound to one manifest." + }, + { + "id": "R02", + "name": "Payload and restoration", + "text": "All arbitrary input, old-target and dirty columns satisfy the F2 supplier contract and reverse restoration." + }, + { + "id": "R03", + "name": "Legal actual geometry", + "text": "Every used frame, inclusion, complement, chart and boundary must be checked as an exact subspace/operator, not by rank alone." + }, + { + "id": "R04", + "name": "Complete physical price", + "text": "Every recursive child, scalar primitive, move, copy, bridge, route, selector and fallback must remain accounted for." + }, + { + "id": "R05", + "name": "Full bank address safety", + "text": "Every literal helper occurrence is assigned once; complete banks cover all coordinates; full addresses are nonaliasing." + }, + { + "id": "R06", + "name": "Separate lift and precision claims", + "text": "F2 semantic equality and chosen signed-lift prefix majorants remain distinct from the unchanged source's signed decoder." + }, + { + "id": "R07", + "name": "Complete prime coverage", + "text": "Every physically consumed and defining-source basis has exact determinant/exclusion evidence for eligible odd q." + }, + { + "id": "R08", + "name": "Strict directed moment gap", + "text": "Both interval engines and the full rare fallback establish strict moment bounds and reject the adjacent grid." + }, + { + "id": "R09", + "name": "Finite ordinary closure", + "text": "Use three finite bootstrap levels, all outer inequalities and the full inherited-constant cutoff, with old-leaf fallback." + }, + { + "id": "R10", + "name": "Inherited theorem boundary", + "text": "All-size compiler, covers/charts, restored rows, routing, prime supply, recovery, complex-symbolic and analytic hypotheses stay explicit." + }, + { + "id": "R11", + "name": "Evidence honesty", + "text": "Describe which stages ran freshly, what unchanged evidence was reused, and which cross-platform checks remain pending." + }, + { + "id": "R12", + "name": "Documentation provenance", + "text": "Preserve historical artifacts, licenses and contributor credit; describe the selected construction rather than additive historical gains." + } + ], + "edges": [ + { + "id": "E01", + "from": "F01", + "to": "F02", + "out": "recipes", + "in": "recipes" + }, + { + "id": "E02", + "from": "F02", + "to": "F03", + "out": "context", + "in": "context" + }, + { + "id": "E03", + "from": "F03", + "to": "F04", + "out": "word", + "in": "word" + }, + { + "id": "E04", + "from": "F04", + "to": "F05", + "out": "word", + "in": "word" + }, + { + "id": "E05", + "from": "F05", + "to": "F06", + "out": "word", + "in": "word" + }, + { + "id": "E06", + "from": "F06", + "to": "F07", + "out": "base", + "in": "base" + }, + { + "id": "E07", + "from": "F06", + "to": "F08", + "out": "base", + "in": "base/cohorts" + }, + { + "id": "E08", + "from": "F07", + "to": "F08", + "out": "cohorts", + "in": "base/cohorts" + }, + { + "id": "E09", + "from": "F08", + "to": "F09", + "out": "word", + "in": "word" + }, + { + "id": "E10", + "from": "F09", + "to": "F10", + "out": "finalword", + "in": "finalword" + }, + { + "id": "E11", + "from": "F09", + "to": "F11", + "out": "finalword", + "in": "finalword" + }, + { + "id": "E12", + "from": "F11", + "to": "F12", + "out": "global", + "in": "global" + }, + { + "id": "E13", + "from": "F12", + "to": "F13", + "out": "packing", + "in": "packing" + }, + { + "id": "E14", + "from": "F13", + "to": "F14", + "out": "normalizers", + "in": "packing/charts" + }, + { + "id": "E15", + "from": "F11", + "to": "F14", + "out": "global", + "in": "global" + }, + { + "id": "E16", + "from": "F09", + "to": "F15", + "out": "finalword", + "in": "final/global" + }, + { + "id": "E17", + "from": "F11", + "to": "F15", + "out": "global", + "in": "final/global" + }, + { + "id": "E18", + "from": "F01", + "to": "F16", + "out": "recipes", + "in": "complexpins" + }, + { + "id": "E19", + "from": "F14", + "to": "F17", + "out": "literal", + "in": "literal" + }, + { + "id": "E20", + "from": "F16", + "to": "F17", + "out": "complex", + "in": "complex" + }, + { + "id": "E21", + "from": "F17", + "to": "F18", + "out": "rates", + "in": "rates" + }, + { + "id": "E22", + "from": "F18", + "to": "F19", + "out": "ordinary", + "in": "ordinary" + }, + { + "id": "E23", + "from": "F16", + "to": "F19", + "out": "guard", + "in": "complex" + }, + { + "id": "E24", + "from": "F10", + "to": "F20", + "out": "semantics", + "in": "semantics/primes/rates" + }, + { + "id": "E25", + "from": "F15", + "to": "F20", + "out": "primes", + "in": "semantics/primes/rates" + }, + { + "id": "E26", + "from": "F17", + "to": "F20", + "out": "rates", + "in": "semantics/primes/rates" + }, + { + "id": "E27", + "from": "F14", + "to": "F20", + "out": "literal", + "in": "final/global/literal" + }, + { + "id": "E28", + "from": "F19", + "to": "F21", + "out": "bound", + "in": "math" + }, + { + "id": "E29", + "from": "F20", + "to": "F21", + "out": "finite", + "in": "finite" + }, + { + "id": "E30", + "from": "F02", + "to": "F10", + "out": "sourceword", + "in": "sourceword" + }, + { + "id": "E31", + "from": "F01", + "to": "F05", + "out": "recipes", + "in": "selection" + }, + { + "id": "E32", + "from": "F01", + "to": "F06", + "out": "recipes", + "in": "selection" + }, + { + "id": "E33", + "from": "F01", + "to": "F07", + "out": "recipes", + "in": "candidates" + }, + { + "id": "E34", + "from": "F01", + "to": "F07", + "out": "recipes", + "in": "selection" + }, + { + "id": "E35", + "from": "F01", + "to": "F08", + "out": "recipes", + "in": "intervals" + }, + { + "id": "E36", + "from": "F01", + "to": "F09", + "out": "recipes", + "in": "selection" + }, + { + "id": "E37", + "from": "F09", + "to": "F11", + "out": "paths", + "in": "paths" + }, + { + "id": "E38", + "from": "F09", + "to": "F12", + "out": "entrances", + "in": "entrances" + }, + { + "id": "E39", + "from": "F09", + "to": "F13", + "out": "registry", + "in": "registry" + }, + { + "id": "E40", + "from": "F12", + "to": "F14", + "out": "packing", + "in": "packing/charts" + }, + { + "id": "E41", + "from": "F09", + "to": "F15", + "out": "context", + "in": "context" + }, + { + "id": "E42", + "from": "F09", + "to": "F20", + "out": "finalword", + "in": "final/global/literal" + }, + { + "id": "E43", + "from": "F11", + "to": "F20", + "out": "global", + "in": "final/global/literal" + }, + { + "id": "E44", + "from": "F09", + "to": "F21", + "out": "raw", + "in": "raw" + }, + { + "id": "E45", + "from": "F11", + "to": "F21", + "out": "global", + "in": "bit" + }, + { + "id": "E46", + "from": "F15", + "to": "F21", + "out": "geometry", + "in": "bit" + }, + { + "id": "E47", + "from": "F10", + "to": "F21", + "out": "semantics", + "in": "scalar" + }, + { + "id": "E48", + "from": "F15", + "to": "F21", + "out": "primes", + "in": "primes" + }, + { + "id": "E49", + "from": "F14", + "to": "F21", + "out": "bankword", + "in": "banks" + }, + { + "id": "E50", + "from": "F16", + "to": "F21", + "out": "complex", + "in": "complex" + }, + { + "id": "E51", + "from": "F17", + "to": "F19", + "out": "rates", + "in": "complex" + }, + { + "id": "E52", + "from": "F10", + "to": "F20", + "out": "prefix", + "in": "semantics/primes/rates" + }, + { + "id": "E53", + "from": "F10", + "to": "F21", + "out": "prefix", + "in": "scalar" + } + ], + "evidence_status": { + "mac_reproduction": "PASS all eight mandatory stages", + "seconds": 580.9, + "python": "3.14.2", + "sympy": "1.14.0", + "source_files_unchanged": 143, + "controls": { + "scalar": 25, + "primes": 6, + "omitted_stages": 8 + }, + "certificate_sha256": "7eb58ec449c932b7092481746390c776365f302a742836cddef5643c0351802b", + "provenance": "Verified FINAL_REPRODUCTION_RECEIPT.json SHA256 327b8b0d5b7b27bc3f25e17222168262671364a3a698e4915a249bed863a8b06; sanitized facts in joint259_system_docs_evidence.json", + "publication": "Verified checkpoint; later PR266 is stronger. Construction PR #277: https://github.com/CrocSwap/integer-mult-bounds/pull/277." + }, + "external_inputs": [ + { + "block": "F01", + "port": "package", + "kind": "pinned_source_files", + "definition": "Complete immutable source package with the selected manifest." + } + ] +} diff --git a/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_previews.py b/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_previews.py new file mode 100644 index 0000000000..e03cfd1904 --- /dev/null +++ b/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_previews.py @@ -0,0 +1,46 @@ +"""Compact PR previews, readable as two separate images at GitHub width.""" +from html import escape +def preview(model,logical=False): + bg="#F7FAFB";ink="#142D3A";blue="#176B8B";teal="#147D77";muted="#526873" + title="Logical wiring: indexed, source-bound connections"if logical else"Functional architecture: exact product with two suppliers" + parts=[f'', + '', + '', + f'{escape(title)}', + 'Verified PR259 hybrid checkpoint | conditional kappa 0.000711045547624400'] + def box(x,y,w,h,title,lines,color=blue): + parts.append(f'') + parts.append(f'{escape(title)}') + for i,line in enumerate(lines):parts.append(f'{escape(line)}') + def arrow(x1,y1,x2,y2,dashed=False): + parts.append(f'') + if logical: + box(34,119,250,134,"Typed operand bus",["U,V -> digits -> tensors","operand a in [0,2)","digit index j in [0,N)"]) + box(329,119,250,134,"Transforms",["source spectra[a,k]","k in declared R order","bit + complex calls"]) + box(624,119,250,134,"Product / inverse",["match equal index k","opposite transform","restore scale/layout"]) + box(919,119,247,134,"Exact result",["error < 1/2","integer coefficients","carry -> product UV"]) + for a,b in[(284,329),(579,624),(874,919)]:arrow(a,186,b,186) + box(34,313,350,145,"Local event template",["OP[e]: src/dst + frame","value/frame versions + uses","859,771 exact local records"],teal) + box(426,313,350,145,"Indexed physical map",["stage s in [0,5)","replica r in [0,40)","address = (family, route)"],teal) + box(818,313,348,145,"Closed proof ports",["all 8 scientific stages","COPY lifetime + bank checks","unexpanded theorem boundary"],teal) + arrow(384,384,426,384);arrow(776,384,818,384) + parts.append('Compact parametric specification, not a flattened million-wire circuit. Exact formulas and exceptions are in the full PDF.') + else: + box(34,119,250,134,"Represent operands",["read U,V and sizes","radix / scale / pad","A0-A3"]) + box(329,119,250,134,"Transform stages",["two source transforms","matching products","A4-A6"]) + box(624,119,250,134,"Exact recovery",["undo scales/layout","bounded error -> round","A7-A8"]) + box(919,119,247,134,"Emit exact product",["carry propagation","serialize UV","A9"]) + for a,b in[(284,329),(579,624),(874,919)]:arrow(a,186,b,186) + box(34,313,350,145,"Selected bit supplier",["513 cohorts + 7 intervals","25 final retimings, once","literal 40-replica banks"],teal) + box(426,313,350,145,"Pinned complex supplier",["exact labels and phases","copied centers / live climbs","finite precision and rows"],teal) + box(818,313,348,145,"Recursion and evidence",["all 87 original roles mapped","complete finite price","inherited assumptions explicit"],teal) + arrow(210,313,410,253,True);arrow(600,313,490,253,True) + parts.append('Solid arrows: runtime data interfaces. Dashed arrows: supplier support. This is a conditional mathematical construction.') + parts.append('Source snapshot: 9f6d8637... | Readable overview; full explanations, typed ports, requirements and proofs are linked below.') + svg="\n".join(parts)+"\n" + styles={"title":'font-size="28" font-weight="700"',"label":'font-size="20" font-weight="700"',"body":'font-size="17"',"note":'font-size="16" fill="#526873"'} + for cls,attributes in styles.items(): + svg=svg.replace('class="'+cls+'"','font-family="DejaVu Sans" '+attributes) + return svg +def files(model):return {"summary-functional.svg":preview(model),"summary-logical.svg":preview(model,True)} + diff --git a/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_requirements.txt b/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_requirements.txt new file mode 100644 index 0000000000..7934d8a29b --- /dev/null +++ b/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_requirements.txt @@ -0,0 +1,4 @@ +reportlab==4.4.9 +pypdf==6.10.0 +Pillow==12.3.0 +charset-normalizer==3.5.1 diff --git a/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_source_binding.json b/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_source_binding.json new file mode 100644 index 0000000000..38ffa00f95 --- /dev/null +++ b/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_source_binding.json @@ -0,0 +1,138 @@ +{ + "schema": "selected-docs-source-binding/1", + "scientific_archive_manifest_sha256": "9f6d8637b9a119cfe4566a02ab2d704f23c502e5e4357b40c28ef85a3fd4de89", + "accepted_public_manifest_sha256": "0af10dcca505cbd913cf1b9220a08b6a62687650ace4e3d1efd093e828e3990e", + "public_paths": 137, + "public_manifest_members": 136, + "retained_numerical_pins": { + "LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "bank_check.py": "64790d1d45032e7f8ae2252d592759ff82def8033544107f9f0dd3bbc6841581", + "bank_template.py": "e255bdc0c0aa4465485ee34ece7d1f04ce3ce363d8ac62edc9de5608e46f8965", + "base_two_moment.py": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098", + "code/complex_basis.py": "52d68781eaf6d9decf02446a532a7336fcf15924a9f6781ba0833d038decb9f8", + "code/complex_labels.py": "ff5d5e914ef1be0f0cc30283a1ee39089b77e4b572f09543e7313d126bd26256", + "code/complex_scalars.py": "fa035447c1f3a5e878dfc18a900942aa180d8bfde03cdce2d21d9bf8b8409429", + "code/complex_splice.py": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c", + "code/geometry527.py": "bff96140e93c0cea01ed618b49b913f913c12d99ebb0e4e4342336cf5a102800", + "code/global_lowering.py": "c888c4d3c38d4a59b48f8a328fc495b3b38ee36ede133495522d8d76c100794b", + "code/physical527.py": "1723a5c53ec236529e46980c8eb2c45134c61275ac7fb85c8ad92223784de07c", + "finite_check.py": "dfb8dd62c4d068417434f6a43e15e5f69dfa40b4d95b7a8d4995b6950c095c61", + "hybrid-selection.json": "0229c2fad3b448d33ad1f21900ad67d13ab1e0c8e716ced9ec66b4ab0445c0b1", + "hybrid_transform.py": "c06837bbc6ccf068362e1f09f110319f20135588f42e3cb3f8bc753436802e09", + "inputs/complex/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "inputs/complex/NOTICE": "9419dd03a2f52cf8bdfc4d18216ce29f263ab583b27f01ced8e420985bcb7c81", + "inputs/complex/gcert1-p11-pr193.json.gz": "15251deb0c11e0504d7b297c9786818888a93f08b92b03c6c122784b70488633", + "inputs/complex/retained/FINITE_BRIDGE.txt": "66d8f4ea8752abd89952d6674a636575a0db16e18b1c16e293f48f64242f0c46", + "inputs/complex/retained/compact-control-layout.tex": "2bc28e50f3eb092195294cafa81213e520f6d42e7935e9905ad8a6199e2a7c87", + "inputs/complex/retained/compact-control-movement.tex": "b963c3d2f4e1b7059aa289bb4b4ac89b688920bcf42f5b20d7698cdef0132cc6", + "inputs/complex/retained/copied-centers-assembly.tex": "00117892971ae766188ace0af03030c44164fda105e42b70d84f52c3339a7dcb", + "inputs/complex/retained/copied-centers-lemma.tex": "d0ce6d3d504996aadb098227885224e48df46101daec8893523a0a8b7364d8fe", + "inputs/complex/retained/endpoint-gauge-complex.tex": "dfee33b0281e5551bb6927f757ff0240abade60ae1800f715afd88853ae0191e", + "inputs/complex/retained/general-clifford-frames.tex": "c9bb9655b594583c6b4bab8cb485233f1d1e588f83858cf1e4c3530cee8fed54", + "inputs/complex/retained/stopped-product-complex.tex": "4738089103a4b263b3b0ef458f5ef35519c696f1ea871ae79e508d3720f5870a", + "inputs/complex/source-pins.json": "de0daf6847185d7a6911535e3012c1a91de1e32b5da8204beec26b37523ad569", + "inputs/complex/sources/Work__Bridge__Cert.lean": "5c24746a6330907b9b37d6064095035a58575d64ce793d6d7c9881121fdc3980", + "inputs/complex/sources/Work__Bridge__Net.lean": "cf7d7d330b1bffe2e66712c873e647b13dc32db1ccfc0e0f4cd62ee6caf584f0", + "inputs/complex/sources/Work__Carrier__Live.lean": "6d0649eb62589e66057f044e1e2103fc42f3f57a1498f82a26565bd8eb4026d0", + "inputs/complex/sources/Work__Carrier__Phases.lean": "71dc3dda23dfe510d5d53cbada3a6c540cd1dc2825503fda618a5bd6cfc3e812", + "inputs/complex/sources/Work__Fourier__Main.lean": "2e8e88efd4dcbdf0b1a6e39ce7eea8c5fd5ffee2faf360a8c0c9cba84c0e4ef3", + "inputs/complex/sources/Work__GCert__Chain__Geom.lean": "c302f5834287421f11f3b0da7112fcde876cbc702896f2af4145b2d72ee393a2", + "inputs/complex/sources/Work__GCert__Chain__InvThm.lean": "ade7e7873da75ca63a4b5ce2f562dde9c12bfbb69d87d7ae831039ff790e5adb", + "inputs/complex/sources/Work__GCert__Chain__NetCert.lean": "22ae34809466b4ac2a2c5cdde526f51ff246f5189f7c142b38aa4c0dcffb04a4", + "inputs/complex/sources/Work__GCert__Chain__NetDef.lean": "6e17a68b1e988969f6eb77000028f7ed877e687b8ad3976ec1707fcfe1d2f520", + "inputs/complex/sources/Work__GCert__Chain__NetStage.lean": "c122bc01392a6fdcc0bee918fed81804d3c9b1d3e071016dab65a4ed804ef0b6", + "inputs/complex/sources/Work__GCert__Chain__Phased.lean": "0de429c80231334f1ce92575c1e8ac382ca2d5e7d956767b547639a8941d9a8c", + "inputs/complex/sources/Work__GCert__Chain__WinB.lean": "c33ec3fce09c0971c32ddcbb86d9383ffbe4c6d05cf36f20460005e6547bb845", + "inputs/complex/sources/Work__GCert__Data__B2Gp193Main.lean": "cb61f304da51f1dd0a2ec25bca4b63eb095eeb2863289e1e2bdee7c82beff48b", + "inputs/complex/sources/Work__GCert__Data__Glue.lean": "d5314f2b93a7f0e1c949fb502331825bfc6d9d8762d35f865443e7c95b6c7ef7", + "inputs/complex/sources/Work__GCert__Data__InstB2Gp193.lean": "9587ddb9961f44938032b609307ab91c0b0e757e3991f1ad95480dd50fd4f72b", + "inputs/complex/sources/Work__GCert__Data__P193Cert.lean": "d92ee6889be4753fc99f467bd84039743325123a1165128378b9c906a04f2703", + "inputs/complex/sources/Work__GCert__Data__P193Price.lean": "0299bcd0fe255960eec682eef0f045f7e5cb1e4711af2aab4393526eae2caea3", + "inputs/complex/sources/Work__GCert__Data__P193ScalOK.lean": "479434815822e98f015e335361089c3788d00dc3dd39c2944f75410aa0c158fe", + "inputs/complex/sources/Work__GCert__Data__RateB2Gp193x.lean": "6b40cac1481c931d47b1a092e382d04716ede0e785c492a2f2983e886a257c3f", + "inputs/complex/sources/Work__GCert__Data__Raw.lean": "aba94a004c94dcae7cf3047c88a6da9561555f4ebe8ab92e299e6ce09ee7aa66", + "inputs/complex/sources/Work__GCert__Data__SolutionB2Gp193x.lean": "45c768c9d71a7cc18bd6db74cb036db880d89580ca60557bb4a492280296b169", + "inputs/complex/sources/Work__GFrame__Engine__Adapt.lean": "feec0a3828867968a5c7c2c30b86ed70449abc3c660a60ada67203a75bae2ef7", + "inputs/complex/sources/Work__GFrame__Engine__Letters.lean": "34906dbf5ae16b5174db00b4881a5cc1d2e583b8c8806db6523a5e2f86565f09", + "inputs/complex/sources/Work__GFrame__Engine__Level.lean": "80fb3daa9a45de0ed6da570eb4476b9104734be65d0116f58bcfcbcd67f771d0", + "inputs/complex/sources/tools__gx__gxbind.py": "9c9dcfac47f0535bf3aa8ebf7c662cdef0ebda50a9f0a9282b8f3cf34809f835", + "inputs/complex/sources/tools__gx__gxconv.py": "dab7fec9f44c2d368ed334055d7126e202017feb46e41a8d86e2d998720f67c2", + "inputs/complex/sources/tools__gx__gxcore.py": "eb972c06fe8c322db2d9a8d9a7d05596e8f40c4ca8e5f42eb6df3c7361b5d517", + "kernel-candidates.json.gz": "5f6863ad27eb9f2fcb14db10320c00607451c01e12da303def13e48eda7a5d2d", + "loader/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "loader/SOURCE_PINS.json": "5a4fa413ea0ecc74050359329e90521723151e421cc0c19f774b92bd608a3ac9", + "loader/expected_ledger.json": "4910004287e016f7f2db10f0a54eed24bf1912aa148b347b3cb4795fa3ac63f5", + "loader/expected_semantics.json": "b7de3178436c824b6be6d99842270a82e1821b8008dda66d8b18519ad347da2d", + "loader/raw_ledger.py": "89ba53114488a77a12b941db2787850c2c41612ad0332c47699a011c0c596b32", + "loader/source_inputs/base_bit/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "loader/source_inputs/base_bit/NOTICE": "c9850418622aea8d1382a230306c940947b5da818f4854b4b272ed60cf239f6c", + "loader/source_inputs/base_bit/research/paired-cube-diagonal-bit-168/bit/base_word.py": "9fe3a81b7561d2b09c086f63fac4626e88a32369ef8bc5579c94878de1218a89", + "loader/source_inputs/base_bit/research/paired-cube-diagonal-bit-168/bit/word.py": "85822e9cca5b1b2335c3704a3df2f3c6ef01e42d8328daacb33701d30cee80ab", + "loader/source_inputs/base_bit/research/paired-cube-diagonal-bit-168/references/pr168-v4/research/paired-cube-bit/check_paired_cube_bit.py": "4d7c86cd999a1519e0dfb6dcf33a8f26e442a353c3665a0f06881216a260fbf3", + "loader/source_inputs/base_bit/research/paired-cube-diagonal-bit-168/selected/bit/frames_p12.json.gz": "ad8e2705652b68476713d7647a8592505e222f2b3ccd1728dedce153aac6d462", + "loader/source_inputs/base_bit/research/paired-cube-diagonal-bit-168/selected/bit/graph_p12.json": "31a09a55920e64c8bfbac8b845dc01754c112aa6e207812e2fd1f4939d8f64cb", + "loader/source_inputs/base_bit/research/paired-cube-diagonal-bit-168/selected/bit/kchron_p12.json": "0fab548e84cf5ca7c04e8bd19b5810850463f36e0f92180efe73aeff17105e39", + "loader/source_inputs/base_bit/research/paired-cube-diagonal-bit-168/selected/bit/profile_p12.json": "c44ef8640cbcbcc9bac3a30e13373bd79efddde55d7cea514354ca2cdb60d66d", + "loader/source_inputs/base_bit/research/paired-cube-diagonal-bit-168/selected/bit/sinks.json": "c00ff70c564829d4b97740f92796fc6ce14fbcd5ca519663828650552b80249d", + "loader/source_inputs/base_bit/research/paired-cube-diagonal-bit-168/selected/bit/word_p12.json.gz": "1cb7e8ed45cf542e304fddc4b12247dbb248a0dc84dedbd832f336b2d172793a", + "loader/source_inputs/pr210/research/coordinated-crossover-pr200/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "loader/source_inputs/pr210/research/coordinated-crossover-pr200/NOTICE": "9fc5561c0995892dbdde777c713899486920c32d3562392f5f72377a4953bf98", + "loader/source_inputs/pr210/research/coordinated-crossover-pr200/borrow/selection.json": "6932749407e14b199651f0a7deff02c6de74e2c1be0a1300263f1e164927fb8b", + "loader/source_inputs/pr210/research/coordinated-crossover-pr200/frames/opframe-bases.json": "687496f3c15818e7cad1beb5fdf3812b8e38825ea302bfd60aea7ac23f3516b4", + "loader/source_inputs/pr210/research/coordinated-crossover-pr200/gaugeb/selection.json": "b0f9f0e67f94a3c21069f393ea27f9483d315bff2f53f77270163065a6345d1c", + "loader/source_inputs/pr210/research/coordinated-crossover-pr200/joint/joint-selection.json": "13f6420d6c341c22235c9d136d5f7c32896974bb165a893fecd7e583b790d133", + "loader/source_inputs/pr210/research/coordinated-crossover-pr200/joint/joint_word.py": "de37cbed753fc6f13a7e5dc25c8346279cfee5f1868df8c12a5fcb6ca8f631c0", + "loader/source_inputs/pr210/research/coordinated-crossover-pr200/joint/pairs.json": "da54b863601b5cbc21d27fc5cd623bf805f974a3e47b81ed29a85aa5bad0fa05", + "loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py": "0cbec81a11e758156e9303f63dc8c617601da69523073fdf2a77394d76acf56a", + "loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/schedule.json": "ab39d61fff7a2cfcb13e2c10d65f2c603e76a91013d197260d6c7b645ccb27a1", + "loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/selection.json": "d94ef4e0b8ca98a7385b364cf245816a7cad08f850a60ce8b67aab4c3a89f3f4", + "loader/source_loader.py": "e5e19ee6d6899fce8273d0f06a49caf7cd8bfe940a2a9a103dbc9d3a62b6b291", + "loader/test_public.py": "2103c953b37cf447d1a2bbb86c26f96fa5569a3ab018567e93884c12ebde8a2d", + "math_check.py": "bb7c80571104d9b9c30ce7be53654090dc006583ba1838557a5307b8a9db4a39", + "moment.py": "9d465c716c6b910ff66e1453e3bf0057608a787b5f5361be93781f42cb3370f7", + "outer.py": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c", + "parity_transform.py": "ef6f5224b91c409c30fc0886143787a0839a13cc6b148e42ca5db858d502ec4d", + "portable_bit.py": "51760a4ba5b431d55b245aca2036ef51249942503fdcd5d9317d515ce411b87c", + "portable_complex.py": "797e144c0040d78a4731a6eaa61c0edb9803a08462f885ed014cbca9d9991d82", + "prepare.py": "fc109fe81d7d9d3f53483ce7d648dc9fcf6d9fb71b8fde1c867ece5283fadbcc", + "prime_check.py": "80b764f53b92b299569a401754047b1a86f80ba4046502bfbfea924f6ec95e0e", + "prime_witnesses.py": "98cd03bc9582e7bd0ab194c191ea8eea940539e510051443ab9fd3e572a364ab", + "proof/copied-centers-lemma.tex": "d0ce6d3d504996aadb098227885224e48df46101daec8893523a0a8b7364d8fe", + "proof/primary/03-motifs.tex": "ed76761194988a01af77ead0ea6469cb5dcd29690ab985a0b5a4006b0f2b69bb", + "proof/primary/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "proof/three-stage-cover-bit.tex": "47123a756f823c83a0d48cca2bf5add6472cd88410b13aed345e70c8834fb511", + "proof/three-stage-cover-rows.tex": "6ad97a5cd7d6aecf978a81226e1c2763d37840caca130c61f3bf5c4ac111c5c8", + "raw_ledger.py": "d5dae7b56d403adb778251e4b42903695632d522c1392505723e2125162cef78", + "regauge-selection.json": "135e314f37bd611a021776991c9d786377b3829f84ca576d5006696c2d8bfbed", + "regauge_transform.py": "baa1c7390f449722e7e700fa1ce9afc3d00cd4c0f7faa5f41693ff88ec02fd61", + "requirements.txt": "25f9f1fb1988b230147a1d3092d34e09c069eb7a6c6d6df46b3973b9f2d36efc", + "retiming-selection.json": "b173080a2884d5bfb28e35ed5b4256e233cafc6275cbfe5a76619b406f2ce989", + "retiming25-selection.json": "e66ba924727efa06f6d2f75357a3d5d4eea97c5eb0eccdc786e5814eb877ce14", + "retiming25.py": "5e9e835730aac1b0752019530daa1e75c8938686bf8a8a01640ab69ceada90f2", + "retiming_transform.py": "483cb8da83a1444cbc8b1bbe60473e571a27e6e589fa64f9a26910ca0d678407", + "scalar_check.py": "13ac9a3ef3c131739478ac1ba5903acd638cf5a41c6fa463fa3e27325413c7f9", + "source527/echelon/selection.json": "8e6ce5e257aa7656898ab46bc3421df4a619497b1e9f5956d2c546b3014050a7", + "source527/extra/selection.json": "791f6ddeb19add7026ba37461256c13efe3d35bba0bccf1cb9787a01fc16f0f2", + "source527/fresh/selection.json": "4df5f96064349415882ece4ac9abd19cc778f18c0306a27b3d65027dcb04b6c7", + "source527/paired-selection.json": "67a24896e5ff6a16735efdff57fbb875aa411aba00cbabb22c43a91cdf63e084", + "source527/pr230/NOTICE": "7dfbad087ee49b74fd5075d517eaa263c5dd3d4fbd4c69bfba34ee1cb55e837f", + "source527/pr230/PROVENANCE.json": "19957e28a8ad26281bfe8bfaf8ae16191be53e729a8870a6154671b3384959d4", + "source527/pr230/active-opframe-bases.json": "9a2bba5c72aebc9ee4f21e59b10ce810b2da98a1fa1748fbc44c50a080e584ff", + "source527/rank/selection.json": "5c97c6413f1eb56c7b8f9ba9e839329d212fae7ac3a08c29e9efdee42f5048a0", + "source527/targetagg/selection.json": "b7a4d5eb2a6d2f7df867f9be5af7da1d1aa99cfbd5214195967b0ff60642d77a", + "source527/word.py": "e675d4eb9d90ff0b44279fae0b46f1a8b39f65421cc38454b70a6b75d0e10b42", + "verify.py": "489bee6d23fbed6732e60d62f8fa98e7d2dfb2d2b7f75fd2bd3bc4a920155f10" + }, + "certificate_sha256": "7eb58ec449c932b7092481746390c776365f302a742836cddef5643c0351802b", + "documentation_only_edits": [ + "BANK-PROOF.md", + "NOTICE.md", + "PR259-PROVENANCE.md", + "PROOF.md", + "README.md", + "UPSTREAM-PR234-PROOF.md", + "proof/FINITE_BIT_ACCOUNTING.md", + "proof/INTEGRATED_PROOF.md" + ], + "scope": "Public extraction reuses the exact117 numerical inputs from the all-eight-stage tested143-file archive. It is not a second all-eight-stage execution of the137-file tree." +} diff --git a/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_sources.py b/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_sources.py new file mode 100644 index 0000000000..570f87c2a4 --- /dev/null +++ b/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_sources.py @@ -0,0 +1,73 @@ +"""Read-only source views and exact original/public closure binding.""" +from __future__ import annotations +import hashlib,json,zipfile,stat +from pathlib import Path,PurePosixPath +BASE=Path(__file__).resolve().parent +BINDING=json.loads((BASE/"joint259_system_docs_source_binding.json").read_text()) +def sha(b):return hashlib.sha256(b).hexdigest() +def canonical_path(name,allow_directory=False): + key=name[:-1]if allow_directory and name.endswith('/')else name + p=PurePosixPath(key) + if not key or key=='.'or p.is_absolute()or'..'in p.parts or'\\'in key or key!=p.as_posix():raise ValueError('Noncanonical source path') + return key +class MemoryPath: + """Minimal read-only Path interface over verified bytes; never extracts.""" + def __init__(self,files,name=""):self.files=files;self.name=PurePosixPath(name) + def __truediv__(self,child): + part=PurePosixPath(child) + if part.is_absolute()or".."in part.parts:raise ValueError("Unsafe source path") + return MemoryPath(self.files,(self.name/part).as_posix()) + def __eq__(self,other):return isinstance(other,MemoryPath)and self.files is other.files and self.name==other.name + def read_bytes(self):return self.files[self.name.as_posix()] + def read_text(self):return self.read_bytes().decode("utf8") + def is_file(self):return self.name.as_posix()in self.files + def is_symlink(self):return False + def rglob(self,pattern): + if pattern!="*":raise ValueError("Unsupported source scan") + for key in sorted(self.files):yield MemoryPath(self.files,key) + def relative_to(self,root):return self.name.relative_to(root.name) + def resolve(self):return self +def from_mapping(files): + for k,v in files.items(): + canonical_path(k) + if not isinstance(v,bytes):raise ValueError("Malformed source mapping") + return MemoryPath(dict(files)) +def open_source(path): + if isinstance(path,MemoryPath):return path + path=Path(path) + if path.is_dir():return path.resolve() + if not path.is_file()or not zipfile.is_zipfile(path):raise ValueError("Source must be an admitted directory or ZIP") + with zipfile.ZipFile(path)as z: + canonical=[canonical_path(r.filename,True)for r in z.infolist()] + if len(canonical)!=len(set(canonical)):raise ValueError('Duplicate or aliased ZIP member') + if any(stat.S_ISLNK(r.external_attr>>16)for r in z.infolist()):raise ValueError('ZIP symlink') + names=[r.filename for r in z.infolist()if not r.is_dir()] + if len(names)!=len(set(names)):raise ValueError("Duplicate ZIP member") + if sum(r.file_size for r in z.infolist())>64*1024*1024:raise ValueError("Source ZIP exceeds64MiB") + candidates=[n for n in names if PurePosixPath(n).name=="MANIFEST.json"] + if not candidates:raise ValueError("No source manifest") + depth=min(len(PurePosixPath(n).parts)for n in candidates) + roots=[n for n in candidates if len(PurePosixPath(n).parts)==depth] + if len(roots)!=1:raise ValueError("Ambiguous package roots") + prefix=roots[0][:-len("MANIFEST.json")] + if any(not n.startswith(prefix)for n in names):raise ValueError("Unpinned siblings outside source root") + files={n[len(prefix):]:z.read(n)for n in names} + return from_mapping(files) +def integrity(root,scientific_manifest): + root=open_source(root) + if isinstance(root,MemoryPath):from_mapping(root.files) + digest=sha((root/"MANIFEST.json").read_bytes()) + allowed={scientific_manifest,BINDING["accepted_public_manifest_sha256"]} + if scientific_manifest!=BINDING["scientific_archive_manifest_sha256"]or digest not in allowed: + raise ValueError("Unrecognized scientific/public source manifest") + manifest=json.loads((root/"MANIFEST.json").read_text())["files"] + paths=list(root.rglob("*")) + if any(p.is_symlink()for p in paths):raise ValueError("Source symlink") + actual={p.relative_to(root).as_posix():sha(p.read_bytes())for p in paths if p.is_file()and p!=root/"MANIFEST.json"} + if actual!=manifest:raise ValueError("Missing, changed or extra source file") + if any(actual.get(p)!=h for p,h in BINDING["retained_numerical_pins"].items()):raise ValueError("Numerical source binding changed") + if digest==BINDING["accepted_public_manifest_sha256"]: + if len(actual)!=136 or sha((root/"expected/certificate.json").read_bytes())!=BINDING["certificate_sha256"]:raise ValueError("Public closure/certificate mismatch") + elif len(actual)!=143:raise ValueError("Scientific archive member count changed") + return len(actual) + diff --git a/docs/multicut-delayed-inverse-checkpoint/logical_wiring.pdf b/docs/multicut-delayed-inverse-checkpoint/logical_wiring.pdf new file mode 100644 index 0000000000000000000000000000000000000000..1914ee2deaf1cb45015bec4819a4d51f37d9553f GIT binary patch literal 870706 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ŽnRp-@+IMVNGGeiBY7OTJ^Ge zsL5&VO4be-dw=*xV7vcx)X_xllaZ;%tHkf4YNYTSc9H<*60WF>uD*7@cXK=}_qSQU@EwdUmRNhvm+FySbC z#y!Bs>)>YR(_0hg2%t5f2B_)~KOyUU%?|1e&sa_NhU_I%1URdi0}d1dFWn^8P(Xnh zd1tob5NdBN51Fk!Z_AV!LrHle5ixaMW@PZZOwTx@z_u3W}N4gykfDNN` z$eQ$-T4?!V2-}3kUy!QSUFm&r=o2Ur=dGhh^=h*G(3wrl6*8%f>_T9LapL6YkW7XG zPj-3*38%@*sD(T{s59D>i_plJnd~5wgLq_{2pw|Ccondo#et4vN9x<;6ykH5A3&Ph zyP$(IVZmh6P_`*~9N$LWpvd7_up2bN=Q&%1@og@tdwTC4vb$ik^7Wa{PPZbPb*x>5 zpNX%j95U4LX10x&rnTUD4WhdkxIl~VfVKrgqE_nX$A1>f_u(l)DVPNS{+m-VY!c7- zGNr^L1$l#!%$DuO{z)uCe5BnukCZy�Drk-T`pfq~)x$3OjZA44A-n=gejf;fz&y zo2Me=G@s#t3B*0fy+A`(-5wnCYPBeEVOAiJ5ZQKq}>dbh1(9m_c+n_+TNH)DKIW%AE zsOiJah6U%AdV`uK4I*mlEOUWm)KhRIpU$>{14)Gla$mWF0ZMhkHqxL=mEk?dA0r{N zxP7Tw{eA%XQ<%eBlZ?h>+(=H`zjL<9#x3%UCTQ~Wa_X3~P~wDCp3s=4z_ zGZzIPhnfcWM)+j%aUAtkFPZp?Aanl8sa2q+UQ9IF;t9Z7Ng?tvvq9T#(a50U*uW~| ze!_MY#NLEWj4QDkNQ|)K85q39Hi$zh=UWXWao}K`zgzwIR9Id+t^D)IcShQPd4fsSF93@W-E+#GZYut zPBh=AD25#9j`+b7#hvx(t9dr1ZC@2hqH=MK;*rU9;NxGlV>HwV$=#^#aHiyU zxt#}7XfhTq4D*+;s7(T)dKX73lkK!OlC4!{yf!%ZL-i`t4%LRto5ym*L#@V&^{|lF zuVyT2xa7_ILiNh3W3m&!!g}}dj`enHDU!QwI#EZv(nBoyvbuX1g^&a{KKZ#3!pO!x z!zafNTUZD=M|^T3AYH+oN3MoVrI+94BB|C!jetRG86K;9UQFA~9!bi1edWN1J|R{8#1ei?-qK6{AJsq+yoWcDqo$JRcxjO%7ghOf+0HqJEQ`u)}Nd#6<}okEy6DytqT-y?ivC z$~1#Vhw}o}1?*4>msbmq$TGaX%+uh%-qp>L$wsnOqYm2Q%24TwqhQ#3tTgaATbnwd zBa35w9t_)P#VHr_f zw~;)*3jWqrKhyy95NO;k&&X1pwIF5CscwRqnOXYbV0AfUp@X&;mz2XaklUAR@pM@4 z4OF~nFt~6JqT+C299g1}-8WMu&Pc99i{X-ZY9dK^TEC9RZ17gD*-$bS_uoJBIEdW` zqlaiy_W-{aJrihlOQoneH%Op`lerK$O{>04@!9hyA4xxmyTK<*$O)_#J-Lf+GeSL> zBrk%7u1rafjdo*(7U{$C9RrW8)c9%>^>?VvF-I_S(uE{A0y#wAjVHS-w#^;Iv(rr1 zrm2-0I$?Q>#2rrad}}xbg2I4+ZuKz+Ve-?8=+JFo$X%w_XeWOTc1&70E!E&a+YM(E(mm-WYZaKujUEL+jR-iq+h)3u z$Q%;}GIr^KMzvoWqq)Y}jGlxQ)1cbCk>Q{|T#qrjw)%kI@)qIY=NwGXr^q)EeNV50 z&msqNGy+nIw}g>Qu*T{uM!{Y3ocQW&Ml4tW*~X`PiuRmPSPBEuTP6Te!?O3fO_VSK z?z?iSu`*8rqTclx+D~HP43>55nPGO;&7Hf)WolkoBDpK^HVnzh$67tF%2|Y5E$gqqdLxP`~ z`I`w4q1Dvfx3UL8s(D;IF%mQ0@`iUc>hPi-(~*O}=NYHc0V>o>Rf^w{;;f1*@`?2N zeE#p#5DulyLh^YzWz&;fvk#SI{3++TodvQ@a!RxYVOBLFdG3bq8hlH{s|paNO=T0Uk#I@x6EpF=(kP(FqJTnm7kUs-EB~jZN)jiR@TAVU zp}I#GiuJdk@oNiF4cg!7rgVQhV;P8LISSh%%0}TW2gnA>+%y_()i{_^sv5qHjmhO==d&s^Dd!|Cb zTO%jGZK!mpwfya9JO5OyqE8Xku#756_cix@j?>MM=u6}N0?8FAZemSHyq!Y+%D_N@ z{=O6c78+l~63B*D#uw!!1dJB7d?1MC0oDnyZ}k7*Vce=q9~?z=hbgB zgMrXvv~`kBL`~^p6ZV4gAdi2O+=`Ugq`x4#nCnsRC8a58g1*|nPm&N}q7!=|D*3XZ zb_Uh&1msne>VI2Wq@W{~i(n8S^$&nh>geI{kn&7eHWlT;@s7^@|If$N7jMX9@^Rvt_6Wx)!Y&(9crn&t# z3u|guzXN~gfYdyqE9Ch#L29VFq}GxOo8bKg{057#${ZC8py2I2oZl)TRtm5#($Ww+ zMY%=uq_M=~?~?vY|7Nuyrai+zNQ;Dwi^&XJ!*x8K%r;Cl+mh1|Mb=AyD%hVs`>y*R zjsIgy_~%%lNuo6rqboxi{bWgf#*x}z>VlXgg-jGd#QL{}6dj>ZWK;Li5wSm5MA2+* zQO|!js^1#_56T=y(_9nTP&`VUGzGAx?d7`kq+_`0JzJyi=P%+jO z=M_x(%&LL@O&EX4TgSOS)JtMv#P|_-gDxMXfYS0LewrS!wI9V}s?+QZ-it^cb-@Rd zLNUU21AWp2K_#U1HftU#HYr~OS>>Qab6D}!3!zb%7t!di(bP*$jD5be3vGP5Cv>Un z2o!s&lS+pmpTz%3*;d^*&FtSP!s;A8mEG#L%_b6s@@f8w4IwqQ1>2a7A!@z$)wB>b zU1~7Ve3FVe*3LcG!!T;vo*6u zGP}x`C6X?tT}19Z`p*(XYKRXbduHP#7>P~fxG$GCoo(6)Xf6%oB@KST6~aYV7^ zT@7R7KeaxeVSuWKR&G*LkiX9`fLOaF!cW;Y!>>C1={lgl#uC{m*8bGM|JEr)%{3ys z6|!ND1< zisS%6{-OT<$!wu)KV}pEZO>_S9n}SNK1i!`FsRqtXJgW0BcNtDeR6&u|4h-`2zVXt(0nNJpy)bW+x|d;#ZoJhmoRtbETPG_h-JP+cH1_lyx^&!XjLUMqF0#Q6( zpHNBYgd&sIpPWKrcq@cSfm%YB64CWX{K2yiDce($dxZO_9ofB15mon%)IvMJtk{vY zP2Q|HfhdwZLb0rU_VrsbNpzqbCjAcL%MbBc{6NG)x@MsuW>WA(8+Z)IkppE6gKO_G z-=}UQLwI54)L)JuTw?c?1~J0;4(T=rs;>C3#tHo)zWo!Ije$b$G}U<{tbV1IOn#a2 zRU)NIq=ZUNeqwsWkcb>ex4I5<=X4m6X3eJ05yEe57muT1P^5E!jQlQzFLNY@ga`^< zq&vlNx4=fkV`qp z=#;n%)VUtuaRo#Awz|MoB6`6^S|OI^fan=z-n~H)BOFXc?xCg*8e}WJ;S|61piaE~ z6xmlocwyFBQkF2x&u3p5x9ots`Y#9~E@5H0?U$jGG*A?WNx4DFJh+85MTW&h36dAm zmb_+VCprD(1$suFfq`vGq*T-P6>{(?fN+Y`nZVKug_*4niWY%`^=~sH<%>r)N$xBa z|4zedUrggCD#5qw8KNKVaVf1xWk*>?*Z9`C|FX_cJM>9h{%tvOTKm+aFKv)m5b0ma ztpON4(lY$`;&&{T!Trmo^eg)Bto=nS=xPIEZqvriCWBZ6X=F%-5coe&?Pq&0mF^gv z1kCy15L10?a6$@?%)!i&;MbZAf{-cW&tdXsr0|zXm$gjrdjN#D=#hP^M zk47fTp_k0h$jIn3ko(F#qB>&QVy=i-%MO2%myG4f1obm9!59hI_)K`ediLno*c&q- zjALUxvYdb7%=AMNRSxjCmYDnKShu1k{OUEhA+J4 z0$8L>2FxT^B+2i&?)P{SpZ&wi4$>gmC8Kbpc7+@;29jN(Y%(%Jkp3KxvS}8lI+?4X zJanvJU@?wl5^v#N@S}_{ox@n_V6NSC(X##+=lq9-Y^@HOQ=|X5e92^GRYUG`=Hg!4 zTu+R2VZhaV?%d9y+qO)~jPz@5gouD3b93HJruCr`k%-KHzvpkHWUOJHHM1epNIC&7 zkH62JtWmi0ye$*)NpX|47E8P4s2=MjwFOzfM;gG?@0GW*=wf{al#Px0)g(S98vo1W z2QRb%kE$s${5u5s(4dC)do!6cu$o87dKRfU72|BuxtE6hLiW zz=4S>aqDgTw1?kcREd5b2V)@aMU^lW&sBi$QcZomAdgWc^a&?tfM5_+0yqffg6Bgu z1tMTGHR~~|_^DXyxiMb^J})M49>;lUyeI^E1b`aDxOb#TpLj1QN?W%U)QM^b1=N?K(z%@g9c;1aDn)F z_yU-YZZjVp;I6{)_-Hi*?+;)sf8NG{5+SN(nO423&4_rJk`c*oA6`#xS)@bV>6E@n zjnaKR$c-NfPyR@U{JqC*c6}};E?eJD2Um&9HP@>RT)o#(q=WJ76r3#T>3obHCvxMi zM_Fk*uhPn0dYpZ)O0L#zxfez+lNixTJ3BqD%8}{u=GM~qO~P+tczWm_j0hg>JzAch zy8E!PukHm;FYTCe)s?I7i+E`{qPOUiv1xDDo<(CVwO*x1!kuL7S<304ab{7WPub*Q zQ|KN7>s>zK<<*XZp#!-lu$WzPd7W_kiumlR)tiNR%B?iih+ThgMLNI;4*J;KESA@> zhcmOQyP|yHavCkR z7Fl{196S1}zQ*-?HZ5ZcV=IVCy-bVnU+tk@yb*!pg)@8{ja|?fWAwE9!B*z_ZrZDa zJRMK**lydhR@GD1{l;<(h{u?HM0t^g7a< z)Lm?OUWfNZ4w?iIwmsDsX-{D8s~Ra!0!iW&y!+xASB9=>(C8&!lKYZ!J7~8CzX@$0 z_Tsmlm*(FWt>mnqkjdl_uH)tYsIXPDFFZC1G%ud=`AT!P$76EaO;r48+SRFLvh#6+ z&tBjDsdM-e`?SluIqN+SH_XhOcAwXi+N^2k=!`v1UMU;B#63tmgY$5zHp{hA#nOnw zZ;LJMSWy*vRv3mfkD-_4#;L^vX!BMC#dSNL42#=lGV!3n1nw@S?F-wcLOUE!co-}I zdx75|WkM62Be9UB?e%Gdp85}k*sWM`Jrefao3^{NL3&hm?hwvL(;U|CB4c-HPVEz9$hMcG zlloW=jt(PRX>;t_#4#}X*(6-U9K|fQw&TJbsA{39f80=Oes0+7qA2N!UB4&5d_Fop zebfH%;hRm_QqdC}%-JIdT4_f2Wqpo7FfR5OS}=OCeVfZaPb;`{b4%}L9E*7+>9Kw! zxX|2viSNfW-MlP>F4yxRaD7hG{P_tY%=pzD&4*pR%Mg?s7#6tOBOC4(QqLxio^_Bo ziamam@HXuFL|@R9x3qF49WslCOTv)rAyP;SMB z3h-GU_0H644rj z=g~74Iy}%abk`B_u{Ys*!NEBp@36-ncK|WA62QNlp~6N1%kkW7J@7+{M;L{k2=MUC zJ>mM6UlRg;Uhc{GWFTw=4hW3H`52I?_%2 zfAK#y*Y)#dY!(;u?zTMs;q(0xf0;MY=pWwf;r!Ydzr0#2T_}X)%w~04Z~pL>H`m>3 z|H}_-qCevCKRywNKzgNc;zn8Uait+;*6(RA8_oH|OkoX*8E3<DDI~&Tv z+C%Qz!#s+3Pn`py4S9j{MExrp3M`|F(bDQTfEXEPiqz&7NYv(WoXjq@vw$Wn^087? zlb<6T(7vpVv-z8X6N0v`zL;IwnNl)kWHtt1PeZcrfrFXr2hR66666b9=P8Y@BuhnDK8xoIdwGy|N2G17mM|U68P~r*ad$+ zE-#^8^6mZYS%in?FS#co(>ZE*qZXbBY zP-MEe!%0e?JHiqHb)TnU^Z49AXCZHW`7_9@-4&4tsQcFbpx5W_Dnvlt@2Vt4IMhXn zfVyAb7kobVK1Br7{R^Q9obgAV2&hZ;!bpN|V>L-)mQw3=z~{L-iGaHNjQ65Gf%Xys zbwwS_!M1^&WD;0uzYcMq5Qq=~b>$v5z>OZ$h=6)f>2gV*kj+&{;9%q71%gqAA_8VD zd27wdBn`5=6kPC2!uQ69Kc9ym_HS1k76U z=7S9)VAhg1pX_O7uD~N~%3BEdiGW#4-a-ugo90_f-a>so{en6un%oBP2&h>-{m?!f3fhS4?%oBP2F6xjr zbCoCZ`d!Bi5in2W^}C)$A|TF`!JhrRy-ozg&MEBK&x>6mV4le9=hZP0Fi+&gGQ_e@ zVz%VXB%?&Yf+cUJkRk#WEO|4{JQ1*9$(tEfiGT%5-pm>&4v@)$C2!_3Bmx#Jd39<| z1T0wc>aHyjuwconOJ^cr!ID>x8W|FmC2v-&5CIF8yjitH1T0wcW^w9+1h(YOmS#l2 zf+cUZy&(b?EP1n&Q-cJyMEL!r;!8Bp!s%Xi(D0PW|MN8gAdrSl@ zTJkQi1xW&1@-DV}B4E*ycX7KC0gINrOXk%iflYaj80<(p;vw?sw$0&8I0@cYYs@ex zx%5?i4$q2-^O23}vO_&S-gAsCk{g_cKGI(UrL`@yP1x>mMRBe&h50{@)%-ukYN^F@ zlf7ME7_E_ieCqJBMrPfOv1l!>PY?K{7FTmrXFOl&{lfSq;sKvzHqVuDxW8`3FQ0@c zn;7CPK0$o`;2+-V;sRDLOv zBKRdy{-w&I;8SJkS1_mw!I13#91BgaOA^ARv4I(=#1pS?LH55V+Gov9{ z5arO1u)lx#F23KY`YO=h8Zryi{IB?|eEv>a4yZy%44{sEXGVs_1OmUHF(fI5e!P+- zn2rjS1Yus1X+qXt88+n;eai12RM?i!57Sh>K2dzov`>LTekb&G6TmB<(QFj0_VnMi(}maKd{}AM-FaiS z)Rn{YdAROKbNagpMSJ|(T)MwPXr;d!-R}ndr!ve8d?~}4!lUFvJ~4!B{>zEJ6i^lU z$4not-~gMTH4}6*D!sxb?q(Z4d-)K&)R`78G;K}eDIs6MBMY20iVY>7ek1&p_HRJz zQT7`y+)KMvutcAKuCPx*d9VXQ(Y=(MIf90GeT2_B<;Cs}lMJM4ug+}m>sA3>!Bm%c zLG@Dg@N>ll@&^sS)v(`!{gYIEe^i(J{R{*>rUrL-%2r7qqT4f-N_F7y&a{E&K`|=4 zwnqY8*tU^1P+*wfYQ)`W`-*22{MN%h3T=Dp?)EnRqyrIn$FpN>wICdPoU2~x36ui! zH|$MOJ`+t+3Q(nyimd7R2VG+iIb+JM2ILOT{>~AY7$Sv{C7fGQklV}=0G@A4w(quMo-NE|9h7-Y)QKJGlwLEisg=9W;I?67@b zJ^_JKi0r7?N$Tl<**`S=pnRTy>L+vn99i)lHz5yF6yP<1y6?s^3%1^>6jL8JDQ39` zA-G&j?#qMiIbC2o@5bvEq*$OB*+nBdewrkL&q)K}zE>`nVTx|r} zlEqG?xaZTvLU3u6J+0`J3E)84cU2&;v%>~p*tZ?Zkv9gEW8|Drj*GmYoGxtxOohsU za#jZyfG2DoloPajluHCsu`4AzC|6r^Q?6}A1fIem@L%AMKW!)+y4 zhr_Xh8q~{e0J2C`s_iiM~0s!o8=%${PM!WBdy z8@GAMQ9|u)7Km|UgxayjsLv22>algoKiLGSP8p4W-yTnbF#1uX<>=8z$H2*nMxolI zQfcoU7v%r}f#pzMNNz-sU4n9B+W`z!615=hF|j@!Cfs4jN2$l|jY*D1BW&|Mw$yrY zEg*kemx;JCq+~9Vp*-X60K(LGs#xv?Ox2l6q~iE(kpvRWGE3xO(v8;96e~hA9s3pf zJ1!`x5%W;CO(cfT{KA*63Um6pe}HMM@2^5(S-^KCMHtAbqfoZwbp%q95U``Di99L| zFHsZE3{VESia?DzdTG#mb6dXJ9DBVLp7*$4T{x8v9X)=LQca(5V0ZJS*C91%)=$hh z_injjYN?Tr?Yvxh(8!CuL8GBO4+%Np4Bx})7GHi8YT@nW5T~bJPIdte|HK@ciM8r4 z&g8)v)TOcBEm<5i5_~*yKQ~{he`5gJX~5OpFJHjPWBRj$x9=2^18rUxVap_Kx8-0*OX%kWO*8NF|YZairg;==exCgHl*h5 ze!a!+b3`hlGob8*HLgwAhU6CQq)RSk?q-_diUON#J3uzdzd%UboDh6cL-Fh%geZ&< z`Jh#(EX@{5e)@K89(?aWBBRA?FFYM-ez&27#$4q@1D>z&bSz6nd%EMK#;{4faWZyQ zfQ1}AZ)Ag^N_r*C1DGa)E~=`#nO5Qt$x?4%6xv8tIQ9fS}Y)IW_~g&NgXWl-iawAZ~s z_1RA9=&>Z>4CP31dVfSy$VU7nx!d=zC~tZ_b;bPWjZMr%SUW%1qW(G4NvF2(I_$ZO z^TY{lPaouF%LFjjZ(cy0Gg-$p;)Kh)`x$`}kNb_poKAs6m+u6sc18mRbgcx&zD@ys zO-8r*L-#pX@`nu96O(NK0oHbGwVPh}Qmu7}Zy(MaF2?6F^kurdd7&eF`!({uhUJv5 zYL|AMR+q+Jl8&atu9u_-%A!fA<4CJTPHS-kfR zU;+B*)^pNnHA^Z3l&Pr98kY*SG4a;MCKUuj1sCxkf9ITVOpYH}&*8aT0HM;eb5X)7 zCAyDKO^|t-<%%Bn)j54#dHQ}{a$tTd-5vHx>B*J7Qq3XvTAVQC(`#y+9bQ=_m1Uip z-j@KVer>a2DpQJXbmm!`(~)@bQl8q+CeXa< z0FqMTHy$D3!wp<~Y0n*Kqv?Q&Cclax<_%R*E9%AxniSi zDc#FpOjJ##fKnWnO@dI`goqzeHetz8;%)13x17GB`+oFP+?~O7P`e+}cds#>`rS=2 zlc*-q?0YW#yX0v+^)_?yb!)b=-fZ)o+d~2mKs3O%x$Fg)%^pA~1K5(3hlQaX_aqJ` z^GEKUIFv{Kf+OrV{w%Pag9IefBtCHsnze>%7Qo4>=NPO6zUuiS`6r(Fzzjd6zs=x*4J(i%uj-Vn>VTe98gB{ff=F*IDvBGjfU zV^2F)sRnCnN446p=M4~-2yJ$vIi2;%I9f6qw(O``pT#=OqT4%4*mA9ku!}v_+HN95 zG1iuZ8VVphMFEuF7=Gp6@*;z6`0~c#;5K!@$XXXeIBM=(_~!Lrj)iv!m< zAsKB_tU9u=lQh;raL_dG^xeR zWLgBwU9PmkWxG@Y&p`lGgYy73+P5xSnU8rH*N*Ab@3W0o>mC{4qIwcE3Yp(>oA=7$ z>RlO+r(rxL+kWTVaocVxY(b`{qdQ}MuVpEMq6Y-)0|;yB5KnQ=WaFN2tXh}yNULy% zT`eKSDQ^421e9aR?Z{`Q5>ULru^YX+fM#Y^*uTGEO)BueRcFCA5IE~HcEla|TsMV% zI+#i}_%xVcdOTzv%Kqk}Z0?yOT^V1%^L_H-fZV&R94}Ee)~<}@Xq+oFV^03xc5$QV;5o4I_PuBi`$S$JvQ%<}L%8y}!8_P>lzp?2 ziBHnIfag9`%9J?DRVZ|oLneE+pP9wmzGtV8(#jWNGj5-U!=~1GiNP-Da81G~?nR~U z)wC~lxvYTQ__X1&0;LLCBml$j*8a@M<#1$LbvuFLx96twL_8t-atWZh-160|jaR@i zEv9OYUfb{vYV}gOWvt7xEfv`}^W||=&n-u(Yq3~%$4^4I?p3oTkg7-9v7_S$Hgi1y~yIU=)O*hR1lzaVG>! zA5w$j8*^ZnT?AaNP5L;Zm*S7HkJ=F*<87AD@!yu;`L?+3=Hwy zZZ(h}CRqF@r@4gOM>Ta$8TIW3F?BBGYj+$cp^-Koi;^qzY8#UhCIJ&Q<)#{0Wl1&Y zUD(X?jG9%O0kcbRP|o<;#|b5>K!@usjaG{jiAE7PZ8jliw++!7v&V}gO+Tg&a}b>m z+jdegZ_h53A(x&X?7n!8Zup#;$Bf%b^%;nxvDwg!9W=oBYZ3D|kR%*>5_s#93eNhp zQ~r^CUFOQk+SAxYH?(97lMdss(Q%lSj*O_xWfKWcnbBpop6+(#lz*H_&OO{^DW9*~ za&I!geAWc~1bJrlNMmH6!*%=Z3%=Z7rG22vp1Of^plyo_=3usqyVwYT zpGz-@!n_KhR>Z+R5flnp;b}B|JDTqBn?}zFr;6TT@dQL&m*Zr-+e#@I2Cbt39(?2zy*TFO{V}> z#dAO2avNJ1mwwujZ!wlXaeQ~>^;5$xPg9$bN{DF8wHl7Ij+oNtQKAHlx)bKS`^sW{F{}0Q-Rtd)QpV!3l!OlYG9~>zm@xTf?%ZnAlxtn7ePC|K z{1c}b**oEz`7pLrOBF6#2{bT(jBmMvU+r+1L!Z8QT88MO_4vJQ7(NC*`EHaXx7{Msg~EId8E5;rA{B-18S2I2xc748|kP%ET)S| z2x!&$1VO6?L}oqsL95oWvh=D~K#p3y#pq$MWzI0p0i);cADcKwtbtQbUG;jSlrj$F zi}_wpGMA=YIDd#`p_{2ciSl zLY!5^!vmA3k*(E*{A5)M6UzQn3E>Ux`n z*12-OVhPXXIGC1bH#M1{1kZC$F^bRv8;;TCBjNPSrUe*qnmyG)T^;&vRoZZc9WLs% zrQXiY1;-7Kaop|Z^egP1%;mCpwt$SmQFr6ATB%}=UK5w{c>OXjZ}7u_&@?*n`M)(O zh|UfeUt{%>P)hpJpYAFBOeLkzjnTx6y@SsBUHHw(a{uOJ5w`m>m=|XtTO#yUk?SZ2 z%wb2-o}~wl+Gcj=jN5wbO?wZa(=>8fj|ZM-XVYm0-Zy*_*n|341qa%$JxV2m`hoR^3m2gGktgPEd=+-SO=+V4vM zss^J}dRI5L%{6D-fzN0>gj9DKeocn0Sb>o}63@V~LlP!t#VJ}%IJ>XsEA74;v(<=OG8 zlJx!d5ol2;a6KGpX$NAtW6;^|%p2PowW#kwQu&z9eo%77o6;5yg?RcF->o*DZ*T*g zu*4D$Z`vnLXFLYb}=^y49C)A3yS->5^9ANw?x{ZkLOBCwP3p$kOfW3IrO_sFwpR9mwm+HJk=TSLanuf>F_?{mnZ z&B9B33U5|;QVx-NfoUug@zgxocC*d{H%KEA^PD>q*RnmIa&^70?ut*=dDy>0i+$bAvDN!HFq(8WfCDc+{pm^x+g7dSpfTJu zU#rO`I=qhG!*$Z(DkgTIUD+0Q;nUvFhNH{PR$#8MCe=#BRD>5h9;Ow0 z${i=`&YzvK4a*(H_@d@;rF`RBw|B8IYGCTNdxGv4Z|rS;_q9VOVY@rmhfo%EnlOHm zWhJrf$()^`QPktSx$<6D9X!0Q=Xf)iWS@DBwx1rdf9~(~&|EjWKUhrl;ZTIx9$y|w zK8=2`=q7ANPff%d7wK4Sjf}@?>N)g8_mo?;?ZM+1EElpfez2EMkI{qoRhwxlHsMmy zg*;Ht+oCi#R+{~aCQZD#di!zw%f?->UCC>1p>Yvxp7XqIoGPSch$M=p7B6~fk+b(85usnd%bni3=|3$ zs+<3<8K{5$_FiGAbr-G~=PA5#mJ=0cGc?K&z@BY+_h&q-Ux$RJz%8+LyvyQ#*+m10 z5?Xns@4X*W@mREbmgnsrwqEEYeemZQ8p%(}<&AJ&>!k)VN-WD!tAC|o2=6j;FtJDv zDs!tdH?@x>AJkL6o{=C`bD<@s|4esPr?2fwyG#iAXIRB+C4q6yCr+wAD3zVT>t;ag z)Lo)*?0+?}aS?-o``3#^gxMro-p{X8{1NQjrxx zQMsnLf?sF}4a0`ydS+6Cr29oW$14;&Urf-r_u3>x6S_z*y^BT`Vi4LyEW9=6g%(Cm z)5wImT(8MdVF&*5*RAG{K1OapfqCjvZ`nQT!u%x3j{F;4IxgigLaGN<<$?|7jmAe-DZkh zfs>yL^3gqgFUV&(e`&8Bs7eug*lq;Dwbf4Oml8n#v%iXxHVb-G<_47z#IRrCNda!qJ%?sJ(?}Nuf8cA*@=Vb|iOrMtIg;T=*x4Y_hMf zedy@BbDbzITv#|}kFDQ*xJy2MpUjQJP{1f2ouaDelixLZ$WH&8~t%1JeZe9Zr%lk?5V z4|dGr7wL&hNpVyD(3{?fkc!@dqxS|!vcS~VO}|<<-bfW4d&iG-JTi|B9IeNq?g}Oy z>ZI!_4rfU{230JG%02CSqO>$$^J1C1Z6>Jly)VT)XHTgR9?dq+MGAo^`KH6VEwXIg z!&m(^e>_z|@YJNfs0EZ-q#ci}9m#V#Fs;^u3H90Gr{k=S;Pu3dsw8;hVx&W--h|3} z-zt?2tqzsWI668BEm^QGzC#80bs<$00RcaPFh7sMz^=na5f93Ar0hw6-5ii6S?Qr( zZ0`XHnF;6628hu~|0Mj+)bf0>)GY=TPP~A(z2j)^-P4H6S%t|q;-b65UiqhM65Kz> zx`Ai}JpnV=N5_uuX7EioWMc26e-80HFY_+)LJqOhbx6>5XGvu!Di>&8sVT`$ox(OO zqQQ~s2{~ZTYsdS|m?Jvdp`5N^Af@+qVXsDi*E;1}UO}o%`(n6xFh_%?5~jVMhEtt^ zj)oCs$H^JY*ZY^UJPRVVF}7c$%c7_95{C&ZnVh8_nONJh)=PA7gf|HH0_E8efDK7f zaEk~XmdG-94=b!(ZK@KWZxXT)*VGUR;B=?MG#o+$!ItY@<;AbPsXeR}N|bQSAXq^; zLKKPX#hvbVNe6c)cg!*!;-{PZ$h(I+Tx};yB@)F|9v-(uD_Wbxl~Q*`#$uhy^rx-% z5WYW3duE>XwR7L3253xQLK4}~x=(lJsTsbAd*A(5EStmgO67;eso}5Wy4ApI;#}s~ zv`FMX4FVM!=t7S0QvBL6;q*i##AZal0|oN~@5YU3+-pqsoo>&I1V-8Eh8Q_kkf2yCEd|rd_s#L#ghhR{KV(~ z!HlW42ayH3s5#TT%Sx0{u}Up+YVjs8m*}Zs_v<12MX^l>WcBY+f<|YUoH~o6w5~0` zoM^d!Up#r2>>5)Q$<_0-^!9z|JvbWCVUy9we~%o~X7uRNyrsl6ALMIO*qSR2N5}1Z zTkFLec0H=LAh(~6^|{AneefgRt93@&#&Bkunuh*=ehcd6EksnUEPLu}f-f-$P5z_} z2Rd(ggXOS&&Ds_g`(@E7t@C24^%^MgGSv!z??){dMAk=7%`y7U>nf0WM--Rw?w(2*Y^%${wFzkNn0heU!3JGd$RJqUC64{jnZc1=_dPD z;E2Ga5BWqiLOuaXkkFD9eTdSH^Zs>Y+O=I~@K`HKz3aMcAhq}#z8TZ0i=6BIBxb`4 zX{B5HO-Rt`Qiy&IuaY0rWRchAa)k6>X6q6IBYrshTQ%~hW{>B%9C9qITj$d3>f1=9 zIx4!0R6?rHEKjtRw(gNRO(i3~!lvNZdaYt;k*6yC7w&KFA%_F#RH=D3#oD^GZ(mnI zXmelCc^5w@o9Pv1kuP59Nc=s5sEu4uN(tD+Nw)pVr_tIq)i@yD& z%lRFMGSlczb@uZW)ksmdteCb^sPn#AzNw_1Z*2yPaEXEl`=JufBvW=M!Cl!6gEX#p z^e>Ejt(@8w(!3PC1 znu*nk>MO6T#o2fN>`hdsXSOzrsf~-QpG(E;WJ|x_b{Dm&ZbkZKbhstmfZLN)4@g6BHa<4` zx7)pKe*Y?{ob}x0V;H1RB;p)TVo^z|_8>)HSEcnnguXvyb$3d8yW|Raolpia4 zY&IU$vez0=>jXMkZQYEdU3gq&}@V6n8uEu!)HT3?8}qXgnTihZ6F@VYIdbR=CeP-`@@At&?`1arP-#?a9m z*-^>mi;Hw5yVil)RZc!~C-*j6dI6zhgxdX}QOS`(r<9smb*a~KnPr0cQk)u;`6xBa zS0l{j{(|$dbgTyh5`OjEygkFy zrR_xEL9NSnXU^a4IY-G^qzzZ7b)ufrWSZNVQA03qLL1Iqe(O?BgSRW-JMliqhp577 z4$VTH-U(>377^%SOdByOUtO4tD2ZWQ9f1KOpTnU~OGl6y8b?1o(3(5ei`vaLj%&Up!@Fse&U7>F zci}}Pkxp(MvPCpPE{9L#1#y;a;4JY;KhBbR$V7BKXQbL(Wq zRAw~@C!6Zt+CAl|Wlq6jb1QV_s@|5M!jCZFo)QF*&UwkJ+J4s1&BOiTN+rIEwqZ+n zDEpyhkS`ePJ{`;Ea_~M>B@$yZv+ZHTjn!rw((@+lj9f~1>Pb>j0HyEp|j+6nfB$|4@gy#W;mnqG5x)Xj~4khOVj?V zV8zxL=~R3i9b73-mA^1CKD#c}@JTepF7pt2PDc%}Tj@6ow= zo|mmrKlPX;C23_NDJGjf^=iecqz(25JwA@0XAR>#l~w!vp#@1M7K2XWj>B+yLhJ_R zgAEzo{)BtSk!)OGmBH2VR`{Zx>pL8ka!2I*jlCL%A)Y;kTCgHRGB+a=p+Vv|K7wJO z9i|TFlRtJMJupFe#MoeKCwNgm@fH!7=E;fb7XtSfV!3PZF%QC~LdPoCI%06!HI!R$ ztSR;}I8);Z^`xKA7RPiuM@E_^*giFv{D`=oFUGX7IG=@Z^H_${dp2hxtpEwydlwy9 zoqj;FEDE+9A;%gMIFXpx`Ku-L8bS87O>JLYcPzi(<!R+ z+XRI^zx7tS%Et1OZ3j)+qtnPNS`KZFs1+nRI>e^hBXpId+(qvL)D$hTwYheZ1_s|^ zLeXklrX;h=HfQ=pFgMXkXIY!O8`p$;L3uapGvC+c5#o66h+$D58`vsULFDBy`hN`r zM+g(89*FB1_(&A6nZsT};-%7R^!-aSEdC{Gt>AOI_H$UB3+0fEaPV_9*GvPjA9H!a ziQe$b6H&ttbbRxS*wJX;Q+Djxu^-Of!*`-}syj%{Ut+UY;X*CzI&McZT53X{-(^*+ zv}*0j;#N!4Gqh>0O?^6*@|+63=NM$lI~c2CtNY9t7kkfI$FZz69OkW5D1aQDU>THW zO~`RTIc_LIa`$nEQlUvDAkfETx|<*GAv__7msrX_5uB|+N`YxS9{-ren+=cemuVak z^v^lE$|{Mh^z0{1wUtdrI?{0GMfHyiZ<7Fh&tv!A$BVT$ow9=scDNiuh647xC`a79V(X6qh&!~(nD`>&*5MPbnCjl zdM)RpI@m~;!po8(!Jc*5OEk)84RTns;0OFZR){_oXeb&TbD+a!=axj2McYy#I1KF| zMV2pAuYsVVB~L?jv-FY}3>k{kA^9~ioUcgsW~X2O@4pKKvFO%CVxw>=B__?#PK>V- zcfs2!OJWj7*KGRfs2WBHPrluPZw#T-95=gC69k{ogL>-0^sCzx-0tfnof;hq4Bej3 zsmz$4(mKD~Fl^@GWVrRcMrTXx3f7ABnp)RyH+tbfiI~N*JEULn-5`1Qsv^92J4B!K zbN=)+!T`Nf))$s)?7wh#F-b8e1Pn zVTtjy3WW7(Oe=$Omjx5PV>*0>Z-+8&tTHR9h}Afu^SS0OvjNvD{Rz`el$`<2_u#AKFsJ1HoM@Ha1?X+YutwOCddKZoeEiJho?QG-1djSJ$8bClN zJdvF?{8)F|QV{;*3^V6bIK&1*KAo$nD1sBK`o`?3b~(}U_5DOY6Rs=MjSN^eCQlK{Y(insCQanyDHb>TKC)*ZLhOKTOOy!{p^@YgeOyGpif|Y$lPxnqQPa# z+_t@}rRDOF{<~Q^Gq0x^&OOdDlR&V+CXTfo!SsPz=e8%>7;G<$u*<)gX$84Pv_1)Q z!zGuZokcN9FW2D|J6*09bSVf@?J7!woFj(Pm(1LUNE0WeIp`jht_1aiRrTpg%iS1T zmiHQ&51;e>WBlal&kMxH$zzZxE(xiCcB!wbimPbMT*s9L8{h(ErZuOFP@%LkaU-A! zGM_`p*K(L77QP4^Bc{(5#Ys#Du4uFy3kCuRv>EW=IKgEG)Z_>wde$f-JhKQ@Hq1vd zze(kP5x{N1;opUF!e6AXa~xHh5aSvGCoF59(2~P$68Y5#y$1o;6GiZ5YJ}*;w&kk# z76FBtXR8ru(-)G#>n@$iF!CxN^17Um+soeSSf!0dvv4mpYvyg$4AA`u#M(oU3BKUf zPQG4!COjSwxPV`B;9x6n=y_cMVUj_SQ#VL4O3w;;I#n>sOl)Ol*@y=nF+;lz%SGx` zj*H%EH7ehm)rr>DWOz9~WYO;TN=qlvVlr%vXE`J0WG5cgMU|ojFYR>Q6lPwl=DAd* zRfipE*r3lwQgB_RN1!P;C_GJQ&IG94HPib7w+L|fXJ$Gs@qEvr&Zzj)0l;j(p zE_D{vGHmlLqa#n?*^XK;|s z3fl%fHj+omjL2_hk`Rv6Estv9HA%7tTOHm@|VMz5YtyS?;;;@%8f3%>PdzU$Ae?(eih)u?|uq1ecF-8 zo;yKLy`yR{dVZohaS+_rLljvu++ zne%>}!nV>9(`?BVdt2mNFFBl^Pvi=cO5jzs8*p2_)F-sFmwjAq$ELi4a(K-JjS)hM zTsOJuPpZ(1-a z1KRUWIO%P#;>13bJ1(G`O5D78JDAqC^xC1U2v${OlG6|YyGg}uc0&$??}y!_LN|Hj z=eEw+wys%bX)vHI*KuEas%DAI+eF9g%z)5ZpJG}FVSMU+u~ayR2QW@`Z_Bc^J zABRYoV#pZ`Z4Xp@`ijU(uF|w-OIJX8R+Q^{o6pF(PThGYr*@6b_Hx%cq(qLQN5vR! zr#C~#`0BxHPUi>2XkHaRo9N>#a4)rHb?p2~5!K_)r3yriLyY2s^Bh&L9#JZ@$6n}| zpmzwm;aAX&zz~f)xM6G1kNyu9!v}$LH=i9z~xqn zn2~xKkxRAe^tBB8s`Frf=4wrl`3vP%AvzdHkK>T&`g*<9jxY|fCu7uc%wZ;)c)H65 z(qL~P#JY6aVs1Gf64Nt6HtA@^42jR-NMiM{)`Do(lwi)b$k#whRdnZmRA!a2NLQKUknd|f zmEXvFMW~p!x)q)dXhN}h;&|BIX3)Yf4fYb`4kLjoc^0jGCx7L_(1b@964ZbB2IL6x zC+370C5Ueh@d%f!eIJl)$iDn(+t2vEflk9zE`p*2_7YU56I~ z_%g~k(8EolxKo7WR|NLuAJ{v}a7&bDExKFbo)hQ(_I9Kfvn(}N_F=Yr7K%21K_Xjo z@eB5?zr#N1mT7PmO99dNSl+{~+PDm*z(-Tm-Mp9byr29HaPYUmw?{) zDhVA`Rl~7Ie8?R&FTZ#)&7ofjzFdNLiAWFyFDwEqKC2HZ1om@^Io zUzPT#7Q4mivAu$F1)|GR?%Rin&fQZTPFjVmgqp`re5kx5oBqCmX5H!{(q?BgpUUZUSR&Cl-NlU{T z<9A{?f?CJi|0Py?shF-biVD!5ifO5W2*^-{^5=%dVBz7qNIX9JIr~9 z<5}A6HN3iaxOzpixKc}88tz=Mr*wB7jb0i~8_AaG^+*KCJ(7=@RJ(3hM@lG~D&TZmI1?EH#lA36%uyVeaSTuFqz8G0|2 zsyiMB4Ob zpInJ0yL8(r7;y7uO13E$Ld*iulk0?&pdw2GKYAqZ zO}0A=`(|^LJ78UU>lO48c8wq+ip!BzK_E5DZ3Las0lMOTqJDy><3rxg1ujl{)VCo{ zd}wdA)pmN-Rwj5&9lI#I(3xM-@S+^DB!8hc(bD{o&h(r##E%$*>4c5v8`g-RBwV;I zs?XPh50P(;{0Df`{F>mY1VZ$yJX378WCz8~L&0z<)M$6HDzs6290XZ!huqtP+tr=H z68(deGuggDsg7p;KRN4CzDTn!9bvFHJE&3a8Qs}NJjBD_t+s7fe4v$e=6~Woo=(-!M2GM@W9J6qxCbKhev=HULN3sX^@qH0;Qa ze2~PZ04ZBB#zf0wj!x8b4(#`yWnVY5#xZ$Eiq2nRIwN`M0qqt-7gV24_~Cl9kZ00P z9_Vn)+R|}Hb45w_;0?Z=(TxaCeP_v$-MGB3T7X)))~pXh(Ag=KU?vAtyhnn`IY@4ceHMcD zHG83?UOz-X_JI+%U2WQ^l04$2)Ua?9uh=B0B#CzLnZBPdhOb$PDOq%=&X-YAbW)8H zo4ES}_Ec~B4Afk0oi8OXDG*3ha*mj#O_zU}ycs0Kod-V_7@Ke`5gC96i$h2L@1l{J{X8gZ^DG zuUXwrmixr&TJG7Mko=0=QSitz%%R9uHrWaMce#0Z)M!{nIg8-y{_0|t99473#XK;J z{M@?Yhaofhz6-7`Ex@m~h1$eDFk{Shy@U(#oQ(Z@9*`Py#xMK@l{4-ru(4)5#B`vr z<9z1JFr=&^Ej z4t(ro-C5-?TZAv}t%FlI)he{>?BEtR1Vjw#)>-8c6_G5JaFOze7J=|dZkHF?3^FHP zZ(hZQA#K_MP_j@xt=e0F{G9mf z7X0GBZ9$!-Z29>c(##KtKzcwD7s`%`(UD2`c)%MwqKLb{aZdL}l{+(H7Yl5L+1!^SF@z-sp50fdJJgJTxz_X0CIO0UA=g3+tDl+PNKYk(9x!*Ae9geYa?!A>} zUB51kPF2(-kJkKjtk6beOneoF%)j6L=@$wOG^Witazc@Lf{SAH8{-^w|HUt~hH{~f zk9W3~{~a;-^$YEsKdv|bD%d3Ed>6b4!>fcY3bMy7-6I}%0#3Q-mFp`nv7AInpy-ww zUo#H2_1;lTp z9~oFI43M}N$oM|-r$V}T=u0XW(#C@H=q34He!ej+QA-?={K^{h<{_B3bXpU*n9Evt z{NeJZd2J<&1;~@n+t}|i)|Kd@(0etxeAn|$=@5q4i-?v8`KgN%sK69KjB*+F5*TzF z`s4~fot%fIx9s6POfe0S3EfR%*+m4V=~M+W@XY_Y5=bEK$jH63w%laLg2D5%^b70U zwc_XI{Lz;ch6+`z@90P{v>9)Pp*`YF8gpMgJT%?WkhT-3#e+WtZp$W&)sn~)RcnE& zIZEc=n0aF0#QJtsBFF`)L231{r8#m!AkgH*?$E!aUM2Q)cKnGjSU32E6F(9_|al?4bDz z$$xl4zNX2tZu^AMYWNiU`h;r*6p+ay9ti=Je)fIsg$w&8@u5wh$zYofMrS<-n!^ry zuzDT}&-}%M)U$N_lmix~)2X4(D=Yt-*{y1g_=Ot4t4c@ndWvby9y(iRA1!JWb99Nv zbIx>f!h&r;2PY8=M@ZMgl}-ed2mP!^-b{CTcd)_fnqzO*YzcvFwLE*ZJQHdj&(7gX z5PPuwhx<%|Z_JsOQ{J)Nq;JD@`Yj)PNTD~a-;xZ&3@1D@%5oky9x7%jc_ix~zN2 zE$@u@SSqx;Q!(lFwlZaMjlCeEx8T64ht?;%6OPiNHPxuGbXDkI?8w=#NQ1=d@X{2oIWXY5Z6%c zPKX(-5=E;ll^QgWYt+yn!4HZgP>zB2G;)LSjPgiL=6y`Fj5ZP#$a6sJ-dAFDM~=U6o1bFH-5dPni1`if?-buqe~ zE|$5uU2O|){A+@uj$)kKS@-cq??gV>=Z$1>e=>nW@YTDiX`B30KI^%ur5 zny+{!(Hf-B7_lihU>~BKq!ytPq0nN^3;TD;|*g(QEfVdcEAD;Izi_yP!0g7u*JNOZ$mI(1kKqWbD= zWK%~Ul`HOMtI#m`j&_LEWh$84!UZYsk*pCvk99b1P}4Kn+{3L(&4%=S z24W_VE?X$|-BEJ%04S4wyFbFNXS)-XJK>3+Ew zbMde%m^CAX8ygT3;C^J&7v(w2=q^#OEltSD(>zp%#EoKB z_gk*Ol^2jGvm zD@x?F^p_u@O*i5&YuN|WAxYVT!xgI&_YG|K$^0BupA7GzCN6jy(Du-wmTOkXoV$}u zZF%bN)l$Ygx?k2QQ&fDBdClxarG3IRsnsRc?C+J(g#<4kA-1(woiyWJLDX89DJseO zNW5`H5+{>+6&c>o(6ZnII@~Qrd zS4My4L1mPlz%zY6p2;z&`-}h3PP*l9iqIc6s5h@L56Y5X^uvpGZc;-4gw67 zea5J%ut%}XPz}{?LN%1Z3L8uEoQdD^RqA#OpYTplQ89NTfPSY!41G^LO4K567E#z?d7{U0+Jji$*_u(Bl$*Yl^fW|XCQjGa+U4_Zbr?x> zZ)PD*zEel2|C62D6ESr$(4!YK6_t8Bbxb}(QBbn|&j#_%v=>Q7^b&OKaGs-^h-<)5 z&k~(=4_ai<9^EQ9-PGklv7e8<%C107XQ3zJ;9_CA)VR9rk4*U@4{7o(-JJG?&nWf) z+@U4XiDMC#`te32kHqO}V)kN0vp6H~Ec+uu>ew+L=}TgLd$0ZOgC1ZxgDT9~9OYe? z7wGEd_aNQ!wx+{TbqrFEWQ}WUYJ)qhq&?3FU1WNXk+)jEXcvA} zGu}enZ+3)c{dyE8)R7U^i{U^x=|b1xE<1Qfa(Z|>+SyLYu`b=~j+^c|lgiF+F{Zx9 zVkMq1kka^Ch_ArzEd|T5m2{#!TRFB;$8u@ramn-Up=;AVC94~jxPp*FhU#>rY&A^w zX4!!-MX^Pykdr%`3c+_K`p99RaL#Zf2ww#qqjBs6Zxxq=lASXr-o};C_rFFY{C!(X z`JpxmWQ4wvq(mim!&|dFpp=5j;q9RrVx~e#{}%-}MwaCc$`EhUh)Z%lZYfNrc*wLG z>&RT6KOZH5+;cKSO8Z;I>fjP&=%S}MsV7AWofdAM(M+3Oh)VToZ++BtfR1Hv&CUl4>HlzI95up`Z*)q;`L57C*--jKl;bRg8y{H zxpeGF%d_S`wpDAostzqSd9~3|jkVA?Z94WMZ%X~YS&N&Eddh~Zzi;bwvmJ}072IuN ztlo_1+3@c6?|J34!QV6`9g*ZrGZQivX8C|}??py79LLZf3;*uYjZTZn1Ujz`xEuQ@(y8(eVDES2OvnAkOEQq%pwa+Y3({JaFDC15b)8x~72vSuh6L!2d~V9? z3d-?gzC(DXhhvcflQ4A?J8{bSNlbe|F_&*Ec-b)6QEDyJV-ageaKHtlDU5 zYQ?%(SKulqfL?Dp<9GW+p@$z=d+vhyT<8+WEp zs5+XXoUM#(%okDoHm@13{=1LmE*QOXeP(jAt(VO?)>84$$=4__8=H1L*=_Ts>usd( zYgQq_=$+C#pl{!Pk6s=WP3k zHw{?zz^#>fJuct&D=nIHzdLK&G2=*g? zA;Nvwend8^0Wq_GsR9O_iZ&MX*7^1V&UHt|yr{AvTNlwLZ>+^>!w;KAE5Tn>_jiPX zY%e9f?bIfEr(9IY3DEx;LZ=2mGP#ObPahDvF46njThe2>%oatUeC?xdj5Zq<{fi@vmtnvXZ?kXYyUhG)LXj_b7_0@aMaf^tcjf^U1)oR3$kFhX8w=Z39+z*=d zj`H}{M~+q0Eo-yLhA-IvFc{*3K^gLU+O|n~%$e z7|GZzn6zj;b2L_cE%hBBd;YHUgHQq&QjooLDrb(GJN83n!;X+Gmmg_za5!V>bv{A6 zL59#l5?v-+PdWQW>JlM=Tt>gJ_Nma@g%Fwo=(jLA20kDl?ZrWKt$($Kr0u2UvQ8B= zw66y6?coL9={COP^WMmMsyx!$?-oPAeg=;aoR}>U#|AwP-J9Zr>60hr24%a$07(N>QR)i^uzt7FU{}NoK+Q z#_#7u*+=6K&H$d1GaV@F`oU%2YyKO{ZSEBtIAF-GCn9?$)ei>axhkWhV!322UApfF z6(c^7*~`Nx(4F%cD>H}W?N?RI?Di>Ciq~(UU!03GWGQ&oqEFXN>#tVfZ0SC9{bH)V zZ1HG$u&O|e46po8jDpJU_HoXpg@~eJ~hnvXIjvEd!t-dRrLez88 z64BzQaEW^LX&~I_AtqJpWIVB4y*iim;du~lz;7C^kC?ZtGx0~HmMAr%?t*b8qeP-* zPr(;%R99V;?GL@8M(^=X^ml6|mcMPfaYv`x$0&tLWcRR&VdYL$)#t_?#WG+%)g})v z>JE!zS(~~suNzi@cV*NH_6ys5EZyEjV)>bS8&Y!TQ}E)%HSeDItFhd(*9yS{laI53 zmn>`ggH24`yJ;A$CFjv~iLXRGhvg=Yu-z)26Y>#v&p*X@%TPFwLc!eJQ?JCiX>=Kt z;xQNYo1pQFR4A<6?ipDNqZP%fFfi4ZRYX;h_QMO9iYSGb3j^3|W)!>+*4b#O#!~nq z{J@Sv!JjR7mJ$}U+l3nybBO2aYUs+QsA$QG!>LowcV#`9x&))gV>&KH7k5CsUx;VY z*;eT25HA2-KmbUPFj;)WmeKXa%&4!!u0b%9i{)xo!{aShN5P(V9Ey65)h0g9*8~Q1 zY;kOup>S&3!Y?v=_4OQ}J=e(`C%F7_WbYhRjncQM6x$zwnbX9^Ot7~r^kO+_RKZYJ zv;vV=p%9`i$j4dPcHg*{jBb!imPOu*h)t0D*ujD%(yrdn3KyKf?B{NZ@ zKaAiDn6Q;R|FA(EEly%fAlZ2%AQ5BvF71t$y{8tYL^qz-@t6zUDs>K+sXG7tXD)|L z_o4V9-ZETLz>k~hIyNmJb0voPQMoyIv2vNn^}WT{weIp#-pyMn>-tq4ZmhzPX@%JeoRLvb1G-fW6+m7 zWM1ru$b^Bcpgh1-2jvOaHSY$uH8y%E(z@B=pfOrcAXvv5hTiJ@+HdJ)pyMz6C|UL9 z#og2I;%Bh~kwzlen*vEDRA-G96U001ocdliV^$eiZ1d-OiuXkT4DAOpw`>4gjjEpO zHdTfMJdpC~Nzl}K<%jem)lU;>V86Nx$hDvM^5@=hnKrAdeA-Z)ZDbj44%)W$7|7^n z_VgO@wbPdl*IrsVIzqgAVD3(vHMIjfd~{~?(GXJeyj%ucDeFtP5bwLSZCjq=xrr+? zErsiHM2#kY4{uoG_&k>Kh24gQ=88r?6PoLVU{HgWqQw7cWDI~Sp%64N(IZ<$q#Q(s zlsq2<6~~OuMObZym&6p0xDr`r-HHA@{6uiO=jF{|%GDWD_QLq~4a29@4B?Sl!TyE4 z3@lf+Jgae6_8N&o>i->F;CGyd)$?-3W~TYp0ISOS(<1!7_C9P_VO6WTy@lLu`~9z7t+-v;QeZ45Q+{GK;$_&eDTS$yav$hPgJ0cFb}mH|u?Qi1dPKz13? z@!R-VU)3HhZQJ#x?L`74<&6Ctwh$NrF1soQc+Bu{YGMNi^d}FqDaU$*6{v+=gqc^c zDyH^%5s$D~5PHF&Mlt(dy3OAc;o%od+RDC(WtbIvX+KbVu4A8HFq>+}CLf%SIwq21 z09deWVuNPEei-EKso-HDg>UBrdpy@+nLCBbTFUtyG`(XIKLHywW*BNz!9k=4y7O)}>>Yg}?l0P_ve9i*6DIGZ zvA&9F@AvoQzc-CvB*+oc(KUswEV03ONiPIKU<#m4z{OJl=-Onqc=ij}&I)s=9YEKr z*~8;uWq{eBR=gmxel79KVzQf5(=MDD2#uvndD5AZOuw0*|5TzUsKG6qidg9`@p7Te-Zx!MSO6M1BP-r9V7$#sxYw! zSjpxzHk|@*@q*1P@$na?|8}c=I0&I<5Qxo@uyC(tUkUhlB0MZYc*$u5l=U+|2kb9D z`+fF*ApVb>@UNo)k~Y+UMk#AEeXSgMqT0pZ&w^L8k!%CP-qwF4r1%&}Q3>qhW1Id! z5hcQHan64+)!z{RFK`Z`X|3(O0X@N_%?dzG+sp4eAokuNmYnd;|6)8Fy7_b4+I%-1 z90J5JB$`zydgN%}esfR0`)%~?b7@nUP5gLx13?5>0JdDIKS|G~wLj29SPQug-iufP zXTb-O0vbWPfq~6}01}&flaq&oZQ~b@tnvWj9CLhcAut8A1g5_Rt5-xwJYVPn8b8+) zuGDo5fIT(rLx)FxCjTd3f6hLUJpL0PK9|GKVgFp)ghc`=KkVP8AHFjJ{|3=js6bnoBIBRR0Tu z{{>TQHQ$WwR#*m+1qfU`uV4X)pR{fA29+$L7?dg4sIVFGU+@N)evZ(8yllR>ENJ#b zA3`EXu{UF{0FV5``TYyo0@!}&5dY)N`MEl33&6@>w4wW*mz+zbz4~vYTpM|RQqKR6 z42oQ1xi-Y^uc(Igr6vG-{DS~|OGIa!9(;5iteFgx_$fVt?jQubM zIR27z$c2Hk@S&H#N~)M`*s;0o4;nuR*nFhTpSAoZ;QtQEHgf~);}Ev7D!e12Bu2(A zn@xLZ_LR1enwb{gdHa7q$KKZcpt^zTP!;8`ry}fp3qxD5iKYY2L+rg_k=j&lUqj_o zdK#<-q%7R&X;LghrmZ~rgRNjHs%_^6p^h&6&g5&B2S%NhrJ za=Z(!KWj+`!WVl=lsbMNB1Wjcuoqr=?QgZ|G3xBf*?5n6qF4tu|!9hFlQw!a--fA0ujR~E69dzVztCgX}uYpW>`Ftjj{ zG{8P4Xb^@KV4?u}4mht*fFyhZ%GCAGN&zr@>yFw8{cO6Nim!jRKYR|b%g)SRJ)Zjk zJC=KyVW{34vxRq|?MT4VHU)BU0&z@v1YlWV{{5e(*)Rwmrh_iVD~#~7o=fe%bJ#?f++p6esQzmcrg6xkr;_+Od zj){x~UZw{O`o_`4alz91Q(Q{?1>jtxR?%ezLi$a0fvaM}1ux19qqK%LoPqP+4S*PT z?9~HIT`=U&c%vEq*9SQ9?GMVn6X6STYHeJCFn@mbUHFF%_^Y3sH}4V@mfwB}o$Y;4 zahO(`HqJv^P*ZGFN|mwmV&=17a@g&a{;UOX#+nCXdq=@qMp$75KM07X?K6Y+6aX0E zK0qxV4mEz0nT=n3WHtNU2gJYT`0y7({5DAN+w~m7kM?-^Iqbk?e2w3V`!99=@S&f{ z)nAmOX7rzP^o52!3I_cf-kJthN;tzGzxXxEhv5EKR{9By{m?jJX*NaJ zOvYXi9{%rV`;*@*8nJ$?>=)3v*jC`Vr*5tH)5s+Q%aDF+2QazqTxIE2uw;31lQJ z<458B-t6(O>tHYZ@pAA<&@zAMq5dc@{-8hvK_C9UJ(UfGreZNmJqen3t8 zr{S?&TLW?>@Cy$yfW<1dz-+I|p7OV@`&*vG&;G%(gE{Qw+EO@XyJ8<8279?Sux-f* zkD$~pk=yaysbTACz=r_~28?m`BJpjWp!*k&pw2;-IuP4U51jQ6Ip@Db^2a(zRHOeI zzqYcns$=zeV%+Nxdt$5y0!fKB>5U|;=Y*nws z`YZq&?)lX;Ik6%BH{}Ok=u>-8692^h>q%V^EJgk%&WA7m4EtBFhj!#$&Wmz;(P3RQ z@4~~6tjp~7OouL8?YbVW&P^rQ#Lkv<;E;UKr;_N{%vz4irW#JXDsG8NxF59t<<;iz$g+b+=m_nvUr@gY$rKjMLMrW- zyWweee#@eVW9#j_WR64HH{3VqeWD(mu-j&S!o?OS@f(lt@a=rAq7ThoZC* z(abSJFPL;*M4_prbJ(~JoVqKF92Ku#ub||;8Xb5>>&SpAo=W`MDIe8KBD6pvp`Y!& zQ|kvBy}Z4&r*VCE+hG;ugkq08hft<4?Qzs%^k(ihJK4=+(Jm&(S3EqWY4>pdrZ*8u zYE#GaxpffZsIy;6xX^KvKQw0^VbMH<#3tvho}20=UQg1l&3iW-XUr@3Y3F=5qF2dwsp|LF z5UaoAQQ-9KO*k)UA%rR|6`fvQ;}T$Rq^!QS5&0suThsDh+LTu668(#`QH5sDmvAxR zkCgBcB{=0kZ(8X4W@e$~S&^R=aOM=1-Ajs3chZHa%tpfL^}v zG#kvCNNB+*rj&YJ;r5!^Cp$T0W2TKe5kFMMf2(@dPB z2Lp5Fygavz)lXy%nra6JD4y;d$i3W|)?LbjBr_Mz|A)QzY))iZx`n^*Um+yCZ3Epj z-ZV}i2^l0IWbhv0Bkud<{q1*UwE?7=5t=#AiTmuB6LDrYqN%Q|uFA@+T)Fb}VaVUR z;}5Pe=#w8)xY?^%wymR#457_b z2qKrD2U^a@%RXAU!J#~F86&Yc3ii#srDiKjg_tFAre>Xv_*w;l{B7DQY*4uTIe-0v zRx)5udr)GaWk-#xyL5TrXq{Gu;P7mEP-|tR;J)&m-KQ=^%NhZ>bkt{2{gasY>|gUw z|IK;vzg`&6`2SD*(|hl(H>+N2MpyIp_#ZxW!ky4XEcQ0KRiGTD4I6e@w0GA-OJPGMqRJ+^PhkUHSb84yEwd7sbLOQif zcBbju(Cfk)&PVEirCluvu(ilcgW(?g0;r3}cWXGCJ=5t7ZcD z)$(25?JAsm;^oV9Xx#veb%q+W^fw7OD%*Xo^)|ax%c(5TPWA;>oBz$3Yuj5k1~>C9 zUVUx+tlQhew0eQ1PK5^mFP>H+e!yO1f;AjUoaMYI*TdkVok1gg z6+G>F%W=!;=u<@Y}3kpI8;u@y)bcOON^d9k$jG1I#~-+c_Nlj_ax zBiw+xxq{k6BS6VPwS8({+ajrSX20{V^j8({+a z4S6G)fX4fcRHBzF#$P4-V_s%GvrM%0Xak76cdm$JZ=MM#81jOxif%UK%`*W7L*6_S zP%z}pGXVud-aHdfFyzfM0R=@%eVu>8($grH5ah@L}y&)z!Rn+uPtrfvTE6 z3EcJm&*mghnzaVKjQ-!O{@)Usf(aP7nQvN~-U;_l;BM7=XKm7-@BY6<4~^i5|KQ&h z`gS5{&q%+&&(YDwi4r6UZt!2$XZ)A-0{>OCzlW&j_&&tz|79&`&ozuz`sr~-D=+XN zW#4M;!hi%ruao|#Q{aHd`Vv_n;!EH==~A zS)MPZ#1LJb^M%T5AlFX3tzjbka>*9yJBAN(xGl{ieqRve`N>!nnDci>3?$18TJ4JFFJ8TJ z_*yx~ZxtIJEp+@ z7krTGzou%cgD+coPt|7Sy*2(O-Cs?c==0fwZy8Rkk*|_>005nI0vT=HB3ooUDJ*Q~ z51DD$>dXMOg{&N8CZ%h(hj%y-S6Q{^v7F`O>4cbdOXonev$x=tqk^kZjAH!clxWZ8 z@IFHMgqR8VZ5j7sz;cyHEL)w-6S_-$hHJ`%z^y0*iD=H{MwCGenB z?qlbaIWUYjil>j#%r`mBJHzv(T53pVtf!fo$IgodCx?{phwH1r5amsZ)9oS(FQ?=% zl4^juEobIHg3T}ChWIVTnAd%E=f4~Vo&b>cjJQ6C@xX>zcCjI*D;PPd8yM-2Q$TRh zAaZ=}r7l5L2uc5Bq&I% z820)c@3-R$;zivQh0J45!au`^;7DdrF4E?c1U0$fvac8Gdwc;h_P639!+R?p4&@7G zX)r%G0)kpx1o*6pzbVr5}Q@PqrPR*f^*Qy3(aUZ!u7^IAMZ||2h3J@_7O$9 zIGI*5FQ$i!r8V5DJoBA~lo4FrVioIX<=3xRpC`j5lPxuPn%+zDWo*HfvjgN4tt^-f zLra+}M|dB&$~h1zuywh*X!0FjJj9)^HzR8pMUK(GIWhv?GATiwxncHhS^{P)>Jw=~ zrz}|At3DpiMrbofYF)bp0k;hWPm`zA3KGjUD}P`($LO-5a}H`y4^KB?64fiH9n^Kh z)iWfzd1Zr>eZ92Y21a$v*w!fuzB6sR-^x&=u1WN?ur^lgyg$%1HAhQd$Rhu}g*IME($-0!p~*PBFQn$qt( z^Jz_$E?%xU=`^k?Eb#<+eN)P*PzvRk|M{vxt1VTJJqr$8MTZ0-ZP0rwQj7214|&>xp~Fuh>}xr#2d_v zH?t9v#N;f}B(r%W&R(8orag<7axd|M6Y4zgR3ul<=R1q%PwgRLr@3hBebu+m{B|Y0 ztT(doR&rMaM`98-b(1GBinlLGWxNGO!RHH785Qp8scPY_wza$cwTjw6+(a;XEK6X|09=h5Mamuc^L zXUzvj)fQAFOasid*9?|{PZI6TC+wzZ|k*HaWvjFeSig_a(%v% zU<;eAGU2VO$a||1Jbf~$427m>lyrfI8en?wja5nUCrY$fymDj{hTd={QHK=O~ zZE$pLp$`tz7W&}qw8b)no(|%sw&1va)*sXd=kfV$Z*bC0R0F1Ezdty|SqzE!CFpT| zaG1)FX>cM~d7d#8l=eOZL*3j$$5vX{Ds@c=W>H6r5hs?I$*KY zH|*!;IqaOY-x!iRhi28|D47q4TWcn?5|(H9XJa{N86~#Aqr%y%z%sp#@9WOUwMzQx zH86VIT$8@KLOxv5Lpf-&nhU>sxZY_fx6_2bb`@Y-IEp*9PD&xC?Yf z6Ne#p*5He~FD6@ZdAdd3oz2uTd6W{fhQDJJDUKm&3z$9Xu$bh^&PIS~I9NBcOZY-u zj`u2?0O<`GQa1d1S`Q|B0IyL9GRp`n?<%QjBxuY8yLn$<6|Vh)>KmkK1Lv^E3ocko z*^sunwQlID4}MvLE9_Js=6DY4+*Ex@mlqq5uKJ>UCs_(f`v%bxqL?C6sG{?dSQ&<&rg-=QPbHM5=nM9G2t1H2a zr@YfXUmy50eF1v1%O9w!10|^SNsaujjK8Y~9O)*NNRc#(@22nBq_}#Vg^};=4g8(m(d( z-Z>tVkgS`@R`IB#5WKczN#Z+CjfE#;zi-nNg#s|YEv6g=sN88%aNYRewoGaTkJ=18 zLA{z^lsNbXqo)eK;3PJwF-7@z?f4|@k=Jw<1jE7mfHP9K|5#hyA{pgZ@}T8S2`<#m zAZug-6QT-@S#R>Xr(}41uq?YcB8Gd2tC``ZF;A)9(X2G`lw>&R&Y|upwWp?GcpKzB zlWd#}LmvB<4R-MqwMB6Cs(Y@!S%5sHd&4aqhDiDP;0o?qxrc$#p0cNrrAjs=N z4_;NxO=Ba}v4OR9P(QtZ(i#S7SIcQb*RlC>(0XLU)#o9@jbx$*IC`Xr1D7$L=8MCU zezgtAF&^vct38M5LI+HHt!N+J5}sy*9fq-D9ykU^iH z**wOWaBw>K7{vKn&Y$a8r1L#<_3%KFTxkghmrD5vTNKB94-2Bmd50I>jATdakwioU zKD8%a&Ok6V9uRv#`9Rx#(=cQm;=PNkenR@gW61IYh=6Q&;Ov1pB0eo%3x^8t`>v%| z(;%8_scVpZ*OIM9=34GFh^7g34Z^&qpr%1I?`d!C@41#tg9zkWdUXxbBG;1E2OaP1 zTuV&(8RC{OL$PM82d<^AMws^`lUkxfBJ!T<&E3h^&b5?DHi2AACgrzu33DwYq%9`8 zYuTQDbS;^F(fw}g`oOiMHEsCaLB1$e-q8y6v^|v#4YKE2N;D(_>#jaH%(XNJ$8;?Z z2FFxO%(ZM!cdliaFIrP{_N6`YN3JF6CqWaETfn4bgYz3lQt0jir+I^xU-xHz;abXY zEt7G$mdSfi-aSXOLwxl*c=ci7n0xYZp#|zeQO=Z(IFj;Plw3@G8J)X8{?rQ)smY29 zRUH{}8FQpi207HMjuY@`s}9_;Iv0r7ZE!NLAG8zUM$^mh44cFAA?D#CFmjw$Nv#Tt zG5Eh)!yg@-!%Y6=S?R|Z2D!9#{G&&Mm^Yi+YEJceDDGpnt+WNLJ|qu&3+b0aE3|qD zT7Ne7pX{NRtp!_~=hSri%UE0b;Tf<4790W7kr`b0xThf7gSzEW^eYOEEAJQB!EQs$ zTZ}etvTbdN8{f`xkY_1Vpgvdbe`ruKzc!3BC|Vj{9)rKbWz0%M!ju4* zFw-{zS|G#BU3lcocrut4TB>!wkG*2}#R9t{>p(xa6caAUmeShrE(E&~~ix3@{>9q*k zte_5UCO2%%r)+pi*kg9@VXAU%xq9t#yP)*%3V zrE;a8uBc$Y5f+58$6xcng>7|U!1Y8;u&h@p!uYo9Zr!)uOol@{HYt24Kf!L zvkqZTM$jj{d5Ng0fOre_a0|xgVG-s+R#w=-G(07@4r(B!fRB=di01=5aEd6>N7xJ? zwH&|?L2!2xWVRXm0!y+LBZDeS=Wuj>%0icHUA_rovgVX=?xWD*R0Gj#wtg?xbu-Ec zjfr(mQ8!#!AN9B?b27b^nMmh8RVcg*ucp%Ii(S`Xsb+BSMk<#&&YnT~dH9{fDdteZ zej&XEZyU%4U9Z90&OXL>dQF$t)N7Cz*biN=!P~Cj{EF!{w6diyOpOGGQuV#YOuYvG zH{xXa9$KC`l+`}$I`X!64keA1W{P`j<0M{y8LQNl8}qhl)ckZrNDd`BZWvU1u}Y@b zuy3s_Ov>NYa2Q>Pn_Q^sgBO$Q>%*z? z3lKO@H#L}14-1fW-oyxz=~2(eXDiY#URvTjtg1#1SJG+jr5b-qMRL6s>9rb*FJQ&< zuemQBN;v5;2VzfOhD;HlxF(k6SOBVJ#%na;p4D{j0lzso#rtIme`{yyNY4X6Q*%ju z$rl=Rw-YwusXgy3tB7^H)Ub8@RM)X#D)b4O`1LSVMha-#MJKqahaf9R-fSM3Zmpc5Vjvv2iFCH~VJox5JdA4}jgWTu}^7HsWtrS*Dl80<;G-mG&)G zlxR3fYiUo{kw>M0Gu-I}oi$&0=|Rkqr5G9oO7%6p7olYOPjiy?)g}cf=t1Oyl2-}u zUBiRGN!l5eaHeoP%RJKhX;gC~ziq?e;lOs0m8K02f}IGKT-WA^rv%~A6QUyX*cRD9 zkl78DVVF$DkZ6V+`Q2d3raT&uH;xlchJpwJ=jSDK?6oD!+OPTpm#&F=G>2_ z?*|21%;R`5SrT_m83Q(egJ1Upc7RrxNvD6Yr;xoAi($~PDv!XcKLR;6INFH5#D4E^ zp7}@IF?QYRvTTj1(^e0h&SxFQoefUxPHle{?;X(`gUiq!4#f~h@sTfAPgKpct%5)G zT%jTbc2n0Oy?K_gBLb+rL&+mtcgB73R_A&3k+@Z%+HR| zSciamIZo?I?*ri(x;S4Z?snin`R{GzPU%I8!75!BF~!;|CNa&{C0^ZUSk z9}~dIbqlQ3GNG2*JRljShx;K~Kwkc_7M@lw0{%2lr4HUP1}}C}zE+%Cg*^5X z35h3RS-_z(C!UC$DNstfWW`#d7{~}5u zzaR#KyJwjX{ZCzpisDx|bk)2t1^j#w3S-*HVV*=rE{`nw6(JNpktLi>bMlESijYK- zA)9`m6c+tF7Yd!27h#Me8?~?~`4v7$(i)>?T*z`z>k}$VvxXH6HP6d5X!?)BA$=y()GbrK-p|G_3 zO6D<>*q{XUUx~(rgt?&24&yI87sTC|O6ISmFs2)m&v?4oji7=zAz`>f7)v%PL39I> zi+ev0@&0fKZ%YyIA_cr>DTs&CSW3oMA&e!P(dI+VQ8E8wj*6*fSe}-lDM>LInlioa zP+pcCQjnDzlKu%~TZ>|EG#Kvxjg%tYy43r}1Baaj`(uklK=n0t2x?;y)H1+z0)-G*Y(@`h=KA5tkvy0Js zJ$fH7nHVE-#NKf;pS9j0!LK$CVp70n^~22r z8`xKyhyL@wo5yc#lOm5D0*m1!h+P(CM-*rfC|QYv0x~xbC^A9hu+*Tou)weiu?@)K zkZ>Xx+D}yQl?ZieUXX?{n=l_EN_Y&-^W9$zH7Oa7`Hx?S#v{xNvtyqxLf8*v33`|9 z8&Wvv=fVQiGWJ#x5=#n}Wl(@3GgP-ELKBH09S^J~MS?+G$A5&poR2&j6Y2)wep zkU}BtF(GWbn!?Ad}aOx?S;{e6G;p*WppC(`oPNQ zjsii^Wv%NZXh?svdN94y_#y&61pKTez z54(k7pzQ4yf;J<5wp(bHKifaP*e!HD{hjS13=@B+ba&ps{%*1FqnJt80!vu_Zql`= zZ+-vWq-$6h*qjcMs9E=oE%4XOKPY1*|GRRiWMkI=iAWw z-I+i(wK7L}uca$);g*st^A3E$%51$a7Lo3I*d@Fy1E)Tw(I-9(&iBAs$!J2NgH$tBpMkSJKI4*3$NZmhq~D6XNq3ZN0>sU*n5IL{ zpqK`IB;qzzixD%sXDDoe(8iJ(tVbH(brzW#`FrG`Ki(`oiLKp4lV<^wp)46nBBuOd zoT0JIMHioYtI2^L2zJ(g3WM1`p z9r!ZTb{Ry>(BX-x+d)6HwO@h8WWLfW}V=*=4`7a&yT87@Nir{qZXzvL{X0jp(QF}%!76E&pW{95RnOz{|@*G`uYh43;hWPCnm*GM zmhB_iUe+IuslS!Mg0OQAk*G#Y!r~N(xL}BNj>Rdw%^V3`$-$hMR6doU=X zj$x~t2IoOjM*84zX~exKPET4u8=O7O^+wPwi~);)>4QU>%NQI}=O|!3L9(yLsQ`V2 zk@S(8W10(i2vShS;Ghny#WnN(ZhhqjwVIM{iq!8nmzkwEMIF8m z_5sevM9-F#g9)}Q`}Hxg=g=xU;ve=w8JG;@0*pM$hJ#WC0*&2R*TjI>$$0xN2i1Cs(lsG4FCtQ`y* zs;NzZsm*ViOd70!REq`y=Vzo|IZ=(^<;7Q6gFx5K?MH@Ab!n6+w4Q`FC z9Z)bW|C-&L%+t-e=sf@5qfR&2OWaQs0_~!3oGMlkGywD@fsIeti!YXqwsBHBG z127%V=RK73F|Z}%@kWtT9EcrdOq5~BP5N#W21d>#I{2~*2ds?w5d9G7!S~YY! zX#r@4%xSJ2=s2VOWZ#lnrcw3sra!dj-&WG?;rJb@AT>lZF_9xxPy=*Ot@m`OTd2de zY)PuKAvb=qIegB3A@t*(TmKUhH#jx%_7dDKn+$Wh2+#v|3TAIiU08HY&cePG)6pBS zkFam+#HmntJqOZ}k0Dn*6=TW+Zp+>mn1p^1_z*bIqek6x#-d{8QvG>8k7jAPx}pg1 zF%}G5G9+%axm%Xcqb*6}+d0%`w?z3oP)im^(#YqjzwdnkE{F3!$mj7xdwcOu8?=0` zlm+<(wU!@tjf0?BMT z)HE?!nfBj32m5pqg3zj#-$E@jHW(nxTYwm8dbdp=BuenzYlVG$Whhh1_pSC>Mhvk| z0Mk|AuaE)_9vpL@VOUETnoKqrxS71{s8Qn87hFXIynVpK``8?Y#VlnV0#Ms}>jL6` ze`=U&Ljf)0TpL1rIV6VVDH(?CE=W^aPhN2IDlz3J5Lt*gS;!rJZOO-#A~c8ckLEq9^|Rw&>vya0JBlf68nm_NsRo z@BB6QwPggu)gCOvY~+LF=BBfQVa=CszC8EIUh||bU#`7-R1s8ChX6+|6hZd`iZfsN z^Jkk1Ppw=K2H%rftwvzNyNE4dXpT@UJu{D}0ZVSdOjEGwRQkbF0ibu2Qt{BnWWAT5 zRBu2c^CkBdJ@=9lvx}fgbg$WF!?FOFFG-Lm3ryXh7m%z%Bvl<&6qB>hc3_L1i8$cI zV$I$mVM*QMI6}*%VhKxr?*7-FFw(rbP@7+$GpyR@0%dz|)UuFe#ZC-fXa?{s(nsb%XIEo#+Gt+_))`(nh zr|LrJ=QDzW51>skGv1c#M|Z^xjcVAdhC z(v*$FAd9+{);_?X?x`=_Y+z7H^*z4%X;Wg^$}MOM>INwQSa=zHF-~i)FD-iz#nI8< zPM=Qc#E>3@MXZ2`s0Cd&CBpyl+ZhRi6|Wh>6HwcPf@liBQKrJll|jOi)z3JvjwJ{K zg?Ds@OvKh(PeY#KhynT!c{(Jt0URZ*Vwn5HR-@@eV#&d%q4$2%+>d~C?G!M0&D^(< z)2}fJf+dGvuryLXQ+U*T&Qy#LmAZj!bnF!nb*I;8PYFX6EJd>^nZ_kd4}x}N<0lM3~xP3I3Uir2Q=o@{1^srhdf|5$#+*j+G1B)1@bsUY;U4 za#;yio31}S4)h||fmk+M{@s)#oz1}$E{}8AU?s3! za6SO%Ezw_@zhFGV3*|7W`PA2%`elFoJUCkpv|@m+_O^iT2U?C?r@lg(0}_$)xr_U> zksdX7A{LWKk;a@+Pa}m?JL=1Iq(C+>@VLUp>tWO#Q$OC!DXd(iuCP2*#xDZC#H;LA z16w;PoyoU-lrD%U#J3A=eK@52+D89Cv<%CmfQ;z<(3?w-Z^1IsIX9Pq=s4F6cMC`@ z;J_ve4&%_WU44{p)%X}OFZ&R?K?p9?-Tj$CFAzV^OyAECv3pnJ`P_0CVcT)8(@EW6 zV?la_T394Old#}%)~-PisakhI5Erzz$R8Rd z)d!zbM($d(bc&UC%d0PAe+HI<|BOvIE_C`DPG8vGI5cn`RQuPP04CCN4un~WP-f~M zAPJ4OS>V*&8eK~tym;xm`-+w6gUqz8dSOdh!R_)P-)-Ey`w{+_#pBH|_#yrnxQ-qE z7+4hgu)~nCZ;f9bfg$@Ee=Lf>fRO#gAODYnr~l%Q0kAePLFUC@{ILcB`-?x`13iBi zf6Vlnp(+0iO!hCqAG6KG7?C6PjwA5LqMkYP7k~U40AdpZ`Fj^84EQhpSWngYi$B(q zN(?~xZbJp2oTaV&#UJZa#awdxDJx8y84B{xwv7M%_~Rg9hK<26@yEz4V&2L3iar5t z&wlk^#vkiNo{(RFr=K7*L;o+6;Q*J+#4?2aH7*&6T-?73m;4&OZd^;@tEX7XlTKW3 zLz|ImkDRY>9Wht%!5zMu#x4U_qu7~JsaW2Xi^evk6dNI%bU(N|KRh)0X3UuaTtHIA zjPzp0`B?3(DZLo<>#g_z>BS3MCgdEq5YAmHI1*~5YI$9Cu88+ zLmtmK7J3BI#%P5?j|{rf)WEeaU)QIH9w#F+{4g|;#}fid6Y`j3W1+`yB9A4a!0=IR zCkBeS11x(NLfzVdTA6GCV8fLW6{v%D0+=}lrehIlhIpa4_C5PTV@(8knGE!t1GRfu zO(cklmXWNh;>tiCV{i~S*h3z(pfw}{u#a&sq7@B!%pyVB;D8nb6mlB!STe}f+Iz@j z^jSk5OQGLJ?J?x>jrEY^r@mkW1(+LMjf-Eocs@%rr6s=?AL=MqC!anHgLYCH4#& zU@8ffDBQklj1vVuuT^zHSUN_>zls-RW3fuE-F>M8qAN={l)eHM>Dd7$B9~t(EUbe# zLL33?5b32gUPl3w(6%NXvekYsHKKu2?P>r4pInN=&g#BD9nV_9Hm1elwtFhMEIM4~S}6_>~daQ}~t2ZD{M#Sw%N)8EyupKN^7U zX(3sr(xw2g5sJ-dsxARQ*~1FWIuHhJ#88<<(^u9!EJ(DWJp!ymM*h1Yfr3F$WgkQn+M>x8D-kx`Gtq~Iu!#^T31n&math<3A zJ*k5w3HoUA_8|D);Id3#(alEql}S!eKokoJYmjb=8?yl;t@j8iwZbJV01Td|X$^cq zMpN3j=%{7q6&o;yK{38Cbr?q1(6I!MKE>$1Y)*k%0acL6+w%px@dq4)XxoCF7lHPx zFZdXjvz(I*Gz)TQ$7O_r-rm%HN>&1LC6Elri^5Z)_U6v*#lXG`L|#!}f?_88atx)t zGCJ+m#i!*H>ZqS4x}fY)L+QEtYQOk3ef`+APjOF$s!NrRN;6oz zN<;0ry?EgfDCku!@0zsJl+g3Kk5tOw&g)nAoU6z>`XBREiw z>QFa%6d&Va(e=ikZW_FA?v9%TjDobMs+JLFm0>}4eZiJMG&!$ZJBthxK zu6GDVOc2j8vUPjaQvT~`Y&Dwqgf7@v@%eRqr0qhL_cajf)2u7kYFUWSt)2roCCsJg zZ?Sb6-)1yg;cVdX3@FbVAjau6mRC^}YB-in;Jd5!i{4tG%cFSs}pe=^ZOgDO8);ag&fzwu^m z7_E{8igmSNMin|=*W$M=2MPMZ8j@alJ089n@&uzEGm0k;xr zty29m0?KGq>uE(8t@E2ud z6=uaQQn4v&EkR4@o=VWA#-?RV}IKKYTOKL2vgx&63rH+nT6(p7 zU~rwPxT12;Y1b4qyN)GcODwszwU++FDNq+N^?bo!uggU3@sfkutcC!19Ei!sdfAU` zzN;}nkm)tscJMx~1}rT(pAD?NJEgDb*qcmhm3%7S%&<4!#Yn#Zgi-TCwcH7KwLn|K zjDN`K@ABb30vJOOX+3gr0Z58B2$*BjLHJAzHkZ^&g?k^L`FT}bxKgAeJn7rjgPkxG zX(-E;Rdonz>?7W3e_bA{sq0i0p=-DWT6K`m`T*sl8+vkq?>SI-X>4RIw>xvGdI9=; z+vd88>;4ZX$bE?N0KQP%G0%M1NyUl{U`Fn)CA{CD7oaBr<+rU-Pbwx}+jj^RgReOT z{d}?Z0rm4}CGPy8v|XP+5iAFM(%A)Yq5hl`+;=wzokIKZ%lw+L}K`!P&Ho!Ftl zXo$WPY&my+Z`3}oRh}v;(nMmk0$OIeTVJavFsrTAO@nu3hyJ^SC#B5Zz~%VlOUv`( zN)`(N&}5r{E|3Kh^rs2TP3Ja}x!OvgdUXYPs1}D4`R(@~(#3G@_^o_pOlr|SvNrbJ z_10U3+;yXfd}vn0FsV+afj^xPeCuh|r+_CZBpe3{cx_K4{38GpJJ2`J z%MSre;IU(e{dpo#1T7nV*a4W>x5h7z2tt1iU;=#~d)^OY(0>6;e*sJy5#b*)DVn^A z=7kwu{e1Bk!1Ncu^v48>Os^T5^3S5t{}KQb+f0lRIb!cP0>Bj1`LuqxdHf|%{GZ)C z3@*990H(hHCgQ&|xhDStm^9W_GNW&H04FoALO2LL8eurhDqdjO`8 z?$i8t0ZgFlL|*}1`b?zA#4z6UuK`P8kg)!%087<)>MVMLniVNqXtVB?qWN`j8*N9N z*=VQu*bHq}rM0YB60K-~bI!q!pI^;kwF@Ss%g zW9Kr+aEI|m@$?a)jmas>QqPx2sg}-CF)ykr;3S9_3r?;f+8?g3z?|5&6sOxo6v6%y z0yC-UhH-0vTxXulzs@gxpMxQu5wi5hAg%M3U5q(`uE6qw^7EgIc?&M&6obDu_fkjJ zrX*-5&4}P8D4!M)5$C)5CODOPX>V|b{YZlAzxgP}9mxu6$_?O4qLlr~GtP;2D=L1- zMf>m!3CD*mI{p$q%#CkD$v|ASZ9ME=1=n{hujqKGgLAIo70@8fYdR#2tEKVE#WD;F zwljgt`Yh*9+O)`pZvr`6(bWkkxrc2&Q4(%EY9e9Jd9EDDAzVG36(WsXIuqR7I6NtC zfTUHI6H&T*TM#Gzl+*cgx5d%fsf8jyh?`X$8{^nFXG`6em!P2YJ$$JA{W}OgS2w2| z#A!YSv2vbuSwfKG@V#_E-)@8sEnE@}T9tN5b_ZU=w}|k(*R|j1_}rY*RtdQ!Qt*P&suS zt7I7A$*)HjiHV4$-rdh`iNqp%_3pKZjwM5T_Q4Df6Vbd8z)8cZ%%O2 z6<&Z!Yp;Ot8if$VpVUxxQnm^>418?vWw;(oE(<0Z$vAM-A~qjSf&G@iEXJm2K2b;x z_D+?<9(h4s1J{%H!A~OuniKB>%2Z*NXhi`tmHL=ck&#;-vp)m=kw-z~`WEpGqPy7- zEF49;MooeFrIo-y7-{OCLR^(OO8w;49t0XUA90k&&Io9bE@#dN0U;I7=yzv?x3)Hd zQ(7G4(|R+Py%*#h?!$_cp!zy)(SdL*DUXdsR~3J-=#C2H`E01k@QK#yQ=he)a`|0ufZ}pgP(TbKhh1Y&JI;W7{d^5c4QUK5u9$PkK|Nm8Uv3CRa^&KkPWa3TXJAn5IFgU<-g@ zGbIQq@81a$!m5zhqYWrV5F~;WDf4&_)}1$B0jy|40WsBe2@6NMg=Q51yoz=ey^Q(e zJxJ0fQ{Yv-!5DGMguy6Oit$AsNX>vtVq6^}UA+>q?-ndljS>Ojcv?bK*0v5hJhwYT zzW~o$=SrfMLG1B(v!<3YblNXKR;&7EC90JhA|RZHSU^M_68BhJ8$H+%d^G_0>f=O2 zxDA7iU!Z2F-e(lrcD5E!P~S2GP_d?KPkaD+pM5X`0(UXr%Yj<@6=f2uRhp^1&FKYD zr8n`8y_o|o`b8(#7$$lFObrv|GNeRxx*H4TnzMzvntlvyq0%5KkQK`B)d{jpS3t;t z=flE*zvF?bn#)oc^^6^;-z)>E>dCXYCzL<3%!iFe<4M?@D7}kRZ_B@P? zoe!S>6H6l?5HnZfJ4-{R5aC9DGf!thV`A!fM+4(0niWf9+y<%76v#57BV!5x zHWvV(v@{5ys_GMc>IK&)QQzU_2u)z{~5u7eVe%tL`kCnS$$8$*X|_~d-A~~`8mK>OC5n4FP-V1eG${0yZ5Oy zt)`U&nExSe;Qh{1%mh~|lyTzedGDowb+LkRc_nmv2@2kwL1{+Rk%uaHQnZ(n6zpJ# zVH156dS)+W=Q#+uSo4xECU20+l5&IRT*?x_yp$vLux6-h(Qc6dZ6?>lI+BP7dqU|M z+MWy|tldkI7I0fER!>SX2K(^Wg<#oM@Td%yxToPXLfV~}5VEvcc z%9Hv`6_=?UiCUfIloy zA?0kYdEif%20ZYQb2|sT$nq|&afS0>LYancrNkFA>r;SuI1WMwhJABkO342YbuO)_R&a6 z^97+~)&fgP!=%0l0TKP0BJUUpcSb94V904r`A|9+R~R}cltN(&ryogaX6{M|ISXPO zmJyEmj8@1yiNfZ0tQkpjh$VDTdKz30y+b>~)F>9BGsqo3B=4IQ$2F@ye9p-hmU&^yc(vKMaA16Mkj3)|!>}+_46@Y; z_~7^~w#BC#k)))e21r}O)f5?aH?M45So)!nm~s&U#jhXM&0Z@*SVn~@a~i023x>&& ze8JnIrci4Dhge9z!AG5OmG#+_t-oWn{-!0?Or01J;&#Cj#JkU2u*a!1D)UuD=~EmZCZ zeLC8a;L#B^Hs+}v<))`$4pD$Mm-B{KGmRfDmYYQJiw$=m<@Xdy16tq>3wu~Z4H`;! zg9cf#tTBT-^aB1b;~kCgD4(v;d}?`h38qyjB@73MM6`!Bn4l9^97VjjRm^P4`Q4)- zjfz+#HlDn!fWDZg~HxwMun3b8j;UPYHWi|!#eA_@KncczYO2O|+x{eg1_Jyf)n5(7h zL?*)24o{A*@W`p=&HmDU{(J<76sfLV;Gp>n7!vbn7a=AhVQhMYOnp5=cF)TLLWrF) z=gZq3qOI|58@a*KGID-3>7goH?d)JG@1-yt6K;Ub8pD>wcT-=k>E;8ndwLw!)Y+pa z9hCirv=G21vh{?E@i%YSU|SwGDNPKZ>6h^wOwE^m&=~T5WCFmQ%Uv`I1>4jsspn3Y z1K9TqMC`yGsdi^wORlp$lYglh*noMlEk=@u=9^1LaXa(K{GyDDO)8?~U7NXtU{eH{ z`h_a%e931GTNZn7uX*0 zKAxAU-lCGscg*01~QhVL>!GRQv2`3HUG#r)g$Ec%(l^NX{&Lk`aZ zQHXnK`k?nei&e_iVlPJ(QNro|=JGVnC0%@8Z9fTlXITZ!=WY-92|px*8<^4kLwI#a zqlDDz(`%F_d+=)Zt?|nvAaY;Bt3$t{`1%X4{+~t2{jE>`mml(Pefs~A`t(e%8JhCX zuyX$rcs1Khj1f6v?>GWpE$MV&f8o`C`5{FPb=3dUh3ZX&taq&X5eIFFid_(4XXUz`t*|S)BKm=)jB_taua?82@~?tdKSlgf#1biWx2nc86uy3{NVQn^Ub(OfV3TogQK~+duA=Vg zTO;C*6&#W7?5Prcd9S*oMPD}^bKdo?{|j~MAJks1Ge?CL2cMZX7VeBMdXr1Pck-u! zyQi~ECioz%QnAG1Ea!2LZTVAsNZ314{$71|D!z6YW&C%+tFw3Q^S#0OCa&uLJ$QAM zAoXCtVMHho;wcejSn}-*heN7Z zsdR`(C%Efv?8N$UW^yP<>AR-GjjAgzUX87EbecYA$75i6$*#fZ)SnxDd6Gb5`r<}k z6zTJ6lmRq6D$EfDbeFIx2Nh*LF{G>m!eMdmqadIJSqCxU#ezan*Tf_cVpW_q43!xJ zI_4mhLQH@$nS=|Ts?AD;sj7s#?wWO#yIk)yl-rwxN5PlxkR(7=Y8iZ)LIwb>#H5et zqN9hi-SK@noS~cjGrY;s!-;ZHP8&ni(r^kmMSSXOXw7dAC#x8Fvma9XJeScQN)6tw67QGqjf;}--4M%`Ej>;RZ&4SWs& zYx*w=eMI6CwJf^@;=2OWvc_Eq^t(H+_kdyA3L^rxxrkAg{bGpl59>1^BMhtYE6A|l z#t=eGHnu(xvbQ{-feQjx4FFJyHh`^tD3^5cQInqQSJsGG3{21dyTe%NS3 z676aWSO|92ESA_Wc6~Nr5Z_BKawEp)1pnm$ebEP4qe;xw{-lDuG7I2E@j_(`Q!YoZ zHlIMmj>hy5|ANpe@GsSuprJv2gnu#9OY*O&!{EkV?#+*ZcORZsZ-S}rQ^op^1;zXp zM>$TWP|}lLKMLQ%H3MSQIadL0o)O{*pn)uy&I(Hl)_@Z#h|&EF0PkWR-Mybdkv(2mjD@|SFlsM|e}Jh3&s2?8$qo;5~#Tggh!*oD4F|TBa+)-&fJHuD+0x&=2^ES2_BHpjD67 z0@4Jj|DIi3T|w(rJ7!h8A5M9L`MB==NVfdF%sQVf76GtmY^1;Z2rzz;Naotv{sjiNvXZmI;9J6zeM!5)WmQ`I*_!US04X?rO{YAm zM$i6RYq~cx_q=C-tE`y(dv?>;YkK^+ph+0jibNwP4i=v11}d9vpDE7RKH0W7L6QL5 zAhDP*ri+=XuW5$LmKm1V+;Aszw$nvv<>BTUkDbZlFn%E;VL{(;3F@u2j4O6?(Fg2; z)&qt!FIkZxv)gbdTjWhppTDuDsSv9N@UDy3IRUdEbjKAjSCoKFZh@^0YntIjf!X#8 zboGRrDNRP--jO}k4EeFWzabY&-*9D;4N%*QSK_z7S)pY+TGoFNg0^s+(+Wi{fQq8n zXc0k3QjT=0LUk zN(*Qu+NYB)JFFnRVu$GaJNH|rfv`P?Zc#a|KbMtrB^p-Z3qt~?ek22svxt_r)J9bUi zG9T77^u3hKs|Mmk4W_-As-hvP1Nl18egkgQO;M zzly0GQckF4x}uwF1eQ)R8YioksUEmwKmhhN}kz0ZdG^{Zq^O36zJzDUUk=`>nyqGfGyI+J>z(K7R=zqO4K3jp@> z$`}sTPZPE-qLqBJvUR{T{W#^nRaY6z%!>%m`>dt=pCbErS@!YzTdsUyB7T*<@*%~B zv2&20@{2rzttIHk+A0@P4@K^ssHZ~*`}Frvz?4?tvd|gD6?rF;0d%dXm#55Yoy^hyH2yb1pL-$Dp4R0vT*GuL_Cx^YB<2t z^dpN&ZNcDc)n-QXbRVJsSZ`y(-xHRYeY~)sd`;bUjw$8bG7$cLui7grqQS7gE(^6R zLKsfYvJpky5r?VJHpdf|{Yu>erc(Kg0#(jZCDgmxe)j3pRo=e90j z7BQ){0fW3IFq%fFwoc=V5(7pf4Zv+p(h(OKm8i_YFvpt7$+8UYEy2Sq1Ili_hZ%sw zDI-^bWf|ZZcnd7cK(D4mSq4z+xyq+30|>)V%9?WvOmv;45`SwC5L}dH0Qj=LAhZ+a zPn;`8mO*&pjQIVTLi}Oi^hE-}P#z(x$@3qEtXR^)6L$MA!Sxa>_6soQ=kwahXMd1? z;<`2zaDrxd_GDg*nZV@)EH1sPTRA;n)?7yLKuDpG!}YT#-oM?%>-XE|cp|d62tLe4 zuODIwhl_ZH6S*NrhRs(<*~MG2N05IxpH27Q;gfi6c#!oH&zQaiE%Jl@@I*9sDc@hW z%18rvc4wx~;b@}v@Dd0}S1&=ocxk61^j>#7q2_s>>&Ta=KmW321qJ~7jZ13j{cIj= zCj6y%-T53!-z}A7;4V~D;__JD)N4C=u+8%ANPADwiRK^on4+N$VA)|Tr?t_;d)tb%He zMCHt4?`Ej`5Nj-H?9Ce1Sk{U-?x>vEx5h7zz>9s2HP#~W{{(&r7yFAf{);vKOXZ9? zAd7-u;W^UrdM;6%=Mgh2%3fJ`DJ<*q8BaI6 z5mZD!FQMg-f}=MYl_0tS$wfR}f2b7V{ozn3bfO3%Iv?i$N3h0BuNj*1&wyk9609-X zOpFmZV(&NtYmC>*q13>SH;=zm&i}KU$6qREe^}x6l2!ghKV(XMq>*9dsNP{?$i8tvBsM7bOLe_>NEbUQ#;F_shycvhOl2?j}=+| zS7DDEp>4&I1$lGeUb^lLP9xpY=q_Asx`Li`^;JZn!n_qITD_iE8+3yr$liGqCXbvAcnci`A#?#y|W&=zOu>hcrY&9_3a z|905%>wHo^HWKqW%m0sH$6&I^Z{HcGRA5wX6){y_fyb-AW+)B+E9cg8?+!}NK;7=V+|+()kmD;58|K&Y$gjj`GXAN#7^Tnjx%B> zaB(OUOhl>x4dM$bk!;kWpUhD<9*5gFQGE^}EaD^vm!O6mq;q57Gp=g~C(>J#31d9u zd#zx;piwukok#fi z0U!g8$re1oN#mQfaTJUK&nSA&Y1NTEldB?~^CDz6h-3VG@iyJOVTGzSx*Y9`k~OW> zqIbz)pVZE#nWzjGLRai)SsSL<8L(ppV+|{CPu&2kq|u80FGTu73=w{wm~<5UWyIgNyy0xJl5Lzt&hy@4#3M)B2W#P5 zSa5peG(gCduc%%0KxqA$%S=PI4R?O#?E0m2eTJHIrPI`6Q8@#t!>f{r`tRD@mCrWN z4mD9v{#^gX=`t#)>2&+cGv`f|0-PxS_e*w$)z$qbGZB&toFy-nv=S}*Qc^K(58T>s zf~d5~p%5x6@1~aN*?a!gmp-G@SQ&iuag;T!%2V9ZJjI!FqF|!={p!ouA4Ww)dob5& zPaRn2*~kZm{m)0_8-=2w*)O`gd3twcrgnRjio7c5c--R2UiVd2FA?XOdR0LU!}huu<%g>7EHXMe(wcN(Lvjv%Ut_{{`+R!q76jwC4Yv1!62V{@Hy70 z@tJapY=~zR5cS?HP-fBcf%N@*no!4Ys*mrCm&Z_yN`eARSuH>Z#ltEOP<+=GGZl|k z&0SZAIui}PeYJr(l`+voJP3IMaYFhO z8jT9*o#^zO3e%!yQwR|j!DEaEfxUR#fX>ksV}`ysP}euHydLmlB24XAR&>QwK|~TO zdz|P$LBSJ&*E48@bnQq)Ml(<%cR5inVV_H?6tojbH<6TUz!$n4;4?BXV z1B1Q=Xw_sh!p+INt{4&F1EypUN6?NWS14s8+69T!b&YUhS~nDpbjMX(4u2Icpy`LGkn)5 zLZMu*0|!j^pCBCaUCvwcqypI{s(M_!{h7fxwS!jiIE|T>m74)d=-Mr`>>m*t%GGm? zP0gp3YOg*_l3ZySnjeIGKG1uyr=e=^*ZSFHZ+D|4^y{LqcFzI4&%P%7%SEXV3`n;i zruu;yVu$`ZN+0`2hXe6}@{35WK+SZFUYqfLl$RilNx`Jc*7Xf)3&bp$?sn1&T--L+ zdoY5-fEAHk0VsdtNPf+AwAgVI71F~CAV`gY1yJRsf(8btBd+y8DW+@om_OI?#%#%k zH6O_4hk=|wSj@zCTjfVRo{P?+fJk)HUxo;`=g^q;joPzZhq!Uk{}36zWyh*tcJz|< z%htOTcZIeH5xR4GlJ6789#>@ma2&ja`$%k$GU!vd@`;xsr=UfBS}qD|UqM+0Mz556 zyHRq*>JW9cn`3L>=B1NO--gB$wOl%NXGf7qEHjR|II8aJO+~rdJJCOhfS~y=^Qx=o zL21{4C2&`77EypBi$cNnD+dCw{;d&GesUrxJ9c0q#fR`>=FU`bw7vR?yvGpbE(w0b ze`^yr4WXP+6+}zX2lya2s{9o zDQ4?w=9yi~nnj?ul94`4ROEZ8}=MJq_} z>LANJFkC;DGVyKXQvqeHg|t~a;^JfNh|w{_KF6y#t-6UJUL6vgI!Mb)|8hhUha z(k(kFDF-hm{c#O`u59uWCe`QWeZDJ#W{e#e$^2nHL2wS7-O~jXVhOO)Jak3L0#cs& z&X~5tx$ss((SiTV-h1^Yt}Ji3_y12Z+eolaD6<*G}d*in~0(%MQ~h=->b^J5T%+qc|m1zZfkc z(v+u20-_Fl(b_izDi1i)DLf&;Zf6xEbU~$%7SvAR4K(C|g1E-Jp?<=MQPd@@w?T;3 zn^p=*F$w@=GZW-G*VJ5{+Eq{xYvZr5m=F5A7QSDoNUG@P^v^V z75cq>8J(+BYa=ucfEcfgGLC2ilDW{=HDVN0Zh05t=%!J@5sK%v7zIXXRhe-Pf1y6p zlq+fI@J27E>M@D~=s;^R3U;f5C2CUWl^&y@VQO_L#-pq1Vj$3?183#H`mgB!WDO(` zqoA?UI6L}N5V6%F6YCg7o$9y*2wBp-ZN?~!fWZfj$#!`z1q|xFSH-#AgCjpG@ST~^>Cpnc(x#|p z9G<{?y2(mlxNh?BfNHjl1Iz29DSahsj68OT?Ir`oWPjC_}W8Y9iErB8qX#Cb}_|l_st)K0u{2}%6 z+-=GX_=gc)v$X5WNiTZ0i-Oo@E~IsAs#;5FoIIQ_xlSi_kHrr8_v~1p3p%so$mtL2 zv72OPh{tHQzB-ox(dJ(eSglmBPs?-6jXq#hY%#2pA140;Dl&b+8udI%!8OmJF9GbD z1_u+?OXdM_N5l^_f1k_>^Q9_ot5JZ^#6*jv2X0ETz5+W>~8OPB{QaknCi$>1czjG(55tc&~N z>aFO*z@iHqMh4I?MhyeOiqbT7;6((Xh$dme6pE z>}Hr|J3FcFY6$SEj(X@teb#PEIGH@SB9G_MGctlsX0jHxM?LITC!*$c4~8Ff)~vh^{wP_hHE@f zm&X9IP(4w7vRujOM$>r%AG?i~JA+b>EBPLdvb}i|gh{>~N6ys`qXTzD!+fmFUTAKzuOD^^ch z@lJZV2jwA}sjJ}^h!17~F@Q}|b!^S7O%P0dugIlq%JMeLcIR8aUR+d*w zwVM%LX}L9g9TCR#*-?ADy^BW!s5?-w`+Zn-0!$bcFy$6F#ArTHAnoIWi=nT94MeWH*2^K{rHLmPiT z#brhXtdj2A6tu!=oIxHC*)K)w1ihx9*}KMX?m@Ecrl0{Kf)V%tWc#6@|6P#nM{#)r zVq3Gm3IJmn6O-pa{jN}ASwdq14&<*0cvg|*U+Ax>eNIxq-g4k-S1&*YYxK4P4N#2@ zlaW@3PxebRUdTX+!yLn=WcG){Aa?;T19dijY0W(UP|zC~^Zx<`&Fq?CDZhub{YNNh zwwV|svd7-B2L-J#pzMRqLbVqehopq1<@VlR|tDHs}K@V(ZeZW`fB|fLt!2lj=~nj znDncktY4t6NZ-yS+yeB!S0l2g;xe;lhJpOvmhrz&K`TTq8-uZ;pi$$+yoIk(&|%%D z`NI^nrntPRw9GEwxTzhqv%vkgl$P6w9|;TP$aimvr%xjn($rC&c+%~Z4Na*Y4rHZs zeI?7vWhJz9bo88{nVDxFTUcuH}&oG5Ddx(vijNF@k?6QG|_`tjI>}4o^myPD$VAFkHO2dlgsvV#p;KO-Rs`2t+>pjzipA z%TM`{^47HYs`LgT_{epUP$RG|w99Ta0Q#Lb#zyAvl%xqCNg?7C>`W7IL&R7?&(3UyFd`&uSpPgC z=V*e68-IoUv+xvzz#(PKIw{VedXaxHg6PjAmf9%da-UhY5)xE&Z!BZBH_8X$3rr+Q zLc+muh8$&yQUJ*46>Z>@bvoICX?rn7>Sk#nx&pIZ@BDrhWU@B+u!9IdH;-Jy{FK3o zNE*Pg#pq(xTJxlqPGq-AN|g98N6nUP5SC>eAtgu+gql%z)Y`NJZ7Th*AjU`kB%u#| ztfUH_8$+HiC5Y#-*n7JNh=RSsm0~nr7VO^Ep>v`UwW0~i@aHJ1553KlRE6Ga+w?~8 z6iq7y^}uR~-n2?3kSK4lJ*F1#_aDYRiD2IoPg$akH!(=#d!cS(I-rK3U|b>(fH8f+ z@w?ya8a2ziW3JGMH;F^W401v!l$Ap^i!<_MDI}wLPpFDF;vJws%@dZNL#IxwGuK%R zecRXfHc1EB?LG2jV2NV>?9+2@p0_M2ryk)d-E9swz%JD_99GqhQK%bI-0X zN9)=>Za)<{dwE8_bgV#D{l=TW9h7~a2mZkmEJ)4NSJ<|7Z*n1%+g8Vuy0Rq#wdZnG zSKUw=u~h6xbglG!2jHWVOWc0%=AYX{?h;ouh4gc)r=mp24SquABxL^FC&)ZcG6YsY zX0p|Qjv@Er7u=?BQL|jPBR92c=SU#PUqz-f&9hV*kSjNjl^27;GYJVnOOIrQ_2Lh# zM(7t0sZuA**knB zgI3IPxS%H+TNW@!8`kkLY}{oz@`W-G?vmY>F*q@W85A0vQ{?O*yo_;CVDwW^$KoKO zhIFhBAsb_$tOiGu3epD$?c+7`N(z4lt-&fvh%H2A43qW3;BYIpdVY?X6RxemWPNbj zPbbLuEbaw12Fwf_g9C{G0$ubs)^_q@3BhN*AcSpqVdE}oaFnE#n6e!;GTSMwDG3Ae zq}^6uAGb(jzeXbX9b%4ZbW+%=fa@yL$iqvb$<&Fqm*j?6^j;RT-2pE$^pf=2uKEy| z+!42K;Yp_@2Rq@>AuydOo_vQpYIIHRgnoU!}&I*b}o}6g?nBAwRqWU=ZF18=p z_9hbb;uvs&&AM`u*e+}8V6N?J7m@8z16%1(ABL=de;#9?Wg6br) zHlR9k&|b3o3k}&|#%+ac#MY*dK5Uequ#=^RY_RjB1Jc>J4Bd(zx-Vdxg6WkN#Sy1i zgOxH4sluJRhyoMMiu!A07!}QM(;FLB6o+z@MQm8nX&BA`Is_0UVp!2Vkd0W2Od5f7 zJ(cbQ$OawI^pX!9*=*e)0bbOYH~m7nOvDP)Fe z!(f&*lcX_#^160d#6dmj@}k^ux&BjAMXzSWk<%Ekm_nBSoZg_u0&~FpJ}UM*uom^o z6P%>+;X~S^B($S$4Nw08vH{gUoL(28-*l(z`T(AT;W9#479<688T%GtcvD1h*PxEenRGK#knkNzPR))ZGRUu6nDCc)5xH17&MQ!*@>eb zkeBmnFFfGAe9*E1x@^|D>{a&x(|08jWDbx1!YtFka90uimfVftB*0wpjln z7A~^9f!nJ}nu=mP`J7Od^4Z6w+i(jWOzFlr-_Bj$dHHuQV^4k-`=An7T}FbURu&3k zZMB%MT!-@UbV7Xhi}nJ_)8h8PessS=rf3;maezSWG}o#DxR&VQaiH?a zT-RiFvt!$f`smK1G`QM?RpFjOvNAu}xRyPG90cXAujPZyW_d5BfLC>*Ted{{A|I`e zpwjG}TE#7*>uudkq^8>FNzYO5RB@sk*>FY`VTxM5ZU#vGG5@`rZcmpm9w)xf3o=>o z;&o%aFV;)2KaocuV@5G6E-Fs0Ou$VWw7AJ^| z@m`AB3puOrqM>#tfl%&heDh%vWFPT(1VbbwL9!3r=Mx=WC4F<01dP-V4Cp>}WplxG zRAK#gjyH9?-;_16(; zK4qK@F|`Ad6zHlBQE{P)^45s}r)Z_3#TWqBFd8Q&gEn+PETB-jZ<(?h1^QfsU}Zn{ zBjqys7_Q#ZK5fS#@M)%Y1LGMJb_k3u#R7h}&Y=h6G{zzhIL$p+p%D>q;t*5xYlJZs zKCoI=(5B~S+vD$rs`e?fFA{{%GF*E1I{=t{Il{d+5%8g!W{ci7_I3>>Yd1o?%@A@m<06AKLSW z_5`q}qj&%8#R}M4y;vcPZ(saq-u`Iben<0`Su?{xes9b8-={rMY4aZL399#>@SfBz zfVmle7WmXk*?ys>m%bhUWzG)%tIOYN)e65hfl%!RjajgR2n~wDe@g#WBSI0fjX%cE zx~XL3alUwpUXO0WNM1$j(fmA6iMh^SMxNBm)TA8A%YrQCB~PRqakk&KwKMb}_KHSD z{luZH6mM7r$cwB3r4b65DdQNAP#}9PWQM8X0&ckA09@5@5`}5yO0_Es0XfNS5B!G% z-Q+;kSA+Al(%bKGpkItc6R;a3ez&#eRjAux6}(EXqvcnpp;6wG?sR(U!6<1p(kq?0 zT6WweKMo7;6^cb+Gs}T*1|(C-->6>ekBOJ0h_(Y7UOQ-RD96(u=t3Cc}Z8jZiiMEzn#^3d!=>g-0X&1mbuFWO4AQ9IHhVCA-%^G z0^NAHCHLXLlXHc$l)jB4QF^_g)TKE!vs5~`+@=ZPz}9PX^F@G_o<0;L&=wHj`+B02 zcpZ|Mg(ExoU2g1&SE4uZ^Y+2$pU1svJ`XKQ;Q6Ig`gEGrDfWs4Uc2Nc=*NeLa$&(E zJI%6SKPA@fxcy#`r2LRr_g2PGfjGFVeTC2@SAV2M)mZC4l zTo=Ko5597rs68#ZdVnOeceT!2-krFZDL}Z~*HF3ejI{fjOC%2`>+sFsxUjUDcnwnvZ z6&})gwcQdhlG7;2>MC(_-y1qghv>N&Y8m-<*?Ui;-U)y&MG_0YVkC~u&Q2$iUf#+YyJvfMq5-DFOip`|l({^3{dhnYe^vY3)~gG#fJ zT8dqdnH;Gij!jQs-)@@QU;fq@UCh9|drm8#&AL0)sQy9rCto|8i}_9qgrCe+QXxk% zpQ@i8Ks$1jp7WJnc*gU0@ngPYGnG>HZU?%Uv)-9#uX`=&7x6BTJ`}F(o)qusVK*Il zVPj9X7wjwcl5XGT&hE;vRl4z1ByYP-qhLNhHnl&nYx|ng5>3aHe-1lbamO>yeC!*m%foH);^z$Fmwd8+mB)3kdUTHfSpZ-xE8 zs_+B)1lBfqRb9{fH;cFu$Us%>{1DWxPY8@#&I_?M;ltZ23Krx`T0dk#yicP9e{X3+ zB%4L7MtNcyE9vFipcfsxMIm#s00FCmZEtqiISMgiw!rlHpYN-QAbpWQ zbzZxU8t9nt0Aq9(%XJ1rNmGhey@?>;(uqqO1FaV5(X6lpA#pgN~ zV}H(;^Bx%=Ru`H6&@m=9^duGYnTDTwA~WH3*?`_#H-iI>1t@4Drp`K9YntyyHwDGM%2~3pmxS9^ zKd~~U@1OcGCo|havT=mif937vw%lfFvzRY^+@5qb*pfPSXiwGeuUTm4j3Z2t>Cs;1 zLMhlV0gS{p#a>p17hUy0z4C^)g3G-Vm;*!3kBuI@zmUFJ2BGK{ex+RY-t!f)dKw1I zqjgO_eqm7qDD36kENY;l_jeeZy7dejOU6mkaWOQoj*;UDcPZOVia28~tbkTBXoqn1 zq7{6g`}3fs*T9^fLL^^AHO$b~L+N_k!$@U&a6ud z_-XD9cFFBgduR76p&1ZLt&C&x2eIKr@x_lYixpA(%gm5sEhpO1YDE>JTKhVvb;Qs@ zG|jGPz?-84T`q!Cu6xG^W4e#`sf{UDYRA_SuOFDDST`CuXcaF#X$v|#RZd&ENT6T6 zcu$L5Ovj){0Twm@NmgG0(!tN9cK^QU2-{{!m>Hz(F8Ahy#7=@akGr!pd@Fx&`+0oT zw_;9BeaP+M*n#BjpReYX$~KJEWxx|zN5T4c&Hp#?e~&K@^Tq7(enhV*m8zwGS4q`v z;uTHRwcId6UU>*iQKop!ylU?ozq|*yv>SSbG^F;G?}AG|8mIp*xb#E4{!p(!)a$=O zy=sQdu$A9qnEoT!tG1ySL$b&Au?P3cbGqu?yZgrv`1Lt%ed z!ZTShp)1-n9D*2TI3z+eIt;DK5NTBEs*o#H%+-q!n77rR5RI=9C47wt@yYd13^nN0 z*ZlSuE8cbWVs&9}U;KctKj7Z2puDt42==w|9?~)8WL6d`~o_c2`~6O=pqmXDz&8kJ=GKouO7vk2HY## zMKoZ}bQIg*ArkddmOk<$Msz>$#LL&vO}Vc6R#F=akQ+xKk7`k!tc~l3SFl(7ny!G9 zkv6X2EowlNxcFh&`@S#+n!G|BW|cwI2lh=Z_>+n8gRBl;%QF+sy3Renn{jrC)3`Py zvBG)0aOyrgKpfdMLq>y-u&6b1NcW~(+Y!p(bB~_XZ0^r&gcD!M0~3q9SF#zRFKCv$ z45u5TjFNX2OCB@^?ao+ZUo?S=x+ps(Ld1>rqMAWJ0a7Knf?FR6=hi(bzjuI)WCMM9 zTPSHK+62k)voLbN8HJ*_l~?^;w?pfU72FGZMQB~l3?ffnKt6Rd_HxVdIthG>@i=Ew)EL{=Fb?DzgmsUze&hz5; zC*fZP#a6(>wj~fy;uMisGZDky5pp2YWUg(EQWM4lJCYPGDEnMrK50B`;Jg{orY#0c z08M1(Sf)1TnGMH~$x3mUlO+YJG361#(T>2AyAarnrVifFU1*8wND+JUSu5|VE`bB7 zgA_HaY|8YsM64NaAgy$47EKNc5oHCs)ekOY&ZAI1FlY`U1zztdYeTlT8TrHcW3pT> z>j=FJk1D#N_{Xp?gsKbI7mH`cqTr#71!B2jG8o*^=zs-)u8C1l@Zh4%DoL$cNSdX=L>?2=uaX z%|~V&P7)#7J*>F#&2pO)eZ|F)rgk>Hvv^@k0Y(9?9lXT1-VJaWlqh8N}1qWTVgv z{ORf2Rsd?om76u`{r-T>{;ljSc^+0y_|-9;ne;MTAXKVxuV6dk_cnji)%UJzc+2QFNaj@zg;HBzGy-H-!EgS*if6K4}f=-WsamS#6 zzcfd56=k7XBt0oVXcI3j_UOQ9;X&nKAv@Gd?f13-uU@Ct{^hoTVwAzYm}*#mD8&*Q zns8+_Iid5~_%=4Daw|V><~E9-WgEx~*!JUohvC?ZQ1yZT?Lf`5Wyg`J9z^TjLpuI~(Sb2{<1FP~l3xZ2hm%0+ zx%;-f`FM1{;b8qYpwr6~a5`Tqa#A5Rau9Q!vlOO@1i$vO^TS zcyc?|+QOQ=9u#vhQA`D8MJ8`W16)W_aY8;KcvDcnP>;;`woXgi9syew`&7u?+rd3$ z=qVhBu-&DA1EV)F72u(#2na6ixGX=<-jW8WG z2(eA9M6HJLxtdvb&7ppnE!b=q-+suDR)5HSZctE-?z)LtL*`Jlh)TDu5!!%V_X$Pl zu zfYoR`HDM2Ys9(xF9WzG)QH`?%sZdYV?ung;1O2R`jP$;z6*Q*{=RsL4K0c+x(aNhv zARGAjUVbQBAMIDtsc*OFe64V+9NCsNSxI)UwoT;5SMI+Zw}<|HHYzpTFGtnzsDl5S zRHJId1bp|OyG9yN_J^GYHpDIJ9};gLuIq!|DbkGvgmEnw5W;@wQB%Y#Qw@cr<-9at z76~DAr#b)@pV3Cup!i~=~v=i(i_bT2)kMuTA zt z1A=gK_UWX#jH(q!hr$k|=6+g7u)*m-94cahMjyxDiTT=TRFpl-x}ZB6WmTg_-GGBqFXh_OLh&0et(0WjAfTrwyGekfHwyXv#JeV@UScKK21k1zm3M2Q>9_;eU0v zcq{z9;yr&rQ?z#vbLb8)a%dBer4MyT?w6zl(Uo1meu4p+x-S%AJ2(?PLKiku6}~Qr{FR+I?MAq!7Jl(!XRo_mmXFWd=p)$5<+u(1@9Q2 zUHxQ*2d_}v)lXI^E|J6ZKZ)0_Qxf%F_Mu?duW&&K%o{(E_z;@W2ZO&bV)#mwJFVX` zy4wpf23#aoS^IAY@G^ucrPU9@fS7rK=kdEDux3zw5|5GQB@D>wi;NdRyv2)x@+%~8 z{%~00e~DpywF0Dh_3NQ9@0Y_ESjE7eS3g<55cEg4qMcVGviiwtL{`gbOI(wgGs8rF zZ`b$_fTjYWp~h&eK~q65PWvKgD(K$Lp9M{^1evrd){ypJb`=0knd5{1Y9Q+NETGRC z_q_`^4e>v~>0bhz&KC{>PG5JE{{c?7fYV2FD7Q`sA{h6-4xEC~Ecr9FrMP6uDy*A4 z;+RP<+J22J|2du2O3r(I7S}irAbm(=G(8h!T0K0q2zmkZ*m?jE5h<#Hych@^hpi$B z0$DW>7YR_KO|VyRQYw#r?R=)IV9t6XluPVO^`OniH{xsCAz&tcyB}~WL=jxRjWJ+N zPqe5#N}pLel(9qJ&zBB@AuR^g$B0)V)^DMe+mm1x-)UWTQ!&Xzf(dA37V}PQ$Z~ra z7(>b3iy*oyO(iCfh=gDgeH}Lv6x-QILh#(Casd_Z+2*HFUDVts=T#Pp4IDpCvXm@_ zNXzLtbZS3sNV!)$n@OFz&=}Ve@$LYbrGxZGS?PV085nOHL>Km_9m*TAqIxsN@Q*ULl4Gz_s-C;>1YnB{Qu zdYkIU#HX`~y6s->QuSJ%`ylp_iRaRCxbcJ}O~HyDoz&<`X@qDho6%Nlfj)Q!vHIPt zJ{!NkR8G}zDmSZX(b=nG^*Eh{Y3?kO?e(RAHd*yt?^6?xf@v}59coT_xiV()5%BNT z8>;0puXg>W;>I)jYGRnisw#1hbva=~)R_+5n}~X(jPA0(OO^?1n(w4yg;z}i-}G#& z7V5dSO>AIJt|ZECpF@mmMq+sE#B9$jN$lfFYkqoNk00xbYV8F`gad~;Gkna*&@0Kk zYFxgNg54|Y%dXkKYGL`l{?4_mT-r~g`C7Cb2@L#{rFfS~-G?DyGPrypn@{a3XQ)8A zEqC2`P4RyYWKdUlCU%6MBHzBB6HVTY1_SI-)^7$ zUIIgx6+iHmPRf%$dS0Za*O4b`I_N{|$F`XBNixZ(2U7XFtNWN?q_b(phHe*6a3s9G zM5-}w|7J3l#`zCw3z1bp>i4mJuxoRe#U5b_eDOQl2y`*T?IQ&Ch0YSmali9JgktaY zTc|vxHnPKiIE_jcq>ybyR+^ivI_Zt(=Ipc!qoT7lK$gz3FdJ;FI~HHKm^{-=7iDo6zz)eDc9I zyU&qMLpJxTO*@>R9qwZW_6osGFZVK9%TH<|RmszNHh-H?Nbl+d_Z;>)k+aOcb>a1=c`b?Wf< z$V-5HF;mbS^j{dN0`1UYSSy6dW<+R+HLDr5bbg#dw*JtT8AaML_3=FHMA_2gGTjVx zgj^?7Ce`Rm>f^iKO}D)ShA0dJ5EKsO4dv$#NM82kTcXtHwahGf|+ztW=+ zDA)5hFYv~2NcJWAn|%#7Pyc2J6&=^(&uDXDx?qi&b!&STK3>tdJe9Onw>F?r6CY-6 z>m5#j^h1)+b;_(+(5mt;`t51PcmAa7!DcoN2~V*-8VHd>d6_HSKUcWYAZXn%0AF=R zwF$zNowaoZ_xlAn&L&K8LqoF%e>pXn9#m69 z$#s>YC(K0Q{w8L zdk1jELu|bsuQy#eMtPQ7D!DzWrWARn0wpM@BX=4zdtImG($wp@t}~A*FIdhXI_{<- zc`Ljz%Oj2-H_k_}m+t$`B?QowP71cv*^zts-3AbB4h2!qB3-(dqTmM z77lK`d^K?5!9z*N>E>cz3&=)8Uk;!!0n0OwF+M5B5KSlF8 z0eP@8dI6elOc2P(Q}e5kLoHRFF3@lF-~w>k0ixIp(EB||X$7hRZfDO6Qt>%NVQ?23 z7W!r^l_$7-BhJWK`-4XGyo0Nk%vNNAi#9_%^m(3|c^hMj!N1V+MXkQsB}0EQ<;=A@ zgX#8)-;Su$=20QSxXPsp@y`kl zXQGvLq1xcyO+8g+*BC7I8j^WIa3j5%&I z?=9wV}?H$^#1KEEZPd5 zXLe3+ZyL9sDgiA%DE}@hwq*%zf<^DMzs<<+>b=Qm%~>SS^PE;bt$4WBHI5*P2T{RX zBySnymcs4GQ3!CwmIu7q37UHsx;)=Wj(kwI?B@l@!MN~|SP5y~fS4H`htb)YE!YQ7 z7SlG0?%Vh2j#`?`H^K7vSlHe9U*Ga>q@ttrd6vWnC1PAXfQaUx(fnsEZ4W?GVgdU{ z%*tBsk_Ms+O^N3(23BFmO1TP00?nbfpc57KcqZ;#wtE{NCajD&-|Uvn*@nazfH~>M zcS&7WN?D-Aqal#PLtf2x?^9SkC7)kBtXCjq{-DdXQuohnKjlY%%gh*^O--#AxWi)e63jExarPe?a%F4`%$lPu+gyq>^Rw4KxlfRzu}N@(Gdc@+Dl!VFYj`UzpHa7 z8Gw?XI>W9~>>o7cB)V5{Eg!mqE8T5ywU@(ES~yC(`9kk%3Hmdchq#q`1aM;EqeYMpFEU*Pqm3=yZ7cPuq&-SAGC{R zXBRqSj)Lh8X1L zS&@4QG%v~!^6Ng)*@DmHUG-^PY)xeU_bxWz~KIWn*s=LF{xc~<8x@>{hW(#J5EzZZ9@8&v-q3@dolG?S1D-`{G z%xZ3*xns7#^!d9tEuevYZC5S8RPj!AKkw9n)z~cq6h3gcHGRi}hXd5{rG}6+^hNj7{Ev!w48wO$w&_&Q0Z*_-nmPW(jo?qrD#NFwyq|YWQt8Lv=Sd*-(qmcF~2W8D>`Bz-6{?~nstS#f!y8+J z;FuAzC!Z6ll6FVi68RgpZm()t?PmUL5vIn$qfx}ZPOw>CJ8_%Jppi}hj#x9u0BXoR zN=@AuRZIo!TUXQ7!p?dU^|2|hS2EZhNKmx3QOZPth2K)7@;77C24`MwVz$?%^l{;# zpO1GRiqgmzz1JHfaiRyO`ay>cZ0fW-A7u~KBZ#lAN?73VwwWjF$!Rt*`@sBUQ0Rvq zHCw#)t#_eqCs^Z#1y?cuX@U4Xwu$S0kn8g1HUfFw+3(mxtAE%N)_CRi(`z=%-VM4RGj&nK{E9ygb6js=%unl@Js?8`0h+i@&4OJcr zB-_iw=$nQJ*4Xd14y4^K1?7i+BNI9eqe36MGXiR5+M;#C{Ig3S`P=bfD^8GCXS4Wn?E>v$8IKHUV#=ggpvKI~^}hVAFs=LK50btld&impbV zH$Bm?Y4kceCkOfyqT4s~TshFWCJ9q7~baOfnv(Levnrxt+L&1&7x*dSfmO4XUD ztCp{uB2|$2F?7hM+AN}9kFB40E95ve=m~mp@<37g9#7Ca^{E>!^83xT?%mp=i$5Rc zsObr-=|U%g`yu>Q)K_3$J={^d1DR`(F@o(_NY@nb(e85O=&F|4gO zZ{#5bpPi4c%Y{fe#sEB6gc^p4BbXWk!19n*FPsIA~YUDBt@yeP$1XHu3Its&5JU08=(jA zYxP1ly4g#j%>Hl~_sH|IfIlqx8EB}4@C~G$DvJVs0>Wzj6GNv{##ae^5JRL0y5c63 zEIIrkXnE?F&hwhoCR6uhGLkX`A(;xL`~%4UJAgbhY=*7;9_sjC0p!_+VhqV1+s8hD zd{9^1`~l>D0Qnz4{@0JnvL?IyzpAp#%$Z>#zqf1r2LO4TYTg6ngL+Zz7XkT@?%n)p zK%QMK4wF3letKab^Spt~^BOY0#l^F`G^WBXE?$;?q?Z2@EKUn z|0c`-zb>^bCQqC)@`VXE%cpDoQ~$eC%jZb&n?}gYJ$-|)om5+0f1qd? zxFeZhs4~pE?X@C=%SKC5C-J0a&{0N=|6&2|-0x)B17!Ln1f@w}3Q1f)0;8p%j%z9n z$nSQ#{&jS3J1a$))G=j1-NhXt_2uC_33N1tZgG&7DO^=UDaOU;-TV>?Y1N4U-O2@; z%rzTx>V6$3h`<>*4m^aA-8K6GmtCNpsw&R$M$Zf=;kJaYv^)_Tfs8&{W#?MmY+fy= zq{>EAdpo4g5aPW^f=Y`=485cnQ`I8fa+X4%6bGR9yNO$a-gAOEp|$9~8x;c7mQI%|Lxn*dbfkwTpqkX9Tzz{M~Im<7?fhHJVL6EQ8Stk=t_q zcIdCa+85SJID1LU05~ITJiE%sybl#2H^~1+Az|dKM#+udh##a7^e(&G(~&aGvL|V} zi1J0*T|$_>A|c=3Jb~P$8`x=TSlv+K3<&YrZ{Sb zdkEhBVGMCsr+~3a9;W5-!5D;IJ{1s@LClkVe4b@{x2-EZr#7hj^Cov>%6l$SX~8W_ zLE0pFCv?_|$GKvC8K%q>J)WMpVB2qfl)o*n zVHZZ?=AF%?pt|jYD`bIhmRKL>T_}8YZ26mOR{%L!-vE|10fo)x(UNJykv$EhdF9;l znbEKEn{fOG3=a}l^EpYc4HE4CL8f)7!`qf#&TVz~TIJ?b9rEo8$f2koq`VqStI-xFFQ2 zglj&k7h=Bt1!|s#30f(3t)6D1twCZY8vRpG&0rYaLF`Ox70)k9F0!H!u2knqe3oUY z-%qPTf&2G0UnY>YC?|`&_k?eJI!xDGsdiQREn0XCvWC8Xu7KqsKi_s z!KaNSw3)QtN2Hd0r2r|c)D8vJh;S>TLGf6jda0>{Eaow5yTI{*Lot5#eCbpl?|LNo z+7dMCj8!UbN&ia(Syw1^JHqEeFWGjohXNWyteqiw`D{vTZOxZ$%z^>^doTcHlP6HU z8kqSGG*bC?xa}3MVq6JD5VbYh%`Z9&9?%#Tc67qq zP!DI#rlu){r1rkGa5ym&I6L@!;ruRDJO-cdliRdgT?MgS);iP zs!MB1{q)ke{qq^|SHkO4qhP4ERq!gD^I|{m4xJ$5!~Jl7<9KEw~v#| zENo!Ab_cFyu*}`}?p+YOH%WnGdn26BjZJa&aefqn+nhU!K8DAqc-LX2dkcY(FX9h$ zj$POn8V@M`s@ce2NTI~Ch;BMnnWJ(x9>s1I$M)pkK7whWw1SQPWLGuS@?MNFG7y#X z+=5Qmr~)}YmT3b*QT1i=3Ap+p!R$7m{qi{#^(&Hg`oh`F0f#bf0w%@B@qdU0WNKzv zV-E2fsAqLk5$`FFJKt7I*xtq%2_(2i;mq#y(2xceg$c>VAx@0mAm#x?2LRng;UI|T zThH=~Cqex(8sQvQnlC;pd#glm;^*yy(Yxzy|H7TU$b7lpaxLK0Tw`XxoYq$Jz-rKu zoiV`D5*l?~N)~paKzoo!Tl#qJ3TFmtkwc@J2^0lfkEnX_rJZO1GJisJ!N+5R3_>lz zKUO_yDSU>S6VbkVUhxP&`9M+T?ghF2fhU3}j)a=+swad-T@On`^mI2Jir4zFsIYaC^`$YIk$=anLxnm5oF+P1C0Ud6X-SU zggN0=PIeZrSA_~n!}6HkC3t`bxO_f0rSe(v=L!L%w5;U9&!cpw(cPW( z;MbDId)aBLagPI!`GXTw8O~$9ff5;SIe_ZkVjUp?w{1Hru7l=xhq-mZ+J{T+_iDV` z+*wEi6oM;w^{r4sne%cbi#dUE)X@=Y_&j<@-c~pYQJXP`pteRa-kY^e)lyu@A?m`} z;d;d2z#Kmgw1T>FavD(|P2vzIg|idM5=maJ%>RJq8ni~B0kPA1m-g|+^+}B?0T|yH zYQdU0bI>Hu>*)74b%C2cg9OrShH^@++ln3Lfol=IJtQ3BK*Mf+Gnv{1GbBoEd%n^%ACC^9gtJKVN z9cJCD(1lC3eESM^SGCg)kuSb?1qfx|LvMc7D(553c*cdSK#NyMd`MG?*OB;;)~I_! zGoHO~{PG@5;~q$Sh`}KL7kC$G{6XS>kofPA@GFphMZ&LMtN{48FMg1CzaRo%4u)hu z)KUo12WJ?DoN0*T*#9KZ{0bKYbdNY3@PF}FC@lCv;0M<~kz~a$2!i}8D2Du8NRifW z$vm$i|6)-8tCC}}X>3ZcA!-TLZFMO+vgmDNvHqaty7 z;ldWt#tfTbE58Rf{#THAwxJk9vd8wZ4-y~J^@HEtKTz5Ae}Us=d-4BF9)AUzv*lwG zul_I49G|@OI^&1OU%XD#)6ahe^5d7q{{_x^4~ysdughPn2mABl-F-;pVHdC-eg&}t z6j=$wWT5m&;=*f_v65~Nqr3-e3=2^X`(*`33Bjld62o{)M3K?z1sR&v`dWRBDB)|w zu<~pD6Qg)&^)e@io-nKQ#ges9u<^VQ{$b<) z4mSR=|46Au=c};Xk7m5E#m3*y>&2}o*#9^iFF}`YW-i!rauM1QT}V*37lF*c*#HUH zOa#-%gVCrknGck$n+~b~(fR>s!ZtEo_tq!l)j>tq+OABRNK8cpaZH3d* z?GWpRT*Y3EC;>?bYQvh`-Lmyeee!lRK{8LSvhXA2*Y&Y<5|eTw1rG(m;0sT|rang5 zxImS0n1M)l?K#!AbdfMW$h;sjJ5zuIwr0pDU#2K)iGMcTcEp;)fJV7f(%)PoOWWCc zcDX5ccDIbtQ6ThadD8yx$z2#~>^a2b9qDFifmB1f9Rd~)5^Fdp1qzoJZm|1>w4E}U z7J}h5y=4&CgEW(v%mmMb1<;|JNoEjDLPr01=%h$A`dcqT3cKG|(oowu3kJ#?k-8vO~{kbeaf;v+d?gCVVMq$%qx9TS)UwE_1M$ zjuB@y=hTOh5AZ`XY5`W;Fhhv1FQqFl^AOUWMWkz-t^mN}nzL|n4&B}lI@_|r*++vf z*O6Qq%)celKlekPp|NaLkPeMVIdufRr&B@u=|Fs(QTVOd%E_>YW_tV-8<}Qk7 zns~X^zMa9Pz@|00biJ&8hqU?Mi{lUDY>rch@=_+a%*4|#5Q2jlzV>E9&i*~1sWu1W zky#oBrH2flWP)~>GMuEt>J3tZinRu2!Z17#-7^J5OIBSG=aiV!M6tYE^Y4xIhRUsb z7g~}{KM@|hDiW9--2$Zd_lQYAkwC0NguUtp9FzzVyZK#_M<(t!6XFm6bh|ejH@}nSmCOnAA)Ou+6dSf3Vr$wui6^2dj_Viw z7m1UzJ1!vQ&qROl@ut5029GydLH!Li4}F-9eC0`<6x&q8QCe|=+CELHzBsQ%lYW?o z181gwJKNr}-cH-%9vncW2QfYCX`IkH7tS;s)W&FIo@VM)lGSfQ+AZ(a|Ct`UfMaDu zkdIGzRkH_S??n%tBAuR8*3qZ4g{yEay8<|a96{8tFe>a=TZKJj>Z?MAR=23(fY%q< z4${WwHg=`!)R?)fV6cpj}o zp1fO%p`pXon=AM_Uj1y%pl3!Mr4YKp<~!1E!xLI>mULCV3bL&zdC|Xc5v*X(_#gdc zVyqoPw%IPN&sTt^K7mG9(ZPXm}UGy^n6&IG5-+|_9q&SX(ahx z>g=<4f(mtdfGvGjF;pcV%~+kBu7#W)M>7LKGq_42b0mII836=)t*X;Tj z$GxfxEUXPY5Sb1H(w%LyhSvbog-=pFNawSUOLyv=b4Av7o*s>BeK1}}D1JgeAHq?c znNSn@@@uf;J$Bk{Di?M$cMI|xRZq_4hpW&{P%&SI2My#=HTC3NBf)$KN%zkacQ9X; zvQwLh1)J?+<1)VLBeE4B3Ae3&Vh13F76F;<2ldss1;b#67G<|q?%`_l!g&CvNStyP zRybG-A?Hfn!r;WK3+jsQN)Z2>&C+gG=AyTKOFwNVW+2`P$uaLf32J_A?y6#|$!MAl2AQisSgc-Le&5!gHysXJr5zWbB7fw9GFv+ zNx7$X!!5MyBV~nedWIT!{KwmoX=HFvv~}h?29c)9kO1!-)iQDcfwQTaDLBlYM(G4f z;<()xD%N~J*x^V;GemC~?T7f(O2j$MmX$Wd5VjWrLYEJFvM*yhBn<+6>LT!)?!)mOgH#{0(i&=nT~U~{q8qC3UK@r&_jCnp=)-qgMhXPPSxldCgD zdnCsJ(eEh#l^znrHeRG6b3gne-P>_#+b0Fif$qjFw6KMsS-=@!brjl;q-xhJ+?|zI zKKlpPygZy0DCQP}fsdeE<+hQ_J4-|Gu}6y_LI(%XX-^Foup2yLeU&uovc~6as=_() zq`0R`tcvF)?xT;=TJ@46jR4L#&Ro{1gzxHOYw^x5&hO<$b_;X>nii&&!;dPn_X*i* z!^F35)*ZJ#m`%ZCt^~@~lHK0H{?VR%v0ZffLHUr>lAf+uuo|^NiiyTvfE_CLVT(mG z3Y{u$<`~1vviKnlQY)sp_%({@vwd;%VAzf~QQ8x^!K7)TaOyN7Ad+f})A((-e%kiv z**9_-Q12dLnMwpxsDn|D!O8R-mzpI zVyd*h+sjpBr&;)9wL;&2jQ=(}edm4^l20uer;nsS+{ZZm=$*R~`3kLz zs{ZK#E2HHe&7s_SO@GzJ(*}Zvb-drys((k-oJY&9Tb!=@T@()F@3I9)qefR?6H`ad z>UXao@Ooc;_X}+PAe(7kuh_H|1I=@gTp<8YS*de#lAjNOS6Y$2s}~^w8r(rpx2wM+0^3u7%l-<2 zy44U}<0mUNcJ*Dq{l$vgUcFdd*xMIB0QV2T{e6I&88*XKeh*Z2{eGI}=R~S9{l0$dkZ1QtL+Mek~mWcIt_q+ue;P zVZJ%b-!9T(D%_UB0badMt;1~F!Fyt5_e;Sq{7%T%F0EE@u^~SKuPXH!NAGc6+@jD2 z74sTmH7*vU}2Xr^~mH%>ra3jw^|in}=bhGg&%Qrw->?p26r1>sd7^ zKa3*&kjXaOxQwr6-~UEJ`)bhvo-qVoI_o*uiXxslgNJf+z@+h!MpB`vHV@>Bv0{VG|c6^!121}U_RR{DvXi?&{3JEt6uf^yASWrHa=(bh2*2w z)ZIr}wAn}`jonCL_TV@*GVQ4GxT`E3NEcJLat&!8fOP9~&@{9K&3N!HSCla`Wvi)6 z6KKwU9Sb(>0>(RWv9vNL-Fi!DrPIo5bV|OGaj)&hKe4tQI~cHaGu!tCv0Aa5>tPbJ zhRmU8(bpj8a9wY*fl2IJtsn?FF_yz$`K$x-A~`kXI-S&=C+P}>FxxNes=prTOC#^{ z2#QMw0)&M-ULb4zBFP>~v}V>=wFPOF_%o?V-C$s^QRs0cdUKs~qUa7yYXwZVQ{;1or^~qGnrv1JLN$SZFsW4}Kgn-R`&aiP>C_hIy=_x$wkSMDV_N#~7=StQW& zoL1HpB!?Oz~8ab@lBbpP{|hLi;Mj>jL+7 z(k@Mdn9`ew8~dtLWTH_JyDp-m_s|y0$8rU;kZD!2n9oJ(VZB~f+xb_TiF>8OjV%@P z{usvh%$MsdhM~;JW9QY<{0Ox#bqvVG^+nOx+VC$INCffvj#z<}(@LJdTlIz^%V~nt4&0T=c1#L_(6z>`tbe)S$ z1Tai)^zo*T&bNK(SCK^4)g22K35XhttBprVjBARLgxH5K=rK!(Hedhz^u*>L~Besey7fl+d~cw-eM!BmJUy> z>EmJ6j>+H%X;+X~3fqv!Ke__I0-sC5siHMfYef7bPGKF}1LK4@4Sn)pe0vi9BV1Tzrn3n+CkAS^d{B(^ZoE(UQ}b6m#;ikpLhl-)I7yQ$Sel4zO=9}9X8}a%dsWLW{z+?HH z>aN#a;v7Y|n{^bXl`qVwwS7Xfox&~pUxg$yHgI%>ixqf@^sBv@{?OsZzICV&SR1BV zuKS$+@P=aE>5$Ooz+(yF=}V|GzU-hW1?&7p<(1jaNZnXv+o1^knhzW)Dr||ZZ1!74 z+RC+$)k`q(PL0e(gQW$IOs9#|skJp*@4r-3IfOx}q1-{P0GxIOQDE%O*$^5kq}ZCF z?JoVHt=p?yNdvowI1TSOp>$6p-IIf8e&NMg<3)I4ZLR;7Z}A$l1#?_2F~wZUDtrZAeV#d^`P=sux5n zIviw1wWRRP_#_*lYEZZ>Vm^PWG!ZFBQvKi6e~nFs_KbQued;kwr}pe&|2j(QF^n45x1mlz_vw0Py$}UmC+nxalmzN9#qkO7AtV2{Ar8YX1!oOd#fImx{I0Z zAz|%mZ3ii}=dp)kxNmGyMU+C539~v)G6d`72EH}+_}<) zyjC^-1ao(14$8lcbuY0Rg7Jf zic^6>2`y8>SZw*}Obnu3;rXtvL(9VhQ0mnuIFy+iC-$D!9BU@;Pajq-7HKlOoJLA* zK9Zi;CZ5gnP-!W`vo@J&-N-s_YjTq*c4-`GC?(P=n{D(w^nFFq08`CWy`Y^>^gxvElYlT z!a5A$5Q8QG zSLd+zYM-xl-#N-n=*(qCJ&aS;>y4e2*KG~Ik&~z02SqqFc-P zpN)p|W{=A_eK(SjSh_HD>tJF3uK6w&&)AR^TJZ{tmo+7G9g9~OnX!q*v-gc(-h*r0 z1B(au%@CJ&vBn=P{s)Wy(KW{$kVTXkfS&rLKpmJ1(@$i)AT4egl?+V5TLQ|>3lJAp zc!+W{-EUd+hlP;x3sNp3se7~EVr37q5X6TeNh}MfQlLM$Drs0%DXf07svP*yH7DVA zU0!`PDyu4$ZHA2un_(-z2RQy$uz0qi7(=qh_OTBZ4_W$;_m3Z4^M7~$_|Y}j`aP^n z!H=%_kFNQ*bj_JLGfd?7c8&i47O!lU;jXcGMK7iOA{LLOUQi=|bfHTe!U9nt0)a2;)1zlruid|k7~;N z?_um?3hjXXAcS>Y*GIlR7?A?x1;E$rlZM=*QiphXoVbA=m!Nx5=BMILuzK5ZM65gF zCe02~G>xBi%a-i@TZSwad)1qV0Q*^Cg35=j;mk|#Sk))V;-OnMHxmtK-o&_|1@VmF=4>R@_!jZWH~X=ZnM(Z=MiMbT1OV2GU!q*s za?*>ZslfL##Uj-g8N}`Z2bC)q1*R=nBP3rrE9R>oc!(!uvK2qPISu>QHs;?i8?Y!} z7p`qnv>W5ZOp1|jXQOBx(**!jCg}|1RnJqRWE|s!Re^vF69o+U9Vm&z+dn z?e(0fc;OHr;$!FZkf4B9DZuQw!WL_LUaR>bAY@sL1Aly}F;&)ov~3(X)gOPac7X1Z zCK&sF-idGzs!B!_)U4*3m|T3jo6NHycMMItSYQC5B%`XGJxyE3QUUh?OM z3mNL`FKslX_Yg4!b|KgvsV3pQG)sXXO(YSt72w-Cy^)9(-b+@3 zuFH4fIvh;s5mf+Prypo2q&)|I!mn}bXLkv+2K||4<{?4cha@XKK7X|~l_rq;4@uz8 zCmSe7(yH^G7s0=d~T?C+@BI&!_lsP|0vq| zXrGJIJM}Q;m*dUZID1nt9vM*_Jp|`eV?=MWsu~NcV4r&mu)?T#IK7y=sN5wkUgyQD z2@;-r{=K;;6u0O`5$p684Z;<2V)&iNz-ILpy<>}ap*|hAFGs8gJfWo{=Y98R0*}!djtCTJQl)S z*C~*v%wY(?yGWfX*4_&#dz$1F+`6*8y!(Yr&UoEleV#$^PF3kcDjbuEB5A4%dosl{ zV$twoDs5YeH&~pKX~%3ySwBsjk>H6-q;^$vgAI9L=h+n|8UQj+dwkZrhLN(vq0Y-?1m z^%joKd-^^ZyrZ)z^;Q4DU_v!p=VsWd^X;GGN@<-C(vrcYqB zqz}fd3rOF*klxMay6YRGW<)AyKFb5M{HRHgAT2RLy_$c8X?qG#6_Mv{^w{f>0YM~l zDxM6(b^ApL_e+B%Nhj|_TFxt@pvQ|Y!5PKmI}kB!{P%w4ygCeMV~dxYvO^bQALm?} z#O%zTN}6F`M8jln{cKQ9?>cJ;cHIoom5A}d14*5iC94(i^ga2bM91YLvUz0uISvv9 zA3KGTaUY)M`!1%#Z@rHLEF5JxNEZow^edS9-y6xL`wSfY^sfU_bhY1^iwR*BtlL;_ zGK_xTZJbFT@(1c6V%~p-wSNSICy7@hn$=}Z9`|r?u}`w%tW171FQ*<50{4%kEx6&_w!P9 z@x`Y$o%{)wV?wHeoVQoxcRjw)R)vUOC0G(MeV{&^WG2PWdXjaLcFtQW=uWToqTGi8 zwp>6f1^hj+e#53xci~9q+Qbc)!n7;X{BXlZr>iB`cZQ>bDwoI&Jr{Ij^cCih{qO=y z{gb7p(f-4kKQrzh;y=R*`A>DR8Tl<8|2JE|Y2yYx{jXED;^o8Am1cpk`PdF_A6t^C z^vak84xArom3ub0$d6sT%cjOKA54$YxQ%onHj`*Phdcg20IS_?FERBZlO@o1=!5+8 zPLU`)UtrtdgBdn*Y5(c%C|J?rPtv!}T=(uigZXdyILtMa0x?{uWJ%tcYl2vd23h5d zZuS~2@Vi?8UBm^qAlJzGmFm+KIt<=VSAbv)XFII_N)R~pz-h}jUg2F+_s^FMPHP4% z6^^Nh%KX@NO)P~*n~wyB1Cp6=udQ~g`<;Sv5p<80-gyKI_B8?J0arArPmJHH9O+_4 zMEVXhyEZDl?2v%6#24I&SKnt0r{ZjZbpEphm`^6g)$S`=vyLs^v4ugx2qnDc)O^TP zj^sF>Ir4fjwY*XJ!o+rw;f^y`nXawp;X)miRbuCXni6~UH}KC4qTX1hiPZpGD|0#- zchqLOR#`lCYc43}(|BA=s`@9*!_-y|;o=?0lts^~cS=@^7@^%5ZbFh)clHWCy>zA| zO1?MrZ-_DgFU5;B3dxR@9p5n5O=eN5VB+fHQT(PJ%`0}esoJv=$=))#zrhL?J$^MrjHG-e|i}9C8U`@7Fnx3 zrveO9(XgaFk7y8fU3(6qHqmO#A=&BY#vfY{4_eTkLo55ac5tUX|Fhb`9gjG|!P(vI;bl^PT@{)|d)W0W1_z=s8;t%sh1cLAg!$j~M38Ha< z{lS|cd*g*H3!x}Om1;8Ga5O50AQ>kdd;O1QO7ored?xyqBC@Wn2i+fMn#V`_3n7Xt zA>nk3IG0qBFUS$1x+mY!HRF=Vh9V-aR+PhqrhGM-t97ecZmNOQkt?9=g;3Jj?7TZju;iK4fBuaLz|G5}tao`}P zM~s`^d}sCohAzEFm+%u9adt)|oErL$c}CVdmS}TkG?Cl&8vg<9d6a0gjk7V+o=0`R z>W12LT+aW6_FT~5>MVm{iKaal=)?-cOTmz(<8IeK(q!oiB6Rw5jkEA`5xOj~(VYnW zFA<^F1RoKh7nW8^b|Ulz5&8<8bfeXizfpwVnA|c8LCk*WaeyBsykM$McNf&i+qNQ_ zze|J;5?$oRAYr$uYQ`~-t!uaf0A5!>JL$CnJ3R?}5M?4N_BZKHzT!LRY4meaS6cX9 z5NVq4cBHNk!$q<{{|gZfmsfl_F8_9RZb?LQ6wQ#rEy+#ge1!+k0|yA~gM04c<)Ly@ zMy*=7uvhCxptY<*BtS58q@tS-Uq)T|YI(0f4^sPp;Ef@~;_8c!{o=AM)pA>^zoQ%w zgna0AWFsfcgA+y)MX&o1qmAN3l~)&W+U-uY8O%U4Pnmk_1>Zn4|C06Bd1+KQdrT1D*&~niJYsdoL$`C0Ecahk(x4btDLxtPJ*y|eCU2; zE1vspeJe+QEtoxVmLf#V55U#?ML1Jr4kY4~NW^VXfBsb-kqWUh>4+RS5Wjqx;(Xlj zRTobfuHF=^#+qaZ{4$F_DVDA;0P{MhAIDgJS zA>|BawMs?(?lnUZ#YB;7H!CQlCv=;_g@f9?6wGnk*%~S zr89+WR|Jr}4BT zy(G_!wYc+0-NhfH`@9Hbn6x*DoO{1xZdgk)Y7D`2kLHJ)GJq>PmDST0i8e+=c=m4U zr{l&=_=^M^)>2J=Kazn^@!Exc;W)ber3idPabpc*r!z6`sw&y_7^_?sT})7Yxs5$v z#*c_8rIPT}d#lcrTqnb4MmB+MzSycvHO2AEo_uI*DP zHgtC#-(vr%b3whoVpk4BI&&``hS`l-7KzHg)?**|l{+_lSp7km zkTYGdumL}fG^b!ejUTB>ynlrlFW+H3bnp_sc5LdMpsJL=4RX#v_!uk+#S9k~%t>63 zGzyrLxcW|N=2b*@*A4}I^_b7_J|!Iy0_O%goOdXR#DzV58L$mPy-D;^xQk}H;ggX= zR(hN>slphoDOrfhM&w=!)T0Jia#@Ly&~%B zEr_wtz2+W=LvF83E*^uaLO2SdXf3D9n}{SDi0lx2L<6oEdwRRfKiiIdbPiF-ck2gp z7kSY)s!39PwrUZ10=b_m7#}?Za@j?s#Cr@r;s=%l+T)Q#6q>MKT9}ZZu2y2QRI~`E-WJ^r78s<^$0AKi~p1-+*mDKfoh&!;K7& zH`0e7VFqmcc}hvO`tvrkK3uoUaWc;n;gq~zWK^!Xhk8>4k2Ib7dHFlCVk} z-b^%~1D{rTOZ(N_y8sa!AHaR(v-{Qi#}w`tuN`oIPYOTgY!81{?fdi1Ce-uqZn!|= zB34PB+$UdfK|}7G8AbTXNa2KGzm$62L%dlxRSW<8(h?Q{otV_AYYELma!M1K=;emL ziksjOs(Z+(n=W6*-0|pm>yyL&#Y*bwWiW=@LfI=Kj;xzKR<1w7^=o@Ub%gI@8hRZO zE=@E586Qqlm(g2+{BszX+-U3zPEN?d|I~%okRvy)a~N&o)vaeNntr-KC^}}UxfAbPQ~F!|rO15iyiEI*B}JN1eLoY9-Z(RL)kXWaHz9HAPNmK+Q*q|C z6xzo>1Ls2GSb;v&C$|v;V$X+!=>z672jh1QoJ^V^I8LHiup*&#xl$uIYp&O5<^}HI zqFTaD^D|)h)OI2m9A%7Oh{;Nc-!aIYYTWh6d}~CwAxyrKR`gg;f`tn0GQ{RP3S(H+9*QJ-Q#ou93yG_%f;&TC08zUj)C zMoDkLwK?kz{wG3SER;Pt*tz~_onf<-J{h7rX1cnk$$fH2G`vo3I~0q zhfE$?ddMy1h{!>1sVg2$#i#j#s6EY1n7iR6?1sk(X7-LD8Z~$G=xy-PT61PJk=yke|9%NC2l@6I2``8Cg|_*dNq9L{pWS>jK3bs4VItV2hm9Aa zA?g(kQ7>9U{GuQ8%3bYO8n?nPl)F)Gr`+ZL66Nll5`c2opI)4gqXv9-lO-tjb5ah4i{nYYY|G z(|M+wWUjgVO;ioPoJNoY+)f2y$qwydImfm~{|U`h5o$$XFP2sV0qI04qW7j02k}Q% z2#QJ~?4Q*7igWSU$GMYNgkv(dR_LLD&dl?;cR&K26TDNL)MhJ=o6^4iLgg-s`hH{~ zwkr{~RkrEtWRDLwgq6G}0$|8ZAYv#T%`M1nx+G16Fn^bFSGtxu2V@!3OZBS|%LT`X z?>z-D#jM^^e32IT>+weC#I7^Gkp3x3q~N>MiQd^pc!4PtP*J^*2W9W#!?dc0wOGOh zPA|_qw+1b8C*BZIEQd;M086Fvv7fLhyOiPue8<3}NTrl5EkB35ekI#EQARfIg9KR~ zaCbK50Xh~3603{%UbS@8@RPcn-C%8vyg2%!^g@Ycv1CYa#n$S$c9g(vLjoy=Fe%V; zpm@TI9gL zrv^+_&h|+7<-Jn*+2Zs=4TaGOU~FagUgorw7-Q|bz!#mpE=1$SK1!*Gd!~0MfsT1V zX!J$$O!OMnvvS`BC2$$^rr>S3*pN>V=RK_xrHZ{}WT%UMz_r4pSl<@O(@n6lpOMk% z$*};T-jAQ73NvNFnsND1Fu8OBKKI5KGoFS$TRP7q)j;DSNTF!t77b{(K=$BD#slGU zfn7Zud;zer_q|Ef z;iK~nBrfthS}vf}XYA_rHH+(n>U|m}9O9lBF9lCN#Tr{xY;u+eTe3f%FE^hKaSZ`ts*PW{sT-;wyHL>J`Yg>+vi$1GEyKz1C*#D4vA9B ze$^KLGSoU`bB%ME)6oUgl(cbEq}rC<;ywe4O;q}}dbB3mZRak38C8x{Squ&MQ>J_y z$ZvPoeKSpqDmzCp^nd5IpS8e`Hm#olISVMmP;}@|rBo+wu0oo5ZWc0-CrbNBitS{W z>RFCRgeyF{$`3zE!ev`F)QtBt5%KVzG`@m%+wxi74Fg5mmw&$WaaJ(IRy4OzcG5%( zqA&9TG3A~TsnEFiQ4_+2`(6*&{^}!-j&#I_naTv9xzeE%nIGI$!FPVngH0ZoXxu(f zk4CxITmX6SbC};AWX*XeOGrq+k_dxfmox>spVatk4@9I~hLnl8jG9X5ddr6d@$C8F z&`1PX-)MayI@y}sw%W1H6g^cf7mG0-BthSCG!Wd_JcmS*i z>B8OMAPDyXbH317Zzy=9(pBCys+Udr^Ll;MAB$Ml#Ip~+CA#RUc=o};AJSA5^){Zs zG$ePiw`Eb9Jo`s&baHz~)!DPZDqId1fKx7HF}||*vWJtKm+;`)bH!f|W1mZ>Eg|)( zG+-J?;0n%^8v%{0inhdmOs0{?1Z$k8kFGiOfT+${2VM^131#f<^O<+GB5(2F{EfQV z>hUWX81fkXCy-{|9JZb zC5ifp5FWT^gK!6`S~#^vFIM|0+P0hgU(v5HhgJCJoDRZP1a*2~5DN+57y|4%k=C9C z&Po0 z2n6t^6lBWdLV&Xj8PAwMIMtZ}f*hW+GCX1GgkC6r?l_0O>{&v{(VIHN2}}8?+I@-V ziYb{if$j;YNWyzz*pw8g{Zq|FEx0_q={ zM}@tQGo(8K(zm=vqGgVxOnVxLA#h2kY}2vmC-$!u-jb%Y2flbAo`32GdyIIL2BBLw zSnk8=d@rc}*8{>FKWP)mI}3r|WrrB0fIjcNzGDGG@{^fYk?7+yrjYkuZHaH7t)pjG zgA$q?e!q?uo#}{jWPJ8p;<0a^h-nhdmI5K8FMA~ZqeLPGfpf950)=U87G_H;ww4xC{0wKkAq z!=aUS68|MM9471`%FL@1!>Ld0YsB~VkNshUoG!M*mELXXe(j0u||1}76cEbd(n(K!@ktl)aE zvTfKp$f_T4;)LoL1|)fHxEkK``LW7=e@^`7l%XHNU(kf5V_V5#J5O4gi_>Yw(Fmoj z*=pV=l5N#L2G0AWpC=2%vnAl)YWe~%?i|{2kDiO>KXN)&=T?8r6srB`Zg}CgT{o+Y z9_!Pp=l09u>~6WbiJoZ_TdH;htzREO;^dPf2rbPoKhZmDMSru3zNB|%Y1#cB4Oz^A z07qm6Gh{JGKR5o^f?&;p-kJRwa&o74-szn+^sfX2EoA`z-U~ho9Uj30n=e+iYUVrQ z4p~f*k%9;`Fpp<`c4i<$q~J*?6)9)ZWCe?0JOb`4%;>=qSiu~}$v*@hKwuH5bo0w5 zJ(w5tzcOD)628m>N@>1BP=BE)Xt(BH{VR~g9BtT)wsJe=+J8mwOgj|glvwCKtmvIt z9bdWAJMZ+)1QNT`JBJtnWL+6tcb18Q(97^Tv)z0riq@M0H+6;rW_2OC%%iP^!W-~? z0nA?RM>G-vTA0w>BYG5HqM5LEao`fBe|j8nbT)C->i2=I0Df!L*`89Q{)BhvlcHr{Y}PC{kghX z6hv{yCH^ba&1`@b>a(H-4ON9Z{5N$7n&}qjK+NHyvPCDK)+*`%X-IwknMEjh<>X~oP&_BAC z%<80;JhyHm;m2I6e7gR@X(C7z&jXy->Db50k5y8u4*9!aXF7><#6Wt@xF#o z-S&eP@;R{GbBp`nH-csHnbEPtJ@5yyxige19`zIc8#!nc+v*>LRfn4H=NMosSSl(e zmP`!_l{PpKb)E{~8Z}1=&wKt}KDxeDurB<1O!Tcm5UJ80C3Y#i6ueWH1h&Yj9ctfx ze&LSTGwE1XA&-BTra4}{?(LCvYoxUopI#v=DTJZJVJ7+ZnZKyvGXTx-qnPzfgu{IS zmtuORK>^g0fKS&ewoW6N`hkt5x)dU3c4dVNZUAu}`|}8R0sNAiUq_C&i%8Zzqy#+= zbW8$7q_{kqeoDAF%wajyjnvjK!Yoblu#qnJgdf;=>S>vV=k8FK5P-eF-TEXdg(gK; zdEr+6P5tu2J1U3$04Xax5Mog|w*T7J)C%UAL~Zr_vYhD;a$rrSZe={b$0#rm;i1aK zqev$1e-_ef^$t7wmWnyi>+q;;E$MYWNdpFW3VE<1LZ_iYe)Z?y3c$!fYE|Mcu>_Zn3rLw^B{{&7w!+_hEQIq%gJj;ih^5^NF4jjV^}W|O}aAoQqj zi3_3n>hCR^(_LE00DiHi z-oFL#rCeun-9(EP-vtng-4rHQqGfZEq_W-8GV^>Sr|=NZ*>IL~ zsY5n5)bJ$v+-MnE0QEe+?V$!Xh7o9RlgtbTVHrQBJ1*Am#zk^F)^x?tNvnp(^a!6a zL5SIJTXrC4K7d?3uX*xe+uMjJCj?0Gp~!}&Z>gfSdSkZi(fLTnPwFt5gb6a`6Vga` z=*^!QI*0!7$pdRAz#Ngpua0xI4~LCPqVxynd1?pT`LIQr7A@$WocptU<<&ld7O9+v zU+Nm=B`r?9F-8-4h7&e7W>{$i*_Pr1jq_!AH9snNecmUdf=8;JBRVyc`*sl`9Qw3| z+N>&(V{(xR(I5TCMUX|zHuc%1@~sv8b!+(S1wK&uSu%Rz1gK#;pc!r-eU7#syN z8o+75l(tHbrkZ9_DJ_}`sZRutd^a0wpOxdW=kcVoWkxYk8aBIt=M`QKe|i!Zdy?uI zih&YNtT8Up>qJjZ=&S&qQd_+@v`7e6CwGLL>%KfRNGBZ9x}v;z&Ee`FT;V?L+ljcW zj*QOsJGnPRB6fLOatSOB2k8SA#sd}upwvY6tVzP9Iz)(~?-(rtbl*A27;(6lA|iJ$ zw_^B_OUCl9hmx7!+9<=Puv*J293p%E*f~8UVA)lsEIY2S#oC_Nk~9--B3lXtb0npE zVKlsQ-#3`b;cbO^etoWj7|kxu95x>(R=}+GMXN@Ww*IF^jxORy@xnM<+cwsmT;vKf zFPZ+NMT)oIimi+sjrB>^f`r?r3Q_r?t3hhhVWL9y5~)NGvV*ugD@?PDKK7{&&xoW^ zDLmXh=IAI$Id|ObW$J^7k2J#}$Z~FhPrL4W@jWlQ9LKOo^rANd#6sm?H2T5O;rSEs z*zBQ^$w1~fI29L0^+!AghKCNs7zCpj=^` z3^O{2hEKYe%C85wEE(XMOt$r+iI6R-#v#nWAeE@~0gFxyGwgj2=c+b!8?Bz+j?anE z_5;2>B~~jqApUSo&_nd7Db7o@r$Jp99=we~vsrT#_FN+OnY@Es{i4V=YqeiK;&W4l z%aV46)Q`hVwp6!2Au9RtLhttjDG;qI(-=BKJ-7s&xUCEN1piE zuf}jkZ_!`lMzfid8)SN)JRP0zg{IrbvMMv;GY9Gc)2IVz4gmO>q0hu`2O>j0iL_%Mw&!_%TpQh zokJM;dao0zFC^e^Bniw<>yc=JFcab+aZ}w9RfuAEslxjA%$~D>dxwZ|SSN_lbt15( z;Fb#ETZjZmHV?G!X{}hJ+Nz<=c{!2a_g+8qGFhFK7ek=Y*;J#MTmO6nhob;d$ztGT z3|#~aA##MR?jk<7;GXGij1nXGfQ~KTb|s=Lh~wc%PS~h4lbmAWbpZ~asFpEaJKz~1 zlM6wto5plxF~woE&0&}}TZ@}xhR;;hk&N<@Ro)9~)P?nuxlz@I3L4VPg^4fY(A?!G z!<0lj9xGp$Zu}X0%oDAhU#qe3>;6^b=)t=@P}*pnh8_V2U&bO3bG6rfaHLPQLC3JP zSJ9#7jhKWrP$iKm-7#+*lg74C{iF?>(N=C({rs5vt~vzh=7to z1eB41tYg2y7%xV1q9ktU)N^v@grXmStnhvaw~^*s^SFSvIyT z8(YTQLf?+DW!czr#MpAg*fR8U+Lt57mLtZNBgU4Yi`KtmY&l|V8T?r7qo}cE=%V#^ zv@I_Tp6C@e9)q7Nh**YY<^Pm~=mxPW`^WK8S~&G*y^>FgGws*N;c+zySXn55Pg6I3 zC44iCl@+y2Ry;i7)ZKoSqiW_Ra#(U#*DQ*7qnn#b2nRk}!5vwmf8>BKT##8&Fts)*f{2#_G>DCuRj)QT3!W?S0FW>19qq#Z$o-kXT-;2rGeYrORitbyTM9#zHx2 zr7c?jBel{Rb9n7_W=`t9H^gE_3CZIOF64S>3eMYkAS=n8(8`ZC>Q`**MpAj2j@VM9 zeNOc@ZR;`-x%`PEy%M6fsOB2GMp=~FUz{YA66`z^a(L#vc!yFW7J-RfE@UFD1h7Xi zang#7>OXX$+Wq+Ehgc%y${rV=K8;B=t3r8RYK*jKp3@`HsCI6o=zp}O-;b6a?2VSgApm_u z#;4W2U0;!9^SNeZqZWNY!oA?SmY&qb2f{}m19Jb}fhH>l>HUYN*1&lfdWr~Xq|q-u zl$Tf{;7@GiVWrX_#l3QholkB~JH-{z@75lJC!6DdEnF6hvwIQ;xzX)Y0SdSWFxgVJ zRGOVabIN^upu-R%`t1|WyeOklS0k{X7G!@z>G?KJv^$C}^ijO1AFK@%wNj=Uk<6&5 zrN+D!c565QU~pYf7`lb*>!c4-+P<9A!pG29g0K^Q7=pZZ%&y$`8@26k-iSXnnId0M zEQA)M8H*~~8Zs)cPpHu;%ji)@WBMrYk|CPZ#@mNrWWLx1e~ zlQq{JAxfSBjCXgs)V8CfTzV{|*+Xau_Z2`qDvY4EF0L2B!yC!A>7g~FIJ6s6XF{uz zYg^2Q$p~>!UK0sB4P?dp4q*iELz4pvtJ;h_bO|u#98&HB*3d2n2k1?mc7hASDK@kd z$nK1VFaq$pz-YKQB7HyvxpF}QXu7RXogKX>i+9eVyiEHEk#BGGwf#y2NwiqdU2|2d z4QWeiTZV=BM`W$;jaQC6`@i2JWhC6OO{>36UIt)pgcVPF1Kj%VlLbfDX#XVM5eM)% zSsP_$_z2@B?6G)O2SH^t4rLdczKsg7wCRhm#m?Po2Lz3P)&UW09vMB{B^%QF>Tq?V zer7VY-tvzwBjxb^`@3z6A2>$Tqb*_a2iE1IU}dR4-^}#DJ=hqI^IGdj1p2RAs{ATY|1_G;E|=KBDG&DjJveU)F<>8}n+-_%H4< z+P_{b!ey_DMJh zusonlQRS{yztonp+M{zT`Mj>nyB@vgse`>dHH z{rR??4#w_<#kh03G3kHs>rYSh01acZeMcdnbMd@G#~FeIdM#ajnipSuYSS$)<~(dD zW`kQO8)2Kn*OaBzsE=e4l3+Go@TSsE%;|&?WPJHZA>WN*u7W6tf|?saIt)Vx5%}tv z_W9=7B-5T85WO#`q`6GrF{5v0CFRnci89La8o)-2d;0IVdrU6E8$ES;9`CCc>Cgl}xR`iy`OILN{iUb7V2Z`$9ImNK?UsRFElchf^ z>uX z$|+tm*p8Em1oONns=vSfM=BD<>($%me^-$Z+1Byd#m~#jz-a9IFr=$aG`o!4h!S@# zr8vBuEcSF8ku2!KplG>m&q&b=)xpR)b1B<|Nt{$kdDKO#4|Huw83j&2ad;a#3ip!+ zt1Wxw?L`TJXED#RD{wwm&~h)*N!^vDs!uxVyeYM|HF0 zZQW?ahMrF0U)`*0KLHDz?$XMMUG15)!bmHSaIPU>$tiZ{5rZ1~;FHgqEPoo#!D;Tq!? zj?0H^<%I>)RFK@tq#AkbGKfSsZn7@rL@DnOcES2Fawp4fAEj0>QrvY)xC+etsQLAw z{(n>dJikAUC!^=bK6yoieDF>{?`KN-mW*eh^g#@0z?ucB5uArL)6b1Rw%{DFU_9fg zM)9BUTI0aZc(ya1?Tlx*2f#cEMOg;iWKl;v$}(QCplHe*6XIATpi2=h#BxyhMgYVl zYTO^7Cx@b(82Q1n8nF}aFaRGz0WEU^zRZ#rfN&CKq-irVEmr0`rp1bYns=~f@Jv~O zogu8(8_#INX0(;tSqT0s#xvTX7^lQS_hH3&h6_QvthN0I?`QrApH7>T|1*645w4G> z&vm@|CtM$#y?0xKr{^E6?t3Qh{|FZb?~{MR7u~1H%lO9)IJf%4wtKO*AL3bnXJN$r zA>c$sWHdd32q?b9pbg>;CM_?)unCHC6fGCpD;{l7G$cnv?gs~RkWSFYM?4%BCia&! zGUg`C-SCpm6rR025e(Ay)1)YU=WX`hy(&Xez6n< zz+Qm&-)y}l(2*m&82us2qH%ikvm%RVXhfdXjsJl0Oqidn%#3G(-e_-VJQMWU%{Lp*FhH1Vek! zAldflKM72#pp2#kKtfB6;9L=5BUvw2k$eylUlAPBO!2;KKud00sF1OY7w1jg4?RQ6 z6<30}euQW1j9a=C8XSBRIwF^UN+5FjrxoTAH+)Mu_wW1RdMX%3HB?~XN$HNhKs;*M z{&3?2Kuq<~eB06Y*ZYHR-%f zxm{dFHp?egst`n>c?$W*#`cG-w{-=nRZ|ibrFee!q|bRBwM>*zCp?=AGxQ zF2y!AEfKZA&hrM0{{N$%w{074>&}OdzsK{&*6z!FHPE;Ku^l~U(Y4P(Hwxe|n)-(f z1e@6i3eLxV=_2^%$E#8wWbId8b$SQkxsG&ZT(D#tpyJkN0p6e75?Xc1&fSbi<;f`4 zy$f`p5*+)M4$`lF)I=Bv9(dUC4!pX0Xy4DmfZKV8D)NEPbzieEmW2v7>ewUI9v3p* zpQJ)^U~6vC2hhT0^mp9OA964w*X6rN-Bs<*`<}B-zy98GT*gKMZq3KFv%vjEAF#8) zX{OC;^c{L0M~=N3as~eLW$q-wqir}hQGk$ zO!({89Rr~VNgapxn|R}3bcP4}G2w!0okh@!W*bPbsM=oy^A(R*n$Z;edGS7+VcYS~ zL{U~p_4^?RD9%V~_H2r`#{RlwYMwRRCd49pP<7_^l^a{aUmtby?UU#tYI&m;o%*S! z(i-vO8b4LgMqLv`g5`v;iHi_BvW;jRr0mi2n}6m4hZO4K3NaY@C^QkC28sL`<)8Vf zkgtr-Q<*boYos|ikgx-`N%fI*vm>NVoL>q^3sFOA%U0e;UwZ{Bf$CZm8?WY1l)l{) zKpjMDlkj;F8}roB1vE5Q zZ|ijU#{Jh6zQfN`fMJg`2r62Anr25YNot;jWhAY7i`wpeJUCF>nzl1DRq<Q8*vS|=URI#)3X(YUdCHX~i;8vB^U8+>Eplkgr8Bp3!;O_f#VMm{1tiD*9D}7J* zS(s93ZqWMPzCfBQTix4NNOQyCRnN@-M4D^Wr$4!+%SnRg_l(YYO>GpvUGs(W~;py4gltt-MS| zebxp*)s2DKVn=q48G) z)r4Cf_|;1<%6R|8p6$7!WJ&Zmx^fR~Zu9hCdgLSHjnN_|p{dTg_pg}x9{mnoV5N6{Iyl!rGFjg-Vz%jd_IMt^ z@pLa((R$L(m1=0l*6|X)cLp7tjEPWg8vIZf(Xx(D9ArV_*1Fn)O1UkagcC3P>a)#hz!T741)vDNFi2)YryoLnlD5S z7FZz)3#?%+<6$I=M381Du<)?*NU|~CF+Hs2zP|j08DVL@Fb{0?#V*Tomt_fiHp9bn zVvrKdE=Od(?zEWY1oXmayxU_f5lQvI~3!TSm-{iSc>6MrCrv}QoPHu++|tr zEX6Xc?Ehj*F>TI_CUU!8<3C_27K!cDI2$udu}H0=|AaTR6oaioyNd6%6eFC8>=q7J z!SL5or!;-XaKUPBXYw7x1*=WP$UBB}S2X;!qT#RACTRGM)(MgqhQC%cwoFeU*_U?G z$P2??3y^_!U`E;|You+mM%pH8q;0ZB+9qqHZL&t%CTpZ^vPRk_You+mM%pH8q;0ZB z+9qqHZL&t%CTpZ^vPRk_3y_6>BqWM%pH8q;0ZB+9qqHZL&t%CTpZ^vPRk_You+m z5o60n+9qqHZL&t%CTpZ^vY5wchXH1T{=zuVhF_eGY7XgzAs{{F#_jtHvoZ(B#x9Zb z-;~Jt9^S7DK?JS%K{g)rs&gwrn|XelFC#XPa~^4&&O$Hb*DwjX62@>^fn#F^W~?q zo5&3&VC0KXXJ-fL!rkB?m~V${rG*v2jjHyXmkpeOez0J*UN#c5fmqD3u#ZhNozOgU z`Lv96^46tJG9_n-d49a7;ffEMoqPB(cm;?)&3|4lvXnYTRPa-mY^8|B#$!FTbp$Pu zaKQ%%pPPdlYzq5u_8~?B(SW@lh7OiiKuz_FRXVnS^H*NVk6Av&8XY_H{`}sgmo1&=<1_lI+LFA9ukbtk zo{M>*UG$Q>1vbs&M&Yb z1c7gzNULI^HLeaK&Dg(vocwl|RhYi>*$AKdw#Ybi!cP!^S&NJ#x|;4%i@BkP#QM9$$7Vovd|p!8z!#io?k|} zPQ7-oC2VK<(QY9Ju?Yd6chhI3qp)AexgXU))W@0%(kjV0+CW;0?O`PI@J0r>LkV`N z+QO)6(FRCQ`&)ROmUJapdiZkDHIJ$emtm}h=u~@!X?F^0zU?kCa3}^pzCG1p)p(+?^?E4jF+{(QwAz6#@Lc%*k zqX^YN{Wt;td)7}-F`;6HJ)I(J)|prwa&GKS*$Agsz)|J=F&`>(ciQX@Oz zAFU*<8wsCvH&mse6D?x3S}n2pa#?Y$jv_bmk5P`q8Xy0k3emD2S$Mo%KqB(99yf?% z`~t+;x-{PZMTnMFvmukH7n`tH=!j+pm##Gmyeg~RREETaZ zX_FpjJ2paU8cuFBTwwjlRN?neXP$$@6R99p;80&cGn(+O_>H*1aABWh)BU#JhIb`Y z+3LlU6J6;5Xakv}9gr5mNkWw&h`7pY45OuXdKB275O4(ps z#B8>donq#yr#ycy3$O%}C6k(?#tMQcRXpm`sBAs?uNJ>cUY}eKv2=eMhsjb5sm;3T zStZIIX0pdFM}#DM?@`;RUZ{686~qKqIWiXqqOg9x+zxFHU&pfHj{ERuse?Q2!yE^2 z$9;GSU*pl>?_$hs6*&Pva5l?TaYLu zWrBe~PdsS&bs&USNaWj%3mHVGx3Iyl;F+%i9qwokxmxY@*`FKaoq#ecNsKW=DOBcr zUY$sJm7nCA(Yq{FO3XMRjKp3@`HsCIVB*z_%m(?3PY=C8gk1)Cdlq4T%(TCtj=jqu zXR8jDs<;1S9ouRK`HuEbjj=#|mKl}LhC|M*Z#eOi?z2xi(!T%y4cY_s`j`%sCE9~# z`!Q$_n!#tD_CP;3{@8+D*8=T9GZ^h?4?Eg}fP7u?OXA{Jw_`#c%onCtfAz(V_OPQp zY)^Zj4V%$cZs*(muh1T7hhm%(3*Cnm+Jk03{iOfc1<0=remC(XTfQ)J+;;);U<^bV z>BlZWKFT5kosTjhmWK=6>|7x;{z3jHv0Bi*#0w!=f)!m9K!IXlayQ?RfP>=ZtW8&IpI+jBt1k50`deMmRhk z5B(h@9G)}6;W;B59<6}!9UWf58R77p5f0B8;qaUu4$pFev1PPG+D;AN24?^_I0LxB z(fD}KFgOFa!5P2}jcrIj(ypW;0C7yHx{4adCu3bAP>7ldXM;TN~C8e;r&L) zw}U+V8uE}+oQrjv4bZZGFXW-~vF}23@dM!A{Q=571c?w0zd7^e$2ZV3bcd#g#u+b3 z#%59tOKwr5SVBGJNH0ZnEQ2n_u2Gi1{z&rhDK;WTNY`9e7?F(}yJ6BuglWJ?F~fxg zf4=yU^cyY@Zt1{R75_pW!4j|Guw|jnWQ`$cjgD`WXv7oVs~0iTnWQR4MF?HA=AJY}CUtJuLOBOMWyA>+@A=fgsc>CNY z9Q=ENDLpvfpgAM@qc^W$Egof*0STqbD)E{vzPQoShDL94PkK*+84?q5HHW9k_!yq* zo|xyOn2(n2<)h>0{jJnz*>ErkAKR04~m7 zalSj6i-g7S7O4a@YcjOe?URnjotsbzw$y^sWXs+f)igWh015i|V4j;oM8gFUW8#)t zP?~HB`dG8}R9t9PK5>2_LBwwOCZ^~@Sl;?HYAH8g?5Wv?b+ zv`gGiGNz9P(NMlx^TrB3*I_}=_MAylV~N^i z5)yjiJg+H5Avrxu_%aUVMDc_TsFEpqd2oFdlNM&^PynjCwy_NNW^N__9d|*V9!|VNWVmA61BRwExYYJkI|RN{_neO9hhLP zE&d7*rUp#dfR^+nzy#}E+ZV)&Snb-r447bjT=FHr1i{+4ecdcD7<;hZtfvbJ;a>O>tO>gjxzJ)snwPu zX30RE`z@DcEvq)$*+77$hQxq4SxU}rnswkaQ((@Ur+UtERz(eeJmip@so zPipi3SGz1Rxn)Zs_nOJAPxt6OAF(r!o&t~F^*GnP=P#FT$Bjab$faeiW2++WsWN*ZEA(MH z?qr+8*JV)GCu`D*pdZkAEJWt8ELq!h{p9$B2R2i$AD(=6kXE`%{UGlilS>Qd{F+6| z*zZ?r2X>j!sRLx#13EXjO+btQGR zvl$(pPn9@x_6oj3Tf|y!1?$DtlOepM7va2{KVr%HE}=T03CH3x2cJZNh5xnIf+^*| znWJVbVeVyet0HYRCC=GhJnf-^;nty3eTsU|=LQ5Zxglei z66#|bHHZ<7Z2v5U29Tv9+9lwZCmUqR<4KK_^UQ z>DSe^PPpCAv`6i`@Jm|`(&c>I_w^5Q!x8wXaT6liHUPs-d2hQuMZ-+Axs__hnuXfY zWu%OpkIr=N#@y6fIc5W$B-Xtxwes7iTyv`LB5Bn|zrEWr?e%gSF%Y&)xz5X|rdb^E zd_l_f6xS_AU>bi%7fmJ&f!bJ1;6dO3|E^Rph`t)qVi-m(PYiu}MBsY^CjL)=eQ*>4 z-D7Z-so!^}`AX+BfXU+ zI%qK)20SjPj9Q^RELNY|zo10?d(Ou4cyI}@QNow6c>7%f;x&1HNnRi4+&t}R5Z@)> z#D*~(y)n~1cjW%HT{M|mhQHt0NUiH6V120$mI znL)(|5Q;4CZ98TV7OQVqAO@e(%lDu2>3f+$WM!v#y?ToONbgLPKh{%_w>LGu6CND@ zZ4uT?`(BEDUxan)sBQh?eF2;|;>TDZANoTP);)TTrdVR680f(o-iF8`D+gD|0b!70m@)(|E%hyqiYl$St- z>zL~|vC1U$%3qIyr&O1=+$SIG+mE&N=hd#9S)BPxY=FH~`E>n*)5LS?Z9MQ9217IQ z^R9zL)k1ys?=2DUSOlXTivUk;Xz^L#H(C~^jf~ZP=F3XNI~IWfEcyzjzQr-u7j)Z{ zsejJ=p>F&2q5gkU|2)4xjVGh$$3A&QOg$Vmiv=}U1X=*-Jd1#SZv3$Y zGpPj@ffhjeiIOn_5?p^U;h1K;nPtx41F#IkhN8&0jmYrn z$#75cj1*!;Sds)$4lz9JPv#4e<3dpZiLK^#c(?^45m=H0SPdB-enRsdUee8ns||3vAG3r1 z4?}(OMV5tgUXC(98vle(p2vgfsP#Plkw{=ZgL%OZE<&CE-_0W6M8ii9@`h%O7iHsx z;m{Wix4TAzgEd}bw2>DEuRt=q{~9BXd}M4{GPVr-hqen!aUec=joW}18i|3tFdX{Y zY>&KSY*{wE|FW@VZ4OAjV{BPAj#)O2nO-HbFYUUJ7sfG1j4eluEk}$kM~q{R7+a1Q zTaFl8#Kg3M6ce3)n@8`tn-MAbw4&5mzh#CSN7+9UUuUGb_g)WFj1;e zXRaoC^XQJfaqob{likD%hx^CzQd&6mXT6e7iZkuk$l-A{=~uF$06tCK_?7U@FjiL7 za^&d2`|sim2p{47w#U8W4E&liP%F3=OB??I&Vb!-`VQ8Z3cNGO@fXBcSP!Ij79MUN zBl&jw3jfJQL)5ic@Lo0SkPki!u<*Nxh$In&Qu273fn4xeNd$&nUGbUC9W5XK4w=WQktfe#j zF9ahNefOH2a~r#$CKzd2^S5b^i%xy19one0#D1~^a(i_+OBK{m!~%^-tG&T zT<7I12;qUNzBpVkl@L`p?2b-~P(oD0oN6l_eWrwnuF3LVAK92GMQ>pBw|n*UseQq# z`fFi3XhGUh9cbMK1}YZtqVmiHsp$^d~_VEv=(+uM%;T|roC?~qopncaV${6 z!nQJ4CYl2f6Y-~h%hsRtUigQ^>TnN0!buQNoZKDNY%G6p^AKR??zPSOOL}~70eMYZ z%<9AaUMvE}!?^EH)`B(~emNhCSNGa*{*I;W(es-hgrgFh=?~ajbnh2e*|%ms3iXSp zk^O^VPufrTeh`ngU(4NCZ99QJO=h&*jcu#4q{)ny_qJW9Ns}4>icXUfO*ZPrz951uEpU8 zQlItXleA+2xhn>gjo}7X2cX#Sns!w;b zlQ^68(w`+wYK0mcT~#^XK8e;Aj&JAur@1}rChkb*-8ugiA69=;A*dvUGP2Mc9)pUnLQQ8^z}4Jzy$6+ESiU-Lj*1#0DL)<*JW;6(yw08XZ(-kRKS5gMu&u@SYCcxjc@)>`RgI-!$O>WsLX73O{4aVn zZNGv=p3Sz##te%QUN~%ZZ@hBs*`Hg9*>Ke_Bf)idYxTEn$LdLY1H_>Iw$ATwtot+t ziFd@A0oHv+ne5?|pVG(F05JDh46FyRBacJbg=b;2W|&%rB#X`P7XWZmlc}^(uf{y@ ziRu(NbyB;A#1WUd3+*T{zA!HccR z{30Nd3(M9oUO4ljj7Hr6rh-`+vn=~t?xBAR7JF1wbUK{k_cqnNZI1qO_o#RecYXQuN6|84d5`wW!{mHPS*ee!~bgUBc%qcg~hEImwa8P zPR;F>`2pLlqo?C}&ssJayFwTEBRI zyg%1G_H66;>_Q9H@EUzvg{>$pG5pn~CZ2wa|v)MB1V2?;0(bmgMUjV1Jl7-+d& zK<cGg-;=1|7e2@c;49GfzeO5~b>7`qnUnW> z{D`hM3ya@KdL z+a=Oa7@+kob;}N%!T_!BZMzPf!T^ER_}_QnbS=_im%6=rtT3f8K-OX>w>k1P=HSEObRPQgD-!+SZVSd-l2=nH5`nmDP7Tk*#%q z2JU{?T;TVIn@Z+GQBI8fkR>ie(okhY`$i%(Wmx~76yXsA43m@jBEm6<7e-=g#7N@h zO=N)aLPl1w9@{I^4M)KlU|Cp_%s+~V*h3We0MyY4^o2iX_Ku8?SQvi5=MN!e6`8>> zY{Pd%qJlvuz=mdr&aw<2Vvvd|Wm@ESGo!Obe`Ji#i zICPqxEQ4f#-^wGE7y-*Nf>X_RBpGEblEf)x4}^`|4NF0wLpKLv3GOJLKIg*LIA6Xb4kyNfWyEq=jZ-hL?W|@s}<#NA&Fy4 z60lQpE+yk5aeMPSZP<*qayuL2f5rSxI~3!TSm-{inBO&{+$a6V&iwvo`wt_NTwu`L zAt4=&NHi3c5D;xP8D;``6m1!vF+7OCpvVy<7;{DgXy&$?FGwR}Zo>4~^AdK$!^t>% z$7o*7-F*2AGfUlkVIJ7(i=Fv>XMW$x{7#!Qqlw(E*Z2>Z-_h%@Grw!b=YN1>-^l!~ z*`&YQ{LW*@NS)U_hJ*SG!-CD~=5AhNc>Q1rK}!1$tDC!dRyTL^tZwe+S>4=?R?zse zv1QiSGB5zzb~xQO&U40=aewL`8C&LzEpx_}F>KSnV{Dl-w#*w_=8Y}$#+G?w%NPf0 zf6g0Q=8Y}$#+G?w%e=8=!Pqj!Z`z*=#+C(R%Yw0GAiMPM7+VIrOMl1MvS4gk)V91} zW2ZNf@udC2#?Fc|v$L_g+pls|&D=x|OYW*aV@H&5?fhDegP65WCtlxcTR+eh(WUK{En!Zr;xu;j4KdU zb!-KjPkx7uJr>;A*ne$fKdZSH)d2r~8~dX~>)*wp)1e|rpv@yt$63hs_7i?HAaBmg z{^`wXRpbvog(JOGss9A3oaD8Lo9pK%vEYeZ3`rUT)CKbuiZsa22VN4W6M}DKcUIwuo+bRcPH@341+mda_Kw4HylM?iAx%6g+_E`6>(k$E! z_Uky(oC@x;!XYB4){?HJ*H->{e4JRrt=Et}WeZN%?73sAGvp-Rx;IrXi(rO&;w&A<) z$PQ8jt9#ord{^`#y3i9{6@8|Hpwu);F2k{ls1Qy`k#v%;@Mq5KTYoU74+Ielk^19x zoM>pbA}doyf<>bjl?(N3`Mh|T+^~}xR%WBImIS_}&Gn(}5 z+#Tww&0xk`yt(qx*mZZlV{Zt>kJ>@!lLNOR-J_-c=y$+d-- zQ|(BH<6dM=Kf3d0BcrKxRQ0FhE<2dxLG&dcVn2t6A?YdzgpY>B>?& ze>QLd_KP5d1p=HLwZJ?ipq&bm=X|e_%%u3aXJJEyJZ<_m@@H=s>`Gy4R$G3J;Qu&2 zD*gTs%n-3S8(DRRtnshW9Jjs6-eM!T!HlIarDAbJD_U|)*W!hQy}w;Y>Wv^O%BlhV zkITKNr2I>#Qu=%_x z1>Nj%kRB;=+r1-5)Gl4wU_9c(F;^#=t~(zPLxkYr#i!{H60+mSycZvzv7Eqq{P|`D zv8BV%>8D3;Z5aa*ea+v=gN-SPU>PR1%FD44hxU8vV#TAH{q$`VmOY_hs(ghP){VxvlSQI~^Dma&vz} zC@gVa6z^6Ah0Z58r=8-8=y%goOnbjArPV~pZP9M5sm|WtZCmtyGHmekkowIs6 z#c9p$WVahkY~-i@9*P*-3I(P4rR;Svt&M4uTAInqlb;y4D8a*}tsgw|2Yr}%UOO-! zepI)YR$K2<3;F+_z3*&Go%!~De}9UtbV5miP=yeZAR?%Uy;2ncLCSTV^XB>N&zcEC z2|*JH?s9l>?muU%lQ5aAwPx0@pcAhE{KpvsGMU{A_je93>a#KIqQOfR4k=4A*=XO# zGZ&7lcS!#6DC}oEL*O-cn1!l9jya##-Mw*Ny>F#ds9!1Wrs53qaP!)7^&2b?3O=01_&0@8M&SwVtkNFhv6G7 zD7I6ogkvjS&Zws|gNL^me_h+Z$PMf#Vc4n;J#y`QIDr$_RG6f!ldROF_H3(%HKe6x zy$AZ81E@%SuNVsVKzFR!wn2vV5>>Jy6#>)Lm+m2`BM6A2G*%CTrQA~#=P2MD3n|P2 zvY-w4EuvDi;=BTp%Uf?rTB=YUX2-%Q-8nUP7>tRPe=|o3HEwop=$&{%eH(Xf=w1pt zTbMit#)NS*Zs?n2PE&5^mWf*%<=|SeQDj*-b#{cdWIehq$8bJMmp}-zb3|n#mB+5) z84mJjQ^N=!5AhcyIQ+4;+q_K1Ws}$#)ZyTpaW_nWvf{b_23|CSw_ebh0-A5XUIFVOGO!lbZnRetFE2`oN%gWvo$6 zw7NNr5m6n(`BeNQtz^ZR6GSx5DvDgZ%%m^);x)s_vF7}zn%dFS0qm4gYB1A%yq|WF zzDEnR!W|I+IbB7?w{Zgq+3%NGnD(p_wW7SxccxSm3f2?xN@AIE0c0-tdJv6r{w6vB zcYs!!%Mbfs50fd@Q#Q!mAqG7tkXWNH5Abn096}#MFDqIOqpmb7wHk71;S4Gch8uHd zpXv87M#&BA(S;<4kkrFM;*p-fqG<&(MMp6t-?LmkQ}jva3m1w~-;h}XpvVfjRL?&C zjBeH(n;fmdv7z`u8NXVG+N6y&;+(~ou;Hth$LT;oeXo6j`dJRDx z$j!U*TrBcZA-^vw&xu3~3lYGP)a{3=vL}UawT%&zdph&X;LYSOOfiEuSJ-4_@700P z)N6iEN5!MML}ZM{pW&}HL}b;!Y)V9)I+ZOFk@3&T9~)qj86YC7PHAh1WIH1Ac8O#= zBJz%iydxrShlq>=8;O;hQOf=iBC?uL$dnjJ9|nlXQy0xO`C~^!-fsTb5s?GY7`>1~ zc0}YI5qT3LvKr1vh}|DAqcI89ED@Q57ZsSQKTbpj?FE$}8zv-L z;>*nuUv7^0a&sVfGyP>kq9wlE9P#Dmh%Yxse7QN|%MBVb(?2J^+#K=c=7=vhM|`*nuUv3b~nf^KP<>rVlH%ENAIpWLBL26NNmH2XV#Fv{RzT6z~<>rVlH%ENAIpWLB z5npa@>dU=I7girNSpi?rh3OC<+0ljnCc5xASnP+qJG$`Kbm7Oc``hP;sH-HUBXA;H zzn+SXBD*6kRd(>ve*^qjnp+_2&GZ4Zv!%MB225Bh}5!iNX&;8!tl_$p=qt}tL!&GBrX^(k_H?-=~Q zUV?Clp5X+-9CO3Jl_}H$pkzwU?qw>4{Fw&$G3y5zf!?7e_P0#12Q`BZVW!7g2@ zFgsz^V9|)an+66LcD?>{+a;LRY1H~!H)F886wx2mkl^PH3Ku(t*ypcN_XqB7C{gt8JZpq!Lh>dOCmcsn&E6r3CP-a2;~k zNJ;EbP9W+d1Bs%e=FhVCz9wMuJiDJJ81!XDv%85* z42}Wwrlva!n%$aL+K^=1 z6V_-TgRseFE48EV2k8tAjt662uLq6zaSWDy08hG;HfRxHV66?kdG1Nl5!?R`)*Urr zjk0ddH(`TwKOMuRvjJbe)^(N=vaTu^{CNEk4j(+3$irht$~Tfjpn*^UkOe3oXZlac z5mcb@?DEdRl;{HHtpXiQ8{s@|74F*{bxMfXSBvub@sPh6+&#h#$&PvboQe9~6lenZ z4?sMJ_9L>rA5>u;!pc)B12r{JLII^j?}5U8tT*G~IH44Ob3yIhjb>hR#mbtmU_^ca ze}!+^>COsfP_5A-k~Rs_sQ5HY`UJSIt0+^Y{uq}>0167ZAhkU@RiIGPH*mlddk3ny z5^Oyj($V#~AY9X)BsN)?0X1O8JDr?xaUE!56f zeH@pOM)>a8r{12%`$dwN&nb zGfYp#be7GsE(YaNJb*TP$e|A(+pM!PRi8ThB=^r z?pf9JdjwoyUimt>QMd5x4C{YjFU0HU1?U1&t=J3cS>ozy!2Qr($RNp36%DWekZP1g zY2K;^l<9~njA30B-|;B?Ij5eFink?ngcL((`am^(ZVlmx=5&;8%Oi@CKdN$uiC){5 z%APHg{lItZBi-;oS(|jC@}o;hsgzTuPMjg64+uJ-P;!ExPBDu9UxyIC4!tU#iPMvP z4L$F{mr2v`(^H6;mGWrAIEjuSzeW3-(;a4xqAVyL#y;TK%SA6&$fgcz(f&x{R+GQ3 zz4n#VliX533Up)7#=1`*hxJ3s;Bqd+^2ku!qHh zrW}f5UIG!}+XNiMEAQxeOrXbd%PM=+dk_|lXj7g&2@yPN6Amm8x?EMQ%6;Zqt0vQW z%5TNgDG(n5-t5b3$c4qjq@qEng$Is1deXp-{&LX4M*%Fyn0@e z3FvG%!d7fJB;<47K%Iekov42`_Oah7EWPKZ8Y4&o)Wmn=9O3ct!qrS}Z`$Bdp3^ag z{e9b;ph1%|3yjLspgL-lih#B^jpY~7q{gYby)o$dhPF2w_F_zN4qK&QX)~p}KI`#= z%hRF#O>;m3jj!p6!(*_$e_B8%4v0rm%x@HKa@h;N(TDd#o2eW2OQZ6$5S2NMJz@oD zI14(kK^X48BRw^{T)(M2q%SS#oP_a+>;61xgiOHir z+7Q8knkYLU?PT6Dw-aiWlZ<%gv_~m0D$k7&#d3DWqm+01xEcx5Wl1H_`_s=JhFw16SNprm{{_iCe z;&bT+!qAsUX)GU~-w?H?_hc{65w6W`W*0`SgQ7#zkEL5ukibDLLpOPAbl9&_o;?#JANNogR{l>10QC7 zpF5+`h)VR^@%wiCzK!^OIGm9Xxmniu2l##1Qj^TaoZqJ!Y?|ixF_=5|B7R={1NeCgz2oP7&Ch$e_AH-Rn=r@uL-~2tFh4$K3gEMN z9|sXW4iwxg&IIALZHy{DX947%6_)yl`bekwZ2;s|j87dpi^pLwy*YWsf_uQ!+e7v@ z*9b^@;mBp&4?e&l55XR)sJL>DPTL1(^=|mjr6UAlhqOQEuyOQ`pZBNA86tcq_ZRZ> z4mIr+voKRL{Jg_vX_Lkw-2$VTpJD@IqZvK(&>b6){rCV4%usZy)BNYK0ik)?3{1Vf zZk=F^RSvS;8W^Xw^xq z>IG!sn-3@=Bb$!5v^pHWH4p!FWHtjqW&DG5H)TKMSei(K%>cL<;tOORlZFHOfhslRT(sT1_6T9Kj`Bo9N zN4lWQ)j;n>Hyub>y_`Gear#`dCvac1_3PIe)Kg2#Q#-E)SfdoBYX(F z0}eyLhX4qd47$l==G>NjhJc(#ryp_f4lGg(*b2YA!@ng);#=3{1$(H} z#^RX&Io`2a92?}ES%FzZrtn6Yz&}zP(@g#BVyaq4ojUAv%LTA(VC~m~ZRPa@Vd#r& zzR{tPVi5yd{SpOxq3gzmWL!+sdRQqcQ@PU~-jYo~(@<7#x@^2MP?m z>e6Yz{!FpMsN6-)XSD&3W}9K^B}RLkAm=P43(IhPUBQUh8Fh9I8(De?+uS6W-q2SJ zh>2YHkmg=aNDSx^Ox+|j+Xf{W-%DrzaNi9UHcWH!A$FT$1k{~uT{s_VCh$ImsptK` z?h<2xnMPC)&GSiCJv|Q)0NZgQ9k1VqH?|m$rfc)H$&`g#A{UH&Ys=NIj3fEbP2V;A- zy?5u@@ML1g;Mv)ottbqw98Z`tS2N4t(VDB7It0(%Ip+B9 zu>|8VZf*wQ(olw23_T;1Ar^zo7AZsc=j4wKV7?7dhFA=8TLbytQHFMup+J-dBqJXS zZ}NeQ#R4%Jz`U~$Gs4H}haF`ou%isI0h$AJ?2I5}nlgj~8;O;hfxrJ1$`DQ{WJ(OA z4@2}{mS8;OR64*Q?;(!k13SvlMwB5O&Pa&dENlD&lpz+8 zW5{gGDMRd3W}w(?w5wwOe}3J;uhG942KFZrAm%*$7c4hN{mHQ29Q{frVL#JgGx8JQy^ zbL5^ma?c^cN(zyYLuBL-85wBi>dlA9$RRRvh>RQ}BZt(Hm-t2adywb-Ill;48nM{U z0PHU!7$x?DC7a;i5sbbj7!4l1%S}NOpw2&(VD#z&?X5&xdT5_aRQ$|sD-_OMT-PGs z2hpI$tr;}=c~=N#3b&rX0*nXWM&(ffz$L&Ppgr=%ym{DC>!MC9zDo{9-5g zdJx@Ov*2$f6Yb2t_#-bRRQNa;shH9ZMNz<@Yt80;0u)|d2er^D$Smb2Dy(Nt;#va& zlf~xC4nphn5N-$lqka!h$k6xLsxGw39rKj^Ix_w=rxJadr*SWqCe^|1nCvC4 zr4{L;gq}2-*CtRxAS=l^i!U)9i?rXw?o_E{CIYerLjB=CCLkkHPd(u0zY^*nriXKC z{X&6@=yWr}f0W3)XOf!M_6!?t#OqPzIr*|DspSZ#ACSTHuMNSs9+m6QN)EeN%>(ih z;or?cDCmcUt9rwSWc*XGo2bPA)e~pLQ21g`OF9~Px~o+c;j0?9LHM&U?x@(gnec`p z+#ejN(Xu`K6HHDJ(DO(a=!w=Y@*rF=@d|I~c({&lqz|SqZi2(bg#SMXOpoW8UNxRr zS2b@Eq}3Yzo;7y0ts~o2aHXLjEskQLr@JyilV1m+w7R9BU>^F#@TI@6SrH})ptwA$ zwP`JTavjhen4H)ly_3udDUn677@3|=jnH!$HW-2mFCb$}LMYIBJ?Y5p;ZX<&FUqMo zx<~93lih4h2;6R3HAm>9PF7Ro|L&^!ABe?xS^N>)PxVd74Mu`7w7a&B{YKTS8zS|q z=FJpXSeZME8^7AwMtqpF{g-XbmdsC zolp9dAP1Oo`pb zkjV@j12FcIvRN#|A;hoVUm?^F+{%6?cOtbK)B$Ya(-Xkf-zAmD2Tw55>z}-3--Ljm zJdG=$32@bZT(`L}LOeyA3z|L}=QW#)-e(~tmdS(FEuI6WSYErP zPEOt-APXS>ayVEu3kuyA5z+Ax4!s!A&Nn&AR*UjWnw0{3$OCCE`Lk{daDF#h4s#~D zpwokM&IFu4w|uh5n=2;h))OB$>dX|L9J?GF($&I2y5VGf#-{U!_BaLzWHF~a0%Iz% ztUNz43E|@*-VsALmEp`Hd_P#ZwVi{qqYQmw-Xms?&#U&OHEzm4Ql(`f8@mf+V?1AV z`sps#&9M!1>I`aAF|Qw*#m*S=d>TUjy%Uh|%>mlpjHf2*I1kp(U6|1eS@IeQQ63Gk zLgi`@Bsc!rk7qGUHP{A+VWuA0W8_-uDVMZ!?@9Xb+0lhZyW^8>twoHt8FcHor?buQ zPF1*?r;Mt?^#dNeAeFe167eoQXT5 z8P`H$wbu+a3cIP!t#;g>mZg_!*dLx-3^4D2Chf5k^50h$3fh1s=cA3`xM z!0-UF4g=$nWdJT6g4>|k2)FR(VI~j_hr_>OEC)9qWq$D?xF`cQ6Fm7*IJz-|4F@(7 zD>vgJ{3{GLoKVP=7)T#R7;Gx&eog+^G1zttwqHE(s#p%JUcUEXPRkqpIuwmL1nTHRY z_7_pv4#vTfFYet@*}kN*`Rxtr+fAH5l*;zuqy({ChTeRF7vd*b2Wa2-rs$}0tK$O9 zRx5}J17e3w53<#l0`>g{hAEEQ?MNy-40*zFI}76bQ#`4(Bl{Y;qLIudm5E8o5p--r zj9jg{0$?doPNU970vh=v4!RxnFmzr5GQep|BLLR+h9Jy&Sy(xoG>fEV&049j$mpV( zkg{9_X%0T)8;4KrH@MSb1w>XK&nY3+s3uz7Tsu=L+Rl{chnwb-*8f>W0QSH*Q_dW; zRmnhipY{uhqt~-3dEu~;U0R~1&eYN4`3IO20AYZx2oG57*TIeIPN8%H4sg2p;f4r8 zr<{iLq_1`GxIEq556esMmZ=6f!sB*rdZq{5v;p3UCsZ$%kMKZ?$2Dj7mC8LsgT?UG zMp{^dITc=?`wmPLbm%9)M@kz%RaUR@M4sx5Gj|;9B%Wf8^G!N0XcYt2&Jbs=5;^s6 z*5{#H%nQeQ1lJ1JM@Ol4^FB{1*Nqz{JgR-3O>i5^q|bW%AXQ;(I?eZa4(BLlL!1l@ zS2aRG{BThMJ*p$@SwucOeV~HpF*}EZyIG)~F^`b=_FYO=>&G=$;5LG$Q|Ww$*@xtY zfX~*w^9%8dW7pJV^Jo&1j;_xIA(^}a2=%y!$!|U>c%1-+YnlfmoxA!6paO54QsDGJ zgF~9@>>9z);Rd+rbi8vmt0WwhG@(+Sls& zlFnS%Qowh=PYMg%_QFl>9q8|m05nDJLD|03Gfg|S8W?Ya+p_W;@9rzvh6@1UOVF4Z zL)1tD!VJ-Gv3Z&SP!53UybV6|;5JH^h=KG(30YSaA@-QrRciN7fO7 zvx2mpfF0ZX0<;(82;#uFx`3_uWt;`P;c-O6t`F@+Z<_!xd@2RxOjN#C8=a=u|uxHi>p5 zZ#3(G%OvR|R=mCp0wmU-@&%yaex-KP$U(TtMK^z6td08BQguM7B%x0Lr)K&q)dCnoT=SR9vU`Zb@^+69tI$3r8{9e%GUcA=L@XFP6z?IwFsv8in)Nq} zLq?eDxDaLxn__WXVbMQaFow?27xS>yZNf!2slsB1v?# z7DNYcUP}I`%GsR5akI3F=i%S5e#rNjkj7%?MuAb~5*p>FU+jYv*mF=x=1$_$(VJ~J zLtZag-Znpypd)iNfT&kairt!oPAV}AwFFurj$?0b*zp zKA>cF-wC!Kk^~l}HDIt_UW2jp(Zng`Ys|sIqgakj>e?_&QgPG+eyv`MmvbbX32zLFV@6>PmknQSkgC=|<&D zBR6o+$*EO43N6a9=$$8epb`+9mt? zB^IcFqX6QBQ|P_SP33?#(@({CtM|San--5|*-B=XLo)Z|J%vEzPwkqY_!6j;+cBJe$m z17YYZ_enfW(~?*^4mfVS%rq4%DZLCXD0x-1cS#R4M@YoaI}dwh?@1+4 zdJW#%qm;Q5SM^I9WJ^CDJn-*U9AFzHt67nNM(p#|Uew?h+&lq+jsndZrGsytfYP2Q zKp6~9r}+fLS8jEwco>g5137A_c&Zx!q2j5!|BF;S{B!ch2DlUksCcUHz#1yW&P;B* zREixHZ%4)3QSr7z#lwM(#LCS`75@qq4<{5dB?i)m5h|YQNwX$@?5KF#%^y26xt*EZ z&P*;GV*-&F5SzkmNVTk;kv?ZU&e^}r=$kwdUs&cKArcb_k(*_We}IaIS!`rB=2SeD z(`K5Ar!wGvoQfAEOtmOssznJ?4UF$pf*NQKOg|8&T8uE&VuS++QUTN7Aso0E897Eq zj!j2KdI|WK!}N6IFg+bP48jT1A5BLN15J7QFVm63^mODf_&860L`G)F$P5`7Ja^UK zVaUjg4!aINH1aGzXV=9dkoCSVSR#@sR>dOK0`v+29qGJH- z$kxx}2to<|WyRzGNwT}9op;F*k$sh`DD)m=m)eDe&Iufr2dmI$1qdayEUxUhZ?Osq zAsu={nt-S&JMOROx2JW4QHRNgMACEfY7@KR(K)}|;|3t%VO2>pC){#pf?hh6=S_*5 zqKQ2PqblYOwOJNhwyQwGKfD29iVSBt?gu?&!!)tMv8F9&3a4(N(dh)`SH1*o+z6|9Jt+a2x5z<~ z6;hDxZzL5Tq`@D~K}?21ByNN@c~-m`Lq~*XQ-My~V-u9+#<0cS^j;{8rJA#kupKKf zDe|HocobtqQLPt7SRfbd!Lrnb$p+Q7wR%u%K=sFLV2;A8RoY*Opu+StqwacJ*}&*g z33PU;psKO)1_o$*={HSE)wMa=?goYdZ>PrUZ5-4}s;@_T|FnQ))sGWO()PAd&_^2> zCil21U$3J#@k15&Q;2<-xIvfVvx=KxBmuMOIKTpw5h@$O@GB)Hp6ysmY-I@LpEW{ z)+{d93?@1k&<6vJf)Aa-KjmL_#n~bRA9LOU#{9fWW&WJ8A^neUyVIZpHQpc|{)a@p zPU~U#M!0qKkVjTUlq$^7ikIQ5vbHP#p#KQnCGQz#S^LD^Nh++$UKAY?gSg~V=@ zltL1Z`Al@VJ=#IK9yu!IGtw!<Oab0Pukxvt&-6k6=zeD=M?i*J1YM!Zpz7WP*4a zD3zq+7q^leeK*Et0%aCNOzEN`f3Pay*?$3w*_B_D2uwAv@YyikGU&VcXRENN^qb!o zZSgUwam&q(_UyPc)s5}Hqck3Qr zhV!JV;1kZ1s&~K0dBQ&@e{2A>Zh-To>g}(=tnWBa+r_N!I8Qsy(~k4B9nKRDY$R50 zhF!mNotX&J%Xi zBC|2)JgMGVra4cl6W333p2FahI;8{={t!d>LoDGBv4lUw68;dF*r|WT5@r%hm`N;Q zCV{u>^moX}EEyTQOqYK#VUCQfT1%sUAtQrXtor918Cf-)M!!Qw=E%q#85vu`p^;S+ zIP`(sbBK(rYGp24$Ly{M|F@oS0khaW6?-kB_#wkxm7z})?t^4yF)v|p zT+N+sh@9Ecp?*Y<4Xp^n-e6ln6aElt{V$|LA^uJdX{2t{2R7=J^+SDN1LjWsMmYX@ zaC-|~)BA+lNiAGQAE1Bgasy;J?2rPHv#4fX%mWFHN5VlThA256V!c?|lk2w!3doM< zVvw20*ah$w|#PI^_;U5{*g=fbB#fUiHHVOMnK0Q{@V zE7!x_0L>?y=ji-pEp5Q?4uh!&{Cv_USJ}wv?a>ivPTvfY)Lq06H`$<*?sw^luh=F} zfcnqc<=W&UiQPviA;LDNd@tYIP`E0MHEQMNp}7&m^jG1c)Br)D9*`=KtD#(^kimf` z@UxpUruJAp(44CMIo<*Hk$-~uiZ^FBLp@7(;_}ytN2eknTiTrQI)v1%ZO($h)lK#9 z*qreOgT7^(GZSHWLk~r4eoOJj!Z7kAvtV-;FgTqSZO+W(P%AcPMjzgfY|e5txPCH; zPr1ucYQ}@J@Qm@BOgzw?t2&o&BM66ArjN$?)G~WeFT&l$kH&#F?sn)uU$MJcXWhH$zU&`igkUxp zQe`qAr?(wnUJ&&<9IP^>Ek9#KzPx(WlOJ}T#LUfGX600unXof^U}z{H78=&kp$<~Y z_ch^6*sqzlYXS40SvhUkQr3uH82d2Jj)cS@$r7(8H>cWhS02lv*zFwgQ`i+0UhPYP(?kkr%Wp2l z%M8QNscyp)-O$*4=MuJa3ENT|#^Ybzq5Y0ZKV*c7(F+ z5(0LFvK^spM=0A4p$rE$5-T^O2K+08GMrGzlo&`KMhImQ3}RoCKX!z&?dFdip=?Je z+Y!pFB$VNBMndFfS>qodltmB?iOj~FPzFH_?-`2CM!PEZ|L4~o{QvYXh5>?B1dOR3 z{tK3yqyA)AZ;pN?ldzxZzmI=$k?HQ{bl9(-H^=Z-!Ba{36|6M>XZ$Oe?^R!#;`D#B z)Bnw@gr{J+Kdz3Ozv%yhm0|TA51LBB|MS0tCJX|92sE|ounAXD_e{ae`+I*pf=e*r zFrjo|OE5&mQcb|n2SVuz6XKOB>4APkh*x1k=?W7{mn!rDzoU|=(Fa25;t8b-Q}NKX zRPr7AKqy^28Cl)!p&yZvBZS}n4ECskNc$;U)@E?Of8aaC!c#O zhhb*HqQ=<|9{?6bhAtqZd}x#FXC4tWLiKz4Ht4i^A)y6$!R07>#oY z_FmAL9Ph|rfilAEmz3vXk(Ubj{WM5UzwCq6m}r}JS)N=)+4peeM}qvG+(X0@%*2A- zD1g3x>ezip2E*hERnz^o74c)t+jgbpO?hK!H5KWCnKN)R-dG4w*<1-SX0DdXJ#c>z zQXjKSVoW`qzmQx^!Ol>p4m;g)fq*9vU+clP@_K^bP%eGZq~(Tt7{V_n2I&XOLxBd6 z{!vs4_y+^&vEB-7*aB^ajQSKt&xi68cm(YYfggN#0AaWVj)kp)9ZA{;$em{1F>oL5 z^f8$mIOwEmU?_D?Msl4y+wsq`e?tV`@y|fU_IETsqXzkBsPQQw6U=XOa&hC+C}C>* z4jAly+*sv3qrrB~t^EwaLhx<0SKLoi zxziqopfg_aq)ipiEC`_G**kKwy;X`kcy|zz*EM|e1mhMvlIwN3 zwzyB)x%VWz`;IPnkfFt36z6?>8q3`*9wrL3E9G#qd5xbl2FfxS5E2q}Bi zdl2fxHU~bQ)t(rdh%wFN%%X}B`wkUiW`@U^WiEOnO6t7wAdFw~1nHw(4EuG!UA0(B zeku!Or&)2!em*K~xEJ5R(r6auN=4h5^89eqj3lqb3lNUk)5L>A^J?+m;B5YZp%2gQ zJ-TH1)b6Jxnr!f-?Z)t+>E4quK#~-G}g|tP2K0y&k(o z$HAcR5Yb-ETw0v4U|ptX&7=oHK7JNSwhAPtc{*M1ETq8f;e&r^@Ar*)HpbbsBHH3= z(En}(TB{OJ{ImzEM>e9fhz%J z&&Nb^j@(03HF-uSscJ1H?Fsj5?%4>i8{f0foC%1OdpuvLHZ2ar*j0#gmXd`P_6T)} z^~Iioul15lWsWjZgsJBN@y?2l@|QP zGd01Pco=xQ!iOllD{{0Pl^)t3F;s2l(Q)blNEw_$xk~#PWCad>+mj1-=Dk*RFXicB zhe|1v9+f)i!+)R>q+7?U9*h~Umm!rPbD$Ci#{L@@l*DNu<_74?r9pYlRAq$c&oD8g zS##_yEgw^&J!Xg*+m4AQ*cq5Lzme~-%9_8Vjd?Ns5b@e~JPLn7yzcvkXX45D?iK3J z{S>5pUk{!CF+!qJ9)Yk(HVd2JA}akV6WGb!(wRyjzDZ2P2d2g?k_7RkEDZP957=$L zIpEeZ4&Z6HKwTup-pF+xx<-YYJ_p;}h8y1`e0u9ojqo06TI@!>UO2*RC2}9frI)3Z z{T;^3w^(dj+nTE$Jm$UQfb4g5NWa4~7gEp@zR3aizAzFy?(#d@@N!GLz^mIOfdJ=I zcyjUJQJtE)M|70R_OoHkkx{&CPRPCqf$(f=DGDF0V-#c4cHwP!vOh0z_@vGChyr65 zg-ERo^E@R89qouI*DS?5h0yKF}!Gzbb^0Q{@4I&*Z}Dyis4ObK*KxI$#y}*JJQLH zbh0CzY=?A$0~?8zo56?w719Y#C}c_uqz@yclPHGkuE`%e(#dx7$BuNeBc1F>CsvY9 za5y6&aV@^7WPKoL!Nhd%@!CaLeCY`7h8AR70^pOZ5d8qp>_>sB` zLLUfyBueNb>MjiZh!9hvggz1_^btHyh+?A7417?(EBZj_BQY{^jEo#3l$RJ8IYvf~ zk&$EMo@3K{=IJRhg{P+@^YnCNo}P}()6Bu}i9hs-e$P5{oAtN(n zWJVo%$?^z)SF$)hXSy(SEW+-nE`Jf#MREj7sWQEzx_nJ_dCV^#!R?zkI{hQ5E+4jD zMAPBTRi0dj+1ESqjmlO66F97Pyk}ot(>>hxQ}#DfokA_9@dO0G!b)J;XsMqT0Mzga zyl_sykqVWTe~NhPh3x=#JBF6aWl2^fUpOFBBhC+$n1Sce7O@43htEkQ;pW{S|OzI^pD|@@1WPLhVKllMjic=jPQWcEh9dIlKn?riWD}&76d15HjC# zuhIm5O~s6z>fqOOQ7UuNOXP6h-3nm5l+=oa1=JT0pl0kde#r3PJx-~)$Bj{QqeMxm zBSw+BEDtz0dKhmU*=~@8zAFRRJ1;cW_c=i7yxCYkZEj|B_BfZq`%wXSA?JN5ejCW*>zeq?s*b(`v6AoB#XveDJj9v^GsY9sC2XbzJ5eD$3CW6};@Lk1JU<`5%j=rg{T1F*_?d6bu5d+*H0 z>oM5gKP@1}A)*u&^UKAUIp7#8d#?_RQi{TpW0zyYyehF!L8Xw0YXkWc&g+-oVqSr2 zIF_j&o?L#)>^uQyfLvJiRa!wx%02l2N^|T(bvsatCX_RC-aZQmm#u0?#T^y|{&=Bm zT-4n)3MnnpfTuprEX|NUq%;h*~mw0X%Ybd26O3b&cErPRc29)QXtPB$2 zb8wZ1Tbfu?fD+6Nn(!-9&I#wL2SnjwpMbglJRlXO-RN!s82RA__NxH62ZukEwQ3#E zAJ1Qx)tNt?Y&tsBWE@jD09mdkbo??P2!e&7hGjqBx&f`PK7q1v?{#@UnA{{pq8Py# zWF1+6{6SRvKL>TMQg%XL+0-5TL~ufgwIvsq@=a0q&50L^{3Ml$Nl64Vb%d2C-&IVr zEap+gkXIc}$2FsD&pQX0AGsgI&=u#$v2MO|SiCh)h>@#RS3tgPHqjA7D?41{fEnSiJrm31Ki))5Vn?{Dtvkg0`)hec?V6M8R5MU&p!3`#FdNd@dNmm zd(e(~+()j29Aw4Z07peTbL;E1LYWB2B4VcKi6yh7O zu=RC1;dUo}IJ$y|{P7U)h@o45d}Sq?+N|J}c+)nt5-r*q8NZqpTO-3)+jO(y<-m^P zafOYe+qvR4kxYDYJm({x<$>OxVOZKeE*%(V8EgG`E>zk_B^tyC@^WGij$s8e05 z9I?jvCb@CS5xZD*Fmp7vaxABsF2VlDz!xll=~Bt(ur0ijP>P%Ae@q>513Hd!db_dh zQ;tzh{Waku0j}YX*bGSVq|y$EgjY1_NI*=4SP~HukNycVNtZNF-xTE-RYo-2&_#MV zD%TiNMVB1W)yU%9Z0?45F4x}oeH?x zdeOV!SKO5}3l+uq08>A3#{~W??*^WT;*!MDWfHbzz@M%Z%RUSGB&Sz_ttVzJ+0gU` zCTElhQu&xoX9TiFxtC$i-@rn+P<@4>$n~MpeV{<&VI9c(!OCg9Ov&yiuh=<$8{*y* zq_%`(!FiZt`qGT`5r#)`?E_{`ZV21WuoF=#?YX-fuX{N&t?D!6T6%kk)je3zqey}B zg%6nWAK0pj0~S*c+IubcyIjkRJgd*#6rmRFXY?F~bb4bOr$E$7pqD{63&!K*=a>gg1})0Td8v-*TN z%g<_KedHX9-0ep;tWp+}X_pI~zS$syWk4D((*syQcK{tRXU~BS-hhc&C=bv}5`^rR z*vqyLifNqvW=%clc|D!-nb%ygvRvKFxa&rE;CNdV{tn%7Y0oJip0;@<9lvMRJ)vvK>rkA52(`d)xl^h76Y;bZS0Y;qdTw)f6nG0PMsDh6tX5eNLnIy@9U zATRIo4*-6Fo(G+_qcWuj`(*nCISyoK>F9uSqkS2Y(F?jEkR1k)$#P(6H7(P^@qX)1 zNqqP{(qq=G!4N$5JB9Cu$P7~K&~vHMzZ&NVkB>LF8o!1$sC%^toxk@<3s*CTkHBp) zy%IuKA7q$;ZUHyJ1uiVTs!Oil43khn73=^v>HCG@^7(<;%?f^>OZozD&z1j|`mg!k7>$R`Y7c!v_*f2ufoDir z4d+wE1ryGviU3~ZeBz&zKQ=(xF~Ip$5y)#eJ3G$jb~!sc&gYKvx#N6phx3U88;O;h zv3LFz&L>VNWJ(OA4bJnN}4&2MIC)d6EEFul2;N(6^!>NBT3@7(z z`(kJaC_eyzg-~OFm8sH+9bnu_0JwqIVI|vem6y)-d2ZGvasq$u&^bkGO+)BKs{nVagrtM}sJ8yX6S-ZMV~wcr!?^1EOz z0C4uWJ7$y*x?y*P4VYn{Zq{8%onC=2*cnRpLuL62?0^L`pYYkB856Y1v%D-VURe2tR_jB}J-D*9V2 zNj^pLG(n|37EET!eWeBp6Re-y^Rpd6D*b97S4A)ajSB95WQTh`9AmY%wvT6-dfpFIRU0EP^~fG0*HTZpC2u3#wr>L3Sc`qtX>A`n9}|cE@&ypX zK({|LsdvQ=n;v9aq1P&=Va!w=#BE^pP4Jfg#9{(NPT)VhxC+<%O;~-sJh%;@V(L$( zFsG%>2u=>UK_hnm(Z(#L-Hv3b|>E}`< zW^_6+I%GqrX^sPAlfm^;*t+`!+T$2tPCu{#;hxG=SXUPy{vS#3TDb&JozNWvcJ9=9 zXv@Fmu`myS(8X2BbW`aaGmZyuT7K0UIOYKd2|RD7fVl-`JZ#kql(@ZpaxWPc1f(wf z0JFTy=Q3P7KnC2Hb8usnH2vpt z4vcz2{siYh&roa|sT^?*jJr}=!8tH~H48WgtWkdWPjC*5GPbSa9Ng$|Xmq5hEZM0e zeGFjS8M56(JM|nA_V~8RG3Fc?olXmO>Zd@zOc|Wc57SCteC1XTbg6b8XT7gw&}B#! zNS%T%L#h<&0_alxIr(D)sF|-pmmyV(bq#1{2fExYXl4hx+<`84pv$d*F4e$BV&!J= znSTUysU{RMB?i)m0nlYgmFZrSKX#zY?dFdi=yC_T+<`7F1YN4(jD*O|vc^9Ey2M5c zWH#oYOVxJ4H0YAS*uozNU4{sNF+>22Ap&3w5ddSD02sprz!)X~#xQ|Kh6yw>OrVir zGIE%V93~@&$;dnznI|LjWMrO<%#)FMGBU4@yl89@!m~~u#^`bhDPN1*gfhw$ ztK<05$t#;sO2a}t;HVr%A~EhR9z1yE;;p#*IbNV^C1^SO zZuzUc?J*Kfw>*jJRa*{Ej$Zl)Lhk%3>8^C{*S41psk_x)hwM`$8C|qvK5dSWIC&5h zaSmRngJTzHhZYqV0MS?<_!isUaxMDYR(r=sZ?+HBv0%^FKBJpCiU&cKw+Nhb-7O=8 z%&Eo%sMP7x$AWi3I({ap8j9`f@fi}5g(>m-6G=DCjHCQf^eTFCa$g{(=U7cKVFNDx zwVg^I*t;3Fd*ouD4j-eGl1pUZ;M}{9Z+xoaO67|RLCPLJ_?M>69Lj)aNx&s zT619vtN@v*Wcn_62X7OrA`}Z?Rqq^r#>#t#C+y>%zpMvVWqh&m$$}iRM$P0SpXk7Q z>E6U6`yIW+@M6y{r1xSE9!`eA{%QAoW#y2rprNRI^8n|&0Qy;)Q|-!$hQ@)5^3tL) z^}a;|Om+XB1N`4<7`@o*-nS<7KEuMINaUh8v?0wF)OZbPrjFB5k;+73ef*d)aTZTJCSE; z2*8CsKpIJYF~e$ncnbA9`Y0C%MdGE9HedYEU-0KRd+Zgu*Ze5Y*^~Ua<~5+39l-sQWu`EsN84Z3}A4C{&Pv7eP-CB~}NxqP7?U7a9zO_k>}`O~YjZqq<= z^;YMz1*>!6LTgrMvn)2Ph@DT7<$RBBvi6uczI-oQu^}qbV1Y7@%_@}7Hbmfu2MUJA z^=QReXs_;=&6k`kh2ms#e(|3zIhn%%zjUahTXHHWvVI@+f=bTC3+XMILWvVX-6O$@ zuzAnVJRNj5E0%;!hJBXaZaxc}*Ar`!x_0V5P3rNNUQfxC-!nzo&qpOqx-%tCiMI-% zNH?GtUiOvqwW@n&Bw&a55)7+y*K0)oOrIzn1vQeW8vSj2qO>XV51l9leX|ScE}HO= z9Xl-wpt*}dXkkvZCvw&V(3^VbivapE+%H)XKo_3T*C$GscS-lf_z zOSfDf(^K({kCn_d1>n$=%ShLso!mX$zDW;n`>9!PQK8bFpe+-vjcwRM0n3U*-@rL* zFy0A>)0#xg9Pk1}lH@~Qc>r!SybUa~^Y2p2f6pP04PRrW8rg47Do z#W-{Ce?XGPsFUdhGv7ihksH`wL}(mF!pOad0)r3#LH6aPQ3V$g|Gtpq&g?S>2_9b; z5r6jO`)K2N>44Kz7(oYb6V~xru$=k%DGndBR^N&s*0G<21=1fQ!?e_^_2YSj=5J!9zJ7g&yu%SZcwS#B$+^yO7*NHe&W5UD!WW zo{uN4V7YxQATl#0B)f`7*+1`97rx~>a5zRt%v$^!aJVWSMZn>zOw=Mc9RHmBu>o|S z0dTk~Q?&-%w*!Z77u>f4hws4QJ8<}Rz~MNskyyDI%c3Q zMvjt^qh#bL89AzsyaW!%vrZny7vOLv{BKF>{@((JcOp^xuollDl{o-$EOs7E^$0!~ zZzhGD%jR9=mF|C{`j#p1SLp(ny!Wpi0K$*%9rpGLX|a=_y8vF79pEr}zMm;v?W=&N*e+^9BZUqqcOPDw-1^aJSw47@kQ?=D1+if{> zUqI0Z4^5j@OVk8RJkfOVr+_F69!iCWVFZ9XshBp7e@o~lK)=vT;eOKQ4@rI#^*KaJj509vm{@8m52=Pq1GAH5T?488NjE~Blt z!)f>u4F957vqUu)`gFS#%9JY?B}BG%W-8ghW#-&>@*;e+j=TR?kmRSwh>WpqBze@T zczUDZj%d$DEQzP*;m^_P;o-{}r%kvf<#_~b-xyLlh@euL~3Z?-<~UtD;WQinN8Dz3t*g$u1YgW995B8uHJ z%ZX|$L3MHJ)_o&}>cws}du-qZj*ghz@xI46YF7(h{}i?BJ##6NkN1lmxBD3Z?=+$r z=C@FP1F+oQT$yL{Oj|8FS{vbxnO7&*vxxTa1?bxv+JljA#J^jT{AmqT{?p_iJG2Q; z3E;|H4HKFKj?DdGNbDBYpUcj)pTLziQS#S9~$L6@s`!315d8Urt)%kj_2 z9~*!N8bFt;#>8vTfje~hcF}=5bomZlzC)L92VIT>8;O;h;ROE`bU98aWJ(OA4V2zi8_LdYZZ6ha=Mrz1z`>Bte)JL(q` zQ5~Johv~=>dOC7Mb(BIsA|o?oWQL54HQ&p>meA#R*2%;83SG{IcGBa2sq{GGV}$q) zU2X(j?pZl}G}B-BBhlsX^h29NcQp`ctwIh+gP_CPhgU0(qnokMk>8eRnS~5|Bi7xn zY-l2Y^?0;+`5!)x4zQj>r83ub`Dw|h1uXVj$taf<8oCP?S|b_t>I@aELP~sfHA|2Z zUy6_qlMc!%-6-uh`ssCw#EBQIA%1$DcIQg{>({9jAl`)wtzW0dR;|;ou4c(Py@`B< zoJZ@lQ#=Z`#GvT zjN)mAc|GS>=Fj{()qbO&UZ;P7I=QR1GSBAM=~ozVK=cH8s}Mc)d@S;bGMP1q9wXl< zW(}gp6yiJzl60|=?2Cb?4g36luVm{zX$dy?Zz9fbPAmZNeu+2_37!6}HIk;Z2BfXs zuvx+{V+?$wuI>563M8*7#qywAaXSZ|?CV`)-zwx;O`|RR!^pEm?d|o*vzP15LA+my ze78UY(Gr(2t;n~Qo@h-d{R+@tv<$ziLC$}c?S)vQYSqI05?u~Xeo-nTKzA1|q`PrK&$7_6;tcA~K$o{3 zMN3e-S{VDMs9m?%?ZrNR22+0APbgkbN&pypxdrxjaTeL%@gQS+*cU!TW?w^{nVDA^ z)!$geE3XZketTmRJ1)$9@M?h3+JrlRXK7K`{39^sMa!_dCdA6E44Ypf$+sRh7f{M; z!>0Gqg8k9Lh1P^ktB&sf3?zB0Az2bO7t#J-l5s5zn_uF`O@>WVWS|eA&E0=tqmgY_ ziwW7+FG0ALM&1nPe(kcZv~nbjJlFfc_DuSxQsJ)(Skls$2e}Lz3?TvTFsN%cCdeUq zPe}5|?#z3w`i#Y+C@J?CgO|<@0_MKA&f#9o_b!HR{qZbECE4JMw{HXCDf_;B+j8@B zwQjLnlagZBk)9~hSxCXE=)$E-XoAQ$oaJO&rxEx!KSN1jp9ikn=Q5FphW2>JlvEY= z?EIX4#^3hjHYkx-LXp$M(?aC*_FjPNK6a#hBRNC_*bgdO2}~&YG9I8LTayxo!*(Qd zUK_NOY;)qxwv(-H_PLh`;Zc?(*-v7b!mZOQQ{MWAl5One6weu(5k3SS>}dK!7_WB3 z!INpr%fTaV=l);nzvg>mG#)mqJ@g5+|3er@F#`fS?pa0emZLCALy^6fy#abP2{ax*aCzXBo03586Ff%IVnLLR~> zyfyh_2O-~X{@6jtcM$R&gxpF9ISyweL~fQf{s9Pi2;r#7Y|J6#A&h-C4IvLtcQ>cQ ze*L^T{&n{&cq%Esf|cg~jDH35z3NL-oc?ci`oDPg1Ls!?p5gd@Pu^Xmx6) z?x&i|fv@1=TVI{rf{6F})%lp;SWwr$a3THG`C-}W)Pk$GvO2$li^J+X_FED=7oX8j z_VB(0iEn>(E@*47U!5-}u1#a7f8j!FR;SCV*r|n7Z)bIW0TSn<@!+8~t5Y*|KNUOu zUqQpSzB(6S$Lm+;;KIG>>hygjM&7y>ty-O5!L}`_JHHYmht+?HH3yugpmTH+{KViq@xr(8EkE@W180+v3tgNC z44mC9*P_oWLek&hEG%eduLs}0Xuc{${+A4w8SaIc+Us6{F2otw=jCac6N3SV=pBqb z=nd$hcLDx`-Tf9Wqzk?+StsKhMvVF7T9+D2bTbwK^|}R1|HUHktp-s4X?piaE!QEP zxp4TcAuf1X=`1_7?ZlNYOl%k)=$RA34c(^>iqVXc&GhVx5I`t*Su30-{^8 zKRTu9!)l6K`x@{Sdx5cnl9&rFU+7bFkt>@NtR|hg+u%db3f8R8yDYfysZWzQy?EvE zF$o?g1&J~xb_~+!0 z4WRrCfW*TX`mhG%w*!f97v#4CiSIz-JCOKxK;k&CkyyDI-0xojiQ|Mqro=${Fai<} zV_4jp{ILUxZ#RGJK;k=)_zom)B}g2HGZG><%NqXxNSsH&W-=RdkT^djmKK|hc2(^E z4`8v;FER{3tRpcRfZf4zbJU*<>rIU34k~?sZ-@Bl?&gO<;;Otkf?yN8w#vnYe^D8- z=mSB5hX@i}W$21bghlxBMLq=LKB#+J>{=3N_q?3+XqU*{6c7V}(dwExO!;(sB$eX*g>E z+}hV*&>vZZ#npi9f3)HJC0u;_4QJL9nY|?I8_pM-3*jzaNWbCCF-)Rawj_#z^x-je zHph}`myb13bYbe&ej}+L$}B6G|7h1a>|-A$?)a>?zH!&tJSA)ql)M(2Tjw7) zhvt3-9PdBM;Jk63u_BZ{MOas=6P-=$Rzm6G)ahe);2T-w(V&IG|7by4(@63DhJtiK zuX=q!%4RFIqYVpE*8e%+8ao=mIt}h++k1x!oxk@pk68s>Mk&^H@Wg(8NlWrRl)sOW1qhZla1UA+=^w+9gPS|krc$9d3)!__;>Z_M zeoyRnjuzl$plg`&D>BpCUmtyp>o?C|m-VG-Yh{;e9t-&u{<=sXMZ_ybE?#ER7ku%W zVWhjt8Yr^pXQf6u51?e(!#;b(Lmepc08vDPUx3&xsQ|vxGB1=u!s%reg5b(YFa9ev%C=!_dqZ1dHO<>kERj0U(YSC%ZR8vV)fN@T>$2 zsRV>~hrOt?kg&uv^#uYPo8U20CnqEd)h2&_VFM`l;w4QzUv=$%aY<{|t_BOPJqjyS zIBU)T41vzm_m1pyCsY2v3Oe_{S`cWz1fA2(a^c$IKpW5?wzV1Cn#KBs`ngV^-S9=k zfmRE9*E<|o4764sv3{vmz8Gz{!|7RoJFl&1ZL8&_c}|bdw~VXS?uD>)1+K`_SI!In zy8Pi{pOb|XAPRZhjPKQ+ryK6$V|zUE5P^RS^nga>?lHOS9T0owNPE5AyEQ%}Ut!-L z;FYAWSKfW|tpM$X^mbm)f$Zxzl&3P2dROeQ=|Q#?daWu?zN?t#4!*(e@iAq;;ltL; z!T@AQX2c%Q1-AoMEWRlZF>3>5}Ucn}@p{ z2nSTQFWHo*@q-_@PFxiEq|o4n5pqa{^oI-r$k&r}LW2a4zPqd;ZO3Xh89<0(`R#X;NqA|N-Sjf}GA zJ4ph~>6psC2>}U&z#CPh2L1vv;RihEs=rKyz(e8Q`_w5z%$_bUe$yEKb99==+Gr-P ze^jhI7mK`9$nU*DwG=2YKKlI;%sIFTXqjKXz_&~Xgv3Jyq}P4n0MKu)-j!tTItJgv zI{|9UU|(wPab3_ifAYg9`%$UzPzfqhmsQ|vCBTJdCJ2B0K2o5w=V3BMM~43Y>|IxT z;>fmrzrUi%K?DU92nGp+$Try+XTTT?nEe0mDiLgO5<~Z#bNb_9dSsHM3cE^sg{?g} z?@^wnSF3^1Ac;cs@_~|Ep`k&#a>w#?(E01Fu{w@4;eL>kYiGk(A2tQp|8`|a{ z=Zi$|arTR0#sBl4KaSuoOO~E)moh_e;?JUe^$FcT^3(Njwh58Ptr~v;KV2lW?M-XE z@zce%ru9I6y10J2`Iq_WD>gmY-z$DRIoMFeSI=AIl?_!~*pSeL6;*tPA+F!|ra8W6 zh;so^I5EWkM;YR*%X=MTl6SQ%6&=i+?;q<2!hy*Pw-P1L(OdH31IQnKd{J`3Wh@t` zBD$Xn1ul!8mzZ^1Qw;-lwEAvrLtaHxtaFO;%!*8ea-4o?*uV2u+J0>R@6`2qf5 zh0;vByLCO{=-IF4;!5O*Nvxx)KbnmHYcz;=zT98ZAn4!0(0zBJ&(p4S*QpJ46gjNM zYl))=@P7l7JnxDB9u(OSlYE0Bhcol>gA!CDa~$qetwI#^W<3ezD}1dLd6R zJ|2NDT+Je+=;>GB##>l2YOz-ow&d%t;W$QXq*6OfCnCH9r9M+ZEN3GbxQiU8y_(;t zImfhD4rhBM&DFF^nls(mjRyz8V!CG{zh}|1ygTcm&^E&91H9^B11MQzl+W@S(An=k6^i#du3t2t2Y7l2XB<+mtO zYhh7+<(fy1crSxk= z>mJ-&z${Piyc4B7)>@jm&gImuk1m9m8}BWdx&)GRy8%RY!>Nh&IS!yo#5h>isC8ZA z=guQQF0WaRa3$*oB{K{9dDU(;Zcg4vorj&keNaaMzl<(f=;@M=tXTXEmCn`7$#(I< zuSGPQhki=E6aa9WBT4Ffyug*3hDtTNw5yp%K#~`;@FI16<#rOljX{S#zoI(wtq1Kw z&y;GfVFzp%lHQ6cqXP59_J(u%>72Q!J>-`Tf4Sd~$&XTU1o)|Du8bbv-K9`%ehSX% zPpI1myghJET-imf!8vJFkqf1?Hsy)+_cvcQkX^^aW+pBnFlbBjB90HWE33bN@b$cmn6d6F7GQ=YA(Rr-!pm zh&*o9_zS=}iNI-_)_4Qwq&1=MKyXf4Ki&Mx;GDQB?YjfB>36WXu^(VIp6355nC(`S zmZfCKCl+5rxsZGt%4!lD?3?|mVEUR`1Piu@Sj1T!+=L(6?s+KZPfPe*=vw4U(*~tj zLe5~m-b{x4FNG_q_~3E|p9|-4et8$XI4%+2>dn~uPGnR3L|5JypXNlwMf}Cjo~g6E zm5L7v-h~{_IFP&uzj%=NaGMCDHc1G!E$x1g^B^;ky+k5F&iPMNFr`;A2@n7(?rJG&KLJ(OHKe~@RhK8V)2v|Xtx<3O^_=h%-#`nO!O z5uG6^=TZr9w)VuglZ~pp>N-Ov#b_&?p?JxK`y`p}Rw{#+1tI!(i7G(U?uWkOhtaeF z;f$7fVBMy;`p#)US1^9j$zDpHB%jr8X%R)&cKw<&J9KGoXFou|Y!ezAa$sjJF0BO% zvXFn5n?qgPgRoE1@kO4qb?EF4&hBziadtW-7*!ZYmP_yKY&zA?i_6FkATz&q_^Z)} zoa#3_>x752fNnJR&m3kl&xg`1B+bC&MUb`<2z5Dl}n&g|E`#3n0 zI#_EdW_=t?BndsecPPyK#E}_F{ z&$Ng8Xb{=%E0#*uLq5n_Y_AYh#HP6B2QTCsWu*OgDu=KS=a*yZXPhJ@Pmyf0M}4;3`jNJ-21wSvixj_LAxatv;UPk# zI6(}g^@W>L3hNJ0YO8KruZV?C0AibK+kUej94(l(97(;Kji0$>tfIx_-W3mAU5sQ- zSxz8k_V`Kg5Y=vnVlc+dQ2-B~QQ~35Q<~d;p<==gef!t<4~9i+$iSZ=v?-soGU~aR z>amzry>m|2e1|(G>p6U4R9qZp z2+YoA_LNP1@~(PcU7no*fyqtKdG<-tbK4K5ZVDEMj^j{?%3w?YikX^qx&+eu*zug3 z7y?j0oJFLKl>5c55A^jousl&@;Uhp*qZc2FrK2=#x~!gz?A-2cfvrTM-qU<=PFCGj z$Ox9GWFDOy7KoG`!!cLx%9p8;S&`Z{3#BfpD3!RCIE?YZQl8R{CE2R^2(D%&A~R;S zoT!$HpmxjY=2ue^67>k3W#f&yUUuz*y)${s`&vfb55Sey*0l-03mG&euNA6ZtaSDe zdf_36CT4_WvzrMMq}n8h>2e>FE^fg9?w5}oDp?wi1Pp2ozXP;BY#{{mnVQfZTp?8% ztG5BdfUsk`5Mgxe2@7*xL@a49Ni0bKAM{B(S2}iTZZ<5h)|teuorH`uw0KNsBu`@< zmwMZ;2lbB9TqRZkmFCX5lCL>~UawN{sFj_&Jb0bCdVm|#+vNNVw#!FcsaeONVr_H_ z>*`T=7G-_SF!fNz&JhSc!|^0#8)TPi=32)ug#{WS=?0PD2>@%{zEu4W6S$E)am-#+ zp+eH97@Ynfx_$cF!{DTqByNqt1y_d0?=U$1{mqvRBvB1uaME`Ihm%0=kE%0H7#w}V z;7%CapTXetz_y8%$7NIh77R{bP&Q3sVEHhD!3Ec1i4z8Q!r(ZX|0QsOkNuqo9DXp! zpwzP5%<4fRC0~{9o|V97-t&LCMDkSoW7FLVC#r$>lOW ziQ|L6c#-$v1rBcod_kJU0nhmG0`rRv;uV$&z8wfWzd8-ii#~=$sF4KLCt@y$pw-X; z$gD&O@6f>jRGyrVW}&Tldj-EI;WBXY0DcDL8w7^NRRpD9A}%M08{J-dP?GQwa-kCM zqj~Hex1ZgP39G=+wDqe@@%O&_C2Z(%b})9ZWzQ~ zG2iCSVn-HY$cixU3Uj+w)E`{Jn!*bll$JGiuPf->!5GcES|MK~T&0UvutUkY&iN+E ze!n0#Pj)~t+$+g+&eg7cJXdqagEEHDxNtWeZo~)bC7+}yt55B8Xj%?kzV?8;jU}Wf zBe1IymkGjbPr#olp&_#-bdk$U(SYeBb(N6rbfVf*2W+9upLbl@P@*>$5EHO&;L`{jFuSx@@Mf*T1L%mh&n>6+7(M9j0Am)%4|UCqmBX?P6`eP-9oeUobe$}yh# zbiIO}Y*ag=jw#t*40-s4jhHV-C*3WWGDLdlWjvvd2K8iM{8^!R=q{3J&R%$Kyhk`+ zo(cpee)RXv#heZkLm6=Xs!UP^M$L5YTu?YzB>jTcn61rwhIU>CNpjjIUzR9q%4W%V zbc{xK^+FS$IpYJngs74#@gLjt;2~fPmlG_RZdc9DO>T_Dxf@B{s&f}~bE(~66PgWC zwjv=swCVYE0>!ZSvuaA+IMv9P?Q9sSb$MUTwl3`}%@wiYr>SVF?cuCpdQ6?=y667F zQ$b59cguk0>;^sSdDLn-m1@1=z*GzE3V7Z|qER@$Ai#c-gSqUtx%5SDkkoY?>a*9y zz(=iJ0Y>P62Bdcu0yd=#d(cUPE;Zu+5q8>eiPCx}9F4drqc=jnrj}3rElh`|! z!57#|RV;c_(NOQoGu`qC0_0j8AZD#!FI7AR>1Qdt${mcVxpLE&bFA1h>O> zt>Ei8QeF((rVGW4F8W{?(O#fuT8CiX2^}F(#`lpq25UiK{%|yKtHb>mDjcX1? ztlmKbG|K?9)i)09@dbj+g%v?s^O50`C4PS#G;3L1h{VQ+ev=AAH2V6omU z$+^j*z9ck&aI)o9K(UF>0?KRau}2{5_}+ydzQJHpQxmtI&fjb>dIYs=0pp6Y=!$j# zDEXsprQxb9ukB#m1f5@Ai_ztTN!>k0Xbh0RyJ8gk<0V&`=oXFgEH!!AG(?RhI!sa8_cld<=&3)Os7by0;j@=2LHm zElJ}8Xnxp+6k00thxf3Rbj2%hK1^HtRxL|OV=-eJ`b7LP5cnJwp5e#)b zu_}rjGNPz53)3MVON+=`az05y3Q|G>R{xwJamWawM(y@MLUK>PZfTp*6_Mo=Y3>)d zIoKv&1>|_i4+n9N3zOyjNXE1RsYh*Pl)>gx&;yUx!d?@8l_ zkltNiI>W3IvwALAPdbW7AL=nKs%ak52Ct>8}GY*oFT?QVSTg*lNa{m-e% ztczqn=v_o{A1^}+vkZFn`+8*ult@dNOspCc1FWmvxO{7&{Sr`<>G%a{%^0Vd?L7Og zEB=8J;+=WnH&_fRRVwan&QbuWU6_yz--=THz9^mSLJIEv?H{a`G6c*CZ+ZF5XdHk8 zX?dhW8ak+=c574xik(K9@bZIDca{XAj0zy>6z`IpY6@9Xq~wX09JC#o3Lr4sGVwfl zzE5b+)qK1pKSOC(wmV3Q(3fmm1Z#YB!O@>3x(`mV1{lxtv%H^8PCrIHm+CskEZrR5%t;A=BXspA{YMP)lI(k znCq_W2k zING0$heJ5VgmrT#3OL5k7p#6&==c()SK4`34v1HCQ=)?M0hXogN~OP$$?#^0hQ@_v z4>*uSy)*mEv%9!13e|6mO5C)~NN>B{o5a34e(xNX%anGdCzI6 z=@HVxRT#FFWP98jwwrYbBI&8ZZZ3IW7RYF);unkC`AX>cL8S54_J)C6nxO{T4+<)M zL;xM}Qvj9k1_;d&0)aWXbu4*Wy5(BK*C&(Hrfcs$a|V8c0t~0$+vOaDK39w2yQbSu zze7Z#RA!evhU2-5#4uostD;O-z~pXP^TfGo%>&0#R|+|xEq)%;D!L#6#hvtwha3h- zk5pHZIRa@AC5hGhh6w{?IE#~c$;+Yh`74H$0J!?Pjchmh`DB@;6ls`&onedJIv z4(~{E8+yatoh9a)g)bEP1XhQC{Uq`)FBIl5_EaCmS4gGk)Wj-_Ai$cJ^DaH zIAMrvo5vmb9P+fe1W2>FRg9}9trR3@1meB&`H{mS%dd(ozDK!>qm}4R8gRe zX;*yUkIu22XxKr42LN#Qm4JHO05cR=s>)xwNkBmrHBSQy!;$(WwE7#xcKNUtv5bg5 zcZ8is?FDl%VkXm1i4T1ti@u8E>Sy9cuDgI<|2K&<4Jqz)(LUCcI86eXgUE0LscFc0 z1)9)Yj|?k7ANYBR=<%+ctAT`Kcz!YmQQ(a`9|6pMc_!#rG}*F0k|_zHccRjIg~mH$ zB9iZbzX}&ivcWaQy`eS*IqX7~>kfIG3c`Q^4RHmTa5O|jm(FFx7Bn{_rh`4#xd3BK{ zv0+ZP%vg`^JiC)PWaU0n-K`#Tx6hV)2p_Z3*{xJ}JV?w0?|X;v>F;m8Y#>Ez0O4c4 zQ%#%@z7xWC46wJw1-HQ7_F$W7`*?6d_*SZi03;pY9T3EEEi)kyzpkBtra_lVh)_rX z&E$UZkSPFA4E)-@B8X6!u&nqiz^(Nf+qXoh99Eg&!1`O<=0FheVGg>A?JEo&z^5VD z+I~xbpk#$$ZqB~_p-+=R8PEC}foG-&KbU$zx#Z4XG0+5W`V zV3QNp;;^?@HUx?-Aotr3w!q%@V0&R74^9Z*3E_iaaytmOV`lrxcFcUSYP^?Y9k*)y z1qdHYFuBcw@rLlRYgXWa2p`n0{}I)ljz|95LHP7L*xcCn2p@ysdP4aA2NAw*q84Ej z)mHW$taKn(_-{w}ybb4W8uWi1;nVZ2=jN-tQfW=PE2~CSUxC^nQ)c~@vB{%!7w2ZA z-MUb=bhB_q6!KQpC!X!4Z_RGiDPyI-gzg_5#TErZV(uH8)$UE!EcO@NLsL6(` z*~q3V#5AWvpwuj7;dN;i6j+=US0A&%#pr>swV7x{&O z6|b)++aSJ|N@G{__;o4`ivGP+n*RRg%Lbl>45ZT7@5qj)RN9|?6gm}=IT=`;$nt+C zm8J)_O{_fbq3CZ(rRfXGrb!GeA4XDX>~{u;r&QXXT|Z8#v{Mn8QxTcpXkf+b;cOEk zk6ShVf>atT%05e_aclVfz*HK5zW+oj4GwlV?Jq`@R!&wp&@Y6%qCfnQgB7732RbrD zUeO=E$iXTT$B4mIF&Z4`nMAy`au_BDn_q@u-RfMhoLe7ketG5kMLxXw<>304q3T?H zSXwEUe=!ndnfliyprq@A^)E{+bsG81`j;i>JlCID|FX1FGvG5TeF8aHU$eAgYmiqq zzsziYnOR>mZ06QKxWdWEhc~|r8^6`L^eih{Ra)g$$-(BDk;`6xX7kIdhfMOB%`XGu zU4Lft%d3q9KEthAV<+{gkGRdW{66(5F?`^!N_}34Qv0?+*!b;G_M+Dfrv>MOUcD!j z5g*dxsOC~XPDe)*sGTL3>q0Rg&M(HdqQd*KN2)~DNj6`Nk`%v@(bq@H~pd`iw79Y8*8Kr_X7}g%@jSTq2 zuG!iy2rjWBl26}hxt5|rbP)a*Dga_8cXk*5NYESBr_5G&#=DLoj_QY6F8Weqq z?YC}NiaicsBz8W82+Z$6K;uy)MjN2w28dtgyEJL}3sK7cX1iW3ahI`I&DM=w5X zu+m*-#2Y)&6)BnZk59ySoEgg4iS9}Lr6W#6rk|mvYZZ<bkhMO^kNeg^B@NahuwW2jS)khdUI%>g5oDZ4oM&c=Zv{CEleyXGcY|C~+*)%aEzV zTKx})O@k-;xbz+ppRuYzCEdb8&`*`=?>A%2!?ZQxQ-gS1cMzVe0&@ZsL=Yqpt>Yqj*~sQh@(uB zO`39{WGi}~idebV2pqO;LsWw#&rvN>it=sht~Asio>H-K^*i5`_VF^+0{3Az_n8M35$t0&G;umgF+3zftugn5X2V_i}kDU#98Tc;K=gf|a8yPM&bF+!1<_ zI%MK2$K=r%ChN7!)*Yn|#W>c0nuI4;?~I7v`h?~aC5y=PvzmT~Js+)XP5b9$uky8` ztwd*AKFdFzB*eTS-guHw{u(rJq9ao@QB-Vy@Uuovq%~5hf8KOa6wtkaK>Ei%5{{g(3T-el2uIE% zg-3SFNMsP$m%BU9OL84>MJ> zdF9PlTa!aC&QWSIA4s2GhT)a-imaTi&cWm@@~S2u1EBbUNG>^CN1 zP-SygT#yP+>ExWElFk+$mkI?zH!&hyR=4I_+I?zf6ob;9w$B14$$GI}{7F?+;>^&E z^2Bol{um1$We~O={ngy0rc7)Tm_Ba|x0PykiCV8-g{ZDg=J?CdG5^Fx;J|DESw4{` ztR;ThqaV5T+e(b{QF(~ z{!ktjKJ?|`2?!%6nrO$JNS`x?PITmxda=tHYr6SfZv88t3Y}rHr3vhj>roaEl!O0U zlj{RI%iz6Fh5r8L%Ldqy2FUfC&T{xa|EEsECvyFtB}bmf^(S)uiCq6@$n|<)+r-M_ zXp(;mxn5sTHcet+`7lDRhbM`?WPQ4RoXGWmcKtY!>rdqR6S@9(lI!(wwh58Ptr~v; zxgI6LKO@%%)`Hvv$@PKt)6Ku@M2`&nn#a8&_Y?Z|hDE-5-XgDTxZd1`>&vTLl8)+{ zVV#6U@~0Nvu$Qb%=A^uC9{dB-a0VyZi$v;rP(lS> zl({A5#tbP9{R|d*)sbvIO=%=dy}d*)@ZeR%(zE?H5M2$C%?0K-+|MxC{1e*8L1?pa zvN_1AKJypj#i+SaJi8^r+mql|Itp2`YjmB4hLQfxRN&4*nb>U zHnfALwwI3nKr$)lMULT?ZgrAE-d>Eb6tSJo!*5*YQ`bX2)MaP|fT6WK1l0l}k$ddH zk=-$UXCs`hE2PM*)eRbnP0(v0$d}%PM+y3eHr?V}sT4aM+}rgT#;!U{Fih=XRc5qR zwTF&NR)c70j91z_ijvC#8w-P?PbW70`)L8^65XxUjv;!zGVSJd(7=g)%ZMd41VV6A z(o1lEfmQ+0esZhXGY&PkT_IFI7G+Z2payp8on842jHosltXFsJ4yW=1t{X|KcVpm3 zw-kwgrqu-{ZY8gl3>TAfcoc&xeXn69)kWe2stv%6oRtWf)&()zEd_m#!?Gz9vGkH( z@siK^)GSxC#fPKuoYa>HkqQky3|41QQwMDa2v@#yO?5p=a3DQ8iC zIUm~s@KN8O@3N3T!8J|wmOAwytj1rmQq|6t5DqV)c#C3~Rb4fU>fplEnyDRhy)UUO zQE!z$;$EU*%TQ5I(#1Zw<7wzv+%_R%aokbSv+pI&|r%R;j?&Tc}$ux6(V3)=S`U4cV$jBaOjd(A1M%ebK9>GKS z5fVzLr@~6jPBU=aADDi_6uMf5-VszjtBgJ6C&yuxv2fJRq{Ud8K<6NW3+%cG{k}Y> z^jgFU@m?r#@K}TN!+UqOS!cf3{yx1tMN_sx7VUg3SOCv=%;?7J`d24+un&>k1sU>A z#?!NA=#Dd=-xsnGrU|NSUGFRAKJo=FF}Q+)3wi?-PAMklC?Qj5@K8{Ai6pD=|9OhBfhLSJ&Ir#=Er_eQ z>dSB8sd_$nTym}+m!7csB(fW9j}n=qM4d#i5HQ41YToQ~ln$PVG<)BCd1GCD74#>0 zVOc6S^kQGD!XokW*E14m39YBx`7kj52!$u_KzJ=^4#E{jowTR8h*ik4(qAGBN2l^^ z*-lVut7XH?D{r?#af_PEjd}U9-C^-mIS44_aefXeoC76u)>GU`s_%H;>?w)#@|}2_ zD2D25N)5&R4!fpGg_4!tu z@i2k+baJ8E{Is}xJsKp4b1v0e2#eoJb=l(#W47jp%`G6DyB{|Na)zh`yj~n#92JVT3fo>%iF;>&J;S zaw3hqRhrlqm^kQQTc2Wku&qz=@!(Y4cgfr-in*> zYohsqq!C`HP5ht#UnY(4D__7JN``(1n;ZL{k`X|8xxb2%aV-@uEqP%?weKU&8r7r} zOUN0_*PF?Z|D|xHd;RfCNB1Sv4LMulc`I%aYG>C8;`$ffdz9WLISeKIV51kHyLa;1 zw2El^kpE-Ka5fsQosDK!cBJ%XP1HcYEkElOY16}nce)Q0ocI>+%EvS9^b56%C;zus zDG_!P&eWRd5Go_h!dfo9vwF8eC3|Nf=+!P0Fc~O4LA=vPhVS!ix1sTegmVCn6PT3#8*`?_lx+#~&#Qave-^N^f%YrrP3S^$@cAsgiwT zT`@965dLgDGHPRi$ZWn0~$?3)b)z`xLmYD6gh-ieZvW zg?-@J2E%CWf?Vqf4o*1_CRkTxY55JZ+{Kvp_Zy4Sds(hydO=Ld+Wx-QyC50YJK}wNBPjD%L$`_)7jGq2uo zzN+`(`|lzcV1!l?9&9KSQ|+$ zR-LjdAH(EL*u%PP*1{LiWs#ai)I9Q>H&jAQz5o2Bw`*v-wFY+HZIhi zM%=FsK2|DjMc5gl2T!op7!%ARd*AUgzL{X99%7vbT&C+L!zoewC4JF;nF4AIxG}A~ zHm0r2EHXd6D{?6(?O|Gz&Qu;+T~^kWZCmM!<{(FYz^oKf!z|v-+jp-14JJ1_!3us7 zmVTaKjtgCFO!Et%C(f~FlxVvb9{;%MyyBV@A9p-@la|w2_In?+Mf%l>Ia7;AYjvx- zbLR*5+tpI^_r?KiKXh8p_kpo-&oiE6bS4i4ds!ZgdrQ_OG7cC(#me->$XS+)b*%tE zdZfz3m~DZKfO-bH{Z#go2d+oWYv6N~qSRZDk!HR29l)v|~$ z-shiZnZpfYM=G#4N)9u#Ucv56LfH+->(KJl3aq)Nv&*I(+w*wDm}s1GZ14g z>`UDf3oG4FQl4L5Y{zUW84u>~o~y;zo61C4Y9laqE37(7IGNOWb|&+|QkM1INp);V zQd2s6%`fNyb(@t#p?(e#(}Mj==q`lUe7g!Z7LMz@5|0}{L4f2 zQ>a?c*KCs{dr-Boax_@`8wh%iJwD` zXP|05ux(=HaiGKB0#)k^%BD#SEFVUoYGJK)J^35_2dGXbe}j|1!O7p?clsOX;cOEk zk6ShV0;pOb;PR$5-k@q>O>aFAsutHzH~%(Ny>b}XfvWX8*xcApP<22&LDm0Rs9Ljr zR2>|aR7Fjr;{Ehp8sd{YxF~tO;fRxF7Lt&aE~Sf$8>rF?HqT1tlBk9)FmP{Jso0ry zsIbGV1J0Cp5~V>41+!SUSue{ZhcosW{=AGN+k>GHAIihX5owKAI(wD(AwO#?zG0m7 z)2=h+IPx0UJ;!1Gv`7z@1onYD54~%l{X|W!I)%(24Yj5;EFYO6u83O^*4G(gE_N9^ zPstwtLJ`NA@iw0y{u+5ToS0g=kR;CH?3>pWGL_0_x{_Q~9^D{N{plS7w13IJ=VKo644In$atG$w5m&H;y0 zCX!R0(_QB?N|{+lX+Q(nIgrwt%&L`kS?R0S%iXI#ygComJE7|>TKpx5)(6=@wNY{; z&5b|H@#CuQc5-F|;q6+CrinSuKC7m8v+nz8;uQ?q9!f6nt2Y=qCOOQyILev>`51=Z&>_QQ0|v0n z^)7<^8TjdNE9F~xpok6`l0$wnRm#@Oy)buhhWIe}`oC`GvBu!*evMLNHX7)feeg+U z-~6#)!oivS))IA6_9g#+F0)@iF@uh28*_Aq%GVL|3DC+Y4Z?vyv6*K91_0zwwbENE zy(WK2lfg}QANp20Ta;ziH7dh?epX+~Q=346AEMM*m+a7>Opm9OLX3JnHe#}1=)G*k zZeK^t`nKO7rp?hN2>vvOs#>l!wd=jU0#H}zf3fr$oqkyXpgKo{m2Yd${`B*rE-EQX zlVS&uo#zBB`Ipt*HaK|ZWqDvTwcTm|bq}(PCo}*l>t*g{@((m{&x>cP9ICrrAgpu} zG`4015Vaa6Ih2^&b(ovI?*uGLdDIO6=H@HR^Sqy7+CHZlG=|6a?$y7oGe(IcP;@uT z>oRDo`U#&9wYrQs{|!;=D%Cr-^9(@R*SG>lkGmc+=f|vc1pf{j=GG<3mRnHh&MI=r zYMyg(d;gsA%(_;k(3Y%$^`R#?-E>}o6L&q6AQC|@ZazC z-bRkm9f}bk8%18b!$f%_WG%5D0ZDP~caqCiKj zw~Z0|vtynT4nwoMVD6M=axpioDy*+j0_kqi;Oyqt1*f$fex_ZSmBGO?l?YGh0?!N9 z3^z9fo$y+J zfAeJnaD)LgTl`KqcS5sIXtqzHY3Y{`1_88+Yycl-$N|5C!2-PKqapJ7#RlSg z6L9Gg4I@~QLAS8DD?Z5j&{Bc7R|HY=u`JFR;BW?B65if|-_5#F0_$&an*#wSr@0{W zYx@dA2k_}2i?6T0B}lkZ{r)y*-(E%_h@KGOYs;f8^;QYsGH~bIyRY+%PvX&AK^7g! zqMwBTPD&kk6~VoP^hZcKtY^*(Wsngl7LvG+Pg6n-F>2s__?~*%HB@H?8r8W@E|LWB!3? zwzPh_`Iph`6-D^h&gMYBgUyZogl6;f3C;e`qS-#Xzi{j0-alUtgab1@ZYAp5$y9ty z@;tsMIpH#vi&OHrVGC<>$&?c`%XR*KG@A`>GMu;O zWHWbCL*}Q~ zd1Uuq;&Mp!ROM;h*@Q~lQvSNt3}=W9s;|4XQ19yuF+4ii4}gukV6Y z%_&_@puWCq#V;1uy$z2fu&?-g)65wy%nPBVBTi@Mi*L9&Yh9=NSQ3Z)D*ha8~HP-K_=@U`X;GD0ECX%}}@rEi*Czz_Qw%D{(aMW2l_U$dK- ze52z8kL1j*^aG|c$O}|i=5vFkG8*MP&;pxK_#k72k~C|&-n;s@_A{(GY?p-u^JrS{juL5gNORK)9~2iR77ka(_}<|(<=^`n@2MP7AY(q!`N#IVE3Bu3EeSIoQwMJch{ z1)v()empdq7KJ1voX)jz2eB*vMj_f!UN}nY)R=r905z7iBBwQ;T}uCgs{$k))-YW( zJ78{~S*e(=YT(?+9wv47l4V_GZ&G1j-B)bpDLtigtSKj7TxzCw!0y|2!SKR&1()tM z{Qo7yHiQELD@L`1atRWU@_M74P0t%-!(#poy3ngG*ds>hcXrUn1k;o1^U;gs zkp|l2bwcSk(wB-@&bhJg4A=15OJ&pyesPk{EH0krkNwuzO;K@)!qpsg<`n8?= zLEtz6+TyP*sp8)};7)+{3D7{+l`~`qEXl$PW+QBsm_CP>8xPH3% zw*hVaYIgx`{SG$W{1c$f1y6wXe-_YYZ2m&m$L^x2CqVmJ^deDy(WlOGZtI7H&Hp^0 zO_F{xzjQiWD^L5Pbn#5`!|o5adN3TSj)XYV77}Yn{j+kQqui_+EM}|Ms8!ka$dmb5 zOP)U4n7xx9oLCGH7Q~*O_-jNBzPOwd$=?SnG`yNk>9g57vVpHqt_{3!7r!h)c6c+Z zLxr81$#q}h3Xn*lNW8}xq>zD#OmiVWM+Nc)80JpYy{kVwvB;{jJMpuNrwaE~Sc-p0 zENaS^S70=;XavjtonE;I!Pt#g5uH-D(}Re6NoQM`Df^VNHjp1SFB#@igg0x?ajv{- z<_1LLasVI6V&Ke6F94CH zxl1YdrWrEd9AAs&3=>EOL$e$QnL1?L| zgJ0XXd^z(bZiMU4!zNI`SZA+#{Wbs?<&GG(7`Mscars{Dj%PkhzlH^6vHhN-5jE21 z#x>fiDcoj#2{%Pw44*Wxdb%)+$pj08bWi~&Da1fHdR<_8jH?7BG*!W#CR2u(-c^Qz z`w~SNhKiXOkb}BVc=CTu129ZPFo`9fd#zPvB7!A^ zF#NSa^+OOGgj_&4(^{Ee$>Zt39YHD{JN*truu&-^R-!MKuQ}|C=LzB>Q|Bl_DPtG@ zykOm?lMNH?6Fx75%*Sqqbzno?lpp{8@nF|VQW#tlks#KJI>4^2MSCEx7P4O6#_ zA=pXAop5S84@jxHl5;J|HXcz?qvz5oK%lQt<|8RUMs(Yxn8t77Z=ohdKWY2{p-u-t z8_8JX%6Yh0hhg}&oz9lM*t%pG3)8-}xWURx+VD?!j2&o#nBGu!*dfeOC*}Di!KCdE zRn{kQuZ(9h-`k#ttlXz4ww}t_=1=xe?BGg>y+W~(57z;LcPO_0{^rXDUBBn z1^T-p6(?EtpItvrDE0}(KB3sZ5yf7GvrULRZq@kTN3jK(;Le-Y*vhg6dd+-248<1c z_0!G2jbiJk-9fQecd)s!A5d&oI@QDe57)yESp9{uk2#^(kE~cEB_}_~vfZ}5q}N{{ z%Z6&eH-b@a+_onzWIRsav8kyFPw=5#&(nRc)!&$!It;spH((dFue%lpq-U~OE>>qw z=v*=m)Us=!#C67`!gD-dKn-QZM_)XpGpLAnt)ZNuJ1^I1<{G82H3vjb3JQtdWJ({# z#-S-igV=QvqL{~8vfX+xC3?dALG3!yv{JM5(koTrLz0HAyZfT*JMa0MR*5=XRcNFh z_HXPr7!J6-DWhU00NBqy6bQYW)7jKnSYg}QI@8W@$mrkSxMlvfU!aRr#|dM{+nmfh zt`^WS4V|35C^aCqPmEDWx#vOI*DD4vxM(`Q-&`3w@w1pI$vR>$^)LGkiR`@N*nTr; zEpDHq=w-vBl;h43gyExyqmdYRXFf*^Ynx)Oa8xOz%}aT3TY066CdvjlW^AHgmJ5_H z58HFVxU())hE;7$zCNF$bSq`$?EMb<&2m4Hr}k-`(*|DDX-?UlzrhQkZHF&>;HL1s zhXs?i%4o0{-QPuGER5Djr9M?N8b)INs}03Fa>>`J)7eEw1*D=)IPJ=G1=ETMOsK8V z8r)Rf8L}8INQX{9fk~ifD1E;G#9AuKe6=@0D1EGQ+OSfS`S|N-cb9RvZfZmu?HY@#@o>3#z{nw8LS=vtNSy4};a5_A+o+AQu;QR##>4reoAo{2*;qB(EJCbXh3~<+uz(vp zUtsTV`u3wkB)~WWV09cm8I7|ZYGve^*wy@Q`M%!#c#85S5i2HB*_%^FW8XD)WQj1srrpByq%&0NEu~y!G4#+m zt^kMlKnJ`o&SzsEiV8L-k@WFf5`#stlPFa~XEfDg8SLtG!(WaZ!weB4`s&!!6dwxC z$llowo@Iw&(r{`IQt)%(a-^WbnZlXfO?hbP=HT+~#81iIEVhyp736_%22`yyxEQtN zIm~^8JllCKo6&D+i!9i%jy=y9%ih($v1xuYCas~0_(D;$XPk3y&kyUG{9c8Tx6o`f zI?`An0>byR49jPzr6%iaX?IQ^NSaRG9Ox0QyqX@s@@TRpOrhYCuoyuour4fYrjlHe zxm89aeDo+{SM;E6!XVEn1IYy!rcMPxe@?N<$R#!>w_^*q1h$v=SO0}a_$ni_O@r)$ z(E`kvb$yzKEdDP6e!=9gH!ynj{^rXD(1f4CXo3Dt5_bZl|16krl2o50)h9{yACXkA z0^2559tSJ@Enu|1plq7N!17@PjAp*8F>wN;|Lpp40;5l0^a+gqonW*c&Ndq-n|~XO)}L^8!D#&sHaGS?7>!~nCrR~x7>pJz0HfvO zDv15v9^vkfS=s-6Np;G=OwXTz-Y9TgVHkCS1aB-`fdm%x(Tez*~v2bN5Izh$oU29dYW08RN`@t?tX5_ z#a=%Db&X=f@-kz^u8EI!XN?Cd)0_9*IP{Yu3-4+;z6~V9-N<yV z`jqG~N6$C-($YyLH3?PT$^d-hEB#;Bd95x;1mKhU&9{QXp!{!Yo+=9KPY2CPh^ozdF8JGsL*Ik(D3)C3DX%ItVGnhM$ zIb4YoEEi`gest80S1#5wd4$MOgY`WtaP61|p}Y0fDuA!G7|^xSeD~_V5OJ;^9=A_y zd$<|9l5MUm6>UzrXpifyAc)+>HHBgmc2p{%qd!gqxjkvlDLiXK*t;ux(=H zaT(CR1vk?dlueTuSU!y4X6$!X_9xuz&#oUQ-0Xy#op7_?iJR%+Y!f1nTQ&Xy+>9ki z*QPbza5HwzwL4J6$*rGm{$<=u)ai%2xS4(jn;ZKcHw%c8@K;$8--U9a(6tzNUQDEt z#1|rJ;M@_)D4x0~#kw~ElbG&F7tMHCx@ZT_C}q)b1@mmzDV4mBj3||YS$=sJv>lZ~ zZB3W}-My37HG`<4&8kJ(~_v{y??!}3m79G<?ff zR3&wLy$~_WLv-t$89@W_k2hj3vPhqjl+yDK*=jRePvQF`RN1hz}Jjr6tFv zgl3`^emP8+`wG)FIpY_zy7Vr1?8YI2=5dh2S~F-^)BzI(9DT%A~+}L04`zTx_ss@JXx`j%rHVH>H*m&k1?Px?*O}6~a8Kt&bHpKR_ z1sD11$DEE^5aGtWeA(`>$!1rKAfod#&0MM2H$vs;ncAJW7%~xkl;U+1)y_+=i#xB& za`-weP^ud}l5O23F{m|v(rdY8wOFX8gw@<+HC<4fUDb9*&c}J_ip`_!?a~=~(|VD* ztysoVw{8^OeH>6{`Suw=tcDra9PyK`;F6wd+J~OWs#vXjOG;_YUO1)xWO^Gp&^hrw z3}rJ=9A!*n9OPc&fy<5;zdpu-wlg@qWdoJbe5;cTKmn&@y;Fx11ixiiio>jhDzM}-Ka>+ z&gDpSG6oXJTGykAPCF3*GzVhw73`<)Og>DKr?&Rs3aQFiy+!oyHQcF*wc(d%o-#m= z;dr6u91pQo?bWl_8(X5c2$b17leHNi6ug+L8HXA3H}Z5+j%K+GYoeIh|x)X+`o(#%L1fOrBZ2dqlItS0RRdhy+PQ z`f=i*AspBM#m#7YWeG>*3NMEmfu81C+68n91i010g%z^`g*?mMfs4$F*Z4)TGr-XV zTNiBKHqmzMMA-DWFbC@qr65GJ5nH{qAlv-_{<*bdTXEOJiDuq7Uk?ua)vJDq1bqkI zs4n%vpXiBw0TZ!J)V8J`RpD-wtR-Y*(8i;+dd;VIK({X-I(H(6+yqj#{*5T2czT}QCTceDTVb1NZ|HU$@?<) z5u4W7tRz)7RbpSPVQJwbjM9}Y5OeN#!PF&mkUcF#(=e@<}}nRyBbUoU+! zqp-D#(PI=^zOW!rFnx4DO;R(R3^r}@aFKWz`JH6Cc(H)LF4brES?cGN7)36;XYbey zpKJ`xIIq)6)|mmTF0cET)BP}saA8W$dmCgw;mV9HoH0b8g3N{C*apP~io&Hs~=HQiorE=A=|l z(T71($ZHQ$1|ri&g=|EQq7c!Xo!hS%Z}~8;^k=L1IHui=&%JMLwOY?3TB1QkW(^Db z@ZgweNj00`Zq9vRLcCg8xybtcs`E*ltDWUtUk;Ck0*PF9@X3^@c0cr8$d}%PM+wqu zLc1RfGN_W_O;SpS?UNM;wVg|>B2Q!O5wR0q2$-okUF2X>?G`N9?SgI*vbGXpVcAkCXfCv$blu6#CK+N%W547BjkgU%VSW}A12e7bf2Lfl_K;sX$i`+7FWDx6w|yNppO>$=aD4ZyWDdUI=egHdr4fE%)$}Mvr(5PIKG&aX>X6Cp44RLT##4KY>{X!u zIJX`a2nAXk@lxSJIY|q8CT^Sl+9M%wE4l8Pgutzw*WQs3 z^!GPkHh>}-AR%zyiLXv1gg*-+ok$2L62ggu@MlN}dSKhc%H!aqzlDULFDRQPF|d3X zAt7+zRU$Z%5dQ4?aUvm{NC+nq!tW#@=;3S=B9B`&{sIz0fY1gut?@=e2&{?A2a*s1 z>!+K4n}nd#<1D8Pye0bT~EXxaps<`DLLDifPWxFLq1zo2|u*m^HB2A z@8*{wcS$OZ1W}Z(?e(yB5k_s*{#EOXA+-1bte2O;=V<}cUseuQQJ$F#g5XXzdO zJFSEl$XS{``ekoCkq@95M3M$*25GD5KBC6+_g#4LF$6!VWs%})v;NAmo{tYxtY6K= z$36llrGQIPQhX>`vZxtnX{9Z%&NJ0Jc^=BMp=qI1!!I5}DKH@kI4x?)-sqZA+U>s1 zM8F%I4@?9PC7)mCu9;T86D4Oujkop;`0?0=qPga1B0jX$oT;EvoBI16N&u>#LK!`; zX3@@i@!VSxSt@#U=>_b(u!^(3^)g<1at8?`fWUxnS*Fjl>`Mt^1rM2iD_|Xtm|4xVn6slIQu3zAquKMQUHPtN zVSTKpqwz+~tB0kew^;NSNV21=@mpR!CpT*wP^HC@K@{|S~KTgR1ATL-Ctm> zPatfBfpwkBOVw|7qiP{=oDFi}&xRi6%)RD1XEbC@FGV0QslJvhSbV#EbQ7_1uMuGR zwjpRoVLufeK!4Y7*~;I7aIb_&b%q-hEC4qmGvzgAbL*TF9V1P)><>dgE)-9oOJG3l zOA&bEvxiF7Lq7b&1hoW#26bp5b1hi#xtGC;PBi50;_5!i%IggQOH6TJXBs2vcM1sQ z;EA6$UvULKy1p}>{{hg)L7sa-;6fc?`xG2+!aAU$eMhb`w&o>o3IhF93=uf#J3Mc3 zU5l;&?o1{Ix*chk;b;taxlo6L!Bvb0^c!o$dFRVx;<=u%=y34n4eN#Ke~j4Cy3dwX z2y)(bA_~08F%GuSc}8?k33MJwa8!iF?^W;hB!2Ab0!sv3-{YFAIBk$jKCj&uhhBXs z!$LPQ2QchxU=Zfrsp)yYgkHF80`|));4g9w`Rp%Xk zJJxQt-3=^qGH(J6vIB>(;aB ziWX^1FwU+%xs%fs5hIyj_y{qEQnN3X8AfbIB}gW}J4xO#*^CmJP&D-11GrFfbdkYjg8x0;0JwbDh&s}t&8!sdu?_As_e64`jGb*VoRsAtHfXE@Z zLmP+*KcIvGo&tixhQJy3hMH!OA4+cNqFnz8>n=v>DR3@9&Rk_;mt97IJmJ5M?>^Qv(|8Hr*pWXy6%vps?q04`Im>7r7% zSB?;AI7`^DdX zxQdMa^FQOEPyh6TTkD(8k<~xH_!VWzevd5K8_J(QgwA_)^VgsL?a!ybKyLd7Z$7=V z{t2pfGtIt-By5^T&%Q!o+clE#A!PAKmq_UU7`g4cKfLqt^Ua-q!72bcr!cqfe0b~O`34`nfBoV6KfCqg z-#owbv(LYvD#!o)Iq^9C;pgXEPJ|+&|9W%hXRo`Tfa^A&P({T6hCBP|Z+>+DvyY+} z`Q*L#ZY@{;_#0%&Z+}d(Q-ZIYl~icbFjn(%Rv=MR=!afqs%pZ^)J+IDYHsQJfdpIyB8`PYHD zP<8Mj2~d>F!YaU4`{ggN8-I^dA8hu|-h2L|f2U0A--dtu@!`!YOsm>V|7T72-jkni zYX?m=``2Ip{0>IU z2ek~hz-MayI925N5A4cMe%dV;;Df(D`sCv;e)!9f@5aXd!R>qZ{%b>G?mvhpU!l_J zA&RB{^anKUKp7g@D$joNqw(XPqR8a8_yWwmyB~y_6K)Fh@RJw+3O@LcU*39f`RXzF z^yeRC9>y29A5cAO>gVvQA1(eC43UrS3=fERKMTM9>b=D;$>u^KSwop|J%P) zIo7|yD)_^{VlDr33DNxclFAE9XIZP`e{KHy@6DaR{As*KFy6cP^(Tw<1=VFde3LBN zC+|h;^^YIk{p9Y;AN&Nq(7n%Y{q_&{e?)fYPd@#Z<_+o|eup}v|2)IjL^eNoMYa2Q z02SsZTmJu$Q2q5Uxk?#3<%6Hxd~oxRH$VRUmtWuI@+4^IRPqnIgiD9&zT7-=&}kd# z5&8B$9P^L)_C7S1%ku5~_jGeb!lWYK-d}fU^O$dcyZMr1zWtbQKjz!tPQIN5TauNB zWlsLL4; zM2$~Q{x38&AKX8=`RUo^Z%$V2h&1-i2PZc_JAZhdf7NH8D&Fmlo7b1GPsTy@FyoPQ z)#s-#Hm@qJ_xp>eHvrpN33a#!A4|hj0qcY z#IZoea@Ih!NTGBclc=1736fqlUB|Cq&JkWV&GE(O5AS^b@Bv<96{q;k!v!m5EOQT{vO%YP?) z`R{};|DEvVzZ1UvcfyzdPWZClnWXvez_$!v0b}~LpkMJj@D;xUU-3Ke6~6;t@jLJp zzXMm;X-q^4|$x{yX8zekoLCw%$ugfIV{@a4Y~zWjH>m;X-q^4|$x_WMBi^4|$xx8uKo@a4Y~ zzU}WMl5Z_eF%*in@JeCmksf-ihn}b*n!S7!&0mgmJYU+F}+PxTYVIJeEVoRrGr0je3M$x4eedb`@0?zud<}fO2G{*A+wb zx?+fyS`5*0iJ=V*<%{|;Q&SA_hPM z(jR#17VjT0v5G4gGv3kD`otSFdBY!;w0&m|}tSkR|6~V&1#4*+@J^0gu1X?a5y;A%$p}ywN1pAsl6YgvNOu&mj zW73CreuvTIqVxJcynpNS2cLd%|921Ymt|zCd*p7elC-=>&gLq1Eqwppf^a3*{N93K zEIFuhg1^zM$w$xmj)wW*_R0JCFh4j7#s{~*`0@^27kBA{FTT2e`wqj3>N}2*TfJIE zsBw(s{%RGuK8}$OwOYlMjbkK!R!OMGF_N6C_y!NK4`_h`0n)r_km1TfCWjnks>nem zjvSAEnv(jpQJ|ksRbVl7sw4Vvv;N zj$z|O9lw#hlHW)U@*5@IPPg+L$w7W2ImmA$2lm0sLf$8f=dFK(=3xDXjE zZmeUt5V9+7tYf$kyDM(2W4Pc~<~O#XpUl)M28XS55a5$HO5xZos+c@PdUB{8e+&2iBvskrE^drY*A!HC$cr26 z(uct@FK&#O^?( zA&ML8M0oIw^Bc!H5gsh};>OB-!4e|Baj4U8>yEsi{KlO)wM#$NMNha}C*cYAZ`^!% zcKLjB^8UlGHz%(*&o_@RH&0F;pTB&4dGY4)<=Od5L~Z($)60{~uP-*6ljoanHqT#w zaO38erx%--mv{_27&mU-K7WH>7dLKxzWElzv3z}3BOfkIh(A5McuhC6YE3r}sLZ){ zit#3fPco-v-O&rC+aLb()#l{pt(Py)FHz?5=Fuhpe(&t%-*4Q!k5_8Gn}j- z*m_KZa+r_LFP>~J@F%k87c_$Iv~+2m5x?%kWQ<=GpABCmV*Tw`7}doJZT zG_&)Q=oVel7bI;W7vy?6s}$w>r*B@e7(ab}^7Yx~;`HM2*Z(~Ea|46r?B(U=+2-Q) z$>sUU=G#+9%~u!aPayP3x?gO**@@=~S+5ER*ATw0C0v7Nmv~IGpno7Bavd32IW zh#16oF0MJTm`GBwhA2!V1GqzuXlSnAJ-MrV<@8>$wOI4~%SAWO{7%WWM3jx*zd^cd z8bD?*UPS=T|M=+N;j3Om|E{}!@!QM>ymET4_yYZDexm>6{Fy0v<@`9;OTbXNF9jtVaBnf0Hrq2Z#QBs&|7A13wi73eud`roD=g-a_Lm2<}*~Qt* zXF(D}_P)UoOzzF;i<4U)-`z^!C|aki?NH}j0C&ougXk8BQcUj@LEw)SHURw}qAk}+ z|0at7hYhG_=K!jMXRvg$SN_0Y#`HtY^!#ceG-Ao}c~`uHxnC#k0*Nw){6RB{n<84Lf;~an*)ruOLCG(A@_y zZlFxgxLhdZn0^IzZQBlfgGFpnsBt)7rLZ~~@Q@9Eh$EVEx< zo<7^0JUP8QJ$ZF{`87NCEU=?QnOeV45K$2DT?(E+n__yW;923^f4iW4kFp5LW?j2} zYWHaXTriRth<2awG>!EuQV!UCq2}b;-52cjN2f3UescQq$;rj$)pKZ-lNYD2wmUE! zPMHkUgu2$8ghlN1ZSTN9onrdjc&V74+}@7&Ad-H*)iWl~{jZA2$=Sy2J#^62>{)Uy z?0sW)ZvDW!xDxHW z;9~=Y)BBo(j|~*k32U+fBqFuJ$IMkp9zrLCP}9~9ypoTH#K+@~kAtwE;A6-`u5Bw8 z(J71$Qwo77#r#e&bT}g$7;+(0xtSpT!e(mM!_;QVa=gJ5jLcEcAs1>D82p>53WZaw z`8QJ)id?v{fh8Piy_q6w=ew!W!dj-?wA${bDDJ0s6HzNy3qawNMu%;uK$eV+03a7c z6?{bd3HcB-Z$DhY zks$kS81c^;=-`xU45RJ0FuK(|Fml1hn^}ZZ&CQ(4pyr`90#RYLopVW4v6~Lt&Vew+c1C*AWn(cjuaas4Q%%@;!2r&)s}=~SP$Lk{ zB7p!)%>u$H*qEIm*}|Th5^Z&KaEdmD0NEC|^@MP%gOCe1-c2G#Y3(Lv?44=^r_)oW zqYq7rKA@M$ZZ`#`H@TZ2PUUXm%zeV~)^}4NOu3tKSyTal7(WqH9O z3GgpbY9h~l^}*Lfq(}-3kauRV^(HTMDKqdT5$ccgCoMGCSn8_Gf@NT-z8e zC#KCMQw3WerYZwrip`CR3fCgi=B~AT_3~K&oCX&GsI`3S0PG>&YAxS708Y`y`^aVa z*1_0ExVbFfDj3Bly(@MEQ)5BKe~>EeV#)xogOLk2mMYmf6;e}{R1wwVNO#jyDx^vZ zPT`39R;ol(U|OmKmpzv%#n*Z(Xn2@Z34|%6in|USo4R!v;Ccxy5POI=hXI}+dx&<6 z1;Q!bg08MKz$+m*1zgb6l?Hevgj~e&ZbBs`cE;9)GIvuhkVr>|4lk3T-X;a7&?jKK zo6;eQDR(xs+bNitOQ({p@YZ)zAWR7$mqir-oCdhDgcgY0%&G+8Fu*H8IDJVr7Rch{ zIMt-VSqZ{vv+;i7lx)yYlR4Q+7*6rVFg&TqN*K9-qph7ElfOz)7PaTJwYe6)LQ$qj z6&ic&wsuf}lZsMR;A7fcE>$q~L5eaGrrg@OjH>|P-P-EZmIcCFiB2FqTe}W~Q^@%g zWgP^ki1R7RItaOdj)GQd=!|yi`|@-z?T4pqhIw9QjLFD&*l|0@(=26uopR0ALvh z*cGTsM?uXn_8+21|GF$xBizU@5zQd6Qzk^YwA@1muu(wKpm}fw45_5AfRRh13Sxkv zw>V%z&WFQkanYi54J`_)ZH6AzaMv$N-h(2za^|8q4K7R{QMBk_Krk?3^2V)`k3Qmv z!dLh2!o3OSw)sHfjhh%cdH?In%U7@eyjZr_Z%g{WXJ?mRzj=gzjgQY?(7^et&CAm> z`qvATsMCM3Md^a&>66FHr>LE19`)^}YunSYA0YJl(?`oq|EPc5^y8za%hf4e`wBJE zIB|1{xrXK4aP$%X9A3P6etE{#)A6wT@M!b={J-f>bo70Ae*SFx?+2S#mzx)lHWxI~ zcKrVr?TG&_AH6wy{)GPV8pqFZYM!TA&H8?~Z#ojL*c6X?gCE}JzfFhlF z6kYR)uA+BN1#3c;b;Bas7u`6i%IXAH(TS%51rAO`6l7miz^Id3MPr`|7-U~09ANzU za5(h|ElSr$`=aZ|dF+d#>re$XU`<36WM2@BqkS=teZj4S9rBX&SmaBxFDm%5a+^B! zDcKhZ2Lw$8j=FuyMK%t4kbMzxkbN;94yQilbqO1l?2FlUs`pIJ2>T*#Rci8g+^X~G zQ|`&_U`>ebW?$6jQ0{(8|)w@#l%6r@iH#!;WnqfhxXsAGGO+>U%n`m};CE4S$$`ZVEy zKCQq}w@1;cd%Q+nULHab}Abon=s`Kg7;&>fr5JW30 zt5Sml`Dy(qgOJVwZ4Vw?nL*&-A5I3!6hcTdO{Jqqd&<~3gtn`q@vsy^Y$TWGFgPTW zs8OMJC|Z4B3c*6*j7`EMIXH!2!ElBqXGtMgIGm!N7UjScf<}Q;HBR0xAy_N1 zhw4kA`@K^L77l04!7M2R3x_k+H%kh^!r@Hy&5}Z}a5%LHnIutQkV$e3neSJ`0CanKWzkbPe&*78RKD;czOGmV4TALZwIQ@faVy zN_bKg#jb@cl}{9<5*ADBp--c{*gutF;qdCyIZ_!G4yQ7iC6!^}aH^A8QW+Kwr#{J2 z86&dDH6lY-yjeJ$`h-d)qUfShi5eVLBGh}fmP#cO4x|m|!{JmZ^nt9TV9}QJC_?8G zp?oyh7te{o+Pzau#s(=)ELTL8=14JFFr4~imK2kP!>Law?{{E|$wJ}OCa^yv3bH?I z;^%cj%c)Gr{!BPvf6j-)sZ7ZJj5x^toDYXnnUMXNaL~S)&OqiLpNkd4277qVGI#j4 zLd4NSo)eB^3erkJ`t4voiR}>Lv!oy`mT`Mx@fbcAT1nDeZuP!1o{3c zNDGHkpJXXWvV$u`M*j84Yea@qqmUgOMF!cy^Wku+6taU84%or-;c%)HvV$Xz6>Xi_ zM7dL?tk4uM;@}=>1mq~o=aJ>bfqc$UXCKR?t!3n>L#8+>0OY8f_(hb|hW*nwSLUc2 zKE#5ok4RF-^J|kyYM2xvNln(@J4{l?uj^z<>IU|(3&0FXY72!^`p=Q1wqQ7g|13#r z3x`wq&yb|HP&h?D#9GXJ5nJzfXvKozl>CseTO8P#^WktxesXFeJ;yjMg)I=QQ)EqOTdq$?LrEqGIkSyo&T0RFE3Zcy-sp+e~I(Td0 za4HinV(0=6ItMw8!>FsYa5&Wo7cm4Jd=7Fp98P`0>(by;9m5HqgA6IT>(<4nfVSx2 z)F)iT5OL5s$O;@fK4sx>Y7{;P8F279$k}i>RSKVjj5y%b%tsHWN+G9a2sp^8slZVu z%Dvqd$f=1q*r^%dh+kEz|NTDGJ`tcY_Q)QMCl0N0u~0ZQ3Ji->U9$JVPz#1rp^!nI za6lqe6#djG6z_KyVUVXJ98TixbuiSThEtuuAde_&t6Zw2IDauQdC(OZC^EJwg1&gH|;Qf*_=!|9;R zQf*`5aH^E7+J+4B*+jXw@cLecQ4TEou~0bG2@LX-3*5Wx$AaP1CS;H&9DA4jSU8;8WR|iY3x`vi z%u@Da;c#k`W7$t-r$B#H<$t8}fW;C{Wim_IkAdTVr1OALcmAdjMJ|FRzohf|-- zQubrvaB7rU%6=>yPL(oC*^h<8sZwSs`>}91Rm!pKhfXNfbba;9@^!9Ox$H-LTGcB1 zfjzwQbgArzpHkP{dd=_Bi?W~8b7HFOr`6vZAj4;erXntLSZ|6zp1f6h>uo?l6($Gv zrm#>rr9T$&;NBD#45#p)rR>MT;S~O~C}B3g0uq1vFv9aMQAOBQ;TqUNs!`P_OsVl3Je_H)AwBV6LC=4&omAr zOKah9suM2z2{`s|e{SJ$>JwgLlZ>?hy|Wk1JHSuE{OSxh)J)>=5# zDr~<)%YG~rPK`q43!y9h{>^O+7~aG8vy}ZeLZIYG!9Glx*_Z=X=@Wg>fS2%^sI)dEVzqyUY5>ACW zOSz4O!>LSWDYvn3IMoTS%c12q1`d>FxcGw%;V8)WFSoI9IQ7Xa zxs8RwsZQo7w=rN8$IdGvptF?QSU8;8WR`Lp3x`vi%u;S+;c#k`W4TRbWZEypxv`4l zhzJ>esk_bIANsIZ!l_JVDYvn3IMoRmkI77nLI znWfyuz~Md9KTEldg~O>*W+}I^a5z=UvE1hE8RR%pxpSVm+=gq>cRi?$a+^@|k`w^S zZCZXxRk=+&(7V88FT3nCT)~4Ue0h4Yd3kxV?g$rtzkU7&zbh0iE1BaE{1o9N+He6Ab$WdW3!hSxq+{QxTl>T#++gLE1!he=>8w-b1_|u|vy|IdIGmDymU0^lM=td$c5GH|L(%LbZDRZ%KIQ7Xa zWiAE|@8R=V%3LfQPL(oCnTv(PsZx$*E;Bh3)>=5#Dr~Mp%UmoJPK`20nTrL(sZeGq zbFpwZ6$&lNfn_ch3a2{pm$~TTJPU?Xo6J(?V&QOVlUd4K3>-YLcQavS=HJtXS! zn?-N-_-2u{6uDC6YKk>6>$TMsp`;%J7-ooK@r^qIW z8+HGzy@kW6MfS+r>%u1shf|r%lC`&RIMs95yh?a_58ls`EVszv zR3`ppd8P1lDw8Z(e(VWxT~CNTgr`%Vax(PLo)89Wx_b}chLkKvbF}?FVP)ZPDwA1~ z)D{k>I^lIWG)ZmYaO#silGIfqv~%i{S(4NiJ)9cFpQNr6p`Ft|$&%D$e;&VlGN1j~ zIkhUKA;YIrSK~=Dj#qvY^6HPuT8!z`sdMCpEf`LHGD~jQz~SvaK#OuSx%OE zl99-`>XXY+z4p4^-N4~(JwWzn6kV&~t&6U&A3s~I7f4|)&t6_`o^38DoB86+^Go{g zBb@wx@|ynm==u30`tRw}?&+rMn#ZT(;_dr}%Yz@#F(aO5U`0 z|B&lPO7nILvh#PF#5gqHajrE_^YT;b(!4Avp$^MK^XV}BWSW=1k5n9*?}~H(6$y)j z(!7y8MVgntn~}&-0RT$am*(ZNncb3nnHH%;;gsXzP1!h98Qho&kSl~+QQ-Oh~Uo*R^rHIc!m7QGJ~WU z-*P7GyUOjO(`ADo^Ch*ERc!K@(_w>Dk0>e|ool1mgy9VS`IB0eIGjq37Ui%Lpe8k( zI?kWes#0>JQ_1<0T9xw0sTbx*YMIO8)C=!6sr6lzgWfI;d*r98B;nGj<>tu8SX{H*z7T$u4~2MzD?I8B;Wv#8L76P()N=k1e#6TrimSqhc`7n1bvT@gj+o=HRD!uGPBrIGB~)pBgtc5e>Q5!;c$`HJJ~QBugL51+ zGjTZe!W_rUOdL*s;oTlH`>yH*MATi}&Qb7?+odn2R7B(JL^5aj9Na!fmc-;Tr)pq& z_)cn7Ng*W8UF(u%1>V6)t?w+i=ZcP_@eR>=r>CuGJcq;+Yto^s6+NXY8sB%6FhE>a zMC0ROs;Ovv--MZvUf8^RLJ%;yQ#~CPjSu80;^5w<4KNmb(RgjbSty)Z$sdi^mXig; zsg%f)jMQi#2WmpLIxAq|aEftSlmoK@77DLQXVor@j zn(@%{LY+mAT!z;~r;3{+&S}7K_ltm7Po>Hb>ui0Z_>nK3RwdTiiS~$7oHmO) zZp3M`nz&w#*U&e6sJX~x)McQix>X$zumn)!RC8H8ZSN{u6Nl5AJ673Ncnv*^x5Vun z*K0}CUmMp8!L@V~;(FmJb#c8l#r05^D&l&vdUi6d7wdVmxL%K7x+~y&SX?iVCy(p( zjZ-Z_Ir`#yT5cIAyj>^!aXl@zEErBPPQ-A<)3ngCP&hrWU6n04fcr%{EErB1P8rci z4RQdF^^Yf=MOCLp;&@u@M^stuTesu98p+)kscGp|cfuI;^%gyxju+D-?77;0L^|AI z;c&VtS=BLR-j3XEudY+QL7@8LdUZVJ)N%f5U!65FSj^iBf{5V?FIF)+zE0<}IJV(M z%GMkM9VVZ5PL<8!G+$V+iqrX{sL8mk38%TcjTj|v7OOk8oWI+Macs)M;nZ@xF1|2l z-KKMDxnp&!^8c*Wb?R&gR9|>eS5R9hoI1{5-Kq{)TZUBURB}X&1EZV3t2vFcBo+>*FPBwwQe(1X)YsJdZ@<@s?rC6ceKZ1anRKM(4vw~3 zT(*anOE~uJX<*XBsTZk=&uYogCpTAyQ14r`2hYDIc1m#DIx?(tB$`<<$RdTJ%z zfSy{%-EZ#xqH_jEpIQ0s0v<+HX1BaNm53iQ?=-1^qFgmiyjYs z(Q%@}T{tZI9LQ5dpS?{cV6^z6&)R~sP&mC6fAm?43k!x*jQguf4RvDSaEftSlmnyS z77C{jpCbxx!Ejpl5SED=&3fOuLkovfhLa^3SEcPyay95dvoK$s;`hl9l_BtF+e}(Dc%L?dJoJ9|( zX2`MvR6kI$>x@%@77nLs$f}OXqMZ+iQ#E8?DOjUM=D7Rq-S1R&P`JJL_V?MD>H^aQt~v((EwXf{#BV(*~YM3tp|Y&LOd(?gTXoJt!4#21dQ<1weo zCKLz8!3{Bn2%9S;=Z}Ne5yPpk$$N>^An&Cj0##?fES(z89|y0*;nZ=*IJnBgS+^)Cp{&8@N9!|yJkAv6kekPhDc5#e@ z*X(|LsBow1I1V2A9Gu+z^z8EFFE?&laqyzi1;xSnDOGXskw0lW%1_#c&^n&*<>|%d z<>kqmYhm#FZM2ELJXzeh`T6GCOR_jfCzjzCZtdV;jKkvKu?<9C23|Cqs0hTvXz|6t zwY;!UIORB@I56;QpzwB@@CSaYh_QAG@mT`D7CD?k+#mQggr|kWDa4O~UnM*(sye-u zJp#XV+@1^Z3IQ}rz}2FM(_z^o;95ryr^7N!z}2FM(_zU1u2e#>U*Olm;ZzOp_Or0x ziDRRhsso?YaM&GCxQ7OQEfh{oM<_gjUn8+-p>XQCW8hbOha`MIq%drUchGL4Mw|}( z^%Do9lX{6fMyGr#nwnHHnN!Uj>#!?~m|@{m+7KXz27WC8;#Ap$!V~zdJ-$3Ue|h63hECr9`ttG> zK8LhyQ71;<16n>iyZrhMeHdwceExz4zO#DLX?<{D@6Z6F!D8O#8H^+F*#2z|EF4aa zy+?pi=g}-2PMtkVp{<3(>6`ikjCGse+iv3B1{lv@ZC;+9ksNq&ddc5C+kQ9g$>Zfy zoY!q0_3fr>+tU%zwAIj`K3Z=2NB!fbA0Itku1@LRR~MUC7x)?*e|YU~`Bk>FSI^HL zpOQ$zmBXXW^Yj0vfADY5&!27o{b2Lza`WO*_?%nI-BR1db>IJ{Z?6rfuV3S)=l{gN z$IH#P>HBMz-P7cHo@0_DIoj9O=7zvvGExwe9QY}9F-iXZ8q&(5HaFJXPR1l-6>t_3 z9JmQ=LQ~<99~P4gX)W&^E>q%jehhr39CL^t--9yhs4y*m>Se1T( zW#(cr(sMCWR2#*w^0Q&Ix^T=A#kbaF4?P#@LA~#fIV)S7=31LW(EQ!c>qF2*PYDV^ z_w30Lg899TJ-R$q}|uP zj@@{#=CWKRRmgML;=V|y?mTU*t+#^+q41O&8j(&5h0}@LMLNHa=gfb1>+`#x-g)ql zQt$uu`uycK_ij{Q-_!WBBHG9gB%>i&L*PF!5(RNox8@Kr(T zc6kP$dAo`1@zHkO@z}!QRN>TQJZ`%sx|h~`?5YljQ{gQUNKZJZ)8;stoip+`7CoE_ zkNM-!>QoDdQ{iQCt?%PU>^&j?k;q-hkb_F$+f&z_wH|nhQr?DwO8k_%pb~%a3UXfr zl~UKziL=&Ytf0*68ojMR4ht&9PjeLjoC*qR^3b4?g~BP!35Bb!Q7dZ$g|}nIE~xZ< ztZTe-r&^SCDks{M&WMhVq*yqd%4v^|j&(Sk%88V9qz5VMiU^m{+}5IpQ#p~cPB@^f z=fjap@`_jt^T(k@rxrb&t_vyaD2OUMTpCGz3y0Hr@fV#A+FQ49IJHAobozblaOo0> zewF76KN{f}V}ZTxMWA>O4L@2aoa*5iel)|67G<3Zj|6Mit*AhftLcXJ${NK_Hm@&n zBD1Mdcx$i1qwr(ILE*>Qa5xnne~K&MAjMmOqfYUHgLke=rNZml1+NPo0S}I_)JY-! zDoKiwS6HWH1x0CC`>D2?@Wa?Ry@q$&LE<~nKgQzr+y|nxNiQl$j25*acac~EX_Jw= zdsL-OR{W_pbd?oplb9@Mb34eW}dlh?>yYZICZ20bWk63LSn1CQQ*6z;T%(kCVg zryQT*Q*9;;rx>5(Q*9OwZ(oYTvq&Zirx4#|k!nkmRWi$j;WY2bqD>{zm7i*>!{L5)sl3Xzd@>}`49Or9&%y4A$twD9TFa9kI}f02Ee#-VhpiNk3Vcf+=XexOzg zzyZ!RBT(OyNQX&Pr-jdnEMFIwD$T&(BX%grITD>FJ)Ejxjzp)01CEr-vgUO;Fu`cz za4H9Xf>FmiOdL+_;7>5>qopPer*_B^jFlao>!h-`m%|)gZA^MNwZl8^YV*IeX`ZXMKU_W6W>) zNXPd`bQb+0IKU)6b8H2eILebORthljQ+5HSFE2K)Hy7V*o}8fF>gM9<>Eq4GI@gf~kS|e)oOb;#A2(%q--TcT_Zy|6Be6lm zXhl#FJzyFD0n=a}1WwO^XfWV#3ejLd`REKZaLRe20U;n7%!I%x;h6?4L_5)-8|R>b zGm6AC00O4LJP4c~0@0wy$sM9Wk0AUEeBiW)MsALN?=vM3NX;6j0dvu-nfDjN3W*c}$ix<@H=;p{&-%?kgFR#-As`yegkTSu*rIfwX#kgO z1{&-k6A1y+Uqx?5V8opEOw-No@_GP?OGUZb0>ZX_Lq)gAM;lU6r> zTe7seN2hQ*%<2w=Dy(krsa}$<)mFD&PYZ!lwvlut1jJF3RyUt?+pz{TjD^4{+n5Hm zR(Bl&r)*;y)LPwj2%NHwXi#l+*CBAqHljhb)xB2!pT!4G*~T=ewYuvNaIhuhfJ)ty6X_^Arq^u?m7f} z$i!-^yAHt~GVuVb+mJ~7d2|OS(q1^g>b4NU%3PEvxlC5q8d2-TOR(J6+b+WqoDNd`qWvd%?4Z`XU#w9}Erx%-- zmnZ9vAL9NwYM+2v9V;a<2-E|0@vW;j^ZFScnaN2uBgKDe04uMm) zF%4?1?ivJ3?|C_aIhuhfJ)t zy6X_^Arot@Zi)fs3LCKyEtQwvk2(_{)LPw@2=vj!HM28Vk8f0t?o($P9K#juLlx<9dN~^mPfm60I4Jxf}%5_e!g7^3o(V*7qu0-Ip_lO3y zR(B-=r)*;yR9fAY2y)q0Ar6=Zl~%W*Mf<0tnwbfmR!07`MA5>f2bqMy5iM6rr_#x=2y^za9wz@@wbj#{ygEuJ? zvbv*7bMxWZ<@3$S`&DJ#JzL$V!7Z)s6vLjhx&zL_=tT{l%aJ?G>b3wlWgBr+wbiXT z%0R#(I4w=3rBQ8l*CBAqHl{(X)m?|cDcf9DcO3$!Y$F;}TitaCoU+Yjb%!P&xn!|8 z(J9-Q2DMiAKucUiRV)O#Y^&T0wG}348d-zDY3~sYs;%xi1Wu9YvbyUK>>(4$<|TV} zvaVZa91K3#=bT5a)!pjq3Jbv=GO^a`u0*hhOsuuK+qzZQLnhW*-IWOTkcrh+xAuK3 zKG;JhR$JY52=tF7)j8tfqxtF7+Pn`=Th7Uw+J>K32jv8-<9r)1iZ z)y+?F#=3`Kb$8P0jxp?MtDB^G8S5UM!tF4tI}oZc`$wm2V~Z0xO42Y>Rn@WcWWJsj z0;gbi{xqlLgJ+n5HmR=3vk76PYib6MSbS6K+0vW+dy%F~pUeBhLAE~~q4 z6>{0el0`K1G9^oHqLE|?3H%$$pa0_G?Ah7N)8{7_n}57HyV$&-BD8PLAD=#Y^ZfMU zpV=|(VS7G%8P(sUL@^f9dr;#ri4q7@NR(wR(wK^(L6b#Aevw>0^HX;6xr&NoIP9L0 zF$mmgGSc=d1v9$KzQb@xpioK1TqqG4WzPqbjJX^kX2j`2dNUt0vYKl$c8qK`O-I^5 zf{sqPau7R45|wn!#R}6=bb~YLm`ehtBR$1S$H0%{jvv#P)uu{OSG0u$9dj{L;g26i z$3UWjj>TaIrlaVUV9}9ZB;VHIgwK{A?`Jac@&X+!P9L2;KfBDOVotumUQ=wi3cyPA zPBZ5)@>u|!@&vtG#&-M=JqB?!dF&hd*L9~d8_}}%OPufLC`(C(T&PrWQ9?njIOl_r zi>V42O%ECbYBcB_RD&Z#)icx6B!^QtwWxlKI9lY!YH)-U+7ymlMpe+G1v5k(-J+?% zp+A0P(jymp6*$18LqC4l5RVRHgMZAxqHaMKF>tfkX%M3Gj=fKcQw$Y^AO;PTApWc% zMIDOVlBz&K>={rHcUGVXr)Vaa(|ZVlm@}Xt-mE}TwN%b;sTVDCp1B(-W_)Cmly>?E<3aDb`i!m;umlpw(saggMy z!BHc+R**lgWg*cOaggkq4~NtGB;l2CKzh~Ss1aW)@3)0Wd_^22zvjc?6r&`-5)R0w z8XPr(bmjfH5Q(segJf6@jv7(A@*bw3Zwa;gqG+)s-=@M4t%+QrfNsA%PxIkUXD8 zQ6)ybCoD*u2NW#L=R)BWq9n`%3YO*5D5^xL_X|8E$|DMr}!6ehV)kV*|GNT<#R!znyjsYV>osx>&O zHY>QyMGjW00SD>T`EYn0`3{xb{f8a#M%%6Nk84?@%G$zdNEa=@8UX`wMg@o}-Ofkz z91?>VBccFbRG_HRs;yIc5?cfm#1$1Ns-&m)oCjH30R>rG(y*n*Qzq6w*y zbPDO8w2VmJt@tUs1aVB3arO8in`_Sp8CLY#Fz)xqbB50wIJSa zm*Alh1+B<@Fr0=WElI+GHL1W+xhPIk(H}vs#Nij9!Fng&m^9v-D!EmB2&6)YgEayM z=8Q=Ym4t8#Pqzo5>lX~M<^A>tk;3OeXcNtX;gp`VOA-$3k{Zjsjx(GBbPo@r3WxWQ z2#4mvx{$S4K@X#T!C03eHy0~*3Yaw5tk|s;CTpmQ$`g_nhFpTO$tq5GSSBmmj>%9Y zlQq<Nt>#5eTQ`Gi5W{Yb$Nj5%SP?C*9MTyrdHtAtxiv@={*@`n4Og3>2 z%_3WIPJ+nBPr06KEq~{|+xe2Kbn0ZH0Ca_-1j%iq(;_;IY=I)h9_6F6Y2Aoyqi7Uo zk}coZOg0iV*ORU5Xp{Df9k)d;n&!5^%Ee;mLgH<6Tck)ywp>au*+f?}lWh6UX0p*! zt|wdQ3D9Sk?!_<2E0$yH)k4vEz3vA2zI1OGE1pMzWc=*L)@#aL(%25mdcEo(J@c_< zfp2q%ciUZu3n)B`pY8K--HMo$e$u-&i*-Z#FCU|SN50zL%VU97+cDhBy<78pad2-5 zca(;pYnO(-t8Ff?d9IW z*eH3jX;)msMGs8#(!b-p+4EK_GNb4xUDv<^#s{*CG5Uo}Mf_~cKW*OwV`Jov-Pq79$=J=WqkqRe zy~W(%I=NTzjKfF<8vSI?TSq;!8(Vht!Rz8W{L)ZeCjEE&JY1*nE&CPOuk@4V zpnIa8-rh@NRL)2L-92weYqY%=9Ms2ow_|*-mRAiGV3p6q_v!=|JP!(_#D};uBvv`b zbIA2rVS@-=0r5N<@}+^@RA8a!Nqvrc*GhJ-mP)?xy<#nSOv+29!j6Du^eLF1~!Nx4;n+CH&Q3# z-cH(57#rpKwu>cw{F~mbz#L`!_I+_(EA3OH1BR%3%6pCVkop|=a>_ZMw}r_dc?f@R z41EsqS*{1}?IT}pv0!W@538I5TUyJAWOwe~w^_GR*CMh!#(lY+gYZS0W_vG>iT#0l zSM=$n0!xcgp_BPuV}D4Uj9Yuje;A{huyT%Wu{Pv0zE&ydhwIjY|L}=({I7f-;ghxi zjY)luI|u1Qv|YDWegNGo){>tmi!BAfU`bl%} zy?TGN(#OWV%HL{N&4PmN`ST!jM=Ar%$MA1B7Cg42AFh+OMY~$A*Mas0KEpq6r9Ov| z(<)uDS`R9|0W8Y5r!hg(mPjwKwChDDZT=4Ko4k(RH|~Y)`{KG$+RAVT*U|^$dyVyw z`n&^4Wo)TKq(JHqdY<&{c}(y)?p?(_xTQT@PIz$TTH+%WxV;>s=SlyZu9N)Sp#!eP z&(ap)=ZXD+dm%Z>dAnw{w)ol5=TK%P{~-|#@h+dYRyJ#gFBljyww3-lu3O7k5ZV@5 z_HG*6@&>)H)aST&kn)r~L@BfRUa^)mCUtU$b0N|ez}QOh5V?)U{*5-~7BifMUd9T# z0YNRXXBdmvTRbM@RR^ZF;ju#?lzdO`8*RPa z`jTvy`(xF@X*cfG>jCj3-gniG(iiFwJ(V^qus{@*_wtzF@eY2i^tUj!ls0C!hDg*l zTqpf=x(=lwm};jRJNR^lz1vA!fbhlG(vE)Xajp0TK3#mbEl={jdVfGXl{Dx`9SM64 z)KhEOFIHg6@;zt{>7V1eB~_l#PqGDibe56)!uJ~MA@w=##TJ&&gPRie(RL1go>)s7 zlRCLaltIQ5`v$5^VusIT@FaDN!((^$8d4%Emw*qyBWhk^W-P{fNPUibvAxQBdl=P{ z$N70;Eon^ZWZbLldvG{B5HSa4wfI^3=Y&r3GXi~`#m|O+4pA=X2hA<{xhDn`JW20n z=<`nMHZya=vkM0foax0tod2)Zix{|RQ zM4$QV2sviH*VrG@$Hu*5+=ILK9pQioS&Xb?XT(4|>7UbeF>bMY9^6$+)=67{Fw1y5 zG{suVCX_V8r73C3_lmWoF{zVrFQV(^y>M1lj2l5^s@26Kc6`9klk0&nm)u)D(wBy< z0@cOOE7n))bKI-!dqfnB{50N8?~h*UWZc_H`vqgrz~#HapjpbCA>KE|y|o+oo!T0L*fchzEfP0ni0ucdbEAi3u41J#N&G2czXMnhp{_21XmGo114q@-&x{(fy z(od2H$j+>#4C8x^^^p2}Kq7~VR?FuhW-jClJx}`fJSJ$0=s5SxD4&N~1HrpwW?M9s z{yAMI_bQlqCH+gnB5eU46Z-=#ffur_U})jH81E~6dw!mvDefJmFNt&>qUM68kW5l< z(etE#j@^-Lklp&ipp^2D@74AdqLDoBj{mSLrEVO^AQJMFpC{Im#-vWhz0i*0-4KD7 z>oK4*MaI$jd2&65ZJdAizF=}AzSc`yfS)J#2N*EYAbTEEh1fHEuUJbOlR6o}&SYce z&s$1c3L({0o3g!*pC{J?*GXSvfX34`JHTSBht%h|ca(J_1GbEmFNDR==Y8be9lwm& zabe!=dvM5Ct~p|$a$oWsay_7FrN4krvGj(&&`Vo@o+tG=?p;cKIV_Q&(f&ej=<{Cs z*ti$r48hMh-7n)M!*Wddw=G==pY+e^IvJ;ibw%xXaQRMV^Syy5x3uRmxj#_K6!r9W z-eI{;dE)ID->daG7(vK`B`Ne03!XPfei>l$%Xu+JiZg66<2wE>0sgkd0&PCXIrv^J zub>JAzEzLpqQHmrrObKp^Ys3JVIrRggIB&UV#qS~I=~~5a+2nd{yAMIeZOIiRF>Eu ze6L=QBs+KXTO%bR{Fwm~oBA8kPtx)HJh7HECUr9IMK-3q7h{@-*3hCtNAdIIdcao}tf^U6Rpn1&LqYJFHR8AoethB9+a>a|n5b z>%hF_^QhWU%2>YFSP!Ysk+p*LD4vIyhedno+tVD<$3`N0lzzYnX&`MvB>YouyWk<| zpX0h#>Tc||LB^yBi?juJOvo$Ti>gogz6f^)T9sIg{UPJ+kfzD6*xpMLR@O71%m@g} zc?qBN&*?hF8!cW}$OyjIkXP~EE&q*>epEzHKWVR`;1d-b4SaBt#+9loxIMAh$W=yRwGzAk$n zS}cisQAv#dmCqxO$)c(B&vD&K=2vknA7x(U^XT2AEkI*ZpW|MoKd=EU-xO+~d^dic z;BoSLWb6iGC|@Y?AqipG{HeBLM?VBOWc>@wzf_mIT_eV#<<%(T?YI}5C9sggD%Jzf z8>Mg0V}i#=l&{Hn1d1n7A}i;BsM9hc)!ppgcc61W^4?L^%n}x93-FkfSEwYGvJQk- z^(B0-SW6xgG{wCrSeE!!YsHfgM260TGtT$!-WLK!+5#i$C#4Q0EYcR>F`>^#FtqeF zAixk%EHU%FVl8P*>SWxDz;byn#^4-?G1%>f&P%br-TN-#9tmDUF_)_8U@XRZ$ap*M zRk44BCzlrOWi1`eA$2lJNf3aR?}pHbT=OLg3k09?^W=KqIvG1exU)5MS;|XpX+_Ud z`W(j>q@1K|tzpZj8s_qO5+B||%1$_(scv&CUuaCmuPC)B^AL<#+FUTNq&}zX;`6rn z@Vu1~Lm8EhM?HuUTLSCzy5-MX%UC4Ot7u@H2_byyJrKCnI(d{n`-l~nHYUv*_eX{g zMAdpL)hid*S$iw`*!gv+HYj^*%k%(C10k74H%Kw{pyQ4%(LS?tok)Xru2G5U#*x!>V3jz=<{S- zl=m9%A@l6~JmWp0JlH;u-owa!ru@hDI(nY81$a!@FFaYqo&yIU#jF#|8TY$&(K1TpSueprN^SxSssIz^1oserZCiOm#8T&l? ze#QI7df@FCXoZ3}O)Debo@!yY_wu~PdPMzJT&MLp3M~Wuw(^;t7i0D1y#`;&SUuls ztcUX1S8E)!(eG=-+xb&{cy5WsSP!Y=35(X}YbZ=TZ?tKOIiw%Y&olT+>Uh3R@fG4P z;ogGIhJT)X>;g-)Ps=f5Jz~AZ_PP-f3L|c|jP+sL>j<-<&r?lcd7XGSx>xFM%!^h% zn$CtkN3}CwSIlAP^QEkV=Xr(Bqj_cQpRY6ahs?9{b(*jEI~n*}jxXiow_})B#Y=Dx zf6GDLtM^CB*KVK3_lkGpF+qFGoAT#5UvXc2Ij^D5SB5@c8TvfM6Sw$iUKtM~e9>0k zUdLm`dqn@OyiU9u-)pRgq0eEYD<0x@%8~|#K1bl&xL5CUR6!coX}&_CV0j&AHK=$5 z)wgT;$4yWr<``!vXchhQa?E%SBY(a!^!bWDj;!W2)`WWfhF4a<(S^*IJv0j zjkR0ly~cVN`aIRJl=m9%5o4R%>##~x*fM?_N@ z&&HTK6HH?=*M_us>e;Ye4;qvC1&pDRN31!@a%G(iu4`qi0Arnu3(%O10bmTL;?x`n z)~m50?u8t)I)8-csk|S?mNMVNG&SUv5pRd($yf>=iuI?(nAGt!hoR4*f%WqYeGUy` zTxal=;h!g4xx{C@hxFNj8JwWz1t%C|`aMz{J)ajVY}~8g11o1-r}xJ?#+u7Hv>sd= z`W!_GdJaRMr?a5N9EN|MYKqG1jQ23~ISfw&i}42VPqQD8S4>k@8UfS zeV%&sl-C*WA$@k@E2;M}hMy82?NwPWDYkCn3!(n}XUUps6MBSZ_r87?X zn5y}tvLNGmqwze|F9Y``xslC*CN6>Y`IxE$MF20InaZ!jF){gWICUHLQGVT^avfMT zm48E}z05CQ-nFcGLM24%N0H5equ0VV!*!jCt za^NtykQi6jsq^-@PSs0cY$!@er0n&5OLLngeA}>RwEtcw^aXdt;gE4>Bw`dZRF-|COEt9*v|6 z73Hh3MxNzHrH1Nrg0Wun5aQHIzTnuqo&y;|HSbEVIT?!bI;cjq-*6sV(HS){Y7Y2$ ziUugu($}f8X;@t(6BHI@+akGu_Fm<67(*gkjdfC%;JQ@nw_RTvllei6VcV$ZB|ka8 z7duW~hjSC+eV5c?Mm-NDC;B=ZLr~8{mjyMZ&T3%}G%--usWaM0x~RSZ7*oAKFor4{ z`8?hC1J{i*PfTOdU%*(3UuE=bll_v7;h3xN4VG{<Q_Z$(TB(|<9vnUE0jqqy7UN|OMK8h z3bXE=g#;Q51a)sGZ692R<67!Elyj;vmFvL0$v@BD4JAqnA6Q6_fuZFbDE&~h$2mi_ zmS8_cE2Os7bx7x_chj|RC>v2ZTq*(Abk_A!RB|F~bupG~<%}*=#4O(zH9%^8sX3Lp zF6GAZ=c#%mC^F^8V@%Z&V+_YfF7-4Lsp|X!#(MQU)Rh{~!{IrB z1sXu%Lphgz9!zhA4{hY6JVj}q)Qw2$LJ7!ubGv`4oBX`|yh9BNR{Q+-o# z-BQyJ{Tbw5XdwS2zcgJh^)wW%vJ)}3lr}KN)Ok|`RdDi2V#di?ML(PnmGS_QB~3q+ z1?lTlkEmsXW(;ax9BP$32}?@p9#m;bzXH!g6_9+75slTR!?DOr1%>7#gBTEKAkzmAa)VT|uoJ6#aws~(?o@n_W_pU( z(6w4&MzM>cGeT90&T!<_9J;3ooLaPekeI3Yof=E=oNN!G>8+#-+;dsS2&I5V9pZU7 zy()bdT&HbEhzMCTi|asq^}H09+To+7acW+4hLyBx;o?YIp?i+fTP?a4%Kgz&*FA~F zkYQ-vrtCFzQBryamnpeRp$t8T)(eOzDE@2$s&0jw7hyZln<$Q!)quW!l5&@mPoTJ zEV?cd2O}H3mPjqCIbdI@IdrcGJTKKeW&8&-R`ClCVJSL8bt@XIRUdUUSV-p_@;Q{B zjO&!2j4^a)5wu5xE?GklBN46m)OE^_$939PL61hIqYye&{x3SrC|*P74y9Ajbw=qF zYP=P?R^9p}O^45j1I??z*WJE-PGjiHhU zNM9-*!udgU9TFhwc{o<7XoWf%MJqIfQap)vT9WU<_DV;=qf@-rgEb^(?0ltDaO_U$ z6f~1kI)z#*$@j%qBozO_j8J|GLP1In^)TEeUC>fi@fsq&%C3W_q3k-Glu>JrrcNpz z0S&KgWrzrQt_?+{NMwtBi4!YoEs;4`;cK$=b>su$su%8P&yB7iIvX7nL=g1z-(8xHzM%*d21cp#K{L0zlX+C@q6?Z zQL!6@Xl3mnimB5Xq8*UjQ*2~50KebdjZE>mA^`9Nl9lkhq|8QkQ0XX~Y*986hLnwj z7NL4QaLQfL6tYRJrSA2IWCfZ6O3YBd3bQ^pi!5xa8_D(pTp>j(NFBwyDBV~1a0XDl z2TB&D%o$KJtL8wtsI*@|Dy8#~aZoxBVMo2@DEwFRqO3~22YgBO9#pI$X$scR&%=pM zbsYk1Vhq)FN`{e{EuV)mB`2ZE6b;b0LeUS6D~vg`oWx0KB`0y3N%1|EB*-;_8=&MG z)T-hQ^gU9%ffLKh7NzgSNIE0Rs_BO__>!ODekl6|TSob?;1=b>!aGtj7FD^**PsRi za&J+C0fhx(NUb>x6GgvXeY*jlcTxTH;klsOkmMmK5Jf8pF~vjtwYpFd7Qau2=fQwc z&r{#1B9BSW0cKM)zyd28;CQ#fjAOHk1~?w7FjMu6#E0yddLArj^*oYd>fUs2aVOVC z9P?6`jrbKbql#a_g;jeWeVEnW$Dw7-yC}z0nBn><%qaX)bcRo-Fr$D-(FG=U-oA=&Anl@TDQH234`V8Rg=o8?0g_6}52b{UwfMB@N3lxr!bVkrp@dgDC6+VPZp^t z!XWB-MhqTVIwiBoSyQw^_(1X+)V|V3(C|thQTRpbZnPCrIt5Qtd=CRg?P+XjW$VG* zP&x(Nr|b=cxRuO-U{f*&p9)Yi2UdiVIjEx5_`qz6R){Dn8X)Yb))%Twts7of@e7X0 zsWrm4FVws!N0M>_(IzGD@i>)-#i=_LtD+ti>Ul7w)VramSLzf{PvgUR7xf+}kCpeX zjGQ5|TS})Om8xino1#6~RL`O9dpf5s`wKP3a2yRGy?C&N=Aokkpjx3wK)68Ddw_83{AVL)6bwU#DYp@LZH1fE}ZJSbPFm z?IUC%ln+bk6vZ2`hZGGAdkED?N~a(jp!PXZ(Mm5E{n4pqtFqT{W1gFTP@@c?j_#DL2+s!6x_2vQ@Syxg`2Jb@mX^Y#3egc~JZcGmd;K%usL&pHWvu zX)r|>qpk{8yV8yLLWa_f=;EsKei&1=$%wuve*qd<*$g;wVa%awFwh_XRm>%=Fs8n} zj4|~M4~#+Cs(Vp5tj6FWsWJ7PGni}X`+i#=8)M3c#h5yuf-wXY3m_d7}9`!u9Z+Z-iF0mlNpvOA7SLt&YGH;JD^^Hx8 zsUAHTQ@RHME!7JXW2#mNW9rNR#?*N=jHxqr7{l>7`M!v0=`of6g`0vvu)LS5X4RO% zyV|b9^HR^?jCUbV72l)Piynh!mGk25^q8tMhjFUT&S6aXF64sgJ-AZ&Ra~deP+|;1 zQQ|{As~%G^U$}YdJ1`hixde%f?*ImVc(QNoz|ZYjo6 zU(?mjE^HrtYZHdQ)kXFrfdd`Aq%PINPQ(UeAE5zv3`I72O!e_cC_~i>VNB(jFs5w*Qr&tEY;=W1)pD##DR~V-Ot@A5t+=pTh)^{x3XT<(FYhee)h;s(&%YRJ;UZ zDn5iUWoKhd#q|(cQhn4hmcCJ%(GP)OY1g6RMEVA}SH(9lhJrXrE0lStF<2{l45;P3 z6mU{w>YM{YWa=y^##B6lLTS=h!^u1nwc+|ijzSfnh5*{)<5RDg`D;CZQ+RQ@~^3rQ@9dC0wwGZ!-Vgy@yZ z31bXZKeCTR4)sRsXAYb zrSAe{d}Zhbbav3|LCv@%{SZ`DG(ck)ML*~T#k*(*qG*c1nOcuE%n&uN>a&9aGRY)P4X_z zqR7}k?p3`ur~*UnK{}tJpNB$KHE-$%wc{6@S&{X{@L<)M28^{zC!?fD`RAz2Q~n^V zY^7(6^DdY}+YIDFsCPpTp^T=N7pG^>Hy1ZP`sl{Z2WS6pa{}9Fym9mX`T6AuE<3q@ r&dw0J0^v3@O$VobM literal 0 HcmV?d00001 diff --git a/docs/multicut-delayed-inverse-checkpoint/requirement_traceability.json b/docs/multicut-delayed-inverse-checkpoint/requirement_traceability.json new file mode 100644 index 0000000000..dc8f8c16de --- /dev/null +++ b/docs/multicut-delayed-inverse-checkpoint/requirement_traceability.json @@ -0,0 +1,152 @@ +[ + { + "blocks": [ + "F01", + "F02", + "F07", + "F09", + "F21" + ], + "id": "R01", + "name": "Immutable construction", + "text": "All numerical code, witness bytes and exact source pins must remain bound to one manifest." + }, + { + "blocks": [ + "F02", + "F03", + "F04", + "F06", + "F07", + "F08", + "F10", + "F11", + "F14" + ], + "id": "R02", + "name": "Payload and restoration", + "text": "All arbitrary input, old-target and dirty columns satisfy the F2 supplier contract and reverse restoration." + }, + { + "blocks": [ + "F02", + "F03", + "F04", + "F05", + "F06", + "F07", + "F08", + "F09", + "F11", + "F13", + "F15" + ], + "id": "R03", + "name": "Legal actual geometry", + "text": "Every used frame, inclusion, complement, chart and boundary must be checked as an exact subspace/operator, not by rank alone." + }, + { + "blocks": [ + "F03", + "F04", + "F05", + "F06", + "F07", + "F08", + "F09", + "F11", + "F12", + "F13", + "F14", + "F16", + "F17", + "F20" + ], + "id": "R04", + "name": "Complete physical price", + "text": "Every recursive child, scalar primitive, move, copy, bridge, route, selector and fallback must remain accounted for." + }, + { + "blocks": [ + "F11", + "F12", + "F13", + "F14" + ], + "id": "R05", + "name": "Full bank address safety", + "text": "Every literal helper occurrence is assigned once; complete banks cover all coordinates; full addresses are nonaliasing." + }, + { + "blocks": [ + "F04", + "F08", + "F10", + "F16", + "F20" + ], + "id": "R06", + "name": "Separate lift and precision claims", + "text": "F2 semantic equality and chosen signed-lift prefix majorants remain distinct from the unchanged source's signed decoder." + }, + { + "blocks": [ + "F13", + "F15", + "F20" + ], + "id": "R07", + "name": "Complete prime coverage", + "text": "Every physically consumed and defining-source basis has exact determinant/exclusion evidence for eligible odd q." + }, + { + "blocks": [ + "F17", + "F18", + "F20" + ], + "id": "R08", + "name": "Strict directed moment gap", + "text": "Both interval engines and the full rare fallback establish strict moment bounds and reject the adjacent grid." + }, + { + "blocks": [ + "F17", + "F18", + "F19", + "F20" + ], + "id": "R09", + "name": "Finite ordinary closure", + "text": "Use three finite bootstrap levels, all outer inequalities and the full inherited-constant cutoff, with old-leaf fallback." + }, + { + "blocks": [ + "F16", + "F19" + ], + "id": "R10", + "name": "Inherited theorem boundary", + "text": "All-size compiler, covers/charts, restored rows, routing, prime supply, recovery, complex-symbolic and analytic hypotheses stay explicit." + }, + { + "blocks": [ + "F01", + "F10", + "F15", + "F16", + "F21" + ], + "id": "R11", + "name": "Evidence honesty", + "text": "Describe which stages ran freshly, what unchanged evidence was reused, and which cross-platform checks remain pending." + }, + { + "blocks": [ + "F21" + ], + "id": "R12", + "name": "Documentation provenance", + "text": "Preserve historical artifacts, licenses and contributor credit; describe the selected construction rather than additive historical gains." + } +] diff --git a/docs/multicut-delayed-inverse-checkpoint/scientific_reproduction.json b/docs/multicut-delayed-inverse-checkpoint/scientific_reproduction.json new file mode 100644 index 0000000000..cad55bc86d --- /dev/null +++ b/docs/multicut-delayed-inverse-checkpoint/scientific_reproduction.json @@ -0,0 +1,54 @@ +{ + "status": "PASS_LOCAL_ALL_EIGHT_FRESH_STAGES", + "archive_sha256": "0461e04fbf0fa0951534e3a41371e004adde8c71e2e2fe56b039c17a0f775412", + "manifest_sha256": "9f6d8637b9a119cfe4566a02ab2d704f23c502e5e4357b40c28ef85a3fd4de89", + "source_files": 143, + "source_drift": [], + "assertions_enabled": true, + "started_at_utc": "2026-10-10T03:06:46.003930+00:00", + "completed_at_utc": "2026-10-10T03:16:26.881867+00:00", + "exit_status": 0, + "elapsed_seconds": 580.8764400000218, + "verifier_seconds": 580.0584316670429, + "fresh_stages": [ + "banks", + "bit", + "complex", + "finite", + "math", + "primes", + "raw", + "scalar" + ], + "stage_timings_seconds": { + "banks": 56.94726499996614, + "bit": 95.11896820901893, + "complex": 43.77407150005456, + "finite": 0.16010216693393886, + "math": 0.6504860840504989, + "primes": 17.10306049999781, + "raw": 10.393582792021334, + "scalar": 328.12508979195263 + }, + "kappa_exact": "1777613869061/2500000000000000", + "kappa_decimal": "0.000711045547624400", + "scalar_negative_controls": 25, + "prime_negative_controls": 6, + "omitted_stage_negative_controls": [ + "omitted banks stage", + "omitted bit stage", + "omitted complex stage", + "omitted finite stage", + "omitted math stage", + "omitted primes stage", + "omitted raw stage", + "omitted scalar stage" + ], + "scope": "Conditional finite construction; inherited all-size compiler, weighted selector, common-ancestor chart, restored-row, routing, prime, recovery, complex symbolic and analytic interfaces remain assumptions.", + "original_receipt_sha256": "327b8b0d5b7b27bc3f25e17222168262671364a3a698e4915a249bed863a8b06", + "certificate_sha256": "7eb58ec449c932b7092481746390c776365f302a742836cddef5643c0351802b", + "python": "3.14.2", + "sympy": "1.14.0", + "platform": "macOS arm64", + "scope_note": "Sanitized scientific reproduction facts; local account paths and process details omitted. Public source closure will have a separate documentation manifest." +} diff --git a/docs/multicut-delayed-inverse-checkpoint/source_binding.json b/docs/multicut-delayed-inverse-checkpoint/source_binding.json new file mode 100644 index 0000000000..8e0089413e --- /dev/null +++ b/docs/multicut-delayed-inverse-checkpoint/source_binding.json @@ -0,0 +1,142 @@ +{ + "accepted_public_manifest_sha256": "0af10dcca505cbd913cf1b9220a08b6a62687650ace4e3d1efd093e828e3990e", + "certificate_sha256": "7eb58ec449c932b7092481746390c776365f302a742836cddef5643c0351802b", + "consumed_manifest_members": 136, + "consumed_manifest_sha256": "0af10dcca505cbd913cf1b9220a08b6a62687650ace4e3d1efd093e828e3990e", + "consumed_total_paths": 137, + "documentation_only_edits": [ + "BANK-PROOF.md", + "NOTICE.md", + "PR259-PROVENANCE.md", + "PROOF.md", + "README.md", + "UPSTREAM-PR234-PROOF.md", + "proof/FINITE_BIT_ACCOUNTING.md", + "proof/INTEGRATED_PROOF.md" + ], + "public_manifest_members": 136, + "public_paths": 137, + "retained_numerical_pins": { + "LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "bank_check.py": "64790d1d45032e7f8ae2252d592759ff82def8033544107f9f0dd3bbc6841581", + "bank_template.py": "e255bdc0c0aa4465485ee34ece7d1f04ce3ce363d8ac62edc9de5608e46f8965", + "base_two_moment.py": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098", + "code/complex_basis.py": "52d68781eaf6d9decf02446a532a7336fcf15924a9f6781ba0833d038decb9f8", + "code/complex_labels.py": "ff5d5e914ef1be0f0cc30283a1ee39089b77e4b572f09543e7313d126bd26256", + "code/complex_scalars.py": "fa035447c1f3a5e878dfc18a900942aa180d8bfde03cdce2d21d9bf8b8409429", + "code/complex_splice.py": "ed8f7f55530bab64e25b98ee614e1152ded8a6259c48d32b3ae26bab4b93848c", + "code/geometry527.py": "bff96140e93c0cea01ed618b49b913f913c12d99ebb0e4e4342336cf5a102800", + "code/global_lowering.py": "c888c4d3c38d4a59b48f8a328fc495b3b38ee36ede133495522d8d76c100794b", + "code/physical527.py": "1723a5c53ec236529e46980c8eb2c45134c61275ac7fb85c8ad92223784de07c", + "finite_check.py": "dfb8dd62c4d068417434f6a43e15e5f69dfa40b4d95b7a8d4995b6950c095c61", + "hybrid-selection.json": "0229c2fad3b448d33ad1f21900ad67d13ab1e0c8e716ced9ec66b4ab0445c0b1", + "hybrid_transform.py": "c06837bbc6ccf068362e1f09f110319f20135588f42e3cb3f8bc753436802e09", + "inputs/complex/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "inputs/complex/NOTICE": "9419dd03a2f52cf8bdfc4d18216ce29f263ab583b27f01ced8e420985bcb7c81", + "inputs/complex/gcert1-p11-pr193.json.gz": "15251deb0c11e0504d7b297c9786818888a93f08b92b03c6c122784b70488633", + "inputs/complex/retained/FINITE_BRIDGE.txt": "66d8f4ea8752abd89952d6674a636575a0db16e18b1c16e293f48f64242f0c46", + "inputs/complex/retained/compact-control-layout.tex": "2bc28e50f3eb092195294cafa81213e520f6d42e7935e9905ad8a6199e2a7c87", + "inputs/complex/retained/compact-control-movement.tex": "b963c3d2f4e1b7059aa289bb4b4ac89b688920bcf42f5b20d7698cdef0132cc6", + "inputs/complex/retained/copied-centers-assembly.tex": "00117892971ae766188ace0af03030c44164fda105e42b70d84f52c3339a7dcb", + "inputs/complex/retained/copied-centers-lemma.tex": "d0ce6d3d504996aadb098227885224e48df46101daec8893523a0a8b7364d8fe", + "inputs/complex/retained/endpoint-gauge-complex.tex": "dfee33b0281e5551bb6927f757ff0240abade60ae1800f715afd88853ae0191e", + "inputs/complex/retained/general-clifford-frames.tex": "c9bb9655b594583c6b4bab8cb485233f1d1e588f83858cf1e4c3530cee8fed54", + "inputs/complex/retained/stopped-product-complex.tex": "4738089103a4b263b3b0ef458f5ef35519c696f1ea871ae79e508d3720f5870a", + "inputs/complex/source-pins.json": "de0daf6847185d7a6911535e3012c1a91de1e32b5da8204beec26b37523ad569", + "inputs/complex/sources/Work__Bridge__Cert.lean": "5c24746a6330907b9b37d6064095035a58575d64ce793d6d7c9881121fdc3980", + "inputs/complex/sources/Work__Bridge__Net.lean": "cf7d7d330b1bffe2e66712c873e647b13dc32db1ccfc0e0f4cd62ee6caf584f0", + "inputs/complex/sources/Work__Carrier__Live.lean": "6d0649eb62589e66057f044e1e2103fc42f3f57a1498f82a26565bd8eb4026d0", + "inputs/complex/sources/Work__Carrier__Phases.lean": "71dc3dda23dfe510d5d53cbada3a6c540cd1dc2825503fda618a5bd6cfc3e812", + "inputs/complex/sources/Work__Fourier__Main.lean": "2e8e88efd4dcbdf0b1a6e39ce7eea8c5fd5ffee2faf360a8c0c9cba84c0e4ef3", + "inputs/complex/sources/Work__GCert__Chain__Geom.lean": "c302f5834287421f11f3b0da7112fcde876cbc702896f2af4145b2d72ee393a2", + "inputs/complex/sources/Work__GCert__Chain__InvThm.lean": "ade7e7873da75ca63a4b5ce2f562dde9c12bfbb69d87d7ae831039ff790e5adb", + "inputs/complex/sources/Work__GCert__Chain__NetCert.lean": "22ae34809466b4ac2a2c5cdde526f51ff246f5189f7c142b38aa4c0dcffb04a4", + "inputs/complex/sources/Work__GCert__Chain__NetDef.lean": "6e17a68b1e988969f6eb77000028f7ed877e687b8ad3976ec1707fcfe1d2f520", + "inputs/complex/sources/Work__GCert__Chain__NetStage.lean": "c122bc01392a6fdcc0bee918fed81804d3c9b1d3e071016dab65a4ed804ef0b6", + "inputs/complex/sources/Work__GCert__Chain__Phased.lean": "0de429c80231334f1ce92575c1e8ac382ca2d5e7d956767b547639a8941d9a8c", + "inputs/complex/sources/Work__GCert__Chain__WinB.lean": "c33ec3fce09c0971c32ddcbb86d9383ffbe4c6d05cf36f20460005e6547bb845", + "inputs/complex/sources/Work__GCert__Data__B2Gp193Main.lean": "cb61f304da51f1dd0a2ec25bca4b63eb095eeb2863289e1e2bdee7c82beff48b", + "inputs/complex/sources/Work__GCert__Data__Glue.lean": "d5314f2b93a7f0e1c949fb502331825bfc6d9d8762d35f865443e7c95b6c7ef7", + "inputs/complex/sources/Work__GCert__Data__InstB2Gp193.lean": "9587ddb9961f44938032b609307ab91c0b0e757e3991f1ad95480dd50fd4f72b", + "inputs/complex/sources/Work__GCert__Data__P193Cert.lean": "d92ee6889be4753fc99f467bd84039743325123a1165128378b9c906a04f2703", + "inputs/complex/sources/Work__GCert__Data__P193Price.lean": "0299bcd0fe255960eec682eef0f045f7e5cb1e4711af2aab4393526eae2caea3", + "inputs/complex/sources/Work__GCert__Data__P193ScalOK.lean": "479434815822e98f015e335361089c3788d00dc3dd39c2944f75410aa0c158fe", + "inputs/complex/sources/Work__GCert__Data__RateB2Gp193x.lean": "6b40cac1481c931d47b1a092e382d04716ede0e785c492a2f2983e886a257c3f", + "inputs/complex/sources/Work__GCert__Data__Raw.lean": "aba94a004c94dcae7cf3047c88a6da9561555f4ebe8ab92e299e6ce09ee7aa66", + "inputs/complex/sources/Work__GCert__Data__SolutionB2Gp193x.lean": "45c768c9d71a7cc18bd6db74cb036db880d89580ca60557bb4a492280296b169", + "inputs/complex/sources/Work__GFrame__Engine__Adapt.lean": "feec0a3828867968a5c7c2c30b86ed70449abc3c660a60ada67203a75bae2ef7", + "inputs/complex/sources/Work__GFrame__Engine__Letters.lean": "34906dbf5ae16b5174db00b4881a5cc1d2e583b8c8806db6523a5e2f86565f09", + "inputs/complex/sources/Work__GFrame__Engine__Level.lean": "80fb3daa9a45de0ed6da570eb4476b9104734be65d0116f58bcfcbcd67f771d0", + "inputs/complex/sources/tools__gx__gxbind.py": "9c9dcfac47f0535bf3aa8ebf7c662cdef0ebda50a9f0a9282b8f3cf34809f835", + "inputs/complex/sources/tools__gx__gxconv.py": "dab7fec9f44c2d368ed334055d7126e202017feb46e41a8d86e2d998720f67c2", + "inputs/complex/sources/tools__gx__gxcore.py": "eb972c06fe8c322db2d9a8d9a7d05596e8f40c4ca8e5f42eb6df3c7361b5d517", + "kernel-candidates.json.gz": "5f6863ad27eb9f2fcb14db10320c00607451c01e12da303def13e48eda7a5d2d", + "loader/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "loader/SOURCE_PINS.json": "5a4fa413ea0ecc74050359329e90521723151e421cc0c19f774b92bd608a3ac9", + "loader/expected_ledger.json": "4910004287e016f7f2db10f0a54eed24bf1912aa148b347b3cb4795fa3ac63f5", + "loader/expected_semantics.json": "b7de3178436c824b6be6d99842270a82e1821b8008dda66d8b18519ad347da2d", + "loader/raw_ledger.py": "89ba53114488a77a12b941db2787850c2c41612ad0332c47699a011c0c596b32", + "loader/source_inputs/base_bit/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "loader/source_inputs/base_bit/NOTICE": "c9850418622aea8d1382a230306c940947b5da818f4854b4b272ed60cf239f6c", + "loader/source_inputs/base_bit/research/paired-cube-diagonal-bit-168/bit/base_word.py": "9fe3a81b7561d2b09c086f63fac4626e88a32369ef8bc5579c94878de1218a89", + "loader/source_inputs/base_bit/research/paired-cube-diagonal-bit-168/bit/word.py": "85822e9cca5b1b2335c3704a3df2f3c6ef01e42d8328daacb33701d30cee80ab", + "loader/source_inputs/base_bit/research/paired-cube-diagonal-bit-168/references/pr168-v4/research/paired-cube-bit/check_paired_cube_bit.py": "4d7c86cd999a1519e0dfb6dcf33a8f26e442a353c3665a0f06881216a260fbf3", + "loader/source_inputs/base_bit/research/paired-cube-diagonal-bit-168/selected/bit/frames_p12.json.gz": "ad8e2705652b68476713d7647a8592505e222f2b3ccd1728dedce153aac6d462", + "loader/source_inputs/base_bit/research/paired-cube-diagonal-bit-168/selected/bit/graph_p12.json": "31a09a55920e64c8bfbac8b845dc01754c112aa6e207812e2fd1f4939d8f64cb", + "loader/source_inputs/base_bit/research/paired-cube-diagonal-bit-168/selected/bit/kchron_p12.json": "0fab548e84cf5ca7c04e8bd19b5810850463f36e0f92180efe73aeff17105e39", + "loader/source_inputs/base_bit/research/paired-cube-diagonal-bit-168/selected/bit/profile_p12.json": "c44ef8640cbcbcc9bac3a30e13373bd79efddde55d7cea514354ca2cdb60d66d", + "loader/source_inputs/base_bit/research/paired-cube-diagonal-bit-168/selected/bit/sinks.json": "c00ff70c564829d4b97740f92796fc6ce14fbcd5ca519663828650552b80249d", + "loader/source_inputs/base_bit/research/paired-cube-diagonal-bit-168/selected/bit/word_p12.json.gz": "1cb7e8ed45cf542e304fddc4b12247dbb248a0dc84dedbd832f336b2d172793a", + "loader/source_inputs/pr210/research/coordinated-crossover-pr200/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "loader/source_inputs/pr210/research/coordinated-crossover-pr200/NOTICE": "9fc5561c0995892dbdde777c713899486920c32d3562392f5f72377a4953bf98", + "loader/source_inputs/pr210/research/coordinated-crossover-pr200/borrow/selection.json": "6932749407e14b199651f0a7deff02c6de74e2c1be0a1300263f1e164927fb8b", + "loader/source_inputs/pr210/research/coordinated-crossover-pr200/frames/opframe-bases.json": "687496f3c15818e7cad1beb5fdf3812b8e38825ea302bfd60aea7ac23f3516b4", + "loader/source_inputs/pr210/research/coordinated-crossover-pr200/gaugeb/selection.json": "b0f9f0e67f94a3c21069f393ea27f9483d315bff2f53f77270163065a6345d1c", + "loader/source_inputs/pr210/research/coordinated-crossover-pr200/joint/joint-selection.json": "13f6420d6c341c22235c9d136d5f7c32896974bb165a893fecd7e583b790d133", + "loader/source_inputs/pr210/research/coordinated-crossover-pr200/joint/joint_word.py": "de37cbed753fc6f13a7e5dc25c8346279cfee5f1868df8c12a5fcb6ca8f631c0", + "loader/source_inputs/pr210/research/coordinated-crossover-pr200/joint/pairs.json": "da54b863601b5cbc21d27fc5cd623bf805f974a3e47b81ed29a85aa5bad0fa05", + "loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/replay.py": "0cbec81a11e758156e9303f63dc8c617601da69523073fdf2a77394d76acf56a", + "loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/schedule.json": "ab39d61fff7a2cfcb13e2c10d65f2c603e76a91013d197260d6c7b645ccb27a1", + "loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/selection.json": "d94ef4e0b8ca98a7385b364cf245816a7cad08f850a60ce8b67aab4c3a89f3f4", + "loader/source_loader.py": "e5e19ee6d6899fce8273d0f06a49caf7cd8bfe940a2a9a103dbc9d3a62b6b291", + "loader/test_public.py": "2103c953b37cf447d1a2bbb86c26f96fa5569a3ab018567e93884c12ebde8a2d", + "math_check.py": "bb7c80571104d9b9c30ce7be53654090dc006583ba1838557a5307b8a9db4a39", + "moment.py": "9d465c716c6b910ff66e1453e3bf0057608a787b5f5361be93781f42cb3370f7", + "outer.py": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c", + "parity_transform.py": "ef6f5224b91c409c30fc0886143787a0839a13cc6b148e42ca5db858d502ec4d", + "portable_bit.py": "51760a4ba5b431d55b245aca2036ef51249942503fdcd5d9317d515ce411b87c", + "portable_complex.py": "797e144c0040d78a4731a6eaa61c0edb9803a08462f885ed014cbca9d9991d82", + "prepare.py": "fc109fe81d7d9d3f53483ce7d648dc9fcf6d9fb71b8fde1c867ece5283fadbcc", + "prime_check.py": "80b764f53b92b299569a401754047b1a86f80ba4046502bfbfea924f6ec95e0e", + "prime_witnesses.py": "98cd03bc9582e7bd0ab194c191ea8eea940539e510051443ab9fd3e572a364ab", + "proof/copied-centers-lemma.tex": "d0ce6d3d504996aadb098227885224e48df46101daec8893523a0a8b7364d8fe", + "proof/primary/03-motifs.tex": "ed76761194988a01af77ead0ea6469cb5dcd29690ab985a0b5a4006b0f2b69bb", + "proof/primary/LICENSE": "c71d239df91726fc519c6eb72d318ec65820627232b2f796219e87dcf35d0ab4", + "proof/three-stage-cover-bit.tex": "47123a756f823c83a0d48cca2bf5add6472cd88410b13aed345e70c8834fb511", + "proof/three-stage-cover-rows.tex": "6ad97a5cd7d6aecf978a81226e1c2763d37840caca130c61f3bf5c4ac111c5c8", + "raw_ledger.py": "d5dae7b56d403adb778251e4b42903695632d522c1392505723e2125162cef78", + "regauge-selection.json": "135e314f37bd611a021776991c9d786377b3829f84ca576d5006696c2d8bfbed", + "regauge_transform.py": "baa1c7390f449722e7e700fa1ce9afc3d00cd4c0f7faa5f41693ff88ec02fd61", + "requirements.txt": "25f9f1fb1988b230147a1d3092d34e09c069eb7a6c6d6df46b3973b9f2d36efc", + "retiming-selection.json": "b173080a2884d5bfb28e35ed5b4256e233cafc6275cbfe5a76619b406f2ce989", + "retiming25-selection.json": "e66ba924727efa06f6d2f75357a3d5d4eea97c5eb0eccdc786e5814eb877ce14", + "retiming25.py": "5e9e835730aac1b0752019530daa1e75c8938686bf8a8a01640ab69ceada90f2", + "retiming_transform.py": "483cb8da83a1444cbc8b1bbe60473e571a27e6e589fa64f9a26910ca0d678407", + "scalar_check.py": "13ac9a3ef3c131739478ac1ba5903acd638cf5a41c6fa463fa3e27325413c7f9", + "source527/echelon/selection.json": "8e6ce5e257aa7656898ab46bc3421df4a619497b1e9f5956d2c546b3014050a7", + "source527/extra/selection.json": "791f6ddeb19add7026ba37461256c13efe3d35bba0bccf1cb9787a01fc16f0f2", + "source527/fresh/selection.json": "4df5f96064349415882ece4ac9abd19cc778f18c0306a27b3d65027dcb04b6c7", + "source527/paired-selection.json": "67a24896e5ff6a16735efdff57fbb875aa411aba00cbabb22c43a91cdf63e084", + "source527/pr230/NOTICE": "7dfbad087ee49b74fd5075d517eaa263c5dd3d4fbd4c69bfba34ee1cb55e837f", + "source527/pr230/PROVENANCE.json": "19957e28a8ad26281bfe8bfaf8ae16191be53e729a8870a6154671b3384959d4", + "source527/pr230/active-opframe-bases.json": "9a2bba5c72aebc9ee4f21e59b10ce810b2da98a1fa1748fbc44c50a080e584ff", + "source527/rank/selection.json": "5c97c6413f1eb56c7b8f9ba9e839329d212fae7ac3a08c29e9efdee42f5048a0", + "source527/targetagg/selection.json": "b7a4d5eb2a6d2f7df867f9be5af7da1d1aa99cfbd5214195967b0ff60642d77a", + "source527/word.py": "e675d4eb9d90ff0b44279fae0b46f1a8b39f65421cc38454b70a6b75d0e10b42", + "verify.py": "489bee6d23fbed6732e60d62f8fa98e7d2dfb2d2b7f75fd2bd3bc4a920155f10" + }, + "schema": "selected-docs-source-binding/1", + "scientific_archive_manifest_sha256": "9f6d8637b9a119cfe4566a02ab2d704f23c502e5e4357b40c28ef85a3fd4de89", + "scope": "Public extraction reuses the exact117 numerical inputs from the all-eight-stage tested143-file archive. It is not a second all-eight-stage execution of the137-file tree.", + "source_binding_configuration_sha256": "53acbfc4c9cb93404f951789e866339a315ae84d6218a32932638a6ecc6d961c" +} diff --git a/docs/multicut-delayed-inverse-checkpoint/source_index.json b/docs/multicut-delayed-inverse-checkpoint/source_index.json new file mode 100644 index 0000000000..591e51bce3 --- /dev/null +++ b/docs/multicut-delayed-inverse-checkpoint/source_index.json @@ -0,0 +1,370 @@ +[ + { + "anchor": "def integrity()", + "excerpt": "def integrity(): p=ROOT/'MANIFEST.json';m=json.loads(p.read_text());actual={}", + "id": "S01", + "line": 26, + "path": "verify.py", + "sha256": "489bee6d23fbed6732e60d62f8fa98e7d2dfb2d2b7f75fd2bd3bc4a920155f10" + }, + { + "anchor": "# PR259 lineage", + "excerpt": "# PR259 lineage and selected inputs", + "id": "S02", + "line": 1, + "path": "PR259-PROVENANCE.md", + "sha256": "a232f3fb631976128d4e454dc414ecae7de1e88fba86ca45d13e4af21d8bb5f8" + }, + { + "anchor": "def prepare()", + "excerpt": "def prepare(): S=HERE/'source527'", + "id": "S03", + "line": 12, + "path": "prepare.py", + "sha256": "fc109fe81d7d9d3f53483ce7d648dc9fcf6d9fb71b8fde1c867ece5283fadbcc" + }, + { + "anchor": "def", + "excerpt": "def replay(mode='F2',direction=1,bits=24,mutation=None): major=mode=='bound';binary=mode=='F2';v=W.v", + "id": "S04", + "line": 1, + "path": "source527/word.py", + "sha256": "e675d4eb9d90ff0b44279fae0b46f1a8b39f65421cc38454b70a6b75d0e10b42" + }, + { + "anchor": "def run(", + "excerpt": "def run(context,source_text,output_dir=None,source_pins=None): D=Path(output_dir)if output_dir is not None else None", + "id": "S05", + "line": 11, + "path": "code/physical527.py", + "sha256": "1723a5c53ec236529e46980c8eb2c45134c61275ac7fb85c8ad92223784de07c" + }, + { + "anchor": "def run(", + "excerpt": "def run(producer,output_dir=None): begun=time.monotonic();W,C=producer['W'],producer['C'];v=W.v;n=20107", + "id": "S06", + "line": 62, + "path": "parity_transform.py", + "sha256": "ef6f5224b91c409c30fc0886143787a0839a13cc6b148e42ca5db858d502ec4d" + }, + { + "anchor": "## Operator proof", + "excerpt": "## Operator proof", + "id": "S07", + "line": 20, + "path": "proof/PARITY-CONTRACT.md", + "sha256": "a9246be656e31f1a21d5ec714e002f51be0aa07c36e1528066a25b2c7a02db91" + }, + { + "anchor": "def run(", + "excerpt": "def run(producer,output_dir=None,selection_path=None): begun=time.monotonic();W,C=producer['W'],producer['C'];v=W.v;n=20107", + "id": "S08", + "line": 65, + "path": "retiming_transform.py", + "sha256": "483cb8da83a1444cbc8b1bbe60473e571a27e6e589fa64f9a26910ca0d678407" + }, + { + "anchor": "def rebind_retiming(", + "excerpt": "def rebind_retiming(raw,receipt): \"\"\"Recount the complete retimed word from its independently checked gate needs.\"\"\"", + "id": "S09", + "line": 190, + "path": "raw_ledger.py", + "sha256": "d5dae7b56d403adb778251e4b42903695632d522c1392505723e2125162cef78" + }, + { + "anchor": "def run(", + "excerpt": "def run(producer,output_dir=None,selection_path=None): begun=time.monotonic();W,C=producer['W'],producer['C'];v=W.v;n=20107", + "id": "S10", + "line": 128, + "path": "regauge_transform.py", + "sha256": "baa1c7390f449722e7e700fa1ce9afc3d00cd4c0f7faa5f41693ff88ec02fd61" + }, + { + "anchor": "def rebind_regauge(", + "excerpt": "def rebind_regauge(raw,receipt): \"\"\"Price freshly transported F2 compensations and their actual new entrances.\"\"\"", + "id": "S11", + "line": 216, + "path": "raw_ledger.py", + "sha256": "d5dae7b56d403adb778251e4b42903695632d522c1392505723e2125162cef78" + }, + { + "anchor": "def run(", + "excerpt": "def run(p,raw,package,output): begun=time.monotonic();package=Path(package);W,C=p['W'],p['C'];old=p['records'];zero,full=p['ZERO'],p['FULL'];v=1760;n=20107", + "id": "S12", + "line": 19, + "path": "hybrid_transform.py", + "sha256": "c06837bbc6ccf068362e1f09f110319f20135588f42e3cb3f8bc753436802e09" + }, + { + "anchor": "\"removed_pivots\"", + "excerpt": "\"removed_pivots\": [ 17246,", + "id": "S13", + "line": 4, + "path": "hybrid-selection.json", + "sha256": "0229c2fad3b448d33ad1f21900ad67d13ab1e0c8e716ced9ec66b4ab0445c0b1" + }, + { + "anchor": "PR249:", + "excerpt": "PR249: 96495746c786d6d0339dbb38c7f553d4af3f88ed. PR259: a53ec0ca4d59634f16630dd16adf035c9f12595c, repository", + "id": "S14", + "line": 3, + "path": "PR259-PROVENANCE.md", + "sha256": "a232f3fb631976128d4e454dc414ecae7de1e88fba86ca45d13e4af21d8bb5f8" + }, + { + "anchor": " local=[", + "excerpt": "local=[(1,t,pivot,-1,zero,30)for t in ts if t!=pivot]+[(1,pivot,low,-1,L,31),(1,pivot,high,-1,H,31)]+[(1,t,pivot,1,K,32)for t in reversed(ts)if t!=pivot] ids=ts+[low,high];slot={q:i for i,q in enumerate(", + "id": "S15", + "line": 92, + "path": "hybrid_transform.py", + "sha256": "c06837bbc6ccf068362e1f09f110319f20135588f42e3cb3f8bc753436802e09" + }, + { + "anchor": "## Kernel and observation boundaries", + "excerpt": "## Kernel and observation boundaries", + "id": "S16", + "line": 16, + "path": "PROOF.md", + "sha256": "d7c10b19fd1e5fe9280e09c9848bbd7c1c53b36363e6b98571ae8513932ad843" + }, + { + "anchor": "def transform(", + "excerpt": "def transform(a,frames,initial,final,entries,expected_input_sha): \"\"\"Return a fresh word and receipt; reuse existing frames and preserve endpoints.\"\"\"", + "id": "S17", + "line": 22, + "path": "retiming25.py", + "sha256": "5e9e835730aac1b0752019530daa1e75c8938686bf8a8a01640ab69ceada90f2" + }, + { + "anchor": " out,retiming=", + "excerpt": "out,retiming=rt.transform(out,F,initial,final,json.loads((package/'retiming25-selection.json').read_text()),INTERVAL_RAW) assert sha(out.tobytes())==FINAL_RAW", + "id": "S18", + "line": 146, + "path": "hybrid_transform.py", + "sha256": "c06837bbc6ccf068362e1f09f110319f20135588f42e3cb3f8bc753436802e09" + }, + { + "anchor": "def replay_projection(", + "excerpt": "def replay_projection(records,reverse=False,omit_event=None): n=20107;v=1760", + "id": "S19", + "line": 30, + "path": "scalar_check.py", + "sha256": "13ac9a3ef3c131739478ac1ba5903acd638cf5a41c6fa463fa3e27325413c7f9" + }, + { + "anchor": "def run(", + "excerpt": "def run(context,records,progress=lambda text:None): import gc", + "id": "S20", + "line": 54, + "path": "scalar_check.py", + "sha256": "13ac9a3ef3c131739478ac1ba5903acd638cf5a41c6fa463fa3e27325413c7f9" + }, + { + "anchor": "class Lowerer:", + "excerpt": "class Lowerer: \"\"\"Callable IR lowering; op records have exactly eight signed int fields.", + "id": "S21", + "line": 66, + "path": "code/global_lowering.py", + "sha256": "c888c4d3c38d4a59b48f8a328fc495b3b38ee36ede133495522d8d76c100794b" + }, + { + "anchor": "def phase_major_templates(", + "excerpt": "def phase_major_templates(lower): \"\"\"Expand all cover classes for each yielded phase before advancing.\"\"\"", + "id": "S22", + "line": 15, + "path": "portable_bit.py", + "sha256": "51760a4ba5b431d55b245aca2036ef51249942503fdcd5d9317d515ce411b87c" + }, + { + "anchor": "class BankPlan:", + "excerpt": "class BankPlan: m, h, stages, replicas, v = 120, 24, 5, 40, 1760", + "id": "S23", + "line": 11, + "path": "bank_template.py", + "sha256": "e255bdc0c0aa4465485ee34ece7d1f04ce3ce363d8ac62edc9de5608e46f8965" + }, + { + "anchor": "def census(", + "excerpt": "def census(context): W,C,roles=context['W'],context['C'],context['regs']", + "id": "S24", + "line": 49, + "path": "bank_check.py", + "sha256": "64790d1d45032e7f8ae2252d592759ff82def8033544107f9f0dd3bbc6841581" + }, + { + "anchor": "## Literal capacity", + "excerpt": "## Literal capacity and role assignment", + "id": "S25", + "line": 9, + "path": "BANK-PROOF.md", + "sha256": "ae2ca2693d75f56c076c2ffc790163fe23d2bf69de23bed94345cfe48a0b4252" + }, + { + "anchor": "def run(", + "excerpt": "def run(context,global_result,lower,progress=lambda text:None): begun=time.monotonic();W,C=context['W'],context['C']", + "id": "S26", + "line": 97, + "path": "bank_check.py", + "sha256": "64790d1d45032e7f8ae2252d592759ff82def8033544107f9f0dd3bbc6841581" + }, + { + "anchor": " def normalizer(", + "excerpt": "def normalizer(self, stage, replica, role): \"\"\"Finite exact data for N=scalar Pi embed_stage(B^-1).", + "id": "S27", + "line": 68, + "path": "bank_template.py", + "sha256": "e255bdc0c0aa4465485ee34ece7d1f04ce3ce363d8ac62edc9de5608e46f8965" + }, + { + "anchor": "## Generic charts", + "excerpt": "## Generic charts and full addresses", + "id": "S28", + "line": 39, + "path": "BANK-PROOF.md", + "sha256": "ae2ca2693d75f56c076c2ffc790163fe23d2bf69de23bed94345cfe48a0b4252" + }, + { + "anchor": " def map_stage_row(", + "excerpt": "def map_stage_row(self, stage, replica, row, cover='d'): \"\"\"Lower an unchanged logical8-field MOVE/ADD/COPY/ERASE record.", + "id": "S29", + "line": 130, + "path": "bank_template.py", + "sha256": "e255bdc0c0aa4465485ee34ece7d1f04ce3ce363d8ac62edc9de5608e46f8965" + }, + { + "anchor": " def map_boundary_row(", + "excerpt": "def map_boundary_row(self, replica, row, cover='d'): \"\"\"Lower an IDLE/BRIDGE/EXCHANGE with its existing exact projector.", + "id": "S30", + "line": 146, + "path": "bank_template.py", + "sha256": "e255bdc0c0aa4465485ee34ece7d1f04ce3ce363d8ac62edc9de5608e46f8965" + }, + { + "anchor": "class BankLowerer:", + "excerpt": "class BankLowerer: \"\"\"Final full-address lowering of the already checked logical IR.", + "id": "S31", + "line": 65, + "path": "bank_check.py", + "sha256": "64790d1d45032e7f8ae2252d592759ff82def8033544107f9f0dd3bbc6841581" + }, + { + "anchor": "def run(", + "excerpt": "def run(ctx,L,source_pins=None): begin=time.monotonic()", + "id": "S32", + "line": 11, + "path": "code/geometry527.py", + "sha256": "bff96140e93c0cea01ed618b49b913f913c12d99ebb0e4e4342336cf5a102800" + }, + { + "anchor": "def run(", + "excerpt": "def run(context,physical,progress=lambda text:None): started=time.monotonic();w,c=context['W'],context['C']", + "id": "S33", + "line": 20, + "path": "prime_check.py", + "sha256": "80b764f53b92b299569a401754047b1a86f80ba4046502bfbfea924f6ec95e0e" + }, + { + "anchor": "def run(", + "excerpt": "def run(package_root=None, progress=lambda text:None): root=Path(package_root).resolve() if package_root else Path(__file__).resolve().parent", + "id": "S34", + "line": 77, + "path": "portable_complex.py", + "sha256": "797e144c0040d78a4731a6eaa61c0edb9803a08462f885ed014cbca9d9991d82" + }, + { + "anchor": "def finite_guard(", + "excerpt": "def finite_guard(m, b, basis): p=m['parameters'];l=m['ledger'];dim=p['m'];R=p['R'];h=p['h'];W=p['W_live']", + "id": "S35", + "line": 25, + "path": "portable_complex.py", + "sha256": "797e144c0040d78a4731a6eaa61c0edb9803a08462f885ed014cbca9d9991d82" + }, + { + "anchor": "def run(", + "excerpt": "def run(raw,complex_histogram,banks,global_result): cost=load('moment');other=load('base_two_moment');outer=load('outer')", + "id": "S36", + "line": 23, + "path": "math_check.py", + "sha256": "bb7c80571104d9b9c30ce7be53654090dc006583ba1838557a5307b8a9db4a39" + }, + { + "anchor": "def moment(", + "excerpt": "def moment(H,m,W,a,bad=False): lo=hi=F(0)", + "id": "S37", + "line": 55, + "path": "moment.py", + "sha256": "9d465c716c6b910ff66e1453e3bf0057608a787b5f5361be93781f42cb3370f7" + }, + { + "anchor": "def moment(", + "excerpt": "def moment(m, W, entries, saving): lo = hi = Q(0)", + "id": "S38", + "line": 52, + "path": "base_two_moment.py", + "sha256": "aee70c242a2f1d225528fabe2002e1564d1dc884797c07d28a831c7878ee9098" + }, + { + "anchor": " chain=[", + "excerpt": "chain=[Q(384599,10**10)] for _ in range(3):", + "id": "S39", + "line": 46, + "path": "math_check.py", + "sha256": "bb7c80571104d9b9c30ce7be53654090dc006583ba1838557a5307b8a9db4a39" + }, + { + "anchor": "chain=[", + "excerpt": "chain=[Q(384599,10**10)];gaps=[] for j in range(3):", + "id": "S40", + "line": 130, + "path": "finite_check.py", + "sha256": "dfb8dd62c4d068417434f6a43e15e5f69dfa40b4d95b7a8d4995b6950c095c61" + }, + { + "anchor": "def assembly(", + "excerpt": "def assembly(bit_saving,complex_saving,bridge,kappa,eta=Q(1,10**8),beta=Q(1,4)): a,b=bit_saving,complex_saving", + "id": "S41", + "line": 16, + "path": "outer.py", + "sha256": "c1ebb52163a7219504c728a5c2b098bf1e50bf20148a2879c5a74c3cadc7c03c" + }, + { + "anchor": " assembly=outer.assembly(", + "excerpt": "assembly=outer.assembly(bit,b,bridge,k,eta=eta,beta=beta);assert len(assembly['strict_constraints'])==47 and len(assembly['margins'])==7 and min(assembly['strict_constraints'].values())>0 try:outer.assemb", + "id": "S42", + "line": 53, + "path": "math_check.py", + "sha256": "bb7c80571104d9b9c30ce7be53654090dc006583ba1838557a5307b8a9db4a39" + }, + { + "anchor": "def run(", + "excerpt": "def run(raw,physical,scalar,prime_result,math_result,banks,banked_result,global_result): for name,h in THEOREM_PINS.items():assert sha256((HERE/name).read_bytes()).hexdigest()==h,('changed theorem',name)", + "id": "S43", + "line": 59, + "path": "finite_check.py", + "sha256": "dfb8dd62c4d068417434f6a43e15e5f69dfa40b4d95b7a8d4995b6950c095c61" + }, + { + "anchor": "def cutoff_log2(", + "excerpt": "def cutoff_log2(delta,C): assert 0=1", + "id": "S44", + "line": 17, + "path": "finite_check.py", + "sha256": "dfb8dd62c4d068417434f6a43e15e5f69dfa40b4d95b7a8d4995b6950c095c61" + }, + { + "anchor": "def main()", + "excerpt": "def main(): ap=argparse.ArgumentParser(description=__doc__);ap.add_argument('--output',type=Path,required=True);args=ap.parse_args()", + "id": "S45", + "line": 50, + "path": "verify.py", + "sha256": "489bee6d23fbed6732e60d62f8fa98e7d2dfb2d2b7f75fd2bd3bc4a920155f10" + }, + { + "anchor": "def validate_required(", + "excerpt": "def validate_required(results): assert set(results)==REQUIRED,'Missing mandatory proof stage'", + "id": "S46", + "line": 37, + "path": "verify.py", + "sha256": "489bee6d23fbed6732e60d62f8fa98e7d2dfb2d2b7f75fd2bd3bc4a920155f10" + } +] diff --git a/docs/multicut-delayed-inverse-checkpoint/summary-functional.svg b/docs/multicut-delayed-inverse-checkpoint/summary-functional.svg new file mode 100644 index 0000000000..4f7076b62d --- /dev/null +++ b/docs/multicut-delayed-inverse-checkpoint/summary-functional.svg @@ -0,0 +1,47 @@ + + + +Functional architecture: exact product with two suppliers +Verified PR259 hybrid checkpoint | conditional kappa 0.000711045547624400 + +Represent operands +read U,V and sizes +radix / scale / pad +A0-A3 + +Transform stages +two source transforms +matching products +A4-A6 + +Exact recovery +undo scales/layout +bounded error -> round +A7-A8 + +Emit exact product +carry propagation +serialize UV +A9 + + + + +Selected bit supplier +513 cohorts + 7 intervals +25 final retimings, once +literal 40-replica banks + +Pinned complex supplier +exact labels and phases +copied centers / live climbs +finite precision and rows + +Recursion and evidence +all 87 original roles mapped +complete finite price +inherited assumptions explicit + + +Solid arrows: runtime data interfaces. Dashed arrows: supplier support. This is a conditional mathematical construction. +Source snapshot: 9f6d8637... | Readable overview; full explanations, typed ports, requirements and proofs are linked below. diff --git a/docs/multicut-delayed-inverse-checkpoint/summary-logical.svg b/docs/multicut-delayed-inverse-checkpoint/summary-logical.svg new file mode 100644 index 0000000000..8d233f2d06 --- /dev/null +++ b/docs/multicut-delayed-inverse-checkpoint/summary-logical.svg @@ -0,0 +1,47 @@ + + + +Logical wiring: indexed, source-bound connections +Verified PR259 hybrid checkpoint | conditional kappa 0.000711045547624400 + +Typed operand bus +U,V -> digits -> tensors +operand a in [0,2) +digit index j in [0,N) + +Transforms +source spectra[a,k] +k in declared R order +bit + complex calls + +Product / inverse +match equal index k +opposite transform +restore scale/layout + +Exact result +error < 1/2 +integer coefficients +carry -> product UV + + + + +Local event template +OP[e]: src/dst + frame +value/frame versions + uses +859,771 exact local records + +Indexed physical map +stage s in [0,5) +replica r in [0,40) +address = (family, route) + +Closed proof ports +all 8 scientific stages +COPY lifetime + bank checks +unexpanded theorem boundary + + +Compact parametric specification, not a flattened million-wire circuit. Exact formulas and exceptions are in the full PDF. +Source snapshot: 9f6d8637... | Readable overview; full explanations, typed ports, requirements and proofs are linked below. From 39aa2d250501747fda0e943d4345ae8328316dd9 Mon Sep 17 00:00:00 2001 From: hcg890 <53488436+hcg890@users.noreply.github.com> Date: Fri, 9 Oct 2026 21:29:06 -0700 Subject: [PATCH 2/4] Remove rejected wiring artifacts and clarify architecture reference scope --- .../EXPECTED_ARTIFACTS.json | 29 ++++++----- .../README.md | 28 +++++------ .../complete_system.pdf | Bin 916503 -> 0 bytes .../logical_wiring.pdf | Bin 870706 -> 0 bytes .../summary-logical.svg | 47 ------------------ 5 files changed, 31 insertions(+), 73 deletions(-) delete mode 100644 docs/multicut-delayed-inverse-checkpoint/complete_system.pdf delete mode 100644 docs/multicut-delayed-inverse-checkpoint/logical_wiring.pdf delete mode 100644 docs/multicut-delayed-inverse-checkpoint/summary-logical.svg diff --git a/docs/multicut-delayed-inverse-checkpoint/EXPECTED_ARTIFACTS.json b/docs/multicut-delayed-inverse-checkpoint/EXPECTED_ARTIFACTS.json index 32322d2d95..76c8328850 100644 --- a/docs/multicut-delayed-inverse-checkpoint/EXPECTED_ARTIFACTS.json +++ b/docs/multicut-delayed-inverse-checkpoint/EXPECTED_ARTIFACTS.json @@ -7,10 +7,6 @@ "sha256": "44867c4224608cd3798b0a92948ffe3324d32ade838e0194f8b1db6b78739fb5", "bytes": 23030 }, - "complete_system.pdf": { - "sha256": "1db865c17ef25786c715a5c7bbaa58707a9b565303da6b4261134157d757ce20", - "bytes": 916503 - }, "connection_index.json": { "sha256": "f06a73754168e8208377f92fd986e00dd1e533609de81d3c8d556c069f3ceee9", "bytes": 38083 @@ -31,10 +27,6 @@ "sha256": "1c5c41d6375440ffc3074e39fbca92a785b7b335fc8a09afa4312395904ba8ec", "bytes": 278089 }, - "logical_wiring.pdf": { - "sha256": "f700f70c7192d57271fcb6434b16720b4f39d60850c72d76040b5d67cd9497f5", - "bytes": 870706 - }, "requirement_traceability.json": { "sha256": "bb30053247fbe438bd0efb43d48821b35b27d866ba1bd3698c02f0dd38ea3f4e", "bytes": 3505 @@ -54,10 +46,6 @@ "summary-functional.svg": { "sha256": "478e620e928e23b78d5387de9570abe652380d7b2138fc3330564ba8f861bade", "bytes": 5124 - }, - "summary-logical.svg": { - "sha256": "7cec439648a3b4f185048566fb3fb301f8f7d9cf35a5b08dcedd13d93f7a050b", - "bytes": 5117 } }, "environment_note": "Expected PDF bytes use the pinned Python dependencies and bundled Vera font bytes. incremental_receipt.json records the actual runtime and is intentionally not pinned across machines. Linked per-page SVGs can be regenerated with --svg and are not part of the minimal publication allowlist.", @@ -143,5 +131,22 @@ 55 ] } + }, + "publication_scope": { + "status": "Purpose-fit review pending for four-page architecture extract", + "published_pdf": "functional_architecture.pdf", + "visual_pages": [ + 2, + 3, + 4, + 5 + ], + "supporting_reference_pages": "6-51", + "excluded_files": [ + "logical_wiring.pdf", + "complete_system.pdf", + "summary-logical.svg" + ], + "historical_generated_hashes": "The pre_publication_reviewed_artifacts record is historical evidence, not a publication allowlist." } } diff --git a/docs/multicut-delayed-inverse-checkpoint/README.md b/docs/multicut-delayed-inverse-checkpoint/README.md index fe1a08b766..e67e66b9d0 100644 --- a/docs/multicut-delayed-inverse-checkpoint/README.md +++ b/docs/multicut-delayed-inverse-checkpoint/README.md @@ -1,4 +1,4 @@ -# Logical and Functional Diagrams, Explanations, and Build Tools +# Functional Architecture and Supporting References for PR #277 This package documents the verified PR259-derived construction checkpoint in [PR #277](https://github.com/CrocSwap/integer-mult-bounds/pull/277). @@ -10,17 +10,16 @@ The later PR266 result is stronger; this checkpoint's conditional exponent is ![Functional overview](summary-functional.svg) -[Open the complete functional architecture](functional_architecture.pdf) - -![Logical/wiring overview](summary-logical.svg) - -[Open the complete logical/wiring document](logical_wiring.pdf) +[Open the architecture reference PDF (51 pages; visual block-and-arrow views on pages 2–5)](functional_architecture.pdf) ## Read the diagrams -Each PDF has contents, outline bookmarks, clickable block explanations, -requirements, source anchors and cross-page references. The separate -complete_system.pdf combines both views. +The retained PDF has contents, outline bookmarks, clickable block explanations, +requirements, source anchors and cross-page references. Pages 2–5 are visual +block-and-arrow architecture views; pages 6–51 are supporting reference material. +The rejected logical/wiring and combined PDFs and the logical preview have been +removed from this public submission. Purpose-fit review of a short architecture +extract is pending; no new extract is published yet. There are three deliberately separate layers: @@ -45,7 +44,7 @@ cohorts; seven closed delayed-inverse intervals replacing five conflicting quartets; the same 25 PR258/PR260 retimings applied once. PR251's extra sixteen entrances are excluded. PR254 is ancestry, not an additional independent gain. -## Rebuild PDF and SVG +## Build tools and publication scope Use Python 3.11 or later. Install the pinned dependencies: @@ -91,10 +90,11 @@ converter. ## What is regenerated -The one command regenerates both PDF families, the combined PDF, two PR summary -SVGs, linked per-page vector SVGs, source/requirement/connection indexes, -hierarchy reconciliation, sanitized scientific reproduction facts and build -receipts. Every diagram family consumes the same models. +The retained build tools reproduce the previously reviewed documentation +outputs locally from the same models. Public publication is limited to the +functional architecture reference and functional overview. Other generated +outputs are excluded from this PR. These tools and reference inventories do +not claim that this submission supplies a wiring schematic. The incremental build records each page's actual vector drawing commands, then reuses only cache entries with matching schema, drawing plan, source/dependency diff --git a/docs/multicut-delayed-inverse-checkpoint/complete_system.pdf b/docs/multicut-delayed-inverse-checkpoint/complete_system.pdf deleted file mode 100644 index f00ae3489fc74475dcb4b15e5c5e241e4cc1a203..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 916503 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

>PP))_xXTXSk(?ghj&`;G z45T!^7UCqJ-SE~d4=AOea(H`ahM1{P(*H%ljge)!gEGY1G~$w+k6Q|pDIPMd#yT?B z=g&t;AorXMk<$KFak<#|7!!Ry#uZ3wzrQsi2qXRdv6f1*i3LhKe;)1|T{gVmtbRV4 z6@{%P(g2J-@}X&n<;I!ZL0ASBIFbAk>=&Pp>Bg4TlCGiQ8kOSdz&q`Ay%Li$`blNt za%S311e4MFJZJbUHtQ&C*=%tb)q_klHI9|itA5T1w|Ko%%?Wuf?~nfRu;4!(aV{Nu z((+jn--E7C=Xa#qh7^^oU zdN#bf{d-w-VKbxk5# zf5cw0B~m32&s6v+A3I#4(VXR=<6^nV(=Vew+pB%Gu z&QU0)oph?a1K9f=In!~!@sbQ=H>fl~)`GN_<%`L>TV1CXPX#!vxgi0%BcGe{x`J~2 z7`dWz9Ze(lR0?Zx=Us3IR>(P?9vun_*q>dw+4T)i_O$cX!!FrrEFlW!GOIS4np&|g z7CB7DwyE$TuO(}!Y+V`}n&pbT)8|lA&g*_pAiKT0jm&<$U~(A%o9sM^-^QKk6RM8p zC}%4p8}mgJzs+lgtN-p}xeG?GT%VcTZ0lunj3SRK`KE`t5YUx;uY zwjYs=YCz2FU#fsXr=pDoy>-65fOFlEF)ylY$ks))$s22N+VI1s(Ms?a)%_izAlpkx zZ#%V#-YFMVasu>!hR~@2kW8*(*3$=su1oa(_LlTmF0(}uC|~=i8>7vJMgOA64Pcrg zHWVb4KC65{i@SF>Dk-9`kAeYfEtbHoo+^*@_PfOpu%E#r1Se)o#IZq-L-(fmVEW`qxk1_PFhJ5oE2(Wt z!7)(XIF0G8*4uX8SZU;B@6Dbv)K|P~IW75*Ib-e#qEeLT*5dKLq{WpcXp&iQzw!Gy zQTEaJgEN5VxsyoN%e!lc&^Ims8}u;OPB8ZLB)s< zWcKp#33TUt#>&hgdHYorGrN5XmE!eV=ojbW3|R`Ewdm7z)B3AbI9s|8UB8&BFIzlX z9;_-5Bf~5I6QkgA#$zAVFE`%=QzqQ`JKJ*MY=JOQxDX)DKN2Vn`SgEK;V9>sPm%kZ>rDI+sU=E{sJmcX$taO%*;DX^ z8`V`8W&1;~sL^}86aC#;3dnN z{$LYR_ih?SYsq)irFhJR z{U&JqA{7cNw|hp`!e~XYDhy2ZWff6Xr2X&$rXot=<-!2=ni&P}gLO7qs<9Nl2tTl+ zQ1E99o~48Z?RMct#T??fx*EE&DJojB;&AGe^Icg_rY^zg@tBTF(ZwAQ?-$~kbhZ^b zI>ZY=7Z3mvBuo|`v1N39F*EAxuxk*^=_WjyJ^9OB4W_Qi`aCB`K-)7y7kY;~@ zbm-vBzOlhK=HN)`$WN}0gzil!%`Z+gUY*Y?3pxUy!f;0gQ6FL4)!s>rtZVe`N2b~|$5qPjv1 zEe{^)pwsWgh0cX=>t@#AlYa_3vhk?v=_b#HWy7!8*OLM9s2|hO$(+iW^BDBy4w)A_ zA~InhD<}^z)j@dzcFnuNZHt8R+;6KT1};d2#pj zyZBk`K%|if_NG9R3DsF+#RTzAJEy*v&6rh27Tf%}p5lEG07LtM%q<(hR->xtx=ocK z0S}~ndJ;6XUil&YNcGbM8rZMy0&?x=z5Ka%T&B(HDxWqKXB%0Dn}fD(Jq9xRnLWKm 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

&C#u`bg8u9;I+I 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 L|Ms8%{^S1v-FD*d diff --git a/docs/multicut-delayed-inverse-checkpoint/logical_wiring.pdf b/docs/multicut-delayed-inverse-checkpoint/logical_wiring.pdf deleted file mode 100644 index 1914ee2deaf1cb45015bec4819a4d51f37d9553f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 870706 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ŽnRp-@+IMVNGGeiBY7OTJ^Ge zsL5&VO4be-dw=*xV7vcx)X_xllaZ;%tHkf4YNYTSc9H<*60WF>uD*7@cXK=}_qSQU@EwdUmRNhvm+FySbC z#y!Bs>)>YR(_0hg2%t5f2B_)~KOyUU%?|1e&sa_NhU_I%1URdi0}d1dFWn^8P(Xnh zd1tob5NdBN51Fk!Z_AV!LrHle5ixaMW@PZZOwTx@z_u3W}N4gykfDNN` z$eQ$-T4?!V2-}3kUy!QSUFm&r=o2Ur=dGhh^=h*G(3wrl6*8%f>_T9LapL6YkW7XG zPj-3*38%@*sD(T{s59D>i_plJnd~5wgLq_{2pw|Ccondo#et4vN9x<;6ykH5A3&Ph zyP$(IVZmh6P_`*~9N$LWpvd7_up2bN=Q&%1@og@tdwTC4vb$ik^7Wa{PPZbPb*x>5 zpNX%j95U4LX10x&rnTUD4WhdkxIl~VfVKrgqE_nX$A1>f_u(l)DVPNS{+m-VY!c7- zGNr^L1$l#!%$DuO{z)uCe5BnukCZy�Drk-T`pfq~)x$3OjZA44A-n=gejf;fz&y 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%0AF=R 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 r&dw0J0^v3@O$VobM diff --git a/docs/multicut-delayed-inverse-checkpoint/summary-logical.svg b/docs/multicut-delayed-inverse-checkpoint/summary-logical.svg deleted file mode 100644 index 8d233f2d06..0000000000 --- a/docs/multicut-delayed-inverse-checkpoint/summary-logical.svg +++ /dev/null @@ -1,47 +0,0 @@ - - - -Logical wiring: indexed, source-bound connections -Verified PR259 hybrid checkpoint | conditional kappa 0.000711045547624400 - -Typed operand bus -U,V -> digits -> tensors -operand a in [0,2) -digit index j in [0,N) - -Transforms -source spectra[a,k] -k in declared R order -bit + complex calls - -Product / inverse -match equal index k -opposite transform -restore scale/layout - -Exact result -error < 1/2 -integer coefficients -carry -> product UV - - - - -Local event template -OP[e]: src/dst + frame -value/frame versions + uses -859,771 exact local records - -Indexed physical map -stage s in [0,5) -replica r in [0,40) -address = (family, route) - -Closed proof ports -all 8 scientific stages -COPY lifetime + bank checks -unexpanded theorem boundary - - -Compact parametric specification, not a flattened million-wire circuit. Exact formulas and exceptions are in the full PDF. -Source snapshot: 9f6d8637... | Readable overview; full explanations, typed ports, requirements and proofs are linked below. From 7bba16ce54d17f26790ee2df62c195b379c27132 Mon Sep 17 00:00:00 2001 From: hcg890 <53488436+hcg890@users.noreply.github.com> Date: Fri, 9 Oct 2026 21:39:07 -0700 Subject: [PATCH 3/4] Keep only functional architecture build closure and refresh focused verification --- .../EXPECTED_ARTIFACTS.json | 210 +- .../JOINT259_CONNECTION_BANK_MAP.json | 40015 ---------------- .../JOINT259_CONNECTION_EXTRACT.py | 468 - .../JOINT259_CONNECTION_MANIFEST.json | 23 - .../JOINT259_CONNECTION_README.md | 105 - .../JOINT259_CONNECTION_SCHEMA.json | 51 - .../JOINT259_CONNECTION_SUMMARY.json | 425 - .../JOINT259_CONNECTION_TESTS.py | 186 - .../JOINT259_CONNECTION_VALIDATION.json | 30 - .../QA.json | 706 +- .../README.md | 257 +- .../connection_index.json | 64 +- .../diagram_model.json | 2 +- .../functional_architecture.pdf | Bin 855232 -> 855018 bytes .../incremental_receipt.json | 14 +- .../joint259_system_docs_build.py | 95 +- .../joint259_system_docs_incremental.py | 6 +- ...joint259_system_docs_incremental_README.md | 119 +- .../joint259_system_docs_incremental_test.py | 38 +- ...9_system_docs_incremental_test_report.json | 183 +- ...int259_system_docs_independent_review.json | 319 +- ...stem_docs_independent_review_addendum.json | 422 +- .../joint259_system_docs_model.json | 2 +- .../joint259_system_docs_previews.py | 40 +- 24 files changed, 784 insertions(+), 42996 deletions(-) delete mode 100644 docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_BANK_MAP.json delete mode 100644 docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_EXTRACT.py delete mode 100644 docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_MANIFEST.json delete mode 100644 docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_README.md delete mode 100644 docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_SCHEMA.json delete mode 100644 docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_SUMMARY.json delete mode 100644 docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_TESTS.py delete mode 100644 docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_VALIDATION.json diff --git a/docs/multicut-delayed-inverse-checkpoint/EXPECTED_ARTIFACTS.json b/docs/multicut-delayed-inverse-checkpoint/EXPECTED_ARTIFACTS.json index 76c8328850..5134a6ccca 100644 --- a/docs/multicut-delayed-inverse-checkpoint/EXPECTED_ARTIFACTS.json +++ b/docs/multicut-delayed-inverse-checkpoint/EXPECTED_ARTIFACTS.json @@ -1,152 +1,116 @@ { - "schema": "joint259-documentation-expected-artifacts/1", - "public_source_manifest_sha256": "0af10dcca505cbd913cf1b9220a08b6a62687650ace4e3d1efd093e828e3990e", - "scientific_archive_manifest_sha256": "9f6d8637b9a119cfe4566a02ab2d704f23c502e5e4357b40c28ef85a3fd4de89", "artifacts": { "QA.json": { - "sha256": "44867c4224608cd3798b0a92948ffe3324d32ade838e0194f8b1db6b78739fb5", - "bytes": 23030 - }, - "connection_index.json": { - "sha256": "f06a73754168e8208377f92fd986e00dd1e533609de81d3c8d556c069f3ceee9", - "bytes": 38083 - }, - "diagram_model.json": { - "sha256": "22842ec916058f0d8fa05d88f0ddc5ebac67e0b7af63d556c2913afec98760ad", - "bytes": 39792 - }, - "functional_architecture.pdf": { - "sha256": "4bbee6f185f11d8283b9432a2e8fb011f70c335defc881027220c3c90dcbc37c", - "bytes": 855232 - }, - "hierarchy_edges.json": { - "sha256": "67245af1a5fa49e41e1da97cb91852440462554bad24bc747b8cd606eb9589cc", - "bytes": 60136 - }, - "hierarchy_reconciliation.json": { - "sha256": "1c5c41d6375440ffc3074e39fbca92a785b7b335fc8a09afa4312395904ba8ec", - "bytes": 278089 - }, - "requirement_traceability.json": { - "sha256": "bb30053247fbe438bd0efb43d48821b35b27d866ba1bd3698c02f0dd38ea3f4e", - "bytes": 3505 - }, - "scientific_reproduction.json": { - "sha256": "7e88f2e7bd1989ac4455586ae4fe23d270d9e8eb3f04b8205d5153150c429ee3", - "bytes": 2016 - }, - "source_binding.json": { - "sha256": "239c881aa348e078dc013ac6c8c7c26478ce7dcd1cf80f7c8015171e6106ee12", - "bytes": 14978 - }, - "source_index.json": { - "sha256": "c5a1d01d20529458312806c6271e8d0f9f83dbe6b7083799239b80beb3a0645d", - "bytes": 14010 - }, - "summary-functional.svg": { - "sha256": "478e620e928e23b78d5387de9570abe652380d7b2138fc3330564ba8f861bade", - "bytes": 5124 - } - }, - "environment_note": "Expected PDF bytes use the pinned Python dependencies and bundled Vera font bytes. incremental_receipt.json records the actual runtime and is intentionally not pinned across machines. Linked per-page SVGs can be regenerated with --svg and are not part of the minimal publication allowlist.", - "release_note": "Bound to construction PR #277 after exact reproduction of all 14 pre-publication reviewed hashes. Only PR title/publication metadata changed. PDFs regenerated; 155 of 161 page drawings unchanged. All six changed pages rechecked; scientific source and nine other reviewed artifacts unchanged.", - "pre_publication_reviewed_artifacts": { - "QA.json": { - "sha256": "a643d0d62c1df25136aa9ea68aa75cf1369da02569f450ad319101bbfc3216b5", - "bytes": 23030 - }, - "complete_system.pdf": { - "sha256": "aff51810f707914258e675d58533db1081dca7f2ea5a43d48ff3232c06f6b157", - "bytes": 916405 + "bytes": 7818, + "sha256": "dc935e22f2faf24470d1e127a93c43af605fb22b406dc666d7966bb69f13642e" }, "connection_index.json": { - "sha256": "f06a73754168e8208377f92fd986e00dd1e533609de81d3c8d556c069f3ceee9", - "bytes": 38083 + "bytes": 36873, + "sha256": "da88b1f0c87a9e8b92a6c17dc9bb16e4f5de03b2f2b2efa46725f5dd414e515b" }, "diagram_model.json": { - "sha256": "6238e4a76508ee536410cca104ca24491224039f24fba49a35a33de26e3249b3", - "bytes": 39756 + "bytes": 39774, + "sha256": "14f67e096fb726a510cfc913479bd215faaadaa601103283afd174756666c9da" }, "functional_architecture.pdf": { - "sha256": "1907edaf42049afe95c5de86e581feef299fade60f37e346cebfccd2392de38f", - "bytes": 855134 + "bytes": 855018, + "sha256": "21cce9f08282a13775f6282f0bc9802c6ca6449f9c899bac75d26ca91842f556" }, "hierarchy_edges.json": { - "sha256": "67245af1a5fa49e41e1da97cb91852440462554bad24bc747b8cd606eb9589cc", - "bytes": 60136 + "bytes": 60136, + "sha256": "67245af1a5fa49e41e1da97cb91852440462554bad24bc747b8cd606eb9589cc" }, "hierarchy_reconciliation.json": { - "sha256": "1c5c41d6375440ffc3074e39fbca92a785b7b335fc8a09afa4312395904ba8ec", - "bytes": 278089 - }, - "logical_wiring.pdf": { - "sha256": "60d2833a8a5102ac072a5260d89c1139e89a13beb468cd6d24ff9a00a376826c", - "bytes": 870609 + "bytes": 278089, + "sha256": "1c5c41d6375440ffc3074e39fbca92a785b7b335fc8a09afa4312395904ba8ec" }, "requirement_traceability.json": { - "sha256": "bb30053247fbe438bd0efb43d48821b35b27d866ba1bd3698c02f0dd38ea3f4e", - "bytes": 3505 + "bytes": 3505, + "sha256": "bb30053247fbe438bd0efb43d48821b35b27d866ba1bd3698c02f0dd38ea3f4e" }, "scientific_reproduction.json": { - "sha256": "7e88f2e7bd1989ac4455586ae4fe23d270d9e8eb3f04b8205d5153150c429ee3", - "bytes": 2016 + "bytes": 2016, + "sha256": "7e88f2e7bd1989ac4455586ae4fe23d270d9e8eb3f04b8205d5153150c429ee3" }, "source_binding.json": { - "sha256": "239c881aa348e078dc013ac6c8c7c26478ce7dcd1cf80f7c8015171e6106ee12", - "bytes": 14978 + "bytes": 14978, + "sha256": "239c881aa348e078dc013ac6c8c7c26478ce7dcd1cf80f7c8015171e6106ee12" }, "source_index.json": { - "sha256": "c5a1d01d20529458312806c6271e8d0f9f83dbe6b7083799239b80beb3a0645d", - "bytes": 14010 + "bytes": 14010, + "sha256": "c5a1d01d20529458312806c6271e8d0f9f83dbe6b7083799239b80beb3a0645d" }, "summary-functional.svg": { - "sha256": "478e620e928e23b78d5387de9570abe652380d7b2138fc3330564ba8f861bade", - "bytes": 5124 - }, - "summary-logical.svg": { - "sha256": "7cec439648a3b4f185048566fb3fb301f8f7d9cf35a5b08dcedd13d93f7a050b", - "bytes": 5117 + "bytes": 5124, + "sha256": "478e620e928e23b78d5387de9570abe652380d7b2138fc3330564ba8f861bade" } }, - "publication_binding": { - "construction_pr": "https://github.com/CrocSwap/integer-mult-bounds/pull/277", - "construction_commit": "c2f07d311bfdad0d89bf961e4da133ee97bb78de", - "original_expected_artifacts_sha256": "c4ab4fb7ee8cf07b4f1827b98a744251cf492ecc5ff69ea59069035ddbd42c3b", - "changed_source_files": [ - "README.md", - "joint259_system_docs_build.py", - "joint259_system_docs_model.json" - ], - "changed_drawing_pages": { - "functional_architecture.pdf": [ - 1, - 50 - ], - "logical_wiring.pdf": [ - 1, - 53 - ], - "complete_system.pdf": [ - 1, - 55 - ] - } - }, - "publication_scope": { - "status": "Purpose-fit review pending for four-page architecture extract", - "published_pdf": "functional_architecture.pdf", - "visual_pages": [ - 2, - 3, - 4, - 5 - ], - "supporting_reference_pages": "6-51", - "excluded_files": [ + "construction_pr": "https://github.com/CrocSwap/integer-mult-bounds/pull/277", + "public_source_manifest_sha256": "0af10dcca505cbd913cf1b9220a08b6a62687650ace4e3d1efd093e828e3990e", + "publication_allowlist": { + "excluded_generated": [ "logical_wiring.pdf", "complete_system.pdf", - "summary-logical.svg" + "summary-logical.svg", + "logical/combined per-page SVGs" + ], + "excluded_static": [ + "JOINT259_CONNECTION_BANK_MAP.json", + "JOINT259_CONNECTION_EXTRACT.py", + "JOINT259_CONNECTION_MANIFEST.json", + "JOINT259_CONNECTION_README.md", + "JOINT259_CONNECTION_SCHEMA.json", + "JOINT259_CONNECTION_SUMMARY.json", + "JOINT259_CONNECTION_TESTS.py", + "JOINT259_CONNECTION_VALIDATION.json" + ], + "generated_files": [ + "functional_architecture.pdf", + "summary-functional.svg", + "QA.json", + "connection_index.json", + "diagram_model.json", + "hierarchy_edges.json", + "hierarchy_reconciliation.json", + "requirement_traceability.json", + "scientific_reproduction.json", + "source_binding.json", + "source_index.json", + "incremental_receipt.json" ], - "historical_generated_hashes": "The pre_publication_reviewed_artifacts record is historical evidence, not a publication allowlist." - } + "notes": "Exactly 18 static and 12 generated artifacts; optional linked functional SVG pages remain local.", + "other_exclusions": [ + "private PR draft", + "transport files", + "caches", + "partial event shards", + "giant traces", + "local single-page extract" + ], + "schema": "functional-architecture-publication-allowlist/1", + "static_files": [ + "EXPECTED_ARTIFACTS.json", + "README.md", + "joint259_system_docs_build.py", + "joint259_system_docs_evidence.json", + "joint259_system_docs_hierarchy.json", + "joint259_system_docs_hierarchy_edges.json", + "joint259_system_docs_hierarchy_views.py", + "joint259_system_docs_incremental.py", + "joint259_system_docs_incremental_README.md", + "joint259_system_docs_incremental_test.py", + "joint259_system_docs_incremental_test_report.json", + "joint259_system_docs_independent_review.json", + "joint259_system_docs_independent_review_addendum.json", + "joint259_system_docs_model.json", + "joint259_system_docs_previews.py", + "joint259_system_docs_requirements.txt", + "joint259_system_docs_source_binding.json", + "joint259_system_docs_sources.py" + ] + }, + "runtime_note": "incremental_receipt.json records actual Python/dependency/converter configuration and is intentionally not pinned across runtimes. Linked functional SVG pages are local optional outputs.", + "schema": "functional-architecture-expected-artifacts/2", + "scientific_archive_manifest_sha256": "9f6d8637b9a119cfe4566a02ab2d704f23c502e5e4357b40c28ef85a3fd4de89", + "scope": "Architecture reference material with workflow views, not a complete wiring schematic or 51-page diagram. Fresh functional-only tests replace historical 161-page evidence for this closure." } diff --git a/docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_BANK_MAP.json b/docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_BANK_MAP.json deleted file mode 100644 index 9d044b5067..0000000000 --- a/docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_BANK_MAP.json +++ /dev/null @@ -1,40015 +0,0 @@ -{ - "schema": "joint259-parametric-bank-map/1", - "source_sha256": "e255bdc0c0aa4465485ee34ece7d1f04ce3ce363d8ac62edc9de5608e46f8965", - "stages": 5, - "replicas": 40, - "active_data_banks": [ - [ - 0, - 1 - ], - [ - 1, - 0 - ], - [ - 0, - 1 - ], - [ - 3, - 2 - ], - [ - 2, - 3 - ] - ], - "helper_roles": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 494, - 495, - 496, - 497, - 498, - 499, - 500, - 501, - 502, - 503, - 504, - 505, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520, - 521, - 522, - 523, - 524, - 526, - 527, - 528, - 529, - 530, - 531, - 532, - 533, - 534, - 535, - 536, - 537, - 539, - 540, - 541, - 542, - 543, - 544, - 545, - 546, - 547, - 548, - 549, - 550, - 551, - 552, - 553, - 554, - 555, - 556, - 558, - 559, - 560, - 561, - 562, - 563, - 564, - 565, - 566, - 567, - 568, - 569, - 571, - 572, - 573, - 574, - 575, - 576, - 577, - 578, - 579, - 580, - 581, - 582, - 583, - 584, - 585, - 586, - 587, - 588, - 590, - 591, - 592, - 593, - 594, - 595, - 596, - 597, - 598, - 599, - 600, - 601, - 603, - 604, - 605, - 606, - 607, - 608, - 609, - 610, - 611, - 612, - 613, - 614, - 615, - 616, - 617, - 618, - 619, - 620, - 622, - 623, - 624, - 625, - 626, - 627, - 628, - 629, - 630, - 631, - 632, - 633, - 635, - 636, - 637, - 638, - 639, - 640, - 641, - 642, - 643, - 644, - 645, - 646, - 647, - 648, - 649, - 650, - 651, - 652, - 654, - 655, - 656, - 657, - 658, - 659, - 660, - 661, - 662, - 663, - 664, - 665, - 667, - 668, - 669, - 670, - 671, - 672, - 673, - 674, - 675, - 676, - 677, - 678, - 679, - 680, - 681, - 682, - 683, - 684, - 686, - 687, - 688, - 689, - 690, - 691, - 692, - 693, - 694, - 695, - 696, - 697, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223, - 1224, - 1225, - 1226, - 1227, - 1228, - 1230, - 1231, - 1232, - 1233, - 1234, - 1235, - 1236, - 1237, - 1238, - 1239, - 1240, - 1241, - 1243, - 1244, - 1245, - 1246, - 1247, - 1248, - 1249, - 1250, - 1251, - 1252, - 1253, - 1254, - 1255, - 1256, - 1257, - 1258, - 1259, - 1260, - 1262, - 1263, - 1264, - 1265, - 1266, - 1267, - 1268, - 1269, - 1270, - 1271, - 1272, - 1273, - 1275, - 1276, - 1277, - 1278, - 1279, - 1280, - 1281, - 1282, - 1283, - 1284, - 1285, - 1286, - 1287, - 1288, - 1289, - 1290, - 1291, - 1292, - 1294, - 1295, - 1296, - 1297, - 1298, - 1299, - 1300, - 1301, - 1302, - 1303, - 1304, - 1305, - 1307, - 1308, - 1309, - 1310, - 1311, - 1312, - 1313, - 1314, - 1315, - 1316, - 1317, - 1318, - 1319, - 1320, - 1321, - 1322, - 1323, - 1324, - 1326, - 1327, - 1328, - 1329, - 1330, - 1331, - 1332, - 1333, - 1334, - 1335, - 1336, - 1337, - 1339, - 1340, - 1341, - 1342, - 1343, - 1344, - 1345, - 1346, - 1347, - 1348, - 1349, - 1350, - 1351, - 1352, - 1353, - 1354, - 1355, - 1356, - 1358, - 1359, - 1360, - 1361, - 1362, - 1363, - 1364, - 1365, - 1366, - 1367, - 1368, - 1369, - 1371, - 1372, - 1373, - 1374, - 1375, - 1376, - 1377, - 1378, - 1379, - 1380, - 1381, - 1382, - 1383, - 1384, - 1385, - 1386, - 1387, - 1388, - 1390, - 1391, - 1392, - 1393, - 1394, - 1395, - 1396, - 1397, - 1398, - 1399, - 1400, - 1401, - 1403, - 1404, - 1405, - 1406, - 1407, - 1408, - 1409, - 1410, - 1411, - 1412, - 1413, - 1414, - 1415, - 1416, - 1417, - 1418, - 1419, - 1420, - 1422, - 1423, - 1424, - 1425, - 1426, - 1427, - 1428, - 1429, - 1430, - 1431, - 1432, - 1433, - 1435, - 1436, - 1437, - 1438, - 1439, - 1440, - 1441, - 1442, - 1443, - 1444, - 1445, - 1446, - 1447, - 1448, - 1449, - 1450, - 1451, - 1452, - 1454, - 1455, - 1456, - 1457, - 1458, - 1459, - 1460, - 1461, - 1462, - 1463, - 1464, - 1465, - 1467, - 1468, - 1469, - 1470, - 1471, - 1472, - 1473, - 1474, - 1475, - 1476, - 1477, - 1478, - 1479, - 1480, - 1481, - 1482, - 1483, - 1484, - 1486, - 1487, - 1488, - 1489, - 1490, - 1491, - 1492, - 1493, - 1494, - 1495, - 1496, - 1497, - 1499, - 1500, - 1501, - 1502, - 1503, - 1504, - 1505, - 1506, - 1507, - 1508, - 1509, - 1510, - 1511, - 1512, - 1513, - 1514, - 1515, - 1516, - 1518, - 1519, - 1520, - 1521, - 1522, - 1523, - 1524, - 1525, - 1526, - 1527, - 1528, - 1529, - 1531, - 1532, - 1533, - 1534, - 1535, - 1536, - 1537, - 1538, - 1539, - 1540, - 1541, - 1542, - 1543, - 1544, - 1545, - 1546, - 1547, - 1548, - 1550, - 1551, - 1552, - 1553, - 1554, - 1555, - 1556, - 1557, - 1558, - 1559, - 1560, - 1561, - 1563, - 1564, - 1565, - 1566, - 1567, - 1568, - 1569, - 1570, - 1571, - 1572, - 1573, - 1574, - 1575, - 1576, - 1577, - 1578, - 1579, - 1580, - 1582, - 1583, - 1584, - 1585, - 1586, - 1587, - 1588, - 1589, - 1590, - 1591, - 1592, - 1593, - 1595, - 1596, - 1597, - 1598, - 1599, - 1600, - 1601, - 1602, - 1603, - 1604, - 1605, - 1606, - 1607, - 1608, - 1609, - 1610, - 1611, - 1612, - 1614, - 1615, - 1616, - 1617, - 1618, - 1619, - 1620, - 1621, - 1622, - 1623, - 1624, - 1625, - 1627, - 1628, - 1629, - 1630, - 1631, - 1632, - 1633, - 1634, - 1635, - 1636, - 1637, - 1638, - 1639, - 1640, - 1641, - 1642, - 1643, - 1644, - 1646, - 1647, - 1648, - 1649, - 1650, - 1651, - 1652, - 1653, - 1654, - 1655, - 1656, - 1657, - 1659, - 1660, - 1661, - 1662, - 1663, - 1664, - 1665, - 1666, - 1667, - 1668, - 1669, - 1670, - 1671, - 1672, - 1673, - 1674, - 1675, - 1676, - 1678, - 1679, - 1680, - 1681, - 1682, - 1683, - 1684, - 1685, - 1686, - 1687, - 1688, - 1689, - 1691, - 1692, - 1693, - 1694, - 1695, - 1696, - 1697, - 1698, - 1699, - 1700, - 1701, - 1702, - 1703, - 1704, - 1705, - 1706, - 1707, - 1708, - 1710, - 1711, - 1712, - 1713, - 1714, - 1715, - 1716, - 1717, - 1718, - 1719, - 1720, - 1721, - 1723, - 1724, - 1725, - 1726, - 1727, - 1728, - 1729, - 1730, - 1731, - 1732, - 1733, - 1734, - 1735, - 1736, - 1737, - 1738, - 1739, - 1740, - 1742, - 1743, - 1744, - 1745, - 1746, - 1747, - 1748, - 1749, - 1750, - 1751, - 1752, - 1753, - 1755, - 1756, - 1757, - 1758, - 1759, - 1760, - 1761, - 1762, - 1763, - 1764, - 1765, - 1766, - 1767, - 1768, - 1769, - 1770, - 1771, - 1772, - 1774, - 1775, - 1776, - 1777, - 1778, - 1779, - 1780, - 1781, - 1782, - 1783, - 1784, - 1785, - 1787, - 1788, - 1789, - 1790, - 1791, - 1792, - 1793, - 1794, - 1795, - 1796, - 1797, - 1798, - 1799, - 1800, - 1801, - 1802, - 1803, - 1804, - 1806, - 1807, - 1808, - 1809, - 1810, - 1811, - 1812, - 1813, - 1814, - 1815, - 1816, - 1817, - 1819, - 1820, - 1821, - 1822, - 1823, - 1824, - 1825, - 1826, - 1827, - 1828, - 1829, - 1830, - 1831, - 1832, - 1833, - 1834, - 1835, - 1836, - 1838, - 1839, - 1840, - 1841, - 1842, - 1843, - 1844, - 1845, - 1846, - 1847, - 1848, - 1849, - 1851, - 1852, - 1853, - 1854, - 1855, - 1856, - 1857, - 1858, - 1859, - 1860, - 1861, - 1862, - 1863, - 1864, - 1865, - 1866, - 1867, - 1868, - 1870, - 1871, - 1872, - 1873, - 1874, - 1875, - 1876, - 1877, - 1878, - 1879, - 1880, - 1881, - 1883, - 1884, - 1885, - 1886, - 1887, - 1888, - 1889, - 1890, - 1891, - 1892, - 1893, - 1894, - 1895, - 1896, - 1897, - 1898, - 1899, - 1900, - 1902, - 1903, - 1904, - 1905, - 1906, - 1907, - 1908, - 1909, - 1910, - 1911, - 1912, - 1913, - 1915, - 1916, - 1917, - 1918, - 1919, - 1920, - 1921, - 1922, - 1923, - 1924, - 1925, - 1926, - 1927, - 1928, - 1929, - 1930, - 1931, - 1932, - 1934, - 1935, - 1936, - 1937, - 1938, - 1939, - 1940, - 1941, - 1942, - 1943, - 1944, - 1945, - 1947, - 1948, - 1949, - 1950, - 1951, - 1952, - 1953, - 1954, - 1955, - 1956, - 1957, - 1958, - 1959, - 1960, - 1961, - 1962, - 1963, - 1964, - 1966, - 1967, - 1968, - 1969, - 1970, - 1971, - 1972, - 1973, - 1974, - 1975, - 1976, - 1977, - 1979, - 1980, - 1981, - 1982, - 1983, - 1984, - 1985, - 1986, - 1987, - 1988, - 1989, - 1990, - 1991, - 1992, - 1993, - 1994, - 1995, - 1996, - 1998, - 1999, - 2000, - 2001, - 2002, - 2003, - 2004, - 2005, - 2006, - 2007, - 2008, - 2009, - 2011, - 2012, - 2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026, - 2027, - 2028, - 2030, - 2031, - 2032, - 2033, - 2034, - 2035, - 2036, - 2037, - 2038, - 2039, - 2040, - 2041, - 2043, - 2044, - 2045, - 2046, - 2047, - 2048, - 2049, - 2050, - 2051, - 2052, - 2053, - 2054, - 2055, - 2056, - 2057, - 2058, - 2059, - 2060, - 2062, - 2063, - 2064, - 2065, - 2066, - 2067, - 2068, - 2069, - 2070, - 2071, - 2072, - 2073, - 2075, - 2076, - 2077, - 2078, - 2079, - 2080, - 2081, - 2082, - 2083, - 2084, - 2085, - 2086, - 2087, - 2088, - 2089, - 2090, - 2091, - 2092, - 2094, - 2095, - 2096, - 2097, - 2098, - 2099, - 2100, - 2101, - 2102, - 2103, - 2104, - 2105, - 2107, - 2108, - 2109, - 2110, - 2111, - 2112, - 2113, - 2114, - 2115, - 2116, - 2117, - 2118, - 2119, - 2120, - 2121, - 2122, - 2123, - 2124, - 2126, - 2127, - 2128, - 2129, - 2130, - 2131, - 2132, - 2133, - 2134, - 2135, - 2136, - 2137, - 2139, - 2140, - 2141, - 2142, - 2143, - 2144, - 2145, - 2146, - 2147, - 2148, - 2149, - 2150, - 2151, - 2152, - 2153, - 2154, - 2155, - 2156, - 2158, - 2159, - 2160, - 2161, - 2162, - 2163, - 2164, - 2165, - 2166, - 2167, - 2168, - 2169, - 2171, - 2172, - 2173, - 2174, - 2175, - 2176, - 2177, - 2178, - 2179, - 2180, - 2181, - 2182, - 2183, - 2184, - 2185, - 2186, - 2187, - 2188, - 2190, - 2191, - 2192, - 2193, - 2194, - 2195, - 2196, - 2197, - 2198, - 2199, - 2200, - 2201, - 2203, - 2204, - 2205, - 2206, - 2207, - 2208, - 2209, - 2210, - 2211, - 2212, - 2213, - 2214, - 2215, - 2216, - 2217, - 2218, - 2219, - 2220, - 2222, - 2223, - 2224, - 2225, - 2226, - 2227, - 2228, - 2229, - 2230, - 2231, - 2232, - 2233, - 2235, - 2236, - 2237, - 2238, - 2239, - 2240, - 2241, - 2242, - 2243, - 2244, - 2245, - 2246, - 2247, - 2248, - 2249, - 2250, - 2251, - 2252, - 2254, - 2255, - 2256, - 2257, - 2258, - 2259, - 2260, - 2261, - 2262, - 2263, - 2264, - 2265, - 2267, - 2268, - 2269, - 2270, - 2271, - 2272, - 2273, - 2274, - 2275, - 2276, - 2277, - 2278, - 2279, - 2280, - 2281, - 2282, - 2283, - 2284, - 2286, - 2287, - 2288, - 2289, - 2290, - 2291, - 2292, - 2293, - 2294, - 2295, - 2296, - 2297, - 2299, - 2300, - 2301, - 2302, - 2303, - 2304, - 2305, - 2306, - 2307, - 2308, - 2309, - 2310, - 2311, - 2312, - 2313, - 2314, - 2315, - 2316, - 2318, - 2319, - 2320, - 2321, - 2322, - 2323, - 2324, - 2325, - 2326, - 2327, - 2328, - 2329, - 2331, - 2332, - 2333, - 2334, - 2335, - 2336, - 2337, - 2338, - 2339, - 2340, - 2341, - 2342, - 2343, - 2344, - 2345, - 2346, - 2347, - 2348, - 2350, - 2351, - 2352, - 2353, - 2354, - 2355, - 2356, - 2357, - 2358, - 2359, - 2360, - 2361, - 2363, - 2364, - 2365, - 2366, - 2367, - 2368, - 2369, - 2370, - 2371, - 2372, - 2373, - 2374, - 2375, - 2376, - 2377, - 2378, - 2379, - 2380, - 2382, - 2383, - 2384, - 2385, - 2386, - 2387, - 2388, - 2389, - 2390, - 2391, - 2392, - 2393, - 2395, - 2396, - 2397, - 2398, - 2399, - 2400, - 2401, - 2402, - 2403, - 2404, - 2405, - 2406, - 2407, - 2408, - 2409, - 2410, - 2411, - 2412, - 2414, - 2415, - 2416, - 2417, - 2418, - 2419, - 2420, - 2421, - 2422, - 2423, - 2424, - 2425, - 2427, - 2428, - 2429, - 2430, - 2431, - 2432, - 2433, - 2434, - 2435, - 2436, - 2437, - 2438, - 2439, - 2440, - 2441, - 2442, - 2443, - 2444, - 2446, - 2447, - 2448, - 2449, - 2450, - 2451, - 2452, - 2453, - 2454, - 2455, - 2456, - 2457, - 2459, - 2460, - 2461, - 2462, - 2463, - 2464, - 2465, - 2466, - 2467, - 2468, - 2469, - 2470, - 2471, - 2472, - 2473, - 2474, - 2475, - 2476, - 2478, - 2479, - 2480, - 2481, - 2482, - 2483, - 2484, - 2485, - 2486, - 2487, - 2488, - 2489, - 2491, - 2492, - 2493, - 2494, - 2495, - 2496, - 2497, - 2498, - 2499, - 2500, - 2501, - 2502, - 2503, - 2504, - 2505, - 2506, - 2507, - 2508, - 2510, - 2511, - 2512, - 2513, - 2514, - 2515, - 2516, - 2517, - 2518, - 2519, - 2520, - 2521, - 2523, - 2524, - 2525, - 2526, - 2527, - 2528, - 2529, - 2530, - 2531, - 2532, - 2533, - 2534, - 2535, - 2536, - 2537, - 2538, - 2539, - 2540, - 2542, - 2543, - 2544, - 2545, - 2546, - 2547, - 2548, - 2549, - 2550, - 2551, - 2552, - 2553, - 2555, - 2556, - 2557, - 2558, - 2559, - 2560, - 2561, - 2562, - 2563, - 2564, - 2565, - 2566, - 2567, - 2568, - 2569, - 2570, - 2571, - 2572, - 2574, - 2575, - 2576, - 2577, - 2578, - 2579, - 2580, - 2581, - 2582, - 2583, - 2584, - 2585, - 2587, - 2588, - 2589, - 2590, - 2591, - 2592, - 2593, - 2594, - 2595, - 2596, - 2597, - 2598, - 2599, - 2600, - 2601, - 2602, - 2603, - 2604, - 2606, - 2607, - 2608, - 2609, - 2610, - 2611, - 2612, - 2613, - 2614, - 2615, - 2616, - 2617, - 2619, - 2620, - 2621, - 2622, - 2623, - 2624, - 2625, - 2626, - 2627, - 2628, - 2629, - 2630, - 2631, - 2632, - 2633, - 2634, - 2635, - 2636, - 2638, - 2639, - 2640, - 2641, - 2642, - 2643, - 2644, - 2645, - 2646, - 2647, - 2648, - 2649, - 2651, - 2652, - 2653, - 2654, - 2655, - 2656, - 2657, - 2658, - 2659, - 2660, - 2661, - 2662, - 2663, - 2664, - 2665, - 2666, - 2667, - 2668, - 2670, - 2671, - 2672, - 2673, - 2674, - 2675, - 2676, - 2677, - 2678, - 2679, - 2680, - 2681, - 2683, - 2684, - 2685, - 2686, - 2687, - 2688, - 2689, - 2690, - 2691, - 2692, - 2693, - 2694, - 2695, - 2696, - 2697, - 2698, - 2699, - 2700, - 2702, - 2703, - 2704, - 2705, - 2706, - 2707, - 2708, - 2709, - 2710, - 2711, - 2712, - 2713, - 2715, - 2716, - 2717, - 2718, - 2719, - 2720, - 2721, - 2722, - 2723, - 2724, - 2725, - 2726, - 2727, - 2728, - 2729, - 2730, - 2731, - 2732, - 2734, - 2735, - 2736, - 2737, - 2738, - 2739, - 2740, - 2741, - 2742, - 2743, - 2744, - 2745, - 2747, - 2748, - 2749, - 2750, - 2751, - 2752, - 2753, - 2754, - 2755, - 2756, - 2757, - 2758, - 2759, - 2760, - 2761, - 2762, - 2763, - 2764, - 2766, - 2767, - 2768, - 2769, - 2770, - 2771, - 2772, - 2773, - 2774, - 2775, - 2776, - 2777, - 2779, - 2780, - 2781, - 2782, - 2783, - 2784, - 2785, - 2786, - 2787, - 2788, - 2789, - 2790, - 2791, - 2792, - 2793, - 2794, - 2795, - 2796, - 2798, - 2799, - 2800, - 2801, - 2802, - 2803, - 2804, - 2805, - 2806, - 2807, - 2808, - 2809, - 2811, - 2812, - 2813, - 2814, - 2815, - 2816, - 2817, - 2818, - 2819, - 2820, - 2821, - 2822, - 2823, - 2824, - 2825, - 2826, - 2827, - 2828, - 2830, - 2831, - 2832, - 2833, - 2834, - 2835, - 2836, - 2837, - 2838, - 2839, - 2840, - 2841, - 2843, - 2844, - 2845, - 2846, - 2847, - 2848, - 2849, - 2850, - 2851, - 2852, - 2853, - 2854, - 2855, - 2856, - 2857, - 2858, - 2859, - 2860, - 2862, - 2863, - 2864, - 2865, - 2866, - 2867, - 2868, - 2869, - 2870, - 2871, - 2872, - 2873, - 2875, - 2876, - 2877, - 2878, - 2879, - 2880, - 2881, - 2882, - 2883, - 2884, - 2885, - 2886, - 2887, - 2888, - 2889, - 2890, - 2891, - 2892, - 2894, - 2895, - 2896, - 2897, - 2898, - 2899, - 2900, - 2901, - 2902, - 2903, - 2904, - 2905, - 2907, - 2908, - 2909, - 2910, - 2911, - 2912, - 2913, - 2914, - 2915, - 2916, - 2917, - 2918, - 2919, - 2920, - 2921, - 2922, - 2923, - 2924, - 2926, - 2927, - 2928, - 2929, - 2930, - 2931, - 2932, - 2933, - 2934, - 2935, - 2936, - 2937, - 2939, - 2940, - 2941, - 2942, - 2943, - 2944, - 2945, - 2946, - 2947, - 2948, - 2949, - 2950, - 2951, - 2952, - 2953, - 2954, - 2955, - 2956, - 2958, - 2959, - 2960, - 2961, - 2962, - 2963, - 2964, - 2965, - 2966, - 2967, - 2968, - 2969, - 2971, - 2972, - 2973, - 2974, - 2975, - 2976, - 2977, - 2978, - 2979, - 2980, - 2981, - 2982, - 2983, - 2984, - 2985, - 2986, - 2987, - 2988, - 2990, - 2991, - 2992, - 2993, - 2994, - 2995, - 2996, - 2997, - 2998, - 2999, - 3000, - 3001, - 3003, - 3004, - 3005, - 3006, - 3007, - 3008, - 3009, - 3010, - 3011, - 3012, - 3013, - 3014, - 3015, - 3016, - 3017, - 3018, - 3019, - 3020, - 3022, - 3023, - 3024, - 3025, - 3026, - 3027, - 3028, - 3029, - 3030, - 3031, - 3032, - 3033, - 3035, - 3036, - 3037, - 3038, - 3039, - 3040, - 3041, - 3042, - 3043, - 3044, - 3045, - 3046, - 3047, - 3048, - 3049, - 3050, - 3051, - 3052, - 3054, - 3055, - 3056, - 3057, - 3058, - 3059, - 3060, - 3061, - 3062, - 3063, - 3064, - 3065, - 3067, - 3068, - 3069, - 3070, - 3071, - 3072, - 3073, - 3074, - 3075, - 3076, - 3077, - 3078, - 3079, - 3080, - 3081, - 3082, - 3083, - 3084, - 3086, - 3087, - 3088, - 3089, - 3090, - 3091, - 3092, - 3093, - 3094, - 3095, - 3096, - 3097, - 3099, - 3100, - 3101, - 3102, - 3103, - 3104, - 3105, - 3106, - 3107, - 3108, - 3109, - 3110, - 3111, - 3112, - 3113, - 3114, - 3115, - 3116, - 3118, - 3119, - 3120, - 3121, - 3122, - 3123, - 3124, - 3125, - 3126, - 3127, - 3128, - 3129, - 3131, - 3132, - 3133, - 3134, - 3135, - 3136, - 3137, - 3138, - 3139, - 3140, - 3141, - 3142, - 3143, - 3144, - 3145, - 3146, - 3147, - 3148, - 3150, - 3151, - 3152, - 3153, - 3154, - 3155, - 3156, - 3157, - 3158, - 3159, - 3160, - 3161, - 3163, - 3164, - 3165, - 3166, - 3167, - 3168, - 3169, - 3170, - 3171, - 3172, - 3173, - 3174, - 3175, - 3176, - 3177, - 3178, - 3179, - 3180, - 3182, - 3183, - 3184, - 3185, - 3186, - 3187, - 3188, - 3189, - 3190, - 3191, - 3192, - 3193, - 3195, - 3196, - 3197, - 3198, - 3199, - 3200, - 3201, - 3202, - 3203, - 3204, - 3205, - 3206, - 3207, - 3208, - 3209, - 3210, - 3211, - 3212, - 3214, - 3215, - 3216, - 3217, - 3218, - 3219, - 3220, - 3221, - 3222, - 3223, - 3224, - 3225, - 3227, - 3228, - 3229, - 3230, - 3231, - 3232, - 3233, - 3234, - 3235, - 3236, - 3237, - 3238, - 3239, - 3240, - 3241, - 3242, - 3243, - 3244, - 3246, - 3247, - 3248, - 3249, - 3250, - 3251, - 3252, - 3253, - 3254, - 3255, - 3256, - 3257, - 3259, - 3260, - 3261, - 3262, - 3263, - 3264, - 3265, - 3266, - 3267, - 3268, - 3269, - 3270, - 3271, - 3272, - 3273, - 3274, - 3275, - 3276, - 3278, - 3279, - 3280, - 3281, - 3282, - 3283, - 3284, - 3285, - 3286, - 3287, - 3288, - 3289, - 3291, - 3292, - 3293, - 3294, - 3295, - 3296, - 3297, - 3298, - 3299, - 3300, - 3301, - 3302, - 3303, - 3304, - 3305, - 3306, - 3307, - 3308, - 3310, - 3311, - 3312, - 3313, - 3314, - 3315, - 3316, - 3317, - 3318, - 3319, - 3320, - 3321, - 3323, - 3324, - 3325, - 3326, - 3327, - 3328, - 3329, - 3330, - 3331, - 3332, - 3333, - 3334, - 3335, - 3336, - 3337, - 3338, - 3339, - 3340, - 3342, - 3343, - 3344, - 3345, - 3346, - 3347, - 3348, - 3349, - 3350, - 3351, - 3352, - 3353, - 3355, - 3356, - 3357, - 3358, - 3359, - 3360, - 3361, - 3362, - 3363, - 3364, - 3365, - 3366, - 3367, - 3368, - 3369, - 3370, - 3371, - 3372, - 3374, - 3375, - 3376, - 3377, - 3378, - 3379, - 3380, - 3381, - 3382, - 3383, - 3384, - 3385, - 3387, - 3388, - 3389, - 3390, - 3391, - 3392, - 3393, - 3394, - 3395, - 3396, - 3397, - 3398, - 3399, - 3400, - 3401, - 3402, - 3403, - 3404, - 3406, - 3407, - 3408, - 3409, - 3410, - 3411, - 3412, - 3413, - 3414, - 3415, - 3416, - 3417, - 3419, - 3420, - 3421, - 3422, - 3423, - 3424, - 3425, - 3426, - 3427, - 3428, - 3429, - 3430, - 3431, - 3432, - 3433, - 3434, - 3435, - 3436, - 3438, - 3439, - 3440, - 3441, - 3442, - 3443, - 3444, - 3445, - 3446, - 3447, - 3448, - 3449, - 3451, - 3452, - 3453, - 3454, - 3455, - 3456, - 3457, - 3458, - 3459, - 3460, - 3461, - 3462, - 3463, - 3464, - 3465, - 3466, - 3467, - 3468, - 3470, - 3471, - 3472, - 3473, - 3474, - 3475, - 3476, - 3477, - 3478, - 3479, - 3480, - 3481, - 3483, - 3484, - 3485, - 3486, - 3487, - 3488, - 3489, - 3490, - 3491, - 3492, - 3493, - 3494, - 3495, - 3496, - 3497, - 3498, - 3499, - 3500, - 3502, - 3503, - 3504, - 3505, - 3506, - 3507, - 3508, - 3509, - 3510, - 3511, - 3512, - 3513, - 3515, - 3516, - 3517, - 3518, - 3519, - 3520, - 3521, - 3522, - 3523, - 3524, - 3525, - 3526, - 3527, - 3528, - 3529, - 3530, - 3531, - 3532, - 3534, - 3535, - 3536, - 3537, - 3538, - 3539, - 3540, - 3541, - 3542, - 3543, - 3544, - 3545, - 3547, - 3548, - 3549, - 3550, - 3551, - 3552, - 3553, - 3554, - 3555, - 3556, - 3557, - 3558, - 3559, - 3560, - 3561, - 3562, - 3563, - 3564, - 3566, - 3567, - 3568, - 3569, - 3570, - 3571, - 3572, - 3573, - 3574, - 3575, - 3576, - 3577, - 3579, - 3580, - 3581, - 3582, - 3583, - 3584, - 3585, - 3586, - 3587, - 3588, - 3589, - 3590, - 3591, - 3592, - 3593, - 3594, - 3595, - 3596, - 3598, - 3599, - 3600, - 3601, - 3602, - 3603, - 3604, - 3605, - 3606, - 3607, - 3608, - 3609, - 3611, - 3612, - 3613, - 3614, - 3615, - 3616, - 3617, - 3618, - 3619, - 3620, - 3621, - 3622, - 3623, - 3624, - 3625, - 3626, - 3627, - 3628, - 3630, - 3631, - 3632, - 3633, - 3634, - 3635, - 3636, - 3637, - 3638, - 3639, - 3640, - 3641, - 3643, - 3644, - 3645, - 3646, - 3647, - 3648, - 3649, - 3650, - 3651, - 3652, - 3653, - 3654, - 3655, - 3656, - 3657, - 3658, - 3659, - 3660, - 3662, - 3663, - 3664, - 3665, - 3666, - 3667, - 3668, - 3669, - 3670, - 3671, - 3672, - 3673, - 3675, - 3676, - 3677, - 3678, - 3679, - 3680, - 3681, - 3682, - 3683, - 3684, - 3685, - 3686, - 3687, - 3688, - 3689, - 3690, - 3691, - 3692, - 3694, - 3695, - 3696, - 3697, - 3698, - 3699, - 3700, - 3701, - 3702, - 3703, - 3704, - 3705, - 3707, - 3708, - 3709, - 3710, - 3711, - 3712, - 3713, - 3714, - 3715, - 3716, - 3717, - 3718, - 3719, - 3720, - 3721, - 3722, - 3723, - 3724, - 3726, - 3727, - 3728, - 3729, - 3730, - 3731, - 3732, - 3733, - 3734, - 3735, - 3736, - 3737, - 3739, - 3740, - 3741, - 3742, - 3743, - 3744, - 3745, - 3746, - 3747, - 3748, - 3749, - 3750, - 3751, - 3752, - 3753, - 3754, - 3755, - 3756, - 3758, - 3759, - 3760, - 3761, - 3762, - 3763, - 3764, - 3765, - 3766, - 3767, - 3768, - 3769, - 3771, - 3772, - 3773, - 3774, - 3775, - 3776, - 3777, - 3778, - 3779, - 3780, - 3781, - 3782, - 3783, - 3784, - 3785, - 3786, - 3787, - 3788, - 3790, - 3791, - 3792, - 3793, - 3794, - 3795, - 3796, - 3797, - 3798, - 3799, - 3800, - 3801, - 3803, - 3804, - 3805, - 3806, - 3807, - 3808, - 3809, - 3810, - 3811, - 3812, - 3813, - 3814, - 3815, - 3816, - 3817, - 3818, - 3819, - 3820, - 3822, - 3823, - 3824, - 3825, - 3826, - 3827, - 3828, - 3829, - 3830, - 3831, - 3832, - 3833, - 3835, - 3836, - 3837, - 3838, - 3839, - 3840, - 3841, - 3842, - 3843, - 3844, - 3845, - 3846, - 3847, - 3848, - 3849, - 3850, - 3851, - 3852, - 3854, - 3855, - 3856, - 3857, - 3858, - 3859, - 3860, - 3861, - 3862, - 3863, - 3864, - 3865, - 3867, - 3868, - 3869, - 3870, - 3871, - 3872, - 3873, - 3874, - 3875, - 3876, - 3877, - 3878, - 3879, - 3880, - 3881, - 3882, - 3883, - 3884, - 3886, - 3887, - 3888, - 3889, - 3890, - 3891, - 3892, - 3893, - 3894, - 3895, - 3896, - 3897, - 3899, - 3900, - 3901, - 3902, - 3903, - 3904, - 3905, - 3906, - 3907, - 3908, - 3909, - 3910, - 3911, - 3912, - 3913, - 3914, - 3915, - 3916, - 3918, - 3919, - 3920, - 3921, - 3922, - 3923, - 3924, - 3925, - 3926, - 3927, - 3928, - 3929, - 3931, - 3932, - 3933, - 3934, - 3935, - 3936, - 3937, - 3938, - 3939, - 3940, - 3941, - 3942, - 3943, - 3944, - 3945, - 3946, - 3947, - 3948, - 3950, - 3951, - 3952, - 3953, - 3954, - 3955, - 3956, - 3957, - 3958, - 3959, - 3960, - 3961, - 3963, - 3964, - 3965, - 3966, - 3967, - 3968, - 3969, - 3970, - 3971, - 3972, - 3973, - 3974, - 3975, - 3976, - 3977, - 3978, - 3979, - 3980, - 3982, - 3983, - 3984, - 3985, - 3986, - 3987, - 3988, - 3989, - 3990, - 3991, - 3992, - 3993, - 3995, - 3996, - 3997, - 3998, - 3999, - 4000, - 4001, - 4002, - 4003, - 4004, - 4005, - 4006, - 4007, - 4008, - 4009, - 4010, - 4011, - 4012, - 4014, - 4015, - 4016, - 4017, - 4018, - 4019, - 4020, - 4021, - 4022, - 4023, - 4024, - 4025, - 4027, - 4028, - 4029, - 4030, - 4031, - 4032, - 4033, - 4034, - 4035, - 4036, - 4037, - 4038, - 4039, - 4040, - 4041, - 4042, - 4043, - 4044, - 4046, - 4047, - 4048, - 4049, - 4050, - 4051, - 4052, - 4053, - 4054, - 4055, - 4056, - 4057, - 4059, - 4060, - 4061, - 4062, - 4063, - 4064, - 4065, - 4066, - 4067, - 4068, - 4069, - 4070, - 4071, - 4072, - 4073, - 4074, - 4075, - 4076, - 4078, - 4079, - 4080, - 4081, - 4082, - 4083, - 4084, - 4085, - 4086, - 4087, - 4088, - 4089, - 4091, - 4092, - 4093, - 4094, - 4095, - 4096, - 4097, - 4098, - 4099, - 4100, - 4101, - 4102, - 4103, - 4104, - 4105, - 4106, - 4107, - 4108, - 4110, - 4111, - 4112, - 4113, - 4114, - 4115, - 4116, - 4117, - 4118, - 4119, - 4120, - 4121, - 4123, - 4124, - 4125, - 4126, - 4127, - 4128, - 4129, - 4130, - 4131, - 4132, - 4133, - 4134, - 4135, - 4136, - 4137, - 4138, - 4139, - 4140, - 4142, - 4143, - 4144, - 4145, - 4146, - 4147, - 4148, - 4149, - 4150, - 4151, - 4152, - 4153, - 4155, - 4156, - 4157, - 4158, - 4159, - 4160, - 4161, - 4162, - 4163, - 4164, - 4165, - 4166, - 4167, - 4168, - 4169, - 4170, - 4171, - 4172, - 4174, - 4175, - 4176, - 4177, - 4178, - 4179, - 4180, - 4181, - 4182, - 4183, - 4184, - 4185, - 4187, - 4188, - 4189, - 4190, - 4191, - 4192, - 4193, - 4194, - 4195, - 4196, - 4197, - 4198, - 4199, - 4200, - 4201, - 4202, - 4203, - 4204, - 4206, - 4207, - 4208, - 4209, - 4210, - 4211, - 4212, - 4213, - 4214, - 4215, - 4216, - 4217, - 4219, - 4220, - 4221, - 4222, - 4223, - 4224, - 4225, - 4226, - 4227, - 4228, - 4229, - 4230, - 4231, - 4232, - 4233, - 4234, - 4235, - 4236, - 4238, - 4239, - 4240, - 4241, - 4242, - 4243, - 4244, - 4245, - 4246, - 4247, - 4248, - 4249, - 4251, - 4252, - 4253, - 4254, - 4255, - 4256, - 4257, - 4258, - 4259, - 4260, - 4261, - 4262, - 4263, - 4264, - 4265, - 4266, - 4267, - 4268, - 4270, - 4271, - 4272, - 4273, - 4274, - 4275, - 4276, - 4277, - 4278, - 4279, - 4280, - 4281, - 4283, - 4284, - 4285, - 4286, - 4287, - 4288, - 4289, - 4290, - 4291, - 4292, - 4293, - 4294, - 4295, - 4296, - 4297, - 4298, - 4299, - 4300, - 4302, - 4303, - 4304, - 4305, - 4306, - 4307, - 4308, - 4309, - 4310, - 4311, - 4312, - 4313, - 4315, - 4316, - 4317, - 4318, - 4319, - 4320, - 4321, - 4322, - 4323, - 4324, - 4325, - 4326, - 4327, - 4328, - 4329, - 4330, - 4331, - 4332, - 4334, - 4335, - 4336, - 4337, - 4338, - 4339, - 4340, - 4341, - 4342, - 4343, - 4344, - 4345, - 4347, - 4348, - 4349, - 4350, - 4351, - 4352, - 4353, - 4354, - 4355, - 4356, - 4357, - 4358, - 4359, - 4360, - 4361, - 4362, - 4363, - 4364, - 4366, - 4367, - 4368, - 4369, - 4370, - 4371, - 4372, - 4373, - 4374, - 4375, - 4376, - 4377, - 4379, - 4380, - 4381, - 4382, - 4383, - 4384, - 4385, - 4386, - 4387, - 4388, - 4389, - 4390, - 4391, - 4392, - 4393, - 4394, - 4395, - 4396, - 4398, - 4399, - 4400, - 4401, - 4402, - 4403, - 4404, - 4405, - 4406, - 4407, - 4408, - 4409, - 4411, - 4412, - 4413, - 4414, - 4415, - 4416, - 4417, - 4418, - 4419, - 4420, - 4421, - 4422, - 4423, - 4424, - 4425, - 4426, - 4427, - 4428, - 4430, - 4431, - 4432, - 4433, - 4434, - 4435, - 4436, - 4437, - 4438, - 4439, - 4440, - 4441, - 4443, - 4444, - 4445, - 4446, - 4447, - 4448, - 4449, - 4450, - 4451, - 4452, - 4453, - 4454, - 4455, - 4456, - 4457, - 4458, - 4459, - 4460, - 4462, - 4463, - 4464, - 4465, - 4466, - 4467, - 4468, - 4469, - 4470, - 4471, - 4472, - 4473, - 4475, - 4476, - 4477, - 4478, - 4479, - 4480, - 4481, - 4482, - 4483, - 4484, - 4485, - 4486, - 4487, - 4488, - 4489, - 4490, - 4491, - 4492, - 4494, - 4495, - 4496, - 4497, - 4498, - 4499, - 4500, - 4501, - 4502, - 4503, - 4504, - 4505, - 4507, - 4508, - 4509, - 4510, - 4511, - 4512, - 4513, - 4514, - 4515, - 4516, - 4517, - 4518, - 4519, - 4520, - 4521, - 4522, - 4523, - 4524, - 4526, - 4527, - 4528, - 4529, - 4530, - 4531, - 4532, - 4533, - 4534, - 4535, - 4536, - 4537, - 4539, - 4540, - 4541, - 4542, - 4543, - 4544, - 4545, - 4546, - 4547, - 4548, - 4549, - 4550, - 4551, - 4552, - 4553, - 4554, - 4555, - 4556, - 4558, - 4559, - 4560, - 4561, - 4562, - 4563, - 4564, - 4565, - 4566, - 4567, - 4568, - 4569, - 4571, - 4572, - 4573, - 4574, - 4575, - 4576, - 4577, - 4578, - 4579, - 4580, - 4581, - 4582, - 4583, - 4584, - 4585, - 4586, - 4587, - 4588, - 4590, - 4591, - 4592, - 4593, - 4594, - 4595, - 4596, - 4597, - 4598, - 4599, - 4600, - 4601, - 4603, - 4604, - 4605, - 4606, - 4607, - 4608, - 4609, - 4610, - 4611, - 4612, - 4613, - 4614, - 4615, - 4616, - 4617, - 4618, - 4619, - 4620, - 4622, - 4623, - 4624, - 4625, - 4626, - 4627, - 4628, - 4629, - 4630, - 4631, - 4632, - 4633, - 4635, - 4636, - 4637, - 4638, - 4639, - 4640, - 4641, - 4642, - 4643, - 4644, - 4645, - 4646, - 4647, - 4648, - 4649, - 4650, - 4651, - 4652, - 4654, - 4655, - 4656, - 4657, - 4658, - 4659, - 4660, - 4661, - 4662, - 4663, - 4664, - 4665, - 4667, - 4668, - 4669, - 4670, - 4671, - 4672, - 4673, - 4674, - 4675, - 4676, - 4677, - 4678, - 4679, - 4680, - 4681, - 4682, - 4683, - 4684, - 4686, - 4687, - 4688, - 4689, - 4690, - 4691, - 4692, - 4693, - 4694, - 4695, - 4696, - 4697, - 4699, - 4700, - 4701, - 4702, - 4703, - 4704, - 4705, - 4706, - 4707, - 4708, - 4709, - 4710, - 4711, - 4712, - 4713, - 4714, - 4715, - 4716, - 4718, - 4719, - 4720, - 4721, - 4722, - 4723, - 4724, - 4725, - 4726, - 4727, - 4728, - 4729, - 4731, - 4732, - 4733, - 4734, - 4735, - 4736, - 4737, - 4738, - 4739, - 4740, - 4741, - 4742, - 4743, - 4744, - 4745, - 4746, - 4747, - 4748, - 4750, - 4751, - 4752, - 4753, - 4754, - 4755, - 4756, - 4757, - 4758, - 4759, - 4760, - 4761, - 4763, - 4764, - 4765, - 4766, - 4767, - 4768, - 4769, - 4770, - 4771, - 4772, - 4773, - 4774, - 4775, - 4776, - 4777, - 4778, - 4779, - 4780, - 4782, - 4783, - 4784, - 4785, - 4786, - 4787, - 4788, - 4789, - 4790, - 4791, - 4792, - 4793, - 4795, - 4796, - 4797, - 4798, - 4799, - 4800, - 4801, - 4802, - 4803, - 4804, - 4805, - 4806, - 4807, - 4808, - 4809, - 4810, - 4811, - 4812, - 4814, - 4815, - 4816, - 4817, - 4818, - 4819, - 4820, - 4821, - 4822, - 4823, - 4824, - 4825, - 4827, - 4828, - 4829, - 4830, - 4831, - 4832, - 4833, - 4834, - 4835, - 4836, - 4837, - 4838, - 4839, - 4840, - 4841, - 4842, - 4843, - 4844, - 4846, - 4847, - 4848, - 4849, - 4850, - 4851, - 4852, - 4853, - 4854, - 4855, - 4856, - 4857, - 4859, - 4860, - 4861, - 4862, - 4863, - 4864, - 4865, - 4866, - 4867, - 4868, - 4869, - 4870, - 4871, - 4872, - 4873, - 4874, - 4875, - 4876, - 4878, - 4879, - 4880, - 4881, - 4882, - 4883, - 4884, - 4885, - 4886, - 4887, - 4888, - 4889, - 4891, - 4892, - 4893, - 4894, - 4895, - 4896, - 4897, - 4898, - 4899, - 4900, - 4901, - 4902, - 4903, - 4904, - 4905, - 4906, - 4907, - 4908, - 4910, - 4911, - 4912, - 4913, - 4914, - 4915, - 4916, - 4917, - 4918, - 4919, - 4920, - 4921, - 4923, - 4924, - 4925, - 4926, - 4927, - 4928, - 4929, - 4930, - 4931, - 4932, - 4933, - 4934, - 4935, - 4936, - 4937, - 4938, - 4939, - 4940, - 4942, - 4943, - 4944, - 4945, - 4946, - 4947, - 4948, - 4949, - 4950, - 4951, - 4952, - 4953, - 4955, - 4956, - 4957, - 4958, - 4959, - 4960, - 4961, - 4962, - 4963, - 4964, - 4965, - 4966, - 4967, - 4968, - 4969, - 4970, - 4971, - 4972, - 4974, - 4975, - 4976, - 4977, - 4978, - 4979, - 4980, - 4981, - 4982, - 4983, - 4984, - 4985, - 4987, - 4988, - 4989, - 4990, - 4991, - 4992, - 4993, - 4994, - 4995, - 4996, - 4997, - 4998, - 4999, - 5000, - 5001, - 5002, - 5003, - 5004, - 5006, - 5007, - 5008, - 5009, - 5010, - 5011, - 5012, - 5013, - 5014, - 5015, - 5016, - 5017, - 5019, - 5020, - 5021, - 5022, - 5023, - 5024, - 5025, - 5026, - 5027, - 5028, - 5029, - 5030, - 5031, - 5032, - 5033, - 5034, - 5035, - 5036, - 5038, - 5039, - 5040, - 5041, - 5042, - 5043, - 5044, - 5045, - 5046, - 5047, - 5048, - 5049, - 5051, - 5052, - 5053, - 5054, - 5055, - 5056, - 5057, - 5058, - 5059, - 5060, - 5061, - 5062, - 5063, - 5064, - 5065, - 5066, - 5067, - 5068, - 5070, - 5071, - 5072, - 5073, - 5074, - 5075, - 5076, - 5077, - 5078, - 5079, - 5080, - 5081, - 5083, - 5084, - 5085, - 5086, - 5087, - 5088, - 5089, - 5090, - 5091, - 5092, - 5093, - 5094, - 5095, - 5096, - 5097, - 5098, - 5099, - 5100, - 5102, - 5103, - 5104, - 5105, - 5106, - 5107, - 5108, - 5109, - 5110, - 5111, - 5112, - 5113, - 5115, - 5116, - 5117, - 5118, - 5119, - 5120, - 5121, - 5122, - 5123, - 5124, - 5125, - 5126, - 5127, - 5128, - 5129, - 5130, - 5131, - 5132, - 5134, - 5135, - 5136, - 5137, - 5138, - 5139, - 5140, - 5141, - 5142, - 5143, - 5144, - 5145, - 5147, - 5148, - 5149, - 5150, - 5151, - 5152, - 5153, - 5154, - 5155, - 5156, - 5157, - 5158, - 5159, - 5160, - 5161, - 5162, - 5163, - 5164, - 5166, - 5167, - 5168, - 5169, - 5170, - 5171, - 5172, - 5173, - 5174, - 5175, - 5176, - 5177, - 5179, - 5180, - 5181, - 5182, - 5183, - 5184, - 5185, - 5186, - 5187, - 5188, - 5189, - 5190, - 5191, - 5192, - 5193, - 5194, - 5195, - 5196, - 5198, - 5199, - 5200, - 5201, - 5202, - 5203, - 5204, - 5205, - 5206, - 5207, - 5208, - 5209, - 5211, - 5212, - 5213, - 5214, - 5215, - 5216, - 5217, - 5218, - 5219, - 5220, - 5221, - 5222, - 5223, - 5224, - 5225, - 5226, - 5227, - 5228, - 5230, - 5231, - 5232, - 5233, - 5234, - 5235, - 5236, - 5237, - 5238, - 5239, - 5240, - 5241, - 5243, - 5244, - 5245, - 5246, - 5247, - 5248, - 5249, - 5250, - 5251, - 5252, - 5253, - 5254, - 5255, - 5256, - 5257, - 5258, - 5259, - 5260, - 5262, - 5263, - 5264, - 5265, - 5266, - 5267, - 5268, - 5269, - 5270, - 5271, - 5272, - 5273, - 5275, - 5276, - 5277, - 5278, - 5279, - 5280, - 5281, - 5282, - 5283, - 5284, - 5285, - 5286, - 5287, - 5288, - 5289, - 5290, - 5291, - 5292, - 5294, - 5295, - 5296, - 5297, - 5298, - 5299, - 5300, - 5301, - 5302, - 5303, - 5304, - 5305, - 5307, - 5308, - 5309, - 5310, - 5311, - 5312, - 5313, - 5314, - 5315, - 5316, - 5317, - 5318, - 5319, - 5320, - 5321, - 5322, - 5323, - 5324, - 5326, - 5327, - 5328, - 5329, - 5330, - 5331, - 5332, - 5333, - 5334, - 5335, - 5336, - 5337, - 5339, - 5340, - 5341, - 5342, - 5343, - 5344, - 5345, - 5346, - 5347, - 5348, - 5349, - 5350, - 5351, - 5352, - 5353, - 5354, - 5355, - 5356, - 5358, - 5359, - 5360, - 5361, - 5362, - 5363, - 5364, - 5365, - 5366, - 5367, - 5368, - 5369, - 5371, - 5372, - 5373, - 5374, - 5375, - 5376, - 5377, - 5378, - 5379, - 5380, - 5381, - 5382, - 5383, - 5384, - 5385, - 5386, - 5387, - 5388, - 5390, - 5391, - 5392, - 5393, - 5394, - 5395, - 5396, - 5397, - 5398, - 5399, - 5400, - 5401, - 5403, - 5404, - 5405, - 5406, - 5407, - 5408, - 5409, - 5410, - 5411, - 5412, - 5413, - 5414, - 5415, - 5416, - 5417, - 5418, - 5419, - 5420, - 5422, - 5423, - 5424, - 5425, - 5426, - 5427, - 5428, - 5429, - 5430, - 5431, - 5432, - 5433, - 5435, - 5436, - 5437, - 5438, - 5439, - 5440, - 5441, - 5442, - 5443, - 5444, - 5445, - 5446, - 5447, - 5448, - 5449, - 5450, - 5451, - 5452, - 5454, - 5455, - 5456, - 5457, - 5458, - 5459, - 5460, - 5461, - 5462, - 5463, - 5464, - 5465, - 5467, - 5468, - 5469, - 5470, - 5471, - 5472, - 5473, - 5474, - 5475, - 5476, - 5477, - 5478, - 5479, - 5480, - 5481, - 5482, - 5483, - 5484, - 5486, - 5487, - 5488, - 5489, - 5490, - 5491, - 5492, - 5493, - 5494, - 5495, - 5496, - 5497, - 5499, - 5500, - 5501, - 5502, - 5503, - 5504, - 5505, - 5506, - 5507, - 5508, - 5509, - 5510, - 5511, - 5512, - 5513, - 5514, - 5515, - 5516, - 5518, - 5519, - 5520, - 5521, - 5522, - 5523, - 5524, - 5525, - 5526, - 5527, - 5528, - 5529, - 5531, - 5532, - 5533, - 5534, - 5535, - 5536, - 5537, - 5538, - 5539, - 5540, - 5541, - 5542, - 5543, - 5544, - 5545, - 5546, - 5547, - 5548, - 5550, - 5551, - 5552, - 5553, - 5554, - 5555, - 5556, - 5557, - 5558, - 5559, - 5560, - 5561, - 5563, - 5564, - 5565, - 5566, - 5567, - 5568, - 5569, - 5570, - 5571, - 5572, - 5573, - 5574, - 5575, - 5576, - 5577, - 5578, - 5579, - 5580, - 5582, - 5583, - 5584, - 5585, - 5586, - 5587, - 5588, - 5589, - 5590, - 5591, - 5592, - 5593, - 5595, - 5596, - 5597, - 5598, - 5599, - 5600, - 5601, - 5602, - 5603, - 5604, - 5605, - 5606, - 5607, - 5608, - 5609, - 5610, - 5611, - 5612, - 5614, - 5615, - 5616, - 5617, - 5618, - 5619, - 5620, - 5621, - 5622, - 5623, - 5624, - 5625, - 5627, - 5628, - 5629, - 5630, - 5631, - 5632, - 5633, - 5634, - 5635, - 5636, - 5637, - 5638, - 5639, - 5640, - 5641, - 5642, - 5643, - 5644, - 5646, - 5647, - 5648, - 5649, - 5650, - 5651, - 5652, - 5653, - 5654, - 5655, - 5656, - 5657, - 5659, - 5660, - 5661, - 5662, - 5663, - 5664, - 5665, - 5666, - 5667, - 5668, - 5669, - 5670, - 5671, - 5672, - 5673, - 5674, - 5675, - 5676, - 5678, - 5679, - 5680, - 5681, - 5682, - 5683, - 5684, - 5685, - 5686, - 5687, - 5688, - 5689, - 5691, - 5692, - 5693, - 5694, - 5695, - 5696, - 5697, - 5698, - 5699, - 5700, - 5701, - 5702, - 5703, - 5704, - 5705, - 5706, - 5707, - 5708, - 5710, - 5711, - 5712, - 5713, - 5714, - 5715, - 5716, - 5717, - 5718, - 5719, - 5720, - 5721, - 5723, - 5724, - 5725, - 5726, - 5727, - 5728, - 5729, - 5730, - 5731, - 5732, - 5733, - 5734, - 5735, - 5736, - 5737, - 5738, - 5739, - 5740, - 5742, - 5743, - 5744, - 5745, - 5746, - 5747, - 5748, - 5749, - 5750, - 5751, - 5752, - 5753, - 5755, - 5756, - 5757, - 5758, - 5759, - 5760, - 5761, - 5762, - 5763, - 5764, - 5765, - 5766, - 5767, - 5768, - 5769, - 5770, - 5771, - 5772, - 5774, - 5775, - 5776, - 5777, - 5778, - 5779, - 5780, - 5781, - 5782, - 5783, - 5784, - 5785, - 5787, - 5788, - 5789, - 5790, - 5791, - 5792, - 5793, - 5794, - 5795, - 5796, - 5797, - 5798, - 5799, - 5800, - 5801, - 5802, - 5803, - 5804, - 5806, - 5807, - 5808, - 5809, - 5810, - 5811, - 5812, - 5813, - 5814, - 5815, - 5816, - 5817, - 5819, - 5820, - 5821, - 5822, - 5823, - 5824, - 5825, - 5826, - 5827, - 5828, - 5829, - 5830, - 5831, - 5832, - 5833, - 5834, - 5835, - 5836, - 5838, - 5839, - 5840, - 5841, - 5842, - 5843, - 5844, - 5845, - 5846, - 5847, - 5848, - 5849, - 5851, - 5852, - 5853, - 5854, - 5855, - 5856, - 5857, - 5858, - 5859, - 5860, - 5861, - 5862, - 5863, - 5864, - 5865, - 5866, - 5867, - 5868, - 5870, - 5871, - 5872, - 5873, - 5874, - 5875, - 5876, - 5877, - 5878, - 5879, - 5880, - 5881, - 5883, - 5884, - 5885, - 5886, - 5887, - 5888, - 5889, - 5890, - 5891, - 5892, - 5893, - 5894, - 5895, - 5896, - 5897, - 5898, - 5899, - 5900, - 5902, - 5903, - 5904, - 5905, - 5906, - 5907, - 5908, - 5909, - 5910, - 5911, - 5912, - 5913, - 5915, - 5916, - 5917, - 5918, - 5919, - 5920, - 5921, - 5922, - 5923, - 5924, - 5925, - 5926, - 5927, - 5928, - 5929, - 5930, - 5931, - 5932, - 5934, - 5935, - 5936, - 5937, - 5938, - 5939, - 5940, - 5941, - 5942, - 5943, - 5944, - 5945, - 5947, - 5948, - 5949, - 5950, - 5951, - 5952, - 5953, - 5954, - 5955, - 5956, - 5957, - 5958, - 5959, - 5960, - 5961, - 5962, - 5963, - 5964, - 5966, - 5967, - 5968, - 5969, - 5970, - 5971, - 5972, - 5973, - 5974, - 5975, - 5976, - 5977, - 5979, - 5980, - 5981, - 5982, - 5983, - 5984, - 5985, - 5986, - 5987, - 5988, - 5989, - 5990, - 5991, - 5992, - 5993, - 5994, - 5995, - 5996, - 5998, - 5999, - 6000, - 6001, - 6002, - 6003, - 6004, - 6005, - 6006, - 6007, - 6008, - 6009, - 6011, - 6012, - 6013, - 6014, - 6015, - 6016, - 6017, - 6018, - 6019, - 6020, - 6021, - 6022, - 6023, - 6024, - 6025, - 6026, - 6027, - 6028, - 6030, - 6031, - 6032, - 6033, - 6034, - 6035, - 6036, - 6037, - 6038, - 6039, - 6040, - 6041, - 6043, - 6044, - 6045, - 6046, - 6047, - 6048, - 6049, - 6050, - 6051, - 6052, - 6053, - 6054, - 6055, - 6056, - 6057, - 6058, - 6059, - 6060, - 6062, - 6063, - 6064, - 6065, - 6066, - 6067, - 6068, - 6069, - 6070, - 6071, - 6072, - 6073, - 6075, - 6076, - 6077, - 6078, - 6079, - 6080, - 6081, - 6082, - 6083, - 6084, - 6085, - 6086, - 6087, - 6088, - 6089, - 6090, - 6091, - 6092, - 6094, - 6095, - 6096, - 6097, - 6098, - 6099, - 6100, - 6101, - 6102, - 6103, - 6104, - 6105, - 6107, - 6108, - 6109, - 6110, - 6111, - 6112, - 6113, - 6114, - 6115, - 6116, - 6117, - 6118, - 6119, - 6120, - 6121, - 6122, - 6123, - 6124, - 6126, - 6127, - 6128, - 6129, - 6130, - 6131, - 6132, - 6133, - 6134, - 6135, - 6136, - 6137, - 6139, - 6140, - 6141, - 6142, - 6143, - 6144, - 6145, - 6146, - 6147, - 6148, - 6149, - 6150, - 6151, - 6152, - 6153, - 6154, - 6155, - 6156, - 6158, - 6159, - 6160, - 6161, - 6162, - 6163, - 6164, - 6165, - 6166, - 6167, - 6168, - 6169, - 6171, - 6172, - 6173, - 6174, - 6175, - 6176, - 6177, - 6178, - 6179, - 6180, - 6181, - 6182, - 6183, - 6184, - 6185, - 6186, - 6187, - 6188, - 6190, - 6191, - 6192, - 6193, - 6194, - 6195, - 6196, - 6197, - 6198, - 6199, - 6200, - 6201, - 6203, - 6204, - 6205, - 6206, - 6207, - 6208, - 6209, - 6210, - 6211, - 6212, - 6213, - 6214, - 6215, - 6216, - 6217, - 6218, - 6219, - 6220, - 6222, - 6223, - 6224, - 6225, - 6226, - 6227, - 6228, - 6229, - 6230, - 6231, - 6232, - 6233, - 6235, - 6236, - 6237, - 6238, - 6239, - 6240, - 6241, - 6242, - 6243, - 6244, - 6245, - 6246, - 6247, - 6248, - 6249, - 6250, - 6251, - 6252, - 6254, - 6255, - 6256, - 6257, - 6258, - 6259, - 6260, - 6261, - 6262, - 6263, - 6264, - 6265, - 6267, - 6268, - 6269, - 6270, - 6271, - 6272, - 6273, - 6274, - 6275, - 6276, - 6277, - 6278, - 6279, - 6280, - 6281, - 6282, - 6283, - 6284, - 6286, - 6287, - 6288, - 6289, - 6290, - 6291, - 6292, - 6293, - 6294, - 6295, - 6296, - 6297, - 6299, - 6300, - 6301, - 6302, - 6303, - 6304, - 6305, - 6306, - 6307, - 6308, - 6309, - 6310, - 6311, - 6312, - 6313, - 6314, - 6315, - 6316, - 6318, - 6319, - 6320, - 6321, - 6322, - 6323, - 6324, - 6325, - 6326, - 6327, - 6328, - 6329, - 6331, - 6332, - 6333, - 6334, - 6335, - 6336, - 6337, - 6338, - 6339, - 6340, - 6341, - 6342, - 6343, - 6344, - 6345, - 6346, - 6347, - 6348, - 6350, - 6351, - 6352, - 6353, - 6354, - 6355, - 6356, - 6357, - 6358, - 6359, - 6360, - 6361, - 6363, - 6364, - 6365, - 6366, - 6367, - 6368, - 6369, - 6370, - 6371, - 6372, - 6373, - 6374, - 6375, - 6376, - 6377, - 6378, - 6379, - 6380, - 6382, - 6383, - 6384, - 6385, - 6386, - 6387, - 6388, - 6389, - 6390, - 6391, - 6392, - 6393, - 6395, - 6396, - 6397, - 6398, - 6399, - 6400, - 6401, - 6402, - 6403, - 6404, - 6405, - 6406, - 6407, - 6408, - 6409, - 6410, - 6411, - 6412, - 6414, - 6415, - 6416, - 6417, - 6418, - 6419, - 6420, - 6421, - 6422, - 6423, - 6424, - 6425, - 6427, - 6428, - 6429, - 6430, - 6431, - 6432, - 6433, - 6434, - 6435, - 6436, - 6437, - 6438, - 6439, - 6440, - 6441, - 6442, - 6443, - 6444, - 6446, - 6447, - 6448, - 6449, - 6450, - 6451, - 6452, - 6453, - 6454, - 6455, - 6456, - 6457, - 6459, - 6460, - 6461, - 6462, - 6463, - 6464, - 6465, - 6466, - 6467, - 6468, - 6469, - 6470, - 6471, - 6472, - 6473, - 6474, - 6475, - 6476, - 6478, - 6479, - 6480, - 6481, - 6482, - 6483, - 6484, - 6485, - 6486, - 6487, - 6488, - 6489, - 6491, - 6492, - 6493, - 6494, - 6495, - 6496, - 6497, - 6498, - 6499, - 6500, - 6501, - 6502, - 6503, - 6504, - 6505, - 6506, - 6507, - 6508, - 6510, - 6511, - 6512, - 6513, - 6514, - 6515, - 6516, - 6517, - 6518, - 6519, - 6520, - 6521, - 6523, - 6524, - 6525, - 6526, - 6527, - 6528, - 6529, - 6530, - 6531, - 6532, - 6533, - 6534, - 6535, - 6536, - 6537, - 6538, - 6539, - 6540, - 6542, - 6543, - 6544, - 6545, - 6546, - 6547, - 6548, - 6549, - 6550, - 6551, - 6552, - 6553, - 6555, - 6556, - 6557, - 6558, - 6559, - 6560, - 6561, - 6562, - 6563, - 6564, - 6565, - 6566, - 6567, - 6568, - 6569, - 6570, - 6571, - 6572, - 6574, - 6575, - 6576, - 6577, - 6578, - 6579, - 6580, - 6581, - 6582, - 6583, - 6584, - 6585, - 6587, - 6588, - 6589, - 6590, - 6591, - 6592, - 6593, - 6594, - 6595, - 6596, - 6597, - 6598, - 6599, - 6600, - 6601, - 6602, - 6603, - 6604, - 6606, - 6607, - 6608, - 6609, - 6610, - 6611, - 6612, - 6613, - 6614, - 6615, - 6616, - 6617, - 6619, - 6620, - 6621, - 6622, - 6623, - 6624, - 6625, - 6626, - 6627, - 6628, - 6629, - 6630, - 6631, - 6632, - 6633, - 6634, - 6635, - 6636, - 6638, - 6639, - 6640, - 6641, - 6642, - 6643, - 6644, - 6645, - 6646, - 6647, - 6648, - 6649, - 6651, - 6652, - 6653, - 6654, - 6655, - 6656, - 6657, - 6658, - 6659, - 6660, - 6661, - 6662, - 6663, - 6664, - 6665, - 6666, - 6667, - 6668, - 6670, - 6671, - 6672, - 6673, - 6674, - 6675, - 6676, - 6677, - 6678, - 6679, - 6680, - 6681, - 6683, - 6684, - 6685, - 6686, - 6687, - 6688, - 6689, - 6690, - 6691, - 6692, - 6693, - 6694, - 6695, - 6696, - 6697, - 6698, - 6699, - 6700, - 6702, - 6703, - 6704, - 6705, - 6706, - 6707, - 6708, - 6709, - 6710, - 6711, - 6712, - 6713, - 6715, - 6716, - 6717, - 6718, - 6719, - 6720, - 6721, - 6722, - 6723, - 6724, - 6725, - 6726, - 6727, - 6728, - 6729, - 6730, - 6731, - 6732, - 6734, - 6735, - 6736, - 6737, - 6738, - 6739, - 6740, - 6741, - 6742, - 6743, - 6744, - 6745, - 6747, - 6748, - 6749, - 6750, - 6751, - 6752, - 6753, - 6754, - 6755, - 6756, - 6757, - 6758, - 6759, - 6760, - 6761, - 6762, - 6763, - 6764, - 6766, - 6767, - 6768, - 6769, - 6770, - 6771, - 6772, - 6773, - 6774, - 6775, - 6776, - 6777, - 6779, - 6780, - 6781, - 6782, - 6783, - 6784, - 6785, - 6786, - 6787, - 6788, - 6789, - 6790, - 6791, - 6792, - 6793, - 6794, - 6795, - 6796, - 6798, - 6799, - 6800, - 6801, - 6802, - 6803, - 6804, - 6805, - 6806, - 6807, - 6808, - 6809, - 6811, - 6812, - 6813, - 6814, - 6815, - 6816, - 6817, - 6818, - 6819, - 6820, - 6821, - 6822, - 6823, - 6824, - 6825, - 6826, - 6827, - 6828, - 6830, - 6831, - 6832, - 6833, - 6834, - 6835, - 6836, - 6837, - 6838, - 6839, - 6840, - 6841, - 6843, - 6844, - 6845, - 6846, - 6847, - 6848, - 6849, - 6850, - 6851, - 6852, - 6853, - 6854, - 6855, - 6856, - 6857, - 6858, - 6859, - 6860, - 6862, - 6863, - 6864, - 6865, - 6866, - 6867, - 6868, - 6869, - 6870, - 6871, - 6872, - 6873, - 6875, - 6876, - 6877, - 6878, - 6879, - 6880, - 6881, - 6882, - 6883, - 6884, - 6885, - 6886, - 6887, - 6888, - 6889, - 6890, - 6891, - 6892, - 6894, - 6895, - 6896, - 6897, - 6898, - 6899, - 6900, - 6901, - 6902, - 6903, - 6904, - 6905, - 6907, - 6908, - 6909, - 6910, - 6911, - 6912, - 6913, - 6914, - 6915, - 6916, - 6917, - 6918, - 6919, - 6920, - 6921, - 6922, - 6923, - 6924, - 6926, - 6927, - 6928, - 6929, - 6930, - 6931, - 6932, - 6933, - 6934, - 6935, - 6936, - 6937, - 6939, - 6940, - 6941, - 6942, - 6943, - 6944, - 6945, - 6946, - 6947, - 6948, - 6949, - 6950, - 6951, - 6952, - 6953, - 6954, - 6955, - 6956, - 6958, - 6959, - 6960, - 6961, - 6962, - 6963, - 6964, - 6965, - 6966, - 6967, - 6968, - 6969, - 6971, - 6972, - 6973, - 6974, - 6975, - 6976, - 6977, - 6978, - 6979, - 6980, - 6981, - 6982, - 6983, - 6984, - 6985, - 6986, - 6987, - 6988, - 6990, - 6991, - 6992, - 6993, - 6994, - 6995, - 6996, - 6997, - 6998, - 6999, - 7000, - 7001, - 7003, - 7004, - 7005, - 7006, - 7007, - 7008, - 7009, - 7010, - 7011, - 7012, - 7013, - 7014, - 7015, - 7016, - 7017, - 7018, - 7019, - 7020, - 7022, - 7023, - 7024, - 7025, - 7026, - 7027, - 7028, - 7029, - 7030, - 7031, - 7032, - 7033, - 7035, - 7036, - 7037, - 7038, - 7039, - 7040, - 7041, - 7042, - 7043, - 7044, - 7045, - 7046, - 7047, - 7048, - 7049, - 7050, - 7051, - 7052, - 7053, - 7054, - 7055, - 7056, - 7057, - 7058, - 7059, - 7060, - 7061, - 7062, - 7063, - 7064, - 7065, - 7066, - 7067, - 7068, - 7069, - 7070, - 7071, - 7072, - 7073, - 7074, - 7075, - 7076, - 7077, - 7078, - 7079, - 7080, - 7081, - 7082, - 7083, - 7084, - 7085, - 7086, - 7087, - 7088, - 7089, - 7090, - 7091, - 7092, - 7093, - 7094, - 7095, - 7096, - 7097, - 7098, - 7099, - 7100, - 7101, - 7102, - 7103, - 7104, - 7105, - 7106, - 7107, - 7108, - 7109, - 7110, - 7111, - 7112, - 7113, - 7114, - 7115, - 7116, - 7117, - 7118, - 7119, - 7120, - 7121, - 7122, - 7123, - 7124, - 7125, - 7126, - 7127, - 7128, - 7129, - 7130, - 7131, - 7132, - 7133, - 7134, - 7135, - 7136, - 7137, - 7138, - 7139, - 7140, - 7141, - 7142, - 7143, - 7144, - 7145, - 7146, - 7147, - 7148, - 7149, - 7150, - 7151, - 7152, - 7153, - 7154, - 7155, - 7156, - 7157, - 7158, - 7159, - 7160, - 7161, - 7162, - 7163, - 7164, - 7165, - 7166, - 7167, - 7168, - 7169, - 7170, - 7171, - 7172, - 7173, - 7174, - 7175, - 7176, - 7177, - 7178, - 7179, - 7180, - 7181, - 7182, - 7183, - 7184, - 7185, - 7186, - 7187, - 7188, - 7189, - 7190, - 7191, - 7192, - 7193, - 7194, - 7195, - 7196, - 7197, - 7198, - 7199, - 7200, - 7201, - 7202, - 7203, - 7204, - 7205, - 7206, - 7207, - 7208, - 7209, - 7210, - 7211, - 7212, - 7213, - 7214, - 7215, - 7216, - 7217, - 7218, - 7219, - 7220, - 7221, - 7222, - 7223, - 7224, - 7225, - 7226, - 7227, - 7228, - 7229, - 7230, - 7231, - 7232, - 7233, - 7234, - 7235, - 7236, - 7237, - 7238, - 7239, - 7240, - 7241, - 7242, - 7243, - 7244, - 7245, - 7246, - 7247, - 7248, - 7249, - 7250, - 7251, - 7252, - 7253, - 7254, - 7255, - 7256, - 7257, - 7258, - 7259, - 7260, - 7261, - 7262, - 7263, - 7264, - 7265, - 7266, - 7267, - 7268, - 7269, - 7270, - 7271, - 7272, - 7273, - 7274, - 7275, - 7276, - 7277, - 7278, - 7279, - 7280, - 7281, - 7282, - 7283, - 7284, - 7285, - 7286, - 7287, - 7288, - 7289, - 7290, - 7291, - 7292, - 7293, - 7294, - 7295, - 7296, - 7297, - 7298, - 7299, - 7300, - 7301, - 7302, - 7303, - 7304, - 7305, - 7306, - 7307, - 7308, - 7309, - 7310, - 7311, - 7312, - 7313, - 7314, - 7315, - 7316, - 7317, - 7318, - 7319, - 7320, - 7321, - 7322, - 7323, - 7324, - 7325, - 7326, - 7327, - 7328, - 7329, - 7330, - 7331, - 7332, - 7333, - 7334, - 7335, - 7336, - 7337, - 7338, - 7339, - 7340, - 7341, - 7342, - 7343, - 7344, - 7345, - 7346, - 7347, - 7348, - 7349, - 7350, - 7351, - 7352, - 7353, - 7354, - 7355, - 7356, - 7357, - 7358, - 7359, - 7360, - 7361, - 7362, - 7363, - 7364, - 7365, - 7366, - 7367, - 7368, - 7369, - 7370, - 7371, - 7372, - 7373, - 7374, - 7375, - 7376, - 7377, - 7378, - 7379, - 7380, - 7381, - 7382, - 7383, - 7384, - 7385, - 7386, - 7387, - 7388, - 7389, - 7390, - 7391, - 7392, - 7393, - 7394, - 7395, - 7396, - 7397, - 7398, - 7399, - 7400, - 7401, - 7402, - 7403, - 7404, - 7405, - 7406, - 7407, - 7408, - 7409, - 7410, - 7411, - 7412, - 7413, - 7414, - 7415, - 7416, - 7417, - 7418, - 7419, - 7420, - 7421, - 7422, - 7423, - 7424, - 7425, - 7426, - 7427, - 7428, - 7429, - 7430, - 7431, - 7432, - 7433, - 7434, - 7435, - 7436, - 7437, - 7438, - 7439, - 7440, - 7441, - 7442, - 7443, - 7444, - 7445, - 7446, - 7447, - 7448, - 7449, - 7450, - 7451, - 7452, - 7453, - 7454, - 7455, - 7456, - 7457, - 7458, - 7459, - 7460, - 7461, - 7462, - 7463, - 7464, - 7465, - 7466, - 7467, - 7468, - 7469, - 7470, - 7471, - 7472, - 7473, - 7474, - 7475, - 7476, - 7477, - 7478, - 7479, - 7480, - 7481, - 7482, - 7483, - 7484, - 7485, - 7486, - 7487, - 7488, - 7489, - 7490, - 7491, - 7492, - 7493, - 7494, - 7495, - 7496, - 7497, - 7498, - 7499, - 7500, - 7501, - 7502, - 7503, - 7504, - 7505, - 7506, - 7507, - 7508, - 7509, - 7510, - 7511, - 7512, - 7513, - 7514, - 7515, - 7516, - 7517, - 7518, - 7519, - 7520, - 7521, - 7522, - 7523, - 7524, - 7525, - 7526, - 7527, - 7528, - 7529, - 7530, - 7531, - 7532, - 7533, - 7534, - 7535, - 7536, - 7537, - 7538, - 7539, - 7540, - 7541, - 7542, - 7543, - 7544, - 7545, - 7546, - 7547, - 7548, - 7549, - 7550, - 7551, - 7552, - 7553, - 7554, - 7555, - 7556, - 7557, - 7558, - 7559, - 7560, - 7561, - 7562, - 7563, - 7564, - 7565, - 7566, - 7567, - 7568, - 7569, - 7570, - 7571, - 7572, - 7573, - 7574, - 7575, - 7576, - 7577, - 7578, - 7579, - 7580, - 7581, - 7582, - 7583, - 7584, - 7585, - 7586, - 7587, - 7588, - 7589, - 7590, - 7591, - 7592, - 7593, - 7594, - 7595, - 7596, - 7597, - 7598, - 7599, - 7600, - 7601, - 7602, - 7603, - 7604, - 7605, - 7606, - 7607, - 7608, - 7609, - 7610, - 7611, - 7612, - 7613, - 7614, - 7615, - 7616, - 7617, - 7618, - 7619, - 7620, - 7621, - 7622, - 7623, - 7624, - 7625, - 7626, - 7627, - 7628, - 7629, - 7630, - 7631, - 7632, - 7633, - 7634, - 7635, - 7636, - 7637, - 7638, - 7639, - 7640, - 7641, - 7642, - 7643, - 7644, - 7645, - 7646, - 7647, - 7648, - 7649, - 7650, - 7651, - 7652, - 7653, - 7654, - 7655, - 7656, - 7657, - 7658, - 7659, - 7660, - 7661, - 7662, - 7663, - 7664, - 7665, - 7666, - 7667, - 7668, - 7669, - 7670, - 7671, - 7672, - 7673, - 7674, - 7675, - 7676, - 7677, - 7678, - 7679, - 7680, - 7681, - 7682, - 7683, - 7684, - 7685, - 7686, - 7687, - 7688, - 7689, - 7690, - 7691, - 7692, - 7693, - 7694, - 7695, - 7696, - 7697, - 7698, - 7699, - 7700, - 7701, - 7702, - 7703, - 7704, - 7705, - 7706, - 7707, - 7708, - 7709, - 7710, - 7711, - 7712, - 7713, - 7714, - 7715, - 7716, - 7717, - 7718, - 7719, - 7720, - 7721, - 7722, - 7723, - 7724, - 7725, - 7726, - 7727, - 7728, - 7729, - 7730, - 7731, - 7732, - 7733, - 7734, - 7735, - 7736, - 7737, - 7738, - 7739, - 7740, - 7741, - 7742, - 7743, - 7744, - 7745, - 7746, - 7747, - 7748, - 7749, - 7750, - 7751, - 7752, - 7753, - 7754, - 7755, - 7756, - 7757, - 7758, - 7759, - 7760, - 7761, - 7762, - 7763, - 7764, - 7765, - 7766, - 7767, - 7768, - 7769, - 7770, - 7771, - 7772, - 7773, - 7774, - 7775, - 7776, - 7777, - 7778, - 7779, - 7780, - 7781, - 7782, - 7783, - 7784, - 7785, - 7786, - 7787, - 7788, - 7789, - 7790, - 7791, - 7792, - 7793, - 7794, - 7795, - 7796, - 7797, - 7798, - 7799, - 7800, - 7801, - 7802, - 7803, - 7804, - 7805, - 7806, - 7807, - 7808, - 7809, - 7810, - 7811, - 7812, - 7813, - 7814, - 7815, - 7816, - 7817, - 7818, - 7819, - 7820, - 7821, - 7822, - 7823, - 7824, - 7825, - 7826, - 7827, - 7828, - 7829, - 7830, - 7831, - 7832, - 7833, - 7834, - 7835, - 7836, - 7837, - 7838, - 7839, - 7840, - 7841, - 7842, - 7843, - 7844, - 7845, - 7846, - 7847, - 7848, - 7849, - 7850, - 7851, - 7852, - 7853, - 7854, - 7855, - 7856, - 7857, - 7858, - 7859, - 7860, - 7861, - 7862, - 7863, - 7864, - 7865, - 7866, - 7867, - 7868, - 7869, - 7870, - 7871, - 7872, - 7873, - 7874, - 7875, - 7876, - 7877, - 7878, - 7879, - 7880, - 7881, - 7882, - 7883, - 7884, - 7885, - 7886, - 7887, - 7888, - 7889, - 7890, - 7891, - 7892, - 7893, - 7894, - 7895, - 7896, - 7897, - 7898, - 7899, - 7900, - 7901, - 7902, - 7903, - 7904, - 7905, - 7906, - 7907, - 7908, - 7909, - 7910, - 7911, - 7912, - 7913, - 7914, - 7915, - 7916, - 7917, - 7918, - 7919, - 7920, - 7921, - 7922, - 7923, - 7924, - 7925, - 7926, - 7927, - 7928, - 7929, - 7930, - 7931, - 7932, - 7933, - 7934, - 7935, - 7936, - 7937, - 7938, - 7939, - 7940, - 7941, - 7942, - 7943, - 7944, - 7945, - 7946, - 7947, - 7948, - 7949, - 7950, - 7951, - 7952, - 7953, - 7954, - 7955, - 7956, - 7957, - 7958, - 7959, - 7960, - 7961, - 7962, - 7963, - 7964, - 7965, - 7966, - 7967, - 7968, - 7969, - 7970, - 7971, - 7972, - 7973, - 7974, - 7975, - 7976, - 7977, - 7978, - 7979, - 7980, - 7981, - 7982, - 7983, - 7984, - 7985, - 7986, - 7987, - 7988, - 7989, - 7990, - 7991, - 7992, - 7993, - 7994, - 7995, - 7996, - 7997, - 7998, - 7999, - 8000, - 8001, - 8002, - 8003, - 8004, - 8005, - 8006, - 8007, - 8008, - 8009, - 8010, - 8011, - 8012, - 8013, - 8014, - 8015, - 8016, - 8017, - 8018, - 8019, - 8020, - 8021, - 8022, - 8023, - 8024, - 8025, - 8026, - 8027, - 8028, - 8029, - 8030, - 8031, - 8032, - 8033, - 8034, - 8035, - 8036, - 8037, - 8038, - 8039, - 8040, - 8041, - 8042, - 8043, - 8044, - 8045, - 8046, - 8047, - 8048, - 8049, - 8050, - 8051, - 8052, - 8053, - 8054, - 8055, - 8056, - 8057, - 8058, - 8059, - 8060, - 8061, - 8062, - 8063, - 8064, - 8065, - 8066, - 8067, - 8068, - 8069, - 8070, - 8071, - 8072, - 8073, - 8074, - 8075, - 8076, - 8077, - 8078, - 8079, - 8080, - 8081, - 8082, - 8083, - 8084, - 8085, - 8086, - 8087, - 8088, - 8089, - 8090, - 8091, - 8092, - 8093, - 8094, - 8095, - 8096, - 8097, - 8098, - 8099, - 8100, - 8101, - 8102, - 8103, - 8104, - 8105, - 8106, - 8107, - 8108, - 8109, - 8110, - 8111, - 8112, - 8113, - 8114, - 8115, - 8116, - 8117, - 8118, - 8119, - 8120, - 8121, - 8122, - 8123, - 8124, - 8125, - 8126, - 8127, - 8128, - 8129, - 8130, - 8131, - 8132, - 8133, - 8134, - 8135, - 8136, - 8137, - 8138, - 8139, - 8140, - 8141, - 8142, - 8143, - 8144, - 8145, - 8146, - 8147, - 8148, - 8149, - 8150, - 8151, - 8152, - 8153, - 8154, - 8155, - 8156, - 8157, - 8158, - 8159, - 8160, - 8161, - 8162, - 8163, - 8164, - 8165, - 8166, - 8167, - 8168, - 8169, - 8170, - 8171, - 8172, - 8173, - 8174, - 8175, - 8176, - 8177, - 8178, - 8179, - 8180, - 8181, - 8182, - 8183, - 8184, - 8185, - 8186, - 8187, - 8188, - 8189, - 8190, - 8191, - 8192, - 8193, - 8194, - 8195, - 8196, - 8197, - 8198, - 8199, - 8200, - 8201, - 8202, - 8203, - 8204, - 8205, - 8206, - 8207, - 8208, - 8209, - 8210, - 8211, - 8212, - 8213, - 8214, - 8215, - 8216, - 8217, - 8218, - 8219, - 8220, - 8221, - 8222, - 8223, - 8224, - 8225, - 8226, - 8227, - 8228, - 8229, - 8230, - 8231, - 8232, - 8233, - 8234, - 8235, - 8236, - 8237, - 8238, - 8239, - 8240, - 8241, - 8242, - 8243, - 8244, - 8245, - 8246, - 8247, - 8248, - 8249, - 8250, - 8251, - 8252, - 8253, - 8254, - 8255, - 8256, - 8257, - 8258, - 8259, - 8260, - 8261, - 8262, - 8263, - 8264, - 8265, - 8266, - 8267, - 8268, - 8269, - 8270, - 8271, - 8272, - 8273, - 8274, - 8275, - 8276, - 8277, - 8278, - 8279, - 8280, - 8281, - 8282, - 8283, - 8284, - 8285, - 8286, - 8287, - 8288, - 8289, - 8290, - 8291, - 8292, - 8293, - 8294, - 8295, - 8296, - 8297, - 8298, - 8299, - 8300, - 8301, - 8302, - 8303, - 8304, - 8305, - 8306, - 8307, - 8308, - 8309, - 8310, - 8311, - 8312, - 8313, - 8314, - 8315, - 8316, - 8317, - 8318, - 8319, - 8320, - 8321, - 8322, - 8323, - 8324, - 8325, - 8326, - 8327, - 8328, - 8329, - 8330, - 8331, - 8332, - 8333, - 8334, - 8335, - 8336, - 8337, - 8338, - 8339, - 8340, - 8341, - 8342, - 8343, - 8344, - 8345, - 8346, - 8347, - 8348, - 8349, - 8350, - 8351, - 8352, - 8353, - 8354, - 8355, - 8356, - 8357, - 8358, - 8359, - 8360, - 8361, - 8362, - 8363, - 8364, - 8365, - 8366, - 8367, - 8368, - 8369, - 8370, - 8371, - 8372, - 8373, - 8374, - 8375, - 8376, - 8377, - 8378, - 8379, - 8380, - 8381, - 8382, - 8383, - 8384, - 8385, - 8386, - 8387, - 8388, - 8389, - 8390, - 8391, - 8392, - 8393, - 8394, - 8395, - 8396, - 8397, - 8398, - 8399, - 8400, - 8401, - 8402, - 8403, - 8404, - 8405, - 8406, - 8407, - 8408, - 8409, - 8410, - 8411, - 8412, - 8413, - 8414, - 8415, - 8416, - 8417, - 8418, - 8419, - 8420, - 8421, - 8422, - 8423, - 8424, - 8425, - 8426, - 8427, - 8428, - 8429, - 8430, - 8431, - 8432, - 8433, - 8434, - 8435, - 8436, - 8437, - 8438, - 8439, - 8440, - 8441, - 8442, - 8443, - 8444, - 8445, - 8446, - 8447, - 8448, - 8449, - 8450, - 8451, - 8452, - 8453, - 8454, - 8455, - 8456, - 8457, - 8458, - 8459, - 8460, - 8461, - 8462, - 8463, - 8464, - 8465, - 8466, - 8467, - 8468, - 8469, - 8470, - 8471, - 8472, - 8473, - 8474, - 8475, - 8476, - 8477, - 8478, - 8479, - 8480, - 8481, - 8482, - 8483, - 8484, - 8485, - 8486, - 8487, - 8488, - 8489, - 8490, - 8491, - 8492, - 8493, - 8494, - 8495, - 8496, - 8497, - 8498, - 8499, - 8500, - 8501, - 8502, - 8503, - 8504, - 8505, - 8506, - 8507, - 8508, - 8509, - 8510, - 8511, - 8512, - 8513, - 8514, - 8515, - 8516, - 8517, - 8518, - 8519, - 8520, - 8521, - 8522, - 8523, - 8524, - 8525, - 8526, - 8527, - 8528, - 8529, - 8530, - 8531, - 8532, - 8533, - 8534, - 8535, - 8536, - 8537, - 8538, - 8539, - 8540, - 8541, - 8542, - 8543, - 8544, - 8545, - 8546, - 8547, - 8548, - 8549, - 8550, - 8551, - 8552, - 8553, - 8554, - 8555, - 8556, - 8557, - 8558, - 8559, - 8560, - 8561, - 8562, - 8563, - 8564, - 8565, - 8566, - 8567, - 8568, - 8569, - 8570, - 8571, - 8572, - 8573, - 8574, - 8575, - 8576, - 8577, - 8578, - 8579, - 8580, - 8581, - 8582, - 8583, - 8585, - 8586, - 8587, - 8588, - 8589, - 8590, - 8591, - 8592, - 8593, - 8594, - 8595, - 8596, - 8597, - 8598, - 8599, - 8600, - 8601, - 8602, - 8603, - 8604, - 8605, - 8606, - 8607, - 8608, - 8609, - 8610, - 8611, - 8612, - 8613, - 8614, - 8615, - 8616, - 8617, - 8618, - 8619, - 8620, - 8621, - 8622, - 8623, - 8624, - 8625, - 8626, - 8627, - 8628, - 8629, - 8630, - 8631, - 8632, - 8633, - 8634, - 8635, - 8636, - 8637, - 8638, - 8639, - 8640, - 8641, - 8642, - 8643, - 8644, - 8645, - 8646, - 8647, - 8648, - 8649, - 8650, - 8651, - 8652, - 8653, - 8654, - 8655, - 8656, - 8657, - 8658, - 8659, - 8661, - 8662, - 8663, - 8664, - 8665, - 8666, - 8667, - 8668, - 8669, - 8670, - 8671, - 8672, - 8673, - 8674, - 8675, - 8676, - 8677, - 8678, - 8679, - 8680, - 8681, - 8682, - 8683, - 8684, - 8685, - 8686, - 8687, - 8688, - 8689, - 8690, - 8691, - 8692, - 8693, - 8694, - 8695, - 8696, - 8697, - 8698, - 8699, - 8700, - 8701, - 8702, - 8703, - 8704, - 8705, - 8706, - 8707, - 8708, - 8709, - 8710, - 8711, - 8712, - 8713, - 8714, - 8715, - 8716, - 8717, - 8718, - 8719, - 8720, - 8721, - 8722, - 8723, - 8724, - 8725, - 8726, - 8727, - 8728, - 8729, - 8730, - 8731, - 8732, - 8733, - 8734, - 8735, - 8736, - 8737, - 8738, - 8739, - 8740, - 8741, - 8742, - 8743, - 8744, - 8745, - 8746, - 8747, - 8748, - 8749, - 8750, - 8751, - 8752, - 8753, - 8754, - 8755, - 8756, - 8757, - 8758, - 8759, - 8760, - 8761, - 8762, - 8763, - 8764, - 8765, - 8766, - 8767, - 8768, - 8769, - 8770, - 8771, - 8772, - 8773, - 8774, - 8775, - 8776, - 8777, - 8778, - 8779, - 8780, - 8781, - 8782, - 8783, - 8784, - 8785, - 8786, - 8787, - 8788, - 8789, - 8790, - 8791, - 8792, - 8793, - 8794, - 8795, - 8796, - 8797, - 8798, - 8799, - 8800, - 8801, - 8802, - 8803, - 8804, - 8805, - 8806, - 8807, - 8808, - 8809, - 8810, - 8811, - 8812, - 8813, - 8814, - 8815, - 8816, - 8817, - 8818, - 8819, - 8820, - 8821, - 8822, - 8823, - 8824, - 8825, - 8826, - 8827, - 8828, - 8829, - 8830, - 8831, - 8832, - 8833, - 8834, - 8835, - 8836, - 8837, - 8838, - 8839, - 8840, - 8841, - 8842, - 8843, - 8844, - 8845, - 8846, - 8847, - 8848, - 8849, - 8850, - 8851, - 8852, - 8853, - 8854, - 8855, - 8856, - 8857, - 8858, - 8859, - 8860, - 8861, - 8862, - 8863, - 8864, - 8865, - 8866, - 8867, - 8868, - 8869, - 8870, - 8871, - 8872, - 8873, - 8874, - 8875, - 8876, - 8877, - 8878, - 8879, - 8880, - 8881, - 8882, - 8883, - 8884, - 8885, - 8886, - 8887, - 8888, - 8889, - 8890, - 8891, - 8892, - 8893, - 8894, - 8895, - 8896, - 8897, - 8898, - 8899, - 8900, - 8901, - 8902, - 8903, - 8904, - 8905, - 8906, - 8907, - 8908, - 8909, - 8910, - 8911, - 8912, - 8913, - 8914, - 8915, - 8916, - 8917, - 8918, - 8919, - 8920, - 8921, - 8922, - 8923, - 8924, - 8925, - 8926, - 8927, - 8928, - 8929, - 8930, - 8931, - 8932, - 8933, - 8934, - 8935, - 8936, - 8937, - 8938, - 8940, - 8941, - 8942, - 8943, - 8944, - 8945, - 8946, - 8947, - 8948, - 8949, - 8950, - 8951, - 8952, - 8953, - 8954, - 8955, - 8956, - 8957, - 8958, - 8959, - 8960, - 8961, - 8962, - 8963, - 8964, - 8965, - 8966, - 8967, - 8968, - 8969, - 8970, - 8971, - 8972, - 8973, - 8974, - 8975, - 8976, - 8977, - 8978, - 8979, - 8980, - 8981, - 8982, - 8983, - 8984, - 8985, - 8986, - 8987, - 8988, - 8989, - 8990, - 8991, - 8992, - 8993, - 8994, - 8995, - 8996, - 8997, - 8998, - 8999, - 9000, - 9001, - 9002, - 9003, - 9004, - 9005, - 9006, - 9007, - 9008, - 9009, - 9010, - 9011, - 9012, - 9013, - 9014, - 9015, - 9016, - 9017, - 9018, - 9019, - 9020, - 9021, - 9022, - 9023, - 9024, - 9025, - 9026, - 9027, - 9028, - 9029, - 9030, - 9031, - 9032, - 9033, - 9034, - 9035, - 9036, - 9037, - 9038, - 9039, - 9040, - 9041, - 9042, - 9043, - 9044, - 9045, - 9046, - 9047, - 9048, - 9049, - 9050, - 9051, - 9052, - 9053, - 9054, - 9055, - 9056, - 9057, - 9058, - 9059, - 9060, - 9061, - 9062, - 9063, - 9064, - 9065, - 9066, - 9067, - 9068, - 9069, - 9070, - 9071, - 9072, - 9073, - 9074, - 9075, - 9076, - 9077, - 9078, - 9079, - 9080, - 9081, - 9082, - 9083, - 9084, - 9085, - 9086, - 9087, - 9088, - 9089, - 9090, - 9091, - 9092, - 9093, - 9094, - 9095, - 9096, - 9097, - 9098, - 9099, - 9100, - 9101, - 9102, - 9103, - 9104, - 9105, - 9106, - 9107, - 9108, - 9109, - 9110, - 9111, - 9112, - 9113, - 9114, - 9115, - 9116, - 9117, - 9118, - 9119, - 9120, - 9121, - 9122, - 9123, - 9124, - 9125, - 9126, - 9127, - 9128, - 9129, - 9130, - 9131, - 9132, - 9133, - 9134, - 9135, - 9136, - 9137, - 9138, - 9139, - 9140, - 9141, - 9142, - 9143, - 9144, - 9145, - 9146, - 9147, - 9148, - 9149, - 9150, - 9151, - 9152, - 9153, - 9154, - 9155, - 9156, - 9157, - 9158, - 9159, - 9160, - 9161, - 9162, - 9163, - 9164, - 9165, - 9166, - 9167, - 9168, - 9169, - 9170, - 9171, - 9172, - 9173, - 9174, - 9175, - 9176, - 9177, - 9178, - 9179, - 9180, - 9181, - 9182, - 9183, - 9184, - 9185, - 9186, - 9187, - 9188, - 9189, - 9190, - 9191, - 9192, - 9193, - 9194, - 9195, - 9196, - 9197, - 9198, - 9199, - 9200, - 9201, - 9202, - 9203, - 9204, - 9205, - 9206, - 9207, - 9208, - 9209, - 9210, - 9211, - 9212, - 9213, - 9214, - 9215, - 9216, - 9217, - 9218, - 9219, - 9220, - 9221, - 9222, - 9223, - 9224, - 9225, - 9226, - 9227, - 9228, - 9229, - 9230, - 9231, - 9232, - 9233, - 9234, - 9235, - 9236, - 9237, - 9238, - 9239, - 9240, - 9241, - 9242, - 9243, - 9244, - 9245, - 9246, - 9247, - 9248, - 9249, - 9250, - 9251, - 9252, - 9253, - 9254, - 9255, - 9256, - 9257, - 9258, - 9259, - 9260, - 9261, - 9262, - 9263, - 9264, - 9265, - 9266, - 9267, - 9268, - 9269, - 9270, - 9271, - 9272, - 9273, - 9274, - 9275, - 9276, - 9277, - 9278, - 9279, - 9280, - 9281, - 9282, - 9283, - 9284, - 9285, - 9286, - 9287, - 9288, - 9289, - 9290, - 9291, - 9292, - 9293, - 9294, - 9295, - 9296, - 9297, - 9298, - 9299, - 9300, - 9301, - 9302, - 9303, - 9304, - 9305, - 9306, - 9307, - 9308, - 9309, - 9310, - 9311, - 9312, - 9313, - 9314, - 9315, - 9316, - 9317, - 9318, - 9319, - 9320, - 9321, - 9322, - 9323, - 9324, - 9325, - 9326, - 9327, - 9328, - 9329, - 9330, - 9331, - 9332, - 9333, - 9334, - 9335, - 9336, - 9337, - 9338, - 9339, - 9340, - 9341, - 9342, - 9343, - 9344, - 9345, - 9346, - 9347, - 9348, - 9349, - 9350, - 9351, - 9352, - 9353, - 9354, - 9355, - 9356, - 9357, - 9358, - 9359, - 9360, - 9361, - 9362, - 9363, - 9364, - 9365, - 9366, - 9367, - 9368, - 9369, - 9370, - 9371, - 9372, - 9373, - 9374, - 9375, - 9376, - 9377, - 9378, - 9379, - 9380, - 9381, - 9382, - 9383, - 9384, - 9385, - 9386, - 9387, - 9388, - 9389, - 9390, - 9391, - 9392, - 9393, - 9394, - 9395, - 9396, - 9397, - 9398, - 9399, - 9400, - 9401, - 9402, - 9403, - 9404, - 9405, - 9406, - 9407, - 9408, - 9409, - 9410, - 9411, - 9412, - 9413, - 9414, - 9415, - 9416, - 9417, - 9418, - 9419, - 9420, - 9421, - 9422, - 9423, - 9425, - 9426, - 9427, - 9428, - 9429, - 9430, - 9431, - 9432, - 9433, - 9434, - 9435, - 9436, - 9437, - 9438, - 9439, - 9440, - 9441, - 9442, - 9443, - 9444, - 9445, - 9446, - 9447, - 9448, - 9449, - 9450, - 9451, - 9452, - 9453, - 9454, - 9455, - 9456, - 9457, - 9458, - 9459, - 9460, - 9461, - 9462, - 9463, - 9464, - 9465, - 9466, - 9467, - 9468, - 9469, - 9470, - 9471, - 9472, - 9473, - 9474, - 9475, - 9476, - 9477, - 9478, - 9479, - 9480, - 9481, - 9482, - 9483, - 9484, - 9485, - 9486, - 9487, - 9488, - 9489, - 9490, - 9491, - 9492, - 9493, - 9494, - 9495, - 9496, - 9497, - 9498, - 9499, - 9500, - 9501, - 9502, - 9503, - 9504, - 9505, - 9506, - 9507, - 9508, - 9509, - 9510, - 9511, - 9512, - 9513, - 9514, - 9515, - 9516, - 9517, - 9518, - 9519, - 9520, - 9521, - 9522, - 9523, - 9524, - 9525, - 9526, - 9527, - 9528, - 9529, - 9530, - 9531, - 9532, - 9533, - 9534, - 9535, - 9536, - 9537, - 9538, - 9539, - 9540, - 9541, - 9542, - 9543, - 9544, - 9545, - 9546, - 9547, - 9548, - 9549, - 9550, - 9551, - 9552, - 9553, - 9554, - 9555, - 9556, - 9557, - 9558, - 9559, - 9560, - 9561, - 9562, - 9563, - 9564, - 9565, - 9566, - 9567, - 9568, - 9569, - 9570, - 9571, - 9572, - 9573, - 9574, - 9575, - 9576, - 9577, - 9578, - 9579, - 9580, - 9581, - 9582, - 9583, - 9584, - 9585, - 9586, - 9587, - 9588, - 9589, - 9590, - 9591, - 9592, - 9593, - 9594, - 9595, - 9596, - 9597, - 9598, - 9599, - 9600, - 9601, - 9602, - 9603, - 9604, - 9605, - 9606, - 9607, - 9608, - 9609, - 9610, - 9611, - 9612, - 9613, - 9614, - 9615, - 9616, - 9617, - 9618, - 9619, - 9620, - 9621, - 9622, - 9623, - 9624, - 9625, - 9626, - 9627, - 9628, - 9629, - 9630, - 9631, - 9632, - 9633, - 9634, - 9635, - 9636, - 9637, - 9638, - 9639, - 9640, - 9641, - 9642, - 9643, - 9644, - 9645, - 9646, - 9647, - 9648, - 9649, - 9650, - 9651, - 9652, - 9653, - 9654, - 9655, - 9656, - 9657, - 9658, - 9659, - 9660, - 9661, - 9662, - 9663, - 9664, - 9665, - 9666, - 9667, - 9668, - 9669, - 9670, - 9671, - 9672, - 9673, - 9674, - 9675, - 9676, - 9677, - 9678, - 9679, - 9680, - 9681, - 9682, - 9683, - 9684, - 9685, - 9686, - 9687, - 9688, - 9689, - 9690, - 9691, - 9692, - 9693, - 9694, - 9695, - 9696, - 9697, - 9698, - 9699, - 9700, - 9701, - 9702, - 9703, - 9704, - 9705, - 9706, - 9707, - 9708, - 9709, - 9710, - 9711, - 9712, - 9713, - 9714, - 9715, - 9716, - 9717, - 9718, - 9719, - 9720, - 9721, - 9722, - 9723, - 9724, - 9725, - 9726, - 9727, - 9728, - 9729, - 9730, - 9731, - 9732, - 9733, - 9734, - 9735, - 9736, - 9737, - 9738, - 9739, - 9740, - 9741, - 9742, - 9743, - 9744, - 9745, - 9746, - 9747, - 9748, - 9749, - 9750, - 9751, - 9752, - 9753, - 9754, - 9755, - 9756, - 9757, - 9758, - 9759, - 9760, - 9761, - 9762, - 9763, - 9764, - 9765, - 9766, - 9767, - 9768, - 9769, - 9770, - 9771, - 9772, - 9773, - 9774, - 9775, - 9776, - 9777, - 9778, - 9779, - 9780, - 9781, - 9782, - 9783, - 9784, - 9785, - 9786, - 9787, - 9788, - 9789, - 9790, - 9791, - 9792, - 9793, - 9794, - 9795, - 9796, - 9797, - 9798, - 9799, - 9800, - 9801, - 9802, - 9803, - 9804, - 9805, - 9806, - 9807, - 9808, - 9809, - 9810, - 9812, - 9813, - 9814, - 9815, - 9816, - 9817, - 9818, - 9819, - 9820, - 9821, - 9822, - 9823, - 9824, - 9825, - 9826, - 9827, - 9828, - 9829, - 9830, - 9831, - 9832, - 9833, - 9834, - 9835, - 9836, - 9837, - 9838, - 9839, - 9840, - 9841, - 9842, - 9843, - 9844, - 9845, - 9846, - 9847, - 9848, - 9849, - 9850, - 9851, - 9852, - 9853, - 9854, - 9855, - 9856, - 9857, - 9858, - 9859, - 9860, - 9861, - 9862, - 9863, - 9864, - 9865, - 9866, - 9867, - 9868, - 9869, - 9870, - 9871, - 9872, - 9873, - 9874, - 9875, - 9876, - 9877, - 9878, - 9879, - 9880, - 9881, - 9882, - 9883, - 9884, - 9885, - 9886, - 9887, - 9888, - 9889, - 9890, - 9891, - 9892, - 9893, - 9894, - 9895, - 9896, - 9897, - 9898, - 9899, - 9900, - 9901, - 9902, - 9903, - 9904, - 9905, - 9906, - 9907, - 9908, - 9909, - 9910, - 9911, - 9912, - 9913, - 9914, - 9915, - 9916, - 9917, - 9918, - 9919, - 9920, - 9921, - 9922, - 9923, - 9924, - 9925, - 9926, - 9927, - 9928, - 9929, - 9930, - 9931, - 9932, - 9933, - 9934, - 9935, - 9936, - 9937, - 9938, - 9939, - 9940, - 9941, - 9942, - 9943, - 9944, - 9945, - 9946, - 9947, - 9948, - 9949, - 9950, - 9951, - 9952, - 9953, - 9954, - 9955, - 9956, - 9957, - 9958, - 9959, - 9960, - 9961, - 9962, - 9963, - 9964, - 9965, - 9966, - 9967, - 9968, - 9969, - 9970, - 9971, - 9972, - 9973, - 9974, - 9975, - 9976, - 9977, - 9978, - 9979, - 9980, - 9981, - 9982, - 9983, - 9984, - 9985, - 9986, - 9987, - 9988, - 9989, - 9990, - 9991, - 9992, - 9993, - 9994, - 9995, - 9996, - 9997, - 9998, - 9999, - 10000, - 10001, - 10002, - 10003, - 10004, - 10005, - 10006, - 10007, - 10008, - 10009, - 10010, - 10011, - 10012, - 10013, - 10014, - 10015, - 10016, - 10017, - 10018, - 10019, - 10020, - 10021, - 10022, - 10023, - 10024, - 10025, - 10026, - 10027, - 10028, - 10029, - 10030, - 10031, - 10032, - 10033, - 10034, - 10035, - 10036, - 10037, - 10038, - 10039, - 10040, - 10041, - 10042, - 10043, - 10044, - 10045, - 10046, - 10047, - 10048, - 10049, - 10050, - 10051, - 10052, - 10053, - 10054, - 10055, - 10056, - 10057, - 10058, - 10059, - 10060, - 10061, - 10062, - 10063, - 10064, - 10065, - 10066, - 10067, - 10068, - 10069, - 10070, - 10071, - 10072, - 10073, - 10074, - 10075, - 10076, - 10077, - 10078, - 10079, - 10080, - 10081, - 10082, - 10083, - 10084, - 10085, - 10086, - 10087, - 10088, - 10089, - 10090, - 10091, - 10092, - 10093, - 10094, - 10095, - 10096, - 10097, - 10098, - 10099, - 10100, - 10101, - 10102, - 10103, - 10104, - 10105, - 10106, - 10107, - 10108, - 10109, - 10110, - 10111, - 10112, - 10113, - 10114, - 10115, - 10116, - 10117, - 10118, - 10119, - 10120, - 10121, - 10122, - 10123, - 10124, - 10125, - 10126, - 10127, - 10128, - 10129, - 10130, - 10131, - 10132, - 10133, - 10134, - 10135, - 10136, - 10137, - 10138, - 10139, - 10140, - 10141, - 10142, - 10143, - 10144, - 10145, - 10146, - 10147, - 10148, - 10149, - 10150, - 10151, - 10152, - 10153, - 10154, - 10155, - 10156, - 10157, - 10158, - 10159, - 10160, - 10161, - 10162, - 10163, - 10164, - 10165, - 10166, - 10167, - 10168, - 10169, - 10170, - 10171, - 10172, - 10173, - 10174, - 10175, - 10176, - 10177, - 10178, - 10179, - 10180, - 10181, - 10182, - 10183, - 10184, - 10185, - 10186, - 10187, - 10188, - 10189, - 10190, - 10191, - 10192, - 10193, - 10194, - 10195, - 10196, - 10197, - 10198, - 10199, - 10200, - 10201, - 10202, - 10203, - 10204, - 10205, - 10206, - 10207, - 10208, - 10209, - 10210, - 10211, - 10212, - 10213, - 10214, - 10215, - 10216, - 10217, - 10218, - 10219, - 10220, - 10221, - 10222, - 10223, - 10224, - 10225, - 10226, - 10227, - 10228, - 10229, - 10230, - 10231, - 10232, - 10233, - 10234, - 10235, - 10236, - 10237, - 10238, - 10239, - 10240, - 10241, - 10242, - 10243, - 10244, - 10245, - 10246, - 10247, - 10248, - 10249, - 10250, - 10251, - 10252, - 10253, - 10254, - 10255, - 10256, - 10257, - 10258, - 10259, - 10260, - 10261, - 10262, - 10263, - 10264, - 10265, - 10266, - 10267, - 10268, - 10269, - 10270, - 10271, - 10272, - 10273, - 10274, - 10275, - 10276, - 10277, - 10278, - 10279, - 10280, - 10281, - 10282, - 10283, - 10284, - 10285, - 10286, - 10287, - 10288, - 10289, - 10290, - 10291, - 10292, - 10293, - 10294, - 10295, - 10296, - 10297, - 10298, - 10299, - 10300, - 10301, - 10302, - 10303, - 10304, - 10305, - 10306, - 10307, - 10308, - 10309, - 10310, - 10311, - 10312, - 10313, - 10314, - 10315, - 10316, - 10317, - 10318, - 10319, - 10320, - 10321, - 10322, - 10323, - 10324, - 10325, - 10326, - 10327, - 10328, - 10329, - 10330, - 10331, - 10332, - 10333, - 10334, - 10335, - 10336, - 10337, - 10338, - 10339, - 10340, - 10341, - 10342, - 10343, - 10344, - 10345, - 10346, - 10347, - 10348, - 10349, - 10350, - 10351, - 10352, - 10353, - 10354, - 10355, - 10356, - 10357, - 10358, - 10359, - 10360, - 10361, - 10362, - 10363, - 10364, - 10365, - 10366, - 10367, - 10368, - 10369, - 10370, - 10371, - 10372, - 10373, - 10374, - 10375, - 10376, - 10377, - 10378, - 10379, - 10380, - 10381, - 10382, - 10383, - 10384, - 10385, - 10386, - 10387, - 10388, - 10389, - 10390, - 10391, - 10392, - 10393, - 10394, - 10395, - 10396, - 10397, - 10398, - 10399, - 10400, - 10401, - 10402, - 10403, - 10404, - 10405, - 10406, - 10407, - 10408, - 10409, - 10410, - 10411, - 10412, - 10413, - 10414, - 10415, - 10416, - 10417, - 10418, - 10419, - 10420, - 10421, - 10422, - 10423, - 10424, - 10425, - 10426, - 10427, - 10428, - 10429, - 10430, - 10431, - 10432, - 10433, - 10434, - 10435, - 10436, - 10437, - 10438, - 10439, - 10440, - 10441, - 10442, - 10443, - 10444, - 10445, - 10446, - 10447, - 10448, - 10449, - 10450, - 10451, - 10452, - 10453, - 10454, - 10455, - 10456, - 10457, - 10458, - 10459, - 10460, - 10461, - 10462, - 10463, - 10464, - 10465, - 10466, - 10467, - 10468, - 10469, - 10470, - 10471, - 10472, - 10473, - 10474, - 10475, - 10476, - 10477, - 10478, - 10479, - 10480, - 10481, - 10482, - 10483, - 10484, - 10485, - 10486, - 10487, - 10488, - 10489, - 10490, - 10491, - 10492, - 10493, - 10494, - 10495, - 10496, - 10497, - 10498, - 10499, - 10500, - 10501, - 10502, - 10503, - 10504, - 10505, - 10506, - 10507, - 10508, - 10509, - 10510, - 10511, - 10512, - 10513, - 10514, - 10515, - 10516, - 10517, - 10518, - 10519, - 10520, - 10521, - 10522, - 10523, - 10524, - 10526, - 10527, - 10528, - 10529, - 10530, - 10531, - 10532, - 10533, - 10534, - 10535, - 10536, - 10537, - 10538, - 10539, - 10540, - 10541, - 10542, - 10543, - 10544, - 10545, - 10546, - 10547, - 10548, - 10549, - 10550, - 10551, - 10552, - 10553, - 10554, - 10555, - 10556, - 10557, - 10558, - 10559, - 10560, - 10561, - 10562, - 10563, - 10564, - 10565, - 10566, - 10567, - 10568, - 10569, - 10570, - 10571, - 10572, - 10573, - 10574, - 10575, - 10576, - 10577, - 10578, - 10579, - 10580, - 10581, - 10582, - 10583, - 10584, - 10585, - 10586, - 10587, - 10588, - 10589, - 10590, - 10591, - 10592, - 10593, - 10594, - 10595, - 10596, - 10597, - 10598, - 10599, - 10600, - 10601, - 10602, - 10603, - 10604, - 10605, - 10606, - 10607, - 10608, - 10609, - 10610, - 10611, - 10612, - 10613, - 10614, - 10615, - 10616, - 10617, - 10618, - 10619, - 10620, - 10621, - 10622, - 10623, - 10624, - 10625, - 10626, - 10627, - 10628, - 10629, - 10630, - 10631, - 10632, - 10633, - 10634, - 10635, - 10636, - 10637, - 10638, - 10639, - 10640, - 10641, - 10642, - 10643, - 10644, - 10645, - 10646, - 10647, - 10648, - 10649, - 10650, - 10651, - 10652, - 10653, - 10654, - 10655, - 10656, - 10657, - 10658, - 10659, - 10660, - 10661, - 10662, - 10663, - 10664, - 10665, - 10666, - 10667, - 10668, - 10669, - 10670, - 10671, - 10672, - 10673, - 10674, - 10675, - 10676, - 10677, - 10678, - 10679, - 10680, - 10681, - 10682, - 10683, - 10684, - 10685, - 10686, - 10687, - 10688, - 10689, - 10690, - 10691, - 10692, - 10693, - 10694, - 10695, - 10696, - 10697, - 10698, - 10699, - 10700, - 10701, - 10702, - 10703, - 10704, - 10705, - 10706, - 10707, - 10708, - 10709, - 10710, - 10711, - 10712, - 10713, - 10714, - 10715, - 10716, - 10717, - 10718, - 10719, - 10720, - 10721, - 10722, - 10723, - 10724, - 10725, - 10726, - 10727, - 10728, - 10729, - 10730, - 10731, - 10732, - 10733, - 10734, - 10735, - 10736, - 10737, - 10738, - 10739, - 10740, - 10741, - 10742, - 10743, - 10744, - 10745, - 10746, - 10747, - 10748, - 10749, - 10750, - 10751, - 10752, - 10753, - 10754, - 10755, - 10756, - 10757, - 10758, - 10759, - 10760, - 10761, - 10762, - 10763, - 10764, - 10765, - 10766, - 10767, - 10768, - 10769, - 10770, - 10771, - 10772, - 10773, - 10774, - 10775, - 10776, - 10777, - 10778, - 10779, - 10780, - 10781, - 10782, - 10783, - 10784, - 10785, - 10786, - 10787, - 10788, - 10789, - 10790, - 10791, - 10792, - 10793, - 10794, - 10795, - 10796, - 10797, - 10798, - 10799, - 10800, - 10801, - 10802, - 10803, - 10804, - 10805, - 10806, - 10807, - 10808, - 10809, - 10810, - 10811, - 10812, - 10813, - 10814, - 10815, - 10816, - 10817, - 10818, - 10819, - 10820, - 10821, - 10822, - 10823, - 10824, - 10825, - 10826, - 10827, - 10828, - 10829, - 10830, - 10831, - 10832, - 10833, - 10834, - 10835, - 10836, - 10837, - 10838, - 10839, - 10840, - 10841, - 10842, - 10843, - 10844, - 10845, - 10846, - 10847, - 10848, - 10849, - 10850, - 10851, - 10852, - 10853, - 10854, - 10855, - 10856, - 10857, - 10858, - 10859, - 10860, - 10861, - 10862, - 10863, - 10864, - 10865, - 10866, - 10867, - 10868, - 10869, - 10870, - 10871, - 10872, - 10873, - 10874, - 10875, - 10876, - 10877, - 10878, - 10879, - 10880, - 10881, - 10882, - 10883, - 10884, - 10885, - 10886, - 10887, - 10888, - 10889, - 10890, - 10891, - 10892, - 10893, - 10894, - 10895, - 10896, - 10897, - 10898, - 10899, - 10900, - 10901, - 10902, - 10903, - 10904, - 10905, - 10906, - 10907, - 10908, - 10909, - 10910, - 10911, - 10912, - 10913, - 10914, - 10915, - 10916, - 10917, - 10918, - 10919, - 10920, - 10921, - 10922, - 10923, - 10924, - 10925, - 10926, - 10927, - 10928, - 10929, - 10930, - 10931, - 10932, - 10933, - 10934, - 10935, - 10936, - 10937, - 10938, - 10939, - 10940, - 10941, - 10942, - 10943, - 10944, - 10945, - 10946, - 10947, - 10948, - 10949, - 10950, - 10951, - 10952, - 10953, - 10954, - 10955, - 10956, - 10957, - 10958, - 10959, - 10960, - 10961, - 10962, - 10963, - 10964, - 10965, - 10966, - 10967, - 10968, - 10969, - 10970, - 10971, - 10972, - 10973, - 10974, - 10975, - 10976, - 10977, - 10978, - 10979, - 10980, - 10981, - 10982, - 10983, - 10984, - 10985, - 10986, - 10987, - 10988, - 10989, - 10990, - 10991, - 10992, - 10993, - 10994, - 10995, - 10996, - 10997, - 10998, - 10999, - 11000, - 11001, - 11002, - 11003, - 11004, - 11005, - 11006, - 11007, - 11008, - 11009, - 11010, - 11011, - 11012, - 11013, - 11014, - 11015, - 11016, - 11017, - 11018, - 11019, - 11020, - 11021, - 11022, - 11023, - 11024, - 11025, - 11026, - 11027, - 11028, - 11029, - 11030, - 11031, - 11032, - 11033, - 11034, - 11035, - 11036, - 11037, - 11038, - 11039, - 11040, - 11041, - 11042, - 11043, - 11044, - 11045, - 11046, - 11047, - 11048, - 11049, - 11050, - 11051, - 11052, - 11053, - 11054, - 11055, - 11056, - 11057, - 11058, - 11059, - 11060, - 11061, - 11062, - 11063, - 11064, - 11065, - 11066, - 11067, - 11068, - 11069, - 11070, - 11071, - 11072, - 11073, - 11074, - 11075, - 11076, - 11077, - 11078, - 11079, - 11080, - 11081, - 11082, - 11083, - 11084, - 11086, - 11087, - 11088, - 11090, - 11091, - 11092, - 11093, - 11094, - 11095, - 11096, - 11097, - 11098, - 11099, - 11100, - 11101, - 11102, - 11103, - 11104, - 11105, - 11106, - 11107, - 11108, - 11109, - 11110, - 11111, - 11112, - 11113, - 11114, - 11115, - 11116, - 11117, - 11118, - 11119, - 11120, - 11121, - 11122, - 11123, - 11124, - 11125, - 11126, - 11127, - 11128, - 11129, - 11130, - 11131, - 11132, - 11133, - 11134, - 11135, - 11136, - 11137, - 11138, - 11139, - 11140, - 11141, - 11142, - 11143, - 11144, - 11145, - 11146, - 11147, - 11148, - 11149, - 11150, - 11151, - 11152, - 11153, - 11154, - 11155, - 11156, - 11157, - 11158, - 11159, - 11160, - 11161, - 11162, - 11163, - 11164, - 11165, - 11166, - 11167, - 11168, - 11169, - 11170, - 11171, - 11172, - 11173, - 11174, - 11175, - 11176, - 11177, - 11178, - 11179, - 11180, - 11181, - 11182, - 11183, - 11184, - 11185, - 11186, - 11187, - 11188, - 11189, - 11190, - 11191, - 11192, - 11193, - 11194, - 11195, - 11196, - 11197, - 11198, - 11199, - 11200, - 11201, - 11202, - 11203, - 11204, - 11205, - 11206, - 11207, - 11208, - 11209, - 11210, - 11211, - 11212, - 11213, - 11214, - 11215, - 11216, - 11217, - 11218, - 11219, - 11220, - 11221, - 11222, - 11223, - 11224, - 11225, - 11226, - 11227, - 11228, - 11229, - 11230, - 11231, - 11232, - 11233, - 11234, - 11235, - 11236, - 11237, - 11238, - 11239, - 11240, - 11241, - 11242, - 11243, - 11244, - 11245, - 11246, - 11247, - 11248, - 11249, - 11250, - 11251, - 11252, - 11253, - 11254, - 11255, - 11256, - 11257, - 11258, - 11259, - 11260, - 11261, - 11262, - 11263, - 11264, - 11265, - 11266, - 11267, - 11268, - 11269, - 11270, - 11271, - 11272, - 11273, - 11274, - 11275, - 11276, - 11277, - 11278, - 11279, - 11280, - 11281, - 11282, - 11283, - 11284, - 11285, - 11286, - 11287, - 11288, - 11289, - 11290, - 11291, - 11292, - 11293, - 11294, - 11295, - 11296, - 11297, - 11298, - 11299, - 11300, - 11301, - 11302, - 11303, - 11304, - 11305, - 11306, - 11307, - 11308, - 11309, - 11310, - 11311, - 11312, - 11313, - 11314, - 11315, - 11316, - 11317, - 11318, - 11319, - 11320, - 11321, - 11322, - 11323, - 11324, - 11325, - 11326, - 11327, - 11328, - 11329, - 11330, - 11331, - 11332, - 11333, - 11334, - 11335, - 11336, - 11337, - 11338, - 11339, - 11340, - 11341, - 11342, - 11343, - 11344, - 11345, - 11346, - 11347, - 11348, - 11349, - 11350, - 11351, - 11352, - 11353, - 11354, - 11355, - 11356, - 11357, - 11358, - 11359, - 11360, - 11361, - 11362, - 11363, - 11364, - 11365, - 11366, - 11367, - 11368, - 11369, - 11370, - 11371, - 11372, - 11373, - 11374, - 11375, - 11376, - 11377, - 11378, - 11379, - 11380, - 11381, - 11382, - 11383, - 11384, - 11385, - 11386, - 11387, - 11388, - 11389, - 11390, - 11391, - 11392, - 11393, - 11394, - 11395, - 11396, - 11397, - 11398, - 11399, - 11400, - 11401, - 11402, - 11403, - 11404, - 11405, - 11406, - 11407, - 11408, - 11409, - 11410, - 11411, - 11412, - 11413, - 11414, - 11415, - 11416, - 11417, - 11418, - 11419, - 11420, - 11421, - 11422, - 11423, - 11424, - 11425, - 11426, - 11427, - 11428, - 11429, - 11430, - 11431, - 11432, - 11433, - 11434, - 11435, - 11436, - 11437, - 11438, - 11439, - 11440, - 11441, - 11442, - 11443, - 11444, - 11445, - 11446, - 11447, - 11448, - 11449, - 11450, - 11451, - 11452, - 11453, - 11454, - 11455, - 11456, - 11457, - 11458, - 11459, - 11460, - 11461, - 11462, - 11463, - 11464, - 11465, - 11466, - 11467, - 11468, - 11469, - 11470, - 11471, - 11472, - 11473, - 11474, - 11475, - 11476, - 11477, - 11478, - 11479, - 11480, - 11481, - 11482, - 11483, - 11484, - 11485, - 11486, - 11487, - 11488, - 11489, - 11490, - 11491, - 11492, - 11493, - 11494, - 11495, - 11496, - 11497, - 11498, - 11499, - 11500, - 11501, - 11502, - 11503, - 11504, - 11505, - 11506, - 11507, - 11508, - 11509, - 11510, - 11511, - 11512, - 11513, - 11514, - 11515, - 11516, - 11517, - 11518, - 11519, - 11520, - 11521, - 11522, - 11523, - 11524, - 11525, - 11526, - 11527, - 11528, - 11529, - 11530, - 11531, - 11532, - 11533, - 11534, - 11535, - 11536, - 11537, - 11538, - 11539, - 11540, - 11541, - 11542, - 11543, - 11544, - 11545, - 11546, - 11547, - 11548, - 11549, - 11550, - 11551, - 11552, - 11553, - 11554, - 11555, - 11556, - 11557, - 11558, - 11559, - 11560, - 11561, - 11562, - 11563, - 11564, - 11565, - 11566, - 11567, - 11568, - 11569, - 11570, - 11571, - 11572, - 11573, - 11574, - 11575, - 11576, - 11577, - 11578, - 11579, - 11580, - 11581, - 11582, - 11583, - 11584, - 11585, - 11586, - 11587, - 11588, - 11589, - 11590, - 11591, - 11592, - 11593, - 11594, - 11595, - 11596, - 11597, - 11598, - 11599, - 11600, - 11601, - 11602, - 11603, - 11604, - 11605, - 11606, - 11607, - 11608, - 11609, - 11610, - 11611, - 11612, - 11613, - 11614, - 11615, - 11616, - 11617, - 11618, - 11619, - 11620, - 11621, - 11622, - 11623, - 11624, - 11625, - 11626, - 11627, - 11628, - 11629, - 11630, - 11631, - 11632, - 11633, - 11634, - 11635, - 11636, - 11637, - 11638, - 11639, - 11640, - 11641, - 11642, - 11643, - 11644, - 11645, - 11646, - 11647, - 11648, - 11649, - 11650, - 11651, - 11652, - 11653, - 11654, - 11655, - 11656, - 11657, - 11658, - 11659, - 11660, - 11661, - 11662, - 11663, - 11664, - 11665, - 11666, - 11667, - 11668, - 11669, - 11670, - 11671, - 11672, - 11673, - 11674, - 11675, - 11676, - 11677, - 11678, - 11679, - 11680, - 11681, - 11682, - 11683, - 11684, - 11685, - 11686, - 11687, - 11688, - 11689, - 11690, - 11691, - 11692, - 11693, - 11694, - 11695, - 11696, - 11697, - 11698, - 11699, - 11700, - 11701, - 11702, - 11703, - 11704, - 11705, - 11706, - 11707, - 11708, - 11709, - 11710, - 11711, - 11712, - 11713, - 11714, - 11715, - 11716, - 11717, - 11718, - 11719, - 11720, - 11721, - 11722, - 11723, - 11724, - 11725, - 11726, - 11727, - 11728, - 11729, - 11730, - 11731, - 11732, - 11733, - 11734, - 11735, - 11736, - 11737, - 11738, - 11739, - 11740, - 11741, - 11742, - 11743, - 11744, - 11745, - 11746, - 11747, - 11748, - 11749, - 11750, - 11751, - 11752, - 11753, - 11754, - 11755, - 11756, - 11757, - 11758, - 11759, - 11760, - 11761, - 11762, - 11763, - 11764, - 11765, - 11766, - 11767, - 11768, - 11769, - 11770, - 11771, - 11772, - 11773, - 11774, - 11775, - 11776, - 11777, - 11778, - 11779, - 11780, - 11781, - 11782, - 11783, - 11784, - 11785, - 11786, - 11787, - 11788, - 11789, - 11790, - 11791, - 11792, - 11793, - 11794, - 11795, - 11796, - 11797, - 11798, - 11799, - 11800, - 11801, - 11802, - 11803, - 11804, - 11805, - 11806, - 11807, - 11808, - 11809, - 11810, - 11811, - 11812, - 11813, - 11814, - 11815, - 11816, - 11817, - 11818, - 11819, - 11820, - 11821, - 11822, - 11823, - 11824, - 11825, - 11826, - 11827, - 11828, - 11829, - 11830, - 11831, - 11832, - 11833, - 11834, - 11835, - 11836, - 11837, - 11838, - 11839, - 11840, - 11841, - 11842, - 11843, - 11844, - 11845, - 11846, - 11847, - 11848, - 11849, - 11850, - 11851, - 11852, - 11853, - 11854, - 11855, - 11856, - 11857, - 11858, - 11859, - 11860, - 11861, - 11862, - 11863, - 11864, - 11865, - 11866, - 11867, - 11868, - 11869, - 11870, - 11871, - 11872, - 11873, - 11874, - 11875, - 11876, - 11877, - 11878, - 11879, - 11880, - 11881, - 11882, - 11883, - 11884, - 11885, - 11886, - 11887, - 11888, - 11889, - 11890, - 11891, - 11892, - 11893, - 11894, - 11895, - 11896, - 11897, - 11898, - 11899, - 11900, - 11901, - 11902, - 11903, - 11904, - 11905, - 11906, - 11907, - 11908, - 11909, - 11910, - 11911, - 11912, - 11913, - 11914, - 11915, - 11916, - 11917, - 11918, - 11919, - 11920, - 11921, - 11922, - 11923, - 11924, - 11925, - 11926, - 11927, - 11928, - 11929, - 11930, - 11931, - 11932, - 11933, - 11934, - 11935, - 11936, - 11937, - 11938, - 11939, - 11940, - 11941, - 11942, - 11943, - 11944, - 11945, - 11946, - 11947, - 11948, - 11949, - 11950, - 11951, - 11952, - 11953, - 11954, - 11955, - 11956, - 11957, - 11958, - 11959, - 11960, - 11961, - 11962, - 11963, - 11964, - 11965, - 11966, - 11967, - 11968, - 11969, - 11970, - 11971, - 11972, - 11973, - 11974, - 11975, - 11976, - 11977, - 11978, - 11979, - 11980, - 11981, - 11982, - 11983, - 11984, - 11985, - 11986, - 11987, - 11988, - 11989, - 11990, - 11991, - 11992, - 11993, - 11994, - 11995, - 11996, - 11997, - 11998, - 11999, - 12000, - 12001, - 12002, - 12003, - 12004, - 12005, - 12006, - 12007, - 12008, - 12009, - 12010, - 12011, - 12012, - 12013, - 12014, - 12015, - 12016, - 12017, - 12018, - 12019, - 12020, - 12021, - 12022, - 12023, - 12024, - 12025, - 12026, - 12027, - 12028, - 12029, - 12030, - 12031, - 12032, - 12033, - 12034, - 12035, - 12036, - 12037, - 12038, - 12039, - 12040, - 12041, - 12042, - 12043, - 12044, - 12045, - 12046, - 12047, - 12048, - 12049, - 12050, - 12051, - 12052, - 12053, - 12054, - 12055, - 12056, - 12057, - 12058, - 12059, - 12060, - 12061, - 12062, - 12063, - 12064, - 12065, - 12066, - 12067, - 12068, - 12069, - 12070, - 12071, - 12072, - 12073, - 12074, - 12075, - 12076, - 12077, - 12078, - 12079, - 12080, - 12081, - 12082, - 12083, - 12084, - 12085, - 12086, - 12087, - 12088, - 12089, - 12090, - 12091, - 12092, - 12093, - 12094, - 12095, - 12096, - 12097, - 12098, - 12099, - 12100, - 12101, - 12102, - 12103, - 12104, - 12105, - 12106, - 12107, - 12108, - 12109, - 12110, - 12111, - 12112, - 12113, - 12114, - 12115, - 12116, - 12117, - 12118, - 12119, - 12120, - 12121, - 12122, - 12123, - 12124, - 12125, - 12126, - 12127, - 12128, - 12129, - 12130, - 12131, - 12132, - 12133, - 12134, - 12135, - 12136, - 12137, - 12138, - 12139, - 12140, - 12141, - 12142, - 12143, - 12144, - 12145, - 12146, - 12147, - 12148, - 12149, - 12150, - 12151, - 12152, - 12153, - 12154, - 12155, - 12156, - 12157, - 12158, - 12159, - 12160, - 12161, - 12162, - 12163, - 12164, - 12165, - 12166, - 12167, - 12168, - 12169, - 12170, - 12171, - 12172, - 12173, - 12174, - 12175, - 12176, - 12177, - 12178, - 12179, - 12180, - 12181, - 12182, - 12183, - 12184, - 12185, - 12186, - 12187, - 12188, - 12189, - 12190, - 12191, - 12192, - 12193, - 12194, - 12195, - 12196, - 12197, - 12198, - 12199, - 12200, - 12201, - 12202, - 12203, - 12204, - 12205, - 12206, - 12207, - 12208, - 12209, - 12210, - 12211, - 12212, - 12213, - 12214, - 12215, - 12216, - 12217, - 12218, - 12219, - 12220, - 12221, - 12222, - 12223, - 12224, - 12225, - 12226, - 12227, - 12228, - 12229, - 12230, - 12231, - 12232, - 12233, - 12234, - 12235, - 12236, - 12237, - 12238, - 12239, - 12240, - 12241, - 12242, - 12243, - 12244, - 12245, - 12246, - 12247, - 12248, - 12249, - 12250, - 12251, - 12252, - 12253, - 12254, - 12255, - 12256, - 12257, - 12258, - 12259, - 12260, - 12261, - 12262, - 12263, - 12264, - 12265, - 12266, - 12267, - 12268, - 12269, - 12270, - 12271, - 12272, - 12273, - 12274, - 12275, - 12276, - 12277, - 12278, - 12279, - 12280, - 12281, - 12282, - 12283, - 12284, - 12285, - 12286, - 12287, - 12288, - 12289, - 12290, - 12291, - 12292, - 12293, - 12294, - 12295, - 12296, - 12297, - 12298, - 12299, - 12300, - 12301, - 12302, - 12303, - 12304, - 12305, - 12306, - 12307, - 12308, - 12309, - 12310, - 12311, - 12312, - 12313, - 12314, - 12315, - 12316, - 12317, - 12318, - 12319, - 12320, - 12321, - 12322, - 12323, - 12324, - 12325, - 12326, - 12327, - 12328, - 12329, - 12330, - 12331, - 12332, - 12333, - 12334, - 12335, - 12336, - 12337, - 12338, - 12339, - 12340, - 12341, - 12342, - 12343, - 12344, - 12345, - 12346, - 12347, - 12348, - 12349, - 12350, - 12351, - 12352, - 12353, - 12354, - 12355, - 12356, - 12357, - 12358, - 12359, - 12360, - 12361, - 12362, - 12363, - 12364, - 12365, - 12366, - 12367, - 12368, - 12369, - 12370, - 12371, - 12372, - 12373, - 12374, - 12375, - 12376, - 12377, - 12378, - 12379, - 12380, - 12381, - 12382, - 12383, - 12384, - 12385, - 12386, - 12387, - 12388, - 12389, - 12390, - 12391, - 12392, - 12393, - 12394, - 12395, - 12396, - 12397, - 12398, - 12399, - 12400, - 12401, - 12402, - 12403, - 12404, - 12405, - 12406, - 12407, - 12408, - 12409, - 12410, - 12411, - 12412, - 12413, - 12414, - 12415, - 12416, - 12417, - 12418, - 12419, - 12420, - 12421, - 12422, - 12423, - 12424, - 12425, - 12426, - 12427, - 12428, - 12429, - 12430, - 12431, - 12432, - 12433, - 12434, - 12435, - 12436, - 12437, - 12438, - 12439, - 12440, - 12441, - 12442, - 12443, - 12444, - 12445, - 12446, - 12447, - 12448, - 12449, - 12450, - 12451, - 12452, - 12453, - 12454, - 12455, - 12456, - 12457, - 12458, - 12459, - 12460, - 12461, - 12462, - 12463, - 12464, - 12465, - 12466, - 12467, - 12468, - 12469, - 12470, - 12471, - 12472, - 12473, - 12474, - 12475, - 12476, - 12477, - 12478, - 12479, - 12480, - 12481, - 12482, - 12483, - 12484, - 12485, - 12486, - 12487, - 12488, - 12489, - 12490, - 12491, - 12492, - 12493, - 12494, - 12495, - 12496, - 12497, - 12498, - 12499, - 12500, - 12501, - 12502, - 12503, - 12504, - 12505, - 12506, - 12507, - 12508, - 12509, - 12510, - 12511, - 12512, - 12513, - 12514, - 12515, - 12516, - 12517, - 12518, - 12519, - 12520, - 12521, - 12522, - 12523, - 12524, - 12525, - 12526, - 12527, - 12528, - 12529, - 12530, - 12531, - 12532, - 12533, - 12534, - 12535, - 12536, - 12537, - 12538, - 12539, - 12540, - 12541, - 12542, - 12543, - 12544, - 12545, - 12546, - 12547, - 12548, - 12549, - 12550, - 12551, - 12552, - 12553, - 12554, - 12555, - 12556, - 12557, - 12558, - 12559, - 12560, - 12561, - 12562, - 12563, - 12564, - 12565, - 12566, - 12567, - 12568, - 12569, - 12570, - 12571, - 12572, - 12573, - 12574, - 12575, - 12576, - 12577, - 12578, - 12579, - 12580, - 12581, - 12582, - 12583, - 12584, - 12585, - 12586, - 12587, - 12588, - 12589, - 12590, - 12591, - 12592, - 12593, - 12594, - 12595, - 12596, - 12597, - 12598, - 12599, - 12600, - 12601, - 12602, - 12603, - 12604, - 12605, - 12606, - 12607, - 12608, - 12609, - 12610, - 12611, - 12612, - 12613, - 12614, - 12615, - 12616, - 12617, - 12618, - 12619, - 12620, - 12621, - 12622, - 12623, - 12624, - 12625, - 12626, - 12628, - 12629, - 12630, - 12632, - 12633, - 12635, - 12637, - 12638, - 12639, - 12640, - 12641, - 12642, - 12643, - 12645, - 12646, - 12647, - 12648, - 12649, - 12650, - 12651, - 12652, - 12653, - 12654, - 12655, - 12656, - 12657, - 12658, - 12659, - 12660, - 12661, - 12662, - 12663, - 12664, - 12665, - 12666, - 12667, - 12668, - 12669, - 12670, - 12671, - 12672, - 12673, - 12674, - 12675, - 12676, - 12677, - 12678, - 12679, - 12680, - 12681, - 12682, - 12683, - 12684, - 12685, - 12686, - 12687, - 12688, - 12689, - 12690, - 12691, - 12692, - 12693, - 12694, - 12695, - 12696, - 12697, - 12698, - 12699, - 12700, - 12701, - 12702, - 12703, - 12704, - 12706, - 12707, - 12709, - 12711, - 12712, - 12713, - 12714, - 12715, - 12716, - 12717, - 12719, - 12720, - 12721, - 12722, - 12723, - 12724, - 12725, - 12726, - 12727, - 12728, - 12729, - 12730, - 12731, - 12732, - 12733, - 12734, - 12735, - 12736, - 12737, - 12738, - 12739, - 12740, - 12741, - 12742, - 12743, - 12744, - 12745, - 12746, - 12747, - 12748, - 12749, - 12750, - 12751, - 12752, - 12753, - 12754, - 12755, - 12756, - 12757, - 12758, - 12759, - 12760, - 12761, - 12762, - 12763, - 12764, - 12765, - 12766, - 12767, - 12768, - 12769, - 12770, - 12771, - 12772, - 12773, - 12774, - 12775, - 12776, - 12777, - 12778, - 12779, - 12780, - 12781, - 12783, - 12784, - 12785, - 12786, - 12787, - 12788, - 12789, - 12790, - 12791, - 12793, - 12794, - 12795, - 12796, - 12797, - 12798, - 12799, - 12800, - 12801, - 12802, - 12803, - 12804, - 12805, - 12806, - 12807, - 12808, - 12809, - 12810, - 12811, - 12812, - 12813, - 12814, - 12815, - 12816, - 12817, - 12818, - 12819, - 12820, - 12821, - 12822, - 12823, - 12824, - 12825, - 12826, - 12827, - 12828, - 12829, - 12830, - 12831, - 12832, - 12833, - 12834, - 12835, - 12836, - 12837, - 12838, - 12839, - 12840, - 12841, - 12842, - 12843, - 12844, - 12845, - 12846, - 12847, - 12848, - 12849, - 12850, - 12851, - 12852, - 12853, - 12854, - 12855, - 12857, - 12858, - 12859, - 12860, - 12861, - 12862, - 12863, - 12865, - 12867, - 12868, - 12869, - 12870, - 12871, - 12872, - 12873, - 12874, - 12875, - 12876, - 12877, - 12878, - 12879, - 12880, - 12881, - 12882, - 12883, - 12884, - 12885, - 12886, - 12887, - 12888, - 12889, - 12890, - 12891, - 12892, - 12893, - 12894, - 12895, - 12896, - 12897, - 12898, - 12899, - 12900, - 12901, - 12902, - 12903, - 12904, - 12905, - 12906, - 12907, - 12908, - 12909, - 12910, - 12911, - 12912, - 12913, - 12914, - 12915, - 12916, - 12917, - 12918, - 12919, - 12920, - 12921, - 12922, - 12923, - 12924, - 12925, - 12926, - 12927, - 12928, - 12929, - 12931, - 12932, - 12933, - 12934, - 12935, - 12936, - 12937, - 12938, - 12939, - 12941, - 12942, - 12943, - 12944, - 12945, - 12946, - 12947, - 12948, - 12949, - 12950, - 12951, - 12952, - 12953, - 12954, - 12955, - 12956, - 12957, - 12958, - 12959, - 12960, - 12961, - 12962, - 12963, - 12964, - 12965, - 12966, - 12967, - 12968, - 12969, - 12970, - 12971, - 12972, - 12973, - 12974, - 12975, - 12976, - 12977, - 12978, - 12979, - 12980, - 12981, - 12982, - 12983, - 12984, - 12985, - 12986, - 12987, - 12988, - 12989, - 12990, - 12991, - 12992, - 12993, - 12994, - 12995, - 12996, - 12997, - 12998, - 12999, - 13000, - 13001, - 13002, - 13003, - 13005, - 13006, - 13007, - 13008, - 13009, - 13010, - 13011, - 13012, - 13013, - 13015, - 13016, - 13017, - 13018, - 13019, - 13020, - 13021, - 13022, - 13023, - 13024, - 13025, - 13026, - 13027, - 13028, - 13029, - 13030, - 13031, - 13032, - 13033, - 13034, - 13035, - 13036, - 13037, - 13038, - 13039, - 13040, - 13041, - 13042, - 13043, - 13044, - 13045, - 13046, - 13047, - 13048, - 13049, - 13050, - 13051, - 13052, - 13053, - 13054, - 13055, - 13056, - 13057, - 13058, - 13059, - 13060, - 13061, - 13062, - 13063, - 13064, - 13065, - 13066, - 13067, - 13068, - 13069, - 13070, - 13071, - 13072, - 13073, - 13074, - 13075, - 13076, - 13077, - 13078, - 13079, - 13080, - 13081, - 13082, - 13083, - 13084, - 13085, - 13086, - 13087, - 13089, - 13090, - 13091, - 13092, - 13093, - 13094, - 13095, - 13096, - 13097, - 13098, - 13099, - 13100, - 13101, - 13102, - 13103, - 13104, - 13105, - 13106, - 13107, - 13108, - 13109, - 13110, - 13111, - 13112, - 13113, - 13114, - 13115, - 13116, - 13117, - 13118, - 13119, - 13120, - 13121, - 13122, - 13123, - 13124, - 13125, - 13126, - 13127, - 13128, - 13129, - 13130, - 13131, - 13132, - 13133, - 13134, - 13135, - 13136, - 13137, - 13138, - 13139, - 13140, - 13141, - 13142, - 13143, - 13144, - 13145, - 13146, - 13147, - 13148, - 13149, - 13150, - 13151, - 13152, - 13153, - 13154, - 13155, - 13156, - 13157, - 13158, - 13159, - 13160, - 13161, - 13162, - 13163, - 13164, - 13165, - 13166, - 13167, - 13168, - 13169, - 13170, - 13171, - 13172, - 13173, - 13174, - 13175, - 13176, - 13177, - 13178, - 13179, - 13180, - 13181, - 13182, - 13183, - 13184, - 13185, - 13186, - 13187, - 13188, - 13189, - 13190, - 13191, - 13192, - 13193, - 13194, - 13195, - 13196, - 13197, - 13198, - 13199, - 13200, - 13201, - 13202, - 13203, - 13204, - 13205, - 13206, - 13207, - 13208, - 13209, - 13210, - 13211, - 13212, - 13213, - 13214, - 13215, - 13216, - 13217, - 13218, - 13219, - 13220, - 13221, - 13222, - 13223, - 13224, - 13225, - 13226, - 13227, - 13228, - 13229, - 13230, - 13231, - 13232, - 13233, - 13234, - 13235, - 13236, - 13237, - 13238, - 13239, - 13240, - 13241, - 13242, - 13243, - 13244, - 13245, - 13246, - 13247, - 13248, - 13249, - 13250, - 13251, - 13252, - 13253, - 13254, - 13255, - 13256, - 13257, - 13258, - 13259, - 13260, - 13261, - 13262, - 13263, - 13264, - 13265, - 13266, - 13267, - 13268, - 13269, - 13270, - 13271, - 13272, - 13273, - 13274, - 13275, - 13276, - 13277, - 13278, - 13279, - 13280, - 13281, - 13282, - 13283, - 13284, - 13285, - 13286, - 13287, - 13288, - 13289, - 13290, - 13291, - 13292, - 13293, - 13294, - 13295, - 13296, - 13297, - 13298, - 13299, - 13300, - 13301, - 13302, - 13303, - 13304, - 13305, - 13306, - 13307, - 13308, - 13309, - 13310, - 13311, - 13312, - 13313, - 13314, - 13315, - 13316, - 13317, - 13318, - 13319, - 13320, - 13321, - 13322, - 13323, - 13324, - 13325, - 13326, - 13327, - 13328, - 13329, - 13330, - 13331, - 13332, - 13333, - 13334, - 13335, - 13336, - 13337, - 13338, - 13339, - 13340, - 13341, - 13342, - 13343, - 13344, - 13345, - 13346, - 13347, - 13348, - 13349, - 13350, - 13351, - 13352, - 13353, - 13354, - 13355, - 13356, - 13357, - 13358, - 13359, - 13360, - 13361, - 13362, - 13363, - 13364, - 13365, - 13366, - 13367, - 13368, - 13369, - 13370, - 13371, - 13372, - 13373, - 13374, - 13375, - 13376, - 13377, - 13378, - 13379, - 13380, - 13381, - 13382, - 13383, - 13384, - 13385, - 13386, - 13387, - 13388, - 13389, - 13390, - 13391, - 13392, - 13393, - 13394, - 13395, - 13396, - 13397, - 13398, - 13399, - 13400, - 13401, - 13402, - 13403, - 13404, - 13405, - 13406, - 13407, - 13408, - 13409, - 13410, - 13411, - 13412, - 13413, - 13414, - 13415, - 13416, - 13417, - 13418, - 13419, - 13420, - 13421, - 13422, - 13423, - 13424, - 13425, - 13426, - 13427, - 13428, - 13429, - 13430, - 13431, - 13432, - 13433, - 13434, - 13435, - 13436, - 13437, - 13438, - 13439, - 13440, - 13441, - 13442, - 13443, - 13444, - 13445, - 13446, - 13447, - 13448, - 13449, - 13450, - 13451, - 13452, - 13453, - 13454, - 13455, - 13456, - 13457, - 13458, - 13459, - 13460, - 13461, - 13462, - 13463, - 13464, - 13465, - 13466, - 13467, - 13468, - 13469, - 13470, - 13471, - 13472, - 13473, - 13474, - 13475, - 13476, - 13477, - 13478, - 13479, - 13480, - 13481, - 13482, - 13483, - 13484, - 13485, - 13486, - 13487, - 13488, - 13489, - 13490, - 13491, - 13492, - 13493, - 13494, - 13495, - 13496, - 13497, - 13498, - 13499, - 13500, - 13501, - 13502, - 13503, - 13504, - 13505, - 13506, - 13507, - 13508, - 13509, - 13510, - 13511, - 13512, - 13513, - 13514, - 13515, - 13516, - 13517, - 13518, - 13519, - 13520, - 13521, - 13522, - 13523, - 13524, - 13525, - 13526, - 13527, - 13528, - 13529, - 13530, - 13531, - 13532, - 13533, - 13534, - 13535, - 13536, - 13537, - 13538, - 13539, - 13540, - 13541, - 13542, - 13543, - 13544, - 13545, - 13546, - 13547, - 13548, - 13549, - 13550, - 13551, - 13552, - 13553, - 13554, - 13555, - 13556, - 13557, - 13558, - 13559, - 13560, - 13561, - 13562, - 13563, - 13564, - 13565, - 13566, - 13567, - 13568, - 13569, - 13570, - 13571, - 13572, - 13573, - 13574, - 13575, - 13576, - 13577, - 13578, - 13579, - 13580, - 13581, - 13582, - 13583, - 13584, - 13585, - 13586, - 13587, - 13588, - 13589, - 13590, - 13591, - 13592, - 13593, - 13594, - 13595, - 13596, - 13597, - 13598, - 13599, - 13600, - 13601, - 13602, - 13603, - 13604, - 13605, - 13606, - 13607, - 13608, - 13609, - 13610, - 13611, - 13612, - 13613, - 13614, - 13615, - 13616, - 13617, - 13618, - 13619, - 13620, - 13621, - 13622, - 13623, - 13624, - 13625, - 13626, - 13627, - 13628, - 13629, - 13630, - 13631, - 13632, - 13633, - 13634, - 13635, - 13636, - 13637, - 13638, - 13639, - 13640, - 13641, - 13642, - 13643, - 13644, - 13645, - 13646, - 13647, - 13648, - 13649, - 13650, - 13651, - 13652, - 13653, - 13654, - 13655, - 13656, - 13657, - 13658, - 13659, - 13660, - 13661, - 13662, - 13663, - 13664, - 13665, - 13666, - 13667, - 13668, - 13669, - 13670, - 13671, - 13672, - 13673, - 13674, - 13675, - 13676, - 13677, - 13678, - 13679, - 13680, - 13681, - 13682, - 13683, - 13684, - 13685, - 13686, - 13687, - 13688, - 13689, - 13690, - 13691, - 13692, - 13693, - 13694, - 13695, - 13696, - 13697, - 13698, - 13699, - 13700, - 13701, - 13702, - 13703, - 13704, - 13705, - 13706, - 13707, - 13708, - 13709, - 13710, - 13711, - 13712, - 13713, - 13714, - 13715, - 13716, - 13717, - 13718, - 13719, - 13720, - 13721, - 13722, - 13723, - 13724, - 13725, - 13726, - 13727, - 13728, - 13729, - 13730, - 13731, - 13732, - 13733, - 13734, - 13735, - 13736, - 13737, - 13738, - 13739, - 13740, - 13741, - 13742, - 13743, - 13744, - 13745, - 13746, - 13747, - 13748, - 13749, - 13750, - 13751, - 13752, - 13753, - 13754, - 13755, - 13756, - 13757, - 13758, - 13759, - 13760, - 13761, - 13762, - 13763, - 13764, - 13765, - 13766, - 13767, - 13768, - 13769, - 13770, - 13771, - 13772, - 13773, - 13774, - 13775, - 13776, - 13777, - 13778, - 13779, - 13780, - 13781, - 13782, - 13783, - 13784, - 13785, - 13786, - 13787, - 13788, - 13789, - 13790, - 13791, - 13792, - 13793, - 13794, - 13795, - 13796, - 13797, - 13798, - 13799, - 13800, - 13801, - 13802, - 13803, - 13804, - 13805, - 13806, - 13807, - 13808, - 13809, - 13810, - 13811, - 13812, - 13813, - 13814, - 13815, - 13816, - 13817, - 13818, - 13819, - 13820, - 13821, - 13822, - 13823, - 13824, - 13825, - 13826, - 13827, - 13828, - 13829, - 13830, - 13831, - 13832, - 13833, - 13834, - 13835, - 13836, - 13837, - 13838, - 13839, - 13840, - 13841, - 13842, - 13843, - 13844, - 13845, - 13846, - 13847, - 13848, - 13849, - 13850, - 13851, - 13852, - 13853, - 13854, - 13855, - 13856, - 13857, - 13858, - 13859, - 13860, - 13861, - 13862, - 13863, - 13864, - 13865, - 13866, - 13867, - 13868, - 13869, - 13870, - 13871, - 13872, - 13873, - 13874, - 13875, - 13876, - 13877, - 13878, - 13879, - 13880, - 13882, - 13883, - 13884, - 13885, - 13886, - 13888, - 13889, - 13890, - 13891, - 13892, - 13893, - 13894, - 13895, - 13896, - 13898, - 13899, - 13900, - 13901, - 13902, - 13903, - 13904, - 13905, - 13906, - 13907, - 13908, - 13909, - 13910, - 13911, - 13912, - 13914, - 13915, - 13916, - 13917, - 13918, - 13919, - 13920, - 13921, - 13922, - 13923, - 13924, - 13925, - 13926, - 13927, - 13928, - 13929, - 13930, - 13931, - 13932, - 13933, - 13934, - 13935, - 13936, - 13937, - 13938, - 13939, - 13940, - 13941, - 13942, - 13943, - 13944, - 13945, - 13946, - 13947, - 13948, - 13949, - 13950, - 13951, - 13952, - 13953, - 13954, - 13955, - 13956, - 13957, - 13958, - 13959, - 13960, - 13961, - 13962, - 13963, - 13964, - 13965, - 13966, - 13967, - 13968, - 13969, - 13970, - 13971, - 13972, - 13973, - 13974, - 13975, - 13976, - 13977, - 13978, - 13979, - 13980, - 13981, - 13982, - 13983, - 13984, - 13985, - 13986, - 13987, - 13988, - 13989, - 13990, - 13991, - 13992, - 13993, - 13994, - 13995, - 13996, - 13997, - 13998, - 13999, - 14000, - 14001, - 14002, - 14003, - 14004, - 14005, - 14006, - 14007, - 14008, - 14009, - 14010, - 14011, - 14012, - 14013, - 14014, - 14015, - 14016, - 14017, - 14018, - 14019, - 14020, - 14021, - 14022, - 14023, - 14024, - 14025, - 14026, - 14027, - 14028, - 14029, - 14030, - 14031, - 14032, - 14033, - 14034, - 14035, - 14036, - 14037, - 14038, - 14039, - 14040, - 14041, - 14042, - 14043, - 14044, - 14045, - 14046, - 14047, - 14048, - 14049, - 14050, - 14051, - 14052, - 14053, - 14054, - 14055, - 14056, - 14057, - 14058, - 14059, - 14060, - 14061, - 14062, - 14063, - 14064, - 14065, - 14066, - 14067, - 14068, - 14069, - 14070, - 14071, - 14081, - 14083, - 14084, - 14085, - 14086, - 14087, - 14089, - 14093, - 14095, - 14096, - 14099, - 14101, - 14102, - 14103, - 14104, - 14105, - 14107, - 14110, - 14111, - 14113, - 14114, - 14117, - 14119, - 14120, - 14121, - 14122, - 14123, - 14125, - 14127, - 14128, - 14129, - 14131, - 14132, - 14135, - 14137, - 14138, - 14139, - 14140, - 14141, - 14143, - 14146, - 14147, - 14149, - 14150, - 14151, - 14153, - 14155, - 14156, - 14157, - 14158, - 14159, - 14160, - 14161, - 14162, - 14163, - 14164, - 14165, - 14167, - 14168, - 14169, - 14171, - 14173, - 14174, - 14175, - 14176, - 14177, - 14178, - 14179, - 14180, - 14182, - 14183, - 14185, - 14186, - 14188, - 14189, - 14191, - 14192, - 14193, - 14194, - 14195, - 14197, - 14198, - 14200, - 14201, - 14203, - 14204, - 14205, - 14206, - 14207, - 14209, - 14210, - 14211, - 14212, - 14213, - 14214, - 14215, - 14216, - 14218, - 14219, - 14221, - 14222, - 14223, - 14224, - 14225, - 14227, - 14228, - 14229, - 14230, - 14231, - 14232, - 14233, - 14234, - 14236, - 14237, - 14238, - 14239, - 14240, - 14241, - 14242, - 14243, - 14245, - 14246, - 14247, - 14248, - 14249, - 14250, - 14251, - 14252, - 14253, - 14254, - 14255, - 14256, - 14257, - 14258, - 14259, - 14260, - 14261, - 14262, - 14263, - 14264, - 14265, - 14266, - 14267, - 14268, - 14269, - 14270, - 14271, - 14272, - 14273, - 14274, - 14275, - 14276, - 14277, - 14278, - 14279, - 14280, - 14281, - 14282, - 14283, - 14284, - 14285, - 14286, - 14287, - 14288, - 14289, - 14290, - 14291, - 14292, - 14293, - 14294, - 14295, - 14296, - 14297, - 14298, - 14299, - 14300, - 14301, - 14302, - 14303, - 14304, - 14305, - 14306, - 14307, - 14308, - 14309, - 14310, - 14311, - 14312, - 14313, - 14314, - 14315, - 14316, - 14317, - 14318, - 14319, - 14320, - 14321, - 14322, - 14323, - 14324, - 14325, - 14326, - 14327, - 14328, - 14329, - 14330, - 14331, - 14332, - 14333, - 14334, - 14335, - 14336, - 14337, - 14338, - 14339, - 14340, - 14341, - 14342, - 14343, - 14344, - 14345, - 14346, - 14347, - 14348, - 14349, - 14350, - 14351, - 14352, - 14353, - 14354, - 14355, - 14356, - 14357, - 14358, - 14359, - 14360, - 14361, - 14362, - 14363, - 14364, - 14365, - 14366, - 14367, - 14368, - 14369, - 14370, - 14371, - 14372, - 14373, - 14374, - 14375, - 14376, - 14377, - 14378, - 14379, - 14380, - 14381, - 14382, - 14383, - 14384, - 14385, - 14386, - 14387, - 14388, - 14389, - 14390, - 14391, - 14392, - 14393, - 14394, - 14395, - 14396, - 14397, - 14398, - 14399, - 14400, - 14401, - 14402, - 14403, - 14404, - 14405, - 14406, - 14407, - 14408, - 14409, - 14410, - 14411, - 14412, - 14413, - 14414, - 14415, - 14416, - 14417, - 14418, - 14419, - 14426, - 14427, - 14428, - 14429, - 14430, - 14431, - 14438, - 14439, - 14440, - 14441, - 14442, - 14443, - 14444, - 14446, - 14447, - 14448, - 14450, - 14451, - 14452, - 14453, - 14454, - 14455, - 14458, - 14459, - 14460, - 14461, - 14462, - 14463, - 14464, - 14465, - 14466, - 14467, - 14468, - 14470, - 14471, - 14472, - 14473, - 14474, - 14475, - 14476, - 14477, - 14478, - 14479, - 14480, - 14482, - 14483, - 14484, - 14485, - 14486, - 14487, - 14488, - 14489, - 14490, - 14491, - 14492, - 14493, - 14494, - 14495, - 14496, - 14497, - 14498, - 14499, - 14500, - 14501, - 14502, - 14503, - 14504, - 14505, - 14506, - 14507, - 14508, - 14509, - 14510, - 14511, - 14512, - 14513, - 14514, - 14515, - 14516, - 14517, - 14518, - 14519, - 14520, - 14521, - 14522, - 14523, - 14524, - 14525, - 14526, - 14527, - 14528, - 14529, - 14530, - 14531, - 14532, - 14533, - 14534, - 14535, - 14536, - 14537, - 14538, - 14539, - 14540, - 14541, - 14542, - 14543, - 14544, - 14545, - 14546, - 14547, - 14548, - 14549, - 14550, - 14551, - 14552, - 14553, - 14554, - 14555, - 14556, - 14557, - 14558, - 14559, - 14560, - 14561, - 14562, - 14563, - 14564, - 14565, - 14566, - 14567, - 14568, - 14569, - 14570, - 14571, - 14572, - 14573, - 14574, - 14575, - 14576, - 14577, - 14578, - 14579, - 14580, - 14581, - 14582, - 14583, - 14584, - 14585, - 14586, - 14587, - 14588, - 14589, - 14590, - 14591, - 14592, - 14593, - 14594, - 14595, - 14596, - 14597, - 14598, - 14599, - 14600, - 14601, - 14602, - 14603, - 14604, - 14605, - 14606, - 14607, - 14608, - 14609, - 14610, - 14611, - 14612, - 14613, - 14614, - 14615, - 14616, - 14617, - 14618, - 14619, - 14620, - 14621, - 14622, - 14623, - 14624, - 14625, - 14626, - 14627, - 14628, - 14629, - 14630, - 14631, - 14632, - 14633, - 14634, - 14635, - 14636, - 14637, - 14638, - 14639, - 14640, - 14641, - 14642, - 14643, - 14644, - 14645, - 14646, - 14647, - 14648, - 14649, - 14650, - 14651, - 14652, - 14653, - 14654, - 14655, - 14656, - 14657, - 14658, - 14659, - 14660, - 14661, - 14662, - 14663, - 14664, - 14665, - 14666, - 14667, - 14668, - 14669, - 14670, - 14671, - 14672, - 14673, - 14674, - 14675, - 14676, - 14677, - 14678, - 14679, - 14680, - 14681, - 14682, - 14683, - 14684, - 14685, - 14686, - 14687, - 14688, - 14689, - 14690, - 14691, - 14692, - 14693, - 14694, - 14695, - 14701, - 14702, - 14703, - 14704, - 14706, - 14707, - 14709, - 14711, - 14712, - 14713, - 14714, - 14716, - 14717, - 14719, - 14721, - 14722, - 14723, - 14724, - 14726, - 14727, - 14729, - 14731, - 14732, - 14733, - 14734, - 14736, - 14737, - 14739, - 14740, - 14741, - 14742, - 14743, - 14744, - 14745, - 14746, - 14747, - 14749, - 14750, - 14751, - 14752, - 14753, - 14754, - 14755, - 14756, - 14757, - 14759, - 14760, - 14761, - 14762, - 14763, - 14764, - 14765, - 14766, - 14767, - 14769, - 14770, - 14771, - 14772, - 14773, - 14774, - 14775, - 14776, - 14777, - 14778, - 14779, - 14780, - 14781, - 14782, - 14783, - 14784, - 14785, - 14786, - 14787, - 14788, - 14789, - 14790, - 14791, - 14792, - 14793, - 14794, - 14795, - 14796, - 14797, - 14798, - 14799, - 14800, - 14801, - 14802, - 14803, - 14804, - 14805, - 14806, - 14807, - 14808, - 14809, - 14810, - 14811, - 14812, - 14813, - 14814, - 14815, - 14816, - 14817, - 14818, - 14819, - 14820, - 14821, - 14822, - 14823, - 14824, - 14825, - 14826, - 14827, - 14828, - 14829, - 14830, - 14831, - 14832, - 14833, - 14834, - 14835, - 14836, - 14837, - 14838, - 14839, - 14840, - 14841, - 14842, - 14843, - 14844, - 14845, - 14846, - 14847, - 14848, - 14849, - 14850, - 14851, - 14852, - 14853, - 14854, - 14855, - 14856, - 14857, - 14858, - 14859, - 14860, - 14861, - 14862, - 14863, - 14864, - 14865, - 14866, - 14867, - 14868, - 14869, - 14870, - 14871, - 14872, - 14873, - 14874, - 14875, - 14876, - 14877, - 14878, - 14879, - 14880, - 14881, - 14882, - 14883, - 14884, - 14885, - 14886, - 14887, - 14888, - 14889, - 14890, - 14891, - 14892, - 14893, - 14894, - 14895, - 14896, - 14897, - 14898, - 14899, - 14900, - 14901, - 14902, - 14903, - 14904, - 14905, - 14906, - 14907, - 14908, - 14909, - 14910, - 14911, - 14912, - 14913, - 14914, - 14915, - 14916, - 14917, - 14918, - 14919, - 14920, - 14921, - 14922, - 14923, - 14924, - 14925, - 14926, - 14927, - 14928, - 14929, - 14930, - 14931, - 14932, - 14933, - 14934, - 14935, - 14936, - 14937, - 14938, - 14939, - 14940, - 14941, - 14942, - 14943, - 14944, - 14945, - 14946, - 14947, - 14948, - 14949, - 14950, - 14951, - 14952, - 14953, - 14954, - 14955, - 14956, - 14957, - 14958, - 14959, - 14960, - 14961, - 14962, - 14963, - 14964, - 14965, - 14966, - 14967, - 14968, - 14969, - 14970, - 14971, - 14972, - 14973, - 14974, - 14975, - 14976, - 14977, - 14978, - 14979, - 14980, - 14981, - 14982, - 14983, - 14984, - 14985, - 14986, - 14987, - 14988, - 14989, - 14990, - 14991, - 14992, - 14993, - 14994, - 14995, - 14996, - 14997, - 14998, - 14999, - 15000, - 15001, - 15002, - 15003, - 15004, - 15005, - 15006, - 15007, - 15008, - 15009, - 15010, - 15011, - 15012, - 15013, - 15014, - 15015, - 15016, - 15017, - 15018, - 15019, - 15020, - 15021, - 15022, - 15023, - 15024, - 15025, - 15026, - 15027, - 15028, - 15029, - 15030, - 15031, - 15032, - 15033, - 15034, - 15035, - 15036, - 15037, - 15038, - 15039, - 15040, - 15041, - 15042, - 15043, - 15044, - 15045, - 15046, - 15047, - 15048, - 15049, - 15050, - 15051, - 15052, - 15053, - 15054, - 15055, - 15056, - 15057, - 15058, - 15059, - 15060, - 15061, - 15062, - 15063, - 15064, - 15065, - 15066, - 15067, - 15068, - 15069, - 15070, - 15071, - 15072, - 15073, - 15074, - 15075, - 15076, - 15077, - 15078, - 15079, - 15080, - 15081, - 15082, - 15083, - 15084, - 15085, - 15086, - 15087, - 15088, - 15089, - 15090, - 15091, - 15092, - 15093, - 15094, - 15095, - 15096, - 15097, - 15098, - 15099, - 15100, - 15101, - 15102, - 15103, - 15104, - 15105, - 15106, - 15107, - 15108, - 15109, - 15110, - 15111, - 15112, - 15113, - 15114, - 15115, - 15116, - 15117, - 15118, - 15119, - 15120, - 15121, - 15122, - 15123, - 15124, - 15125, - 15126, - 15127, - 15128, - 15129, - 15130, - 15131, - 15132, - 15133, - 15134, - 15135, - 15136, - 15137, - 15138, - 15139, - 15140, - 15141, - 15142, - 15143, - 15144, - 15145, - 15146, - 15147, - 15148, - 15149, - 15150, - 15151, - 15152, - 15153, - 15154, - 15155, - 15156, - 15157, - 15158, - 15159, - 15160, - 15161, - 15162, - 15163, - 15164, - 15165, - 15166, - 15167, - 15168, - 15169, - 15170, - 15171, - 15172, - 15173, - 15174, - 15175, - 15176, - 15177, - 15178, - 15179, - 15180, - 15181, - 15182, - 15183, - 15184, - 15185, - 15186, - 15187, - 15188, - 15189, - 15190, - 15191, - 15192, - 15193, - 15194, - 15195, - 15196, - 15197, - 15198, - 15199, - 15200, - 15201, - 15202, - 15203, - 15204, - 15205, - 15206, - 15207, - 15208, - 15209, - 15210, - 15211, - 15212, - 15213, - 15214, - 15215, - 15216, - 15217, - 15218, - 15219, - 15220, - 15221, - 15222, - 15223, - 15224, - 15225, - 15226, - 15227, - 15228, - 15229, - 15230, - 15231, - 15232, - 15233, - 15234, - 15235, - 15236, - 15237, - 15238, - 15239, - 15240, - 15241, - 15242, - 15243, - 15244, - 15245, - 15246, - 15247, - 15248, - 15249, - 15250, - 15251, - 15252, - 15253, - 15254, - 15255, - 15256, - 15257, - 15258, - 15259, - 15260, - 15261, - 15262, - 15263, - 15264, - 15265, - 15266, - 15267, - 15268, - 15269, - 15270, - 15271, - 15272, - 15273, - 15274, - 15275, - 15276, - 15277, - 15278, - 15279, - 15280, - 15281, - 15282, - 15283, - 15284, - 15285, - 15286, - 15287, - 15288, - 15289, - 15290, - 15291, - 15292, - 15293, - 15294, - 15295, - 15296, - 15297, - 15298, - 15299, - 15300, - 15301, - 15302, - 15303, - 15304, - 15305, - 15306, - 15307, - 15308, - 15309, - 15310, - 15311, - 15312, - 15313, - 15314, - 15315, - 15316, - 15317, - 15318, - 15319, - 15320, - 15321, - 15322, - 15323, - 15324, - 15325, - 15326, - 15327, - 15328, - 15329, - 15330, - 15331, - 15332, - 15333, - 15334, - 15335, - 15336, - 15337, - 15338, - 15339, - 15340, - 15341, - 15342, - 15343, - 15344, - 15345, - 15346, - 15347, - 15348, - 15349, - 15350, - 15351, - 15352, - 15353, - 15354, - 15355, - 15356, - 15357, - 15358, - 15359, - 15360, - 15361, - 15362, - 15363, - 15364, - 15365, - 15366, - 15367, - 15368, - 15369, - 15370, - 15371, - 15372, - 15373, - 15374, - 15375, - 15376, - 15377, - 15378, - 15379, - 15380, - 15381, - 15382, - 15383, - 15384, - 15385, - 15386, - 15387, - 15388, - 15389, - 15390, - 15391, - 15392, - 15393, - 15394, - 15395, - 15396, - 15397, - 15398, - 15399, - 15400, - 15401, - 15402, - 15403, - 15404, - 15405, - 15406, - 15407, - 15408, - 15409, - 15410, - 15411, - 15412, - 15413, - 15414, - 15415, - 15416, - 15417, - 15418, - 15419, - 15420, - 15421, - 15422, - 15423, - 15424, - 15425, - 15426, - 15427, - 15428, - 15429, - 15430, - 15431, - 15432, - 15433, - 15434, - 15435, - 15436, - 15437, - 15438, - 15439, - 15440, - 15441, - 15442, - 15443, - 15444, - 15445, - 15446, - 15447, - 15448, - 15449, - 15450, - 15451, - 15452, - 15453, - 15454, - 15455, - 15456, - 15457, - 15458, - 15459, - 15460, - 15461, - 15462, - 15463, - 15464, - 15465, - 15466, - 15467, - 15468, - 15469, - 15470, - 15471, - 15472, - 15473, - 15474, - 15475, - 15476, - 15477, - 15478, - 15479, - 15480, - 15481, - 15482, - 15483, - 15484, - 15485, - 15486, - 15487, - 15488, - 15489, - 15490, - 15491, - 15492, - 15493, - 15494, - 15495, - 15496, - 15497, - 15498, - 15499, - 15500, - 15501, - 15502, - 15503, - 15504, - 15505, - 15506, - 15507, - 15508, - 15509, - 15510, - 15511, - 15512, - 15513, - 15514, - 15515, - 15516, - 15517, - 15518, - 15519, - 15520, - 15521, - 15522, - 15523, - 15524, - 15525, - 15526, - 15527, - 15528, - 15529, - 15530, - 15531, - 15532, - 15533, - 15534, - 15535, - 15536, - 15537, - 15538, - 15539, - 15540, - 15541, - 15542, - 15543, - 15544, - 15545, - 15546, - 15547, - 15548, - 15549, - 15550, - 15551, - 15552, - 15553, - 15554, - 15555, - 15556, - 15557, - 15558, - 15559, - 15560, - 15561, - 15562, - 15563, - 15564, - 15565, - 15566, - 15567, - 15568, - 15569, - 15570, - 15571, - 15572, - 15573, - 15574, - 15575, - 15576, - 15577, - 15578, - 15579, - 15580, - 15581, - 15582, - 15583, - 15584, - 15585, - 15586, - 15587, - 15588, - 15589, - 15590, - 15591, - 15592, - 15593, - 15594, - 15595, - 15596, - 15597, - 15598, - 15599, - 15600, - 15601, - 15602, - 15603, - 15604, - 15605, - 15606, - 15607, - 15608, - 15609, - 15610, - 15611, - 15612, - 15613, - 15614, - 15615, - 15616, - 15617, - 15618, - 15619, - 15620, - 15621, - 15622, - 15623, - 15624, - 15625, - 15626, - 15627, - 15628, - 15629, - 15630, - 15631, - 15632, - 15633, - 15634, - 15635, - 15636, - 15637, - 15638, - 15639, - 15640, - 15641, - 15642, - 15643, - 15644, - 15645, - 15646, - 15647, - 15648, - 15649, - 15650, - 15651, - 15652, - 15653, - 15654, - 15655, - 15656, - 15657, - 15658, - 15659, - 15660, - 15661, - 15662, - 15663, - 15664, - 15665, - 15666, - 15667, - 15668, - 15669, - 15670, - 15671, - 15672, - 15673, - 15674, - 15675, - 15676, - 15677, - 15678, - 15679, - 15680, - 15681, - 15682, - 15683, - 15684, - 15685, - 15686, - 15687, - 15688, - 15689, - 15690, - 15691, - 15692, - 15693, - 15694, - 15695, - 15696, - 15697, - 15698, - 15699, - 15700, - 15701, - 15702, - 15703, - 15704, - 15705, - 15706, - 15707, - 15708, - 15709, - 15710, - 15711, - 15712, - 15713, - 15714, - 15715, - 15716, - 15717, - 15718, - 15719, - 15720, - 15721, - 15722, - 15723, - 15724, - 15725, - 15726, - 15727, - 15728, - 15729, - 15730, - 15731, - 15732, - 15733, - 15734, - 15735, - 15736, - 15737, - 15738, - 15739, - 15740, - 15741, - 15742, - 15743, - 15744, - 15745, - 15746, - 15747, - 15748, - 15749, - 15750, - 15751, - 15752, - 15753, - 15754, - 15755, - 15756, - 15757, - 15758, - 15759, - 15760, - 15761, - 15762, - 15763, - 15764, - 15765, - 15766, - 15767, - 15768, - 15769, - 15770, - 15771, - 15772, - 15773, - 15774, - 15775, - 15776, - 15777, - 15778, - 15779, - 15780, - 15781, - 15782, - 15783, - 15784, - 15785, - 15786, - 15787, - 15788, - 15789, - 15790, - 15791, - 15792, - 15793, - 15794, - 15795, - 15796, - 15797, - 15798, - 15799, - 15800, - 15801, - 15802, - 15803, - 15804, - 15805, - 15806, - 15807, - 15808, - 15809, - 15810, - 15811, - 15812, - 15813, - 15814, - 15815, - 15816, - 15817, - 15818, - 15819, - 15820, - 15821, - 15822, - 15823, - 15824, - 15825, - 15826, - 15827, - 15828, - 15829, - 15830, - 15831, - 15832, - 15833, - 15834, - 15835, - 15836, - 15837, - 15838, - 15839, - 15840, - 15841, - 15842, - 15843, - 15844, - 15845, - 15846, - 15847, - 15848, - 15849, - 15850, - 15851, - 15852, - 15853, - 15854, - 15855, - 15856, - 15857, - 15858, - 15859, - 15860, - 15861, - 15862, - 15863, - 15864, - 15865, - 15866, - 15867, - 15868, - 15869, - 15870, - 15871, - 15872, - 15873, - 15874, - 15875, - 15876, - 15877, - 15878, - 15879, - 15880, - 15881, - 15882, - 15883, - 15884, - 15885, - 15886, - 15887, - 15888, - 15889, - 15890, - 15891, - 15892, - 15893, - 15894, - 15895, - 15896, - 15897, - 15898, - 15899, - 15900, - 15901, - 15902, - 15903, - 15904, - 15905, - 15906, - 15907, - 15908, - 15909, - 15910, - 15911, - 15912, - 15913, - 15914, - 15915, - 15916, - 15917, - 15918, - 15919, - 15920, - 15921, - 15922, - 15923, - 15924, - 15925, - 15926, - 15927, - 15928, - 15929, - 15930, - 15931, - 15932, - 15933, - 15934, - 15935, - 15936, - 15937, - 15938, - 15939, - 15940, - 15941, - 15942, - 15943, - 15944, - 15945, - 15946, - 15947, - 15948, - 15949, - 15950, - 15951, - 15952, - 15953, - 15954, - 15955, - 15956, - 15957, - 15958, - 15959, - 15960, - 15961, - 15962, - 15963, - 15964, - 15965, - 15966, - 15967, - 15968, - 15969, - 15970, - 15971, - 15972, - 15973, - 15974, - 15975, - 15976, - 15977, - 15978, - 15979, - 15980, - 15981, - 15982, - 15983, - 15984, - 15985, - 15986, - 15987, - 15988, - 15989, - 15990, - 15991, - 15992, - 15993, - 15994, - 15995, - 15996, - 15997, - 15998, - 15999, - 16000, - 16001, - 16002, - 16003, - 16004, - 16005, - 16006, - 16007, - 16008, - 16009, - 16010, - 16011, - 16012, - 16013, - 16014, - 16015, - 16016, - 16017, - 16018, - 16019, - 16020, - 16021, - 16022, - 16023, - 16024, - 16025, - 16026, - 16027, - 16028, - 16029, - 16030, - 16031, - 16032, - 16033, - 16034, - 16035, - 16036, - 16037, - 16038, - 16039, - 16040, - 16041, - 16042, - 16043, - 16044, - 16045, - 16046, - 16047, - 16048, - 16049, - 16050, - 16051, - 16052, - 16053, - 16054, - 16055, - 16056, - 16057, - 16058, - 16059, - 16060, - 16061, - 16062, - 16063, - 16064, - 16065, - 16066, - 16067, - 16068, - 16069, - 16070, - 16071, - 16072, - 16073, - 16074, - 16075, - 16076, - 16077, - 16078, - 16079, - 16080, - 16081, - 16082, - 16083, - 16084, - 16085, - 16086, - 16087, - 16088, - 16089, - 16090, - 16091, - 16092, - 16093, - 16094, - 16095, - 16096, - 16097, - 16098, - 16099, - 16100, - 16101, - 16102, - 16103, - 16104, - 16105, - 16106, - 16107, - 16108, - 16109, - 16110, - 16111, - 16112, - 16113, - 16114, - 16115, - 16116, - 16117, - 16118, - 16119, - 16120, - 16121, - 16122, - 16123, - 16124, - 16125, - 16126, - 16127, - 16128, - 16129, - 16130, - 16131, - 16132, - 16133, - 16134, - 16135, - 16136, - 16137, - 16138, - 16139, - 16140, - 16141, - 16142, - 16143, - 16144, - 16145, - 16146, - 16147, - 16148, - 16149, - 16150, - 16151, - 16152, - 16153, - 16154, - 16155, - 16156, - 16157, - 16158, - 16159, - 16160, - 16161, - 16162, - 16163, - 16164, - 16165, - 16166, - 16167, - 16168, - 16169, - 16170, - 16171, - 16172, - 16173, - 16174, - 16175, - 16176, - 16177, - 16178, - 16179, - 16180, - 16181, - 16182, - 16183, - 16184, - 16185, - 16186, - 16187, - 16188, - 16189, - 16190, - 16191, - 16192, - 16193, - 16194, - 16195, - 16196, - 16197, - 16198, - 16199, - 16200, - 16201, - 16202, - 16203, - 16204, - 16205, - 16206, - 16207, - 16208, - 16209, - 16210, - 16211, - 16212, - 16213, - 16214, - 16215, - 16216, - 16217, - 16218, - 16219, - 16220, - 16221, - 16222, - 16223, - 16224, - 16225, - 16226, - 16227, - 16228, - 16229, - 16230, - 16231, - 16232, - 16233, - 16234, - 16235, - 16236, - 16237, - 16238, - 16239, - 16240, - 16241, - 16242, - 16243, - 16244, - 16245, - 16246, - 16247, - 16248, - 16249, - 16250, - 16251, - 16252, - 16253, - 16254, - 16255, - 16256, - 16257, - 16258, - 16259, - 16260, - 16261, - 16262, - 16263, - 16264, - 16265, - 16266, - 16267, - 16268, - 16269, - 16270, - 16271, - 16272, - 16273, - 16274, - 16275, - 16276, - 16277, - 16278, - 16279, - 16280, - 16281, - 16282, - 16283, - 16284, - 16285, - 16286, - 16287, - 16288, - 16289, - 16290, - 16291, - 16292, - 16293, - 16294, - 16295, - 16296, - 16297, - 16298, - 16299, - 16300, - 16301, - 16302, - 16303, - 16304, - 16305, - 16306, - 16307, - 16308, - 16309, - 16310, - 16311, - 16312, - 16313, - 16314, - 16315, - 16316, - 16317, - 16318, - 16319, - 16320, - 16321, - 16322, - 16323, - 16324, - 16325, - 16326, - 16327, - 16328, - 16329, - 16330, - 16331, - 16332, - 16333, - 16334, - 16335, - 16336, - 16337, - 16338, - 16339, - 16340, - 16341, - 16342, - 16343, - 16344, - 16345, - 16346, - 16347, - 16348, - 16349, - 16350, - 16351, - 16352, - 16353, - 16354, - 16355, - 16356, - 16357, - 16358, - 16359, - 16360, - 16361, - 16362, - 16363, - 16364, - 16365, - 16366, - 16367, - 16368, - 16369, - 16370, - 16371, - 16372, - 16373, - 16374, - 16375, - 16376, - 16377, - 16378, - 16379, - 16380, - 16381, - 16382, - 16383, - 16384, - 16385, - 16386, - 16387, - 16388, - 16389, - 16390, - 16391, - 16392, - 16393, - 16394, - 16395, - 16396, - 16397, - 16398, - 16399, - 16400, - 16401, - 16402, - 16403, - 16404, - 16405, - 16406, - 16407, - 16408, - 16409, - 16410, - 16411, - 16412, - 16413, - 16414, - 16415, - 16416, - 16417, - 16418, - 16419, - 16420, - 16421, - 16422, - 16423, - 16424, - 16425, - 16426, - 16427, - 16428, - 16429, - 16430, - 16431, - 16432, - 16433, - 16434, - 16435, - 16436, - 16437, - 16438, - 16439, - 16440, - 16441, - 16442, - 16443, - 16444, - 16445, - 16446, - 16447, - 16448, - 16449, - 16450, - 16451, - 16452, - 16453, - 16454, - 16455, - 16456, - 16457, - 16458, - 16459, - 16460, - 16461, - 16462, - 16463, - 16464, - 16465, - 16466, - 16467, - 16468, - 16469, - 16470, - 16471, - 16472, - 16473, - 16474, - 16475, - 16476, - 16477, - 16478, - 16479, - 16480, - 16481, - 16482, - 16483, - 16484, - 16485, - 16486, - 16487, - 16488, - 16489, - 16490, - 16491, - 16492, - 16493, - 16494, - 16495, - 16496, - 16497, - 16498, - 16499, - 16500, - 16501, - 16502, - 16503, - 16504, - 16505, - 16506, - 16507, - 16508, - 16509, - 16510, - 16511, - 16512, - 16513, - 16514, - 16515, - 16516, - 16517, - 16518, - 16519, - 16520, - 16521, - 16522, - 16523, - 16524, - 16525, - 16526, - 16527, - 16528, - 16529, - 16530, - 16531, - 16532, - 16533, - 16534, - 16535, - 16536, - 16537, - 16538, - 16539, - 16540, - 16541, - 16542, - 16543, - 16544, - 16545, - 16546, - 16547, - 16548, - 16549, - 16550, - 16551, - 16552, - 16553, - 16554, - 16555, - 16556, - 16557, - 16558, - 16559, - 16560, - 16561, - 16562, - 16563, - 16564, - 16565, - 16566, - 16567, - 16568, - 16569, - 16570, - 16571, - 16572, - 16573, - 16574, - 16575, - 16576, - 16577, - 16578, - 16579, - 16580, - 16581, - 16582, - 16583, - 16584, - 16585, - 16586, - 16587, - 16588, - 16589, - 16590, - 16591, - 16592, - 16593, - 16594, - 16595, - 16596, - 16597, - 16598, - 16599, - 16600, - 16601, - 16602, - 16603, - 16604, - 16605, - 16606, - 16607, - 16608, - 16609, - 16610, - 16611, - 16612, - 16613, - 16614, - 16615, - 16616, - 16617, - 16618, - 16619, - 16620, - 16621, - 16622, - 16623, - 16624, - 16625, - 16626, - 16627, - 16628, - 16629, - 16630, - 16631, - 16632, - 16633, - 16634, - 16635, - 16636, - 16637, - 16638, - 16639, - 16640, - 16641, - 16642, - 16643, - 16644, - 16645, - 16646, - 16647, - 16648, - 16649, - 16650, - 16651, - 16652, - 16653, - 16654, - 16655, - 16656, - 16657, - 16658, - 16659, - 16660, - 16661, - 16662, - 16663, - 16664, - 16665, - 16666, - 16667, - 16668, - 16669, - 16670, - 16671, - 16672, - 16673, - 16674, - 16675, - 16676, - 16677, - 16678, - 16679, - 16680, - 16681, - 16682, - 16683, - 16684, - 16685, - 16686, - 16687, - 16688, - 16689, - 16690, - 16691, - 16692, - 16693, - 16694, - 16695, - 16696, - 16697, - 16698, - 16699, - 16700, - 16701, - 16702, - 16703, - 16704, - 16705, - 16706, - 16707, - 16708, - 16709, - 16710, - 16711, - 16712, - 16713, - 16714, - 16715, - 16716, - 16717, - 16718, - 16719, - 16720, - 16721, - 16722, - 16723, - 16724, - 16725, - 16726, - 16727, - 16728, - 16729, - 16730, - 16731, - 16732, - 16733, - 16734, - 16735, - 16736, - 16737, - 16738, - 16739, - 16740, - 16741, - 16742, - 16743, - 16744, - 16745, - 16746, - 16747, - 16748, - 16749, - 16750, - 16751, - 16752, - 16753, - 16754, - 16755, - 16756, - 16757, - 16758, - 16759, - 16760, - 16761, - 16762, - 16763, - 16764, - 16765, - 16766, - 16767, - 16768, - 16769, - 16770, - 16771, - 16772, - 16773, - 16774, - 16775, - 16776, - 16777, - 16778, - 16779, - 16780, - 16781, - 16782, - 16783, - 16784, - 16785, - 16786, - 16787, - 16788, - 16789, - 16790, - 16791, - 16792, - 16793, - 16794, - 16795, - 16796, - 16797, - 16798, - 16799, - 16800, - 16801, - 16802, - 16803, - 16804, - 16805, - 16806, - 16807, - 16808, - 16809, - 16810, - 16811, - 16812, - 16813, - 16814, - 16815, - 16816, - 16817, - 16818, - 16819, - 16820, - 16821, - 16822, - 16823, - 16824, - 16825, - 16826, - 16827, - 16828, - 16829, - 16830, - 16831, - 16832, - 16833, - 16834, - 16835, - 16836, - 16837, - 16838, - 16839, - 16840, - 16841, - 16842, - 16843, - 16844, - 16845, - 16846, - 16847, - 16848, - 16849, - 16850, - 16851, - 16852, - 16853, - 16854, - 16855, - 16856, - 16857, - 16858, - 16859, - 16860, - 16861, - 16862, - 16863, - 16864, - 16865, - 16866, - 16867, - 16868, - 16869, - 16870, - 16871, - 16872, - 16873, - 16874, - 16875, - 16876, - 16877, - 16878, - 16879, - 16880, - 16881, - 16882, - 16883, - 16884, - 16885, - 16886, - 16887, - 16888, - 16889, - 16890, - 16891, - 16892, - 16893, - 16894, - 16895, - 16896, - 16897, - 16898, - 16899, - 16900, - 16901, - 16902, - 16903, - 16904, - 16905, - 16906, - 16907, - 16908, - 16909, - 16910, - 16911, - 16912, - 16913, - 16914, - 16915, - 16916, - 16917, - 16918, - 16919, - 16920, - 16921, - 16922, - 16923, - 16924, - 16925, - 16926, - 16927, - 16928, - 16929, - 16930, - 16931, - 16932, - 16933, - 16934, - 16935, - 16936, - 16937, - 16938, - 16939, - 16940, - 16941, - 16942, - 16943, - 16944, - 16945, - 16946, - 16947, - 16948, - 16949, - 16950, - 16951, - 16952, - 16953, - 16954, - 16955, - 16956, - 16957, - 16958, - 16959, - 16960, - 16961, - 16962, - 16963, - 16964, - 16965, - 16966, - 16967, - 16968, - 16969, - 16970, - 16971, - 16972, - 16973, - 16974, - 16975, - 16976, - 16977, - 16978, - 16979, - 16980, - 16981, - 16982, - 16983, - 16984, - 16985, - 16986, - 16987, - 16988, - 16989, - 16990, - 16991, - 16992, - 16993, - 16994, - 16995, - 16996, - 16997, - 16998, - 16999, - 17000, - 17001, - 17002, - 17003, - 17004, - 17005, - 17006, - 17007, - 17008, - 17009, - 17010, - 17011, - 17012, - 17013, - 17014, - 17015, - 17016, - 17017, - 17018, - 17019, - 17020, - 17021, - 17022, - 17023, - 17024, - 17025, - 17026, - 17027, - 17028, - 17029, - 17030, - 17031, - 17032, - 17033, - 17034, - 17035, - 17036, - 17037, - 17038, - 17039, - 17040, - 17041, - 17042, - 17043, - 17044, - 17045, - 17046, - 17047, - 17048, - 17049, - 17050, - 17051, - 17052, - 17053, - 17054, - 17055, - 17056, - 17057, - 17058, - 17059, - 17060, - 17061, - 17062, - 17063, - 17064, - 17065, - 17066, - 17067, - 17068, - 17069, - 17070, - 17071, - 17072, - 17073, - 17074, - 17075, - 17076, - 17077, - 17078, - 17079, - 17080, - 17081, - 17082, - 17083, - 17084, - 17085, - 17086, - 17087, - 17088, - 17089, - 17090, - 17091, - 17092, - 17093, - 17094, - 17095, - 17096, - 17097, - 17098, - 17099, - 17100, - 17101, - 17102, - 17103, - 17104, - 17105, - 17106, - 17107, - 17108, - 17109, - 17110, - 17111, - 17112, - 17113, - 17114, - 17115, - 17116, - 17117, - 17118, - 17119, - 17120, - 17121, - 17122, - 17123, - 17124, - 17125, - 17126, - 17127, - 17128, - 17129, - 17130, - 17131, - 17132, - 17133, - 17134, - 17135, - 17136, - 17137, - 17138, - 17139, - 17140, - 17141, - 17142, - 17143, - 17144, - 17145, - 17146, - 17147 - ], - "residual_rank_families": { - "24": [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 27, - 28, - 29, - 30, - 31, - 32, - 33, - 34, - 35, - 36, - 37, - 38, - 39, - 40, - 41, - 42, - 43, - 44, - 46, - 47, - 48, - 49, - 50, - 51, - 52, - 53, - 54, - 55, - 56, - 57, - 59, - 60, - 61, - 62, - 63, - 64, - 65, - 66, - 67, - 68, - 69, - 70, - 71, - 72, - 73, - 74, - 75, - 76, - 78, - 79, - 80, - 81, - 82, - 83, - 84, - 85, - 86, - 87, - 88, - 89, - 91, - 92, - 93, - 94, - 95, - 96, - 97, - 98, - 99, - 100, - 101, - 102, - 103, - 104, - 105, - 106, - 107, - 108, - 110, - 111, - 112, - 113, - 114, - 115, - 116, - 117, - 118, - 119, - 120, - 121, - 123, - 124, - 125, - 126, - 127, - 128, - 129, - 130, - 131, - 132, - 133, - 134, - 135, - 136, - 137, - 138, - 139, - 140, - 142, - 143, - 144, - 145, - 146, - 147, - 148, - 149, - 150, - 151, - 152, - 153, - 155, - 156, - 157, - 158, - 159, - 160, - 161, - 162, - 163, - 164, - 165, - 166, - 167, - 168, - 169, - 170, - 171, - 172, - 174, - 175, - 176, - 177, - 178, - 179, - 180, - 181, - 182, - 183, - 184, - 185, - 187, - 188, - 189, - 190, - 191, - 192, - 193, - 194, - 195, - 196, - 197, - 198, - 199, - 200, - 201, - 202, - 203, - 204, - 206, - 207, - 208, - 209, - 210, - 211, - 212, - 213, - 214, - 215, - 216, - 217, - 219, - 220, - 221, - 222, - 223, - 224, - 225, - 226, - 227, - 228, - 229, - 230, - 231, - 232, - 233, - 234, - 235, - 236, - 238, - 239, - 240, - 241, - 242, - 243, - 244, - 245, - 246, - 247, - 248, - 249, - 251, - 252, - 253, - 254, - 255, - 256, - 257, - 258, - 259, - 260, - 261, - 262, - 263, - 264, - 265, - 266, - 267, - 268, - 270, - 271, - 272, - 273, - 274, - 275, - 276, - 277, - 278, - 279, - 280, - 281, - 283, - 284, - 285, - 286, - 287, - 288, - 289, - 290, - 291, - 292, - 293, - 294, - 295, - 296, - 297, - 298, - 299, - 300, - 302, - 303, - 304, - 305, - 306, - 307, - 308, - 309, - 310, - 311, - 312, - 313, - 315, - 316, - 317, - 318, - 319, - 320, - 321, - 322, - 323, - 324, - 325, - 326, - 327, - 328, - 329, - 330, - 331, - 332, - 334, - 335, - 336, - 337, - 338, - 339, - 340, - 341, - 342, - 343, - 344, - 345, - 347, - 348, - 349, - 350, - 351, - 352, - 353, - 354, - 355, - 356, - 357, - 358, - 359, - 360, - 361, - 362, - 363, - 364, - 366, - 367, - 368, - 369, - 370, - 371, - 372, - 373, - 374, - 375, - 376, - 377, - 379, - 380, - 381, - 382, - 383, - 384, - 385, - 386, - 387, - 388, - 389, - 390, - 391, - 392, - 393, - 394, - 395, - 396, - 398, - 399, - 400, - 401, - 402, - 403, - 404, - 405, - 406, - 407, - 408, - 409, - 411, - 412, - 413, - 414, - 415, - 416, - 417, - 418, - 419, - 420, - 421, - 422, - 423, - 424, - 425, - 426, - 427, - 428, - 430, - 431, - 432, - 433, - 434, - 435, - 436, - 437, - 438, - 439, - 440, - 441, - 443, - 444, - 445, - 446, - 447, - 448, - 449, - 450, - 451, - 452, - 453, - 454, - 455, - 456, - 457, - 458, - 459, - 460, - 462, - 463, - 464, - 465, - 466, - 467, - 468, - 469, - 470, - 471, - 472, - 473, - 475, - 476, - 477, - 478, - 479, - 480, - 481, - 482, - 483, - 484, - 485, - 486, - 487, - 488, - 489, - 490, - 491, - 492, - 494, - 495, - 496, - 497, - 498, - 499, - 500, - 501, - 502, - 503, - 504, - 505, - 507, - 508, - 509, - 510, - 511, - 512, - 513, - 514, - 515, - 516, - 517, - 518, - 519, - 520, - 521, - 522, - 523, - 524, - 526, - 527, - 528, - 529, - 530, - 531, - 532, - 533, - 534, - 535, - 536, - 537, - 539, - 540, - 541, - 542, - 543, - 544, - 545, - 546, - 547, - 548, - 549, - 550, - 551, - 552, - 553, - 554, - 555, - 556, - 558, - 559, - 560, - 561, - 562, - 563, - 564, - 565, - 566, - 567, - 568, - 569, - 571, - 572, - 573, - 574, - 575, - 576, - 577, - 578, - 579, - 580, - 581, - 582, - 583, - 584, - 585, - 586, - 587, - 588, - 590, - 591, - 592, - 593, - 594, - 595, - 596, - 597, - 598, - 599, - 600, - 601, - 603, - 604, - 605, - 606, - 607, - 608, - 609, - 610, - 611, - 612, - 613, - 614, - 615, - 616, - 617, - 618, - 619, - 620, - 622, - 623, - 624, - 625, - 626, - 627, - 628, - 629, - 630, - 631, - 632, - 633, - 635, - 636, - 637, - 638, - 639, - 640, - 641, - 642, - 643, - 644, - 645, - 646, - 647, - 648, - 649, - 650, - 651, - 652, - 654, - 655, - 656, - 657, - 658, - 659, - 660, - 661, - 662, - 663, - 664, - 665, - 667, - 668, - 669, - 670, - 671, - 672, - 673, - 674, - 675, - 676, - 677, - 678, - 679, - 680, - 681, - 682, - 683, - 684, - 686, - 687, - 688, - 689, - 690, - 691, - 692, - 693, - 694, - 695, - 696, - 697, - 699, - 700, - 701, - 702, - 703, - 704, - 705, - 706, - 707, - 708, - 709, - 710, - 711, - 712, - 713, - 714, - 715, - 716, - 718, - 719, - 720, - 721, - 722, - 723, - 724, - 725, - 726, - 727, - 728, - 729, - 731, - 732, - 733, - 734, - 735, - 736, - 737, - 738, - 739, - 740, - 741, - 742, - 743, - 744, - 745, - 746, - 747, - 748, - 750, - 751, - 752, - 753, - 754, - 755, - 756, - 757, - 758, - 759, - 760, - 761, - 763, - 764, - 765, - 766, - 767, - 768, - 769, - 770, - 771, - 772, - 773, - 774, - 775, - 776, - 777, - 778, - 779, - 780, - 782, - 783, - 784, - 785, - 786, - 787, - 788, - 789, - 790, - 791, - 792, - 793, - 795, - 796, - 797, - 798, - 799, - 800, - 801, - 802, - 803, - 804, - 805, - 806, - 807, - 808, - 809, - 810, - 811, - 812, - 814, - 815, - 816, - 817, - 818, - 819, - 820, - 821, - 822, - 823, - 824, - 825, - 827, - 828, - 829, - 830, - 831, - 832, - 833, - 834, - 835, - 836, - 837, - 838, - 839, - 840, - 841, - 842, - 843, - 844, - 846, - 847, - 848, - 849, - 850, - 851, - 852, - 853, - 854, - 855, - 856, - 857, - 859, - 860, - 861, - 862, - 863, - 864, - 865, - 866, - 867, - 868, - 869, - 870, - 871, - 872, - 873, - 874, - 875, - 876, - 878, - 879, - 880, - 881, - 882, - 883, - 884, - 885, - 886, - 887, - 888, - 889, - 891, - 892, - 893, - 894, - 895, - 896, - 897, - 898, - 899, - 900, - 901, - 902, - 903, - 904, - 905, - 906, - 907, - 908, - 910, - 911, - 912, - 913, - 914, - 915, - 916, - 917, - 918, - 919, - 920, - 921, - 923, - 924, - 925, - 926, - 927, - 928, - 929, - 930, - 931, - 932, - 933, - 934, - 935, - 936, - 937, - 938, - 939, - 940, - 942, - 943, - 944, - 945, - 946, - 947, - 948, - 949, - 950, - 951, - 952, - 953, - 955, - 956, - 957, - 958, - 959, - 960, - 961, - 962, - 963, - 964, - 965, - 966, - 967, - 968, - 969, - 970, - 971, - 972, - 974, - 975, - 976, - 977, - 978, - 979, - 980, - 981, - 982, - 983, - 984, - 985, - 987, - 988, - 989, - 990, - 991, - 992, - 993, - 994, - 995, - 996, - 997, - 998, - 999, - 1000, - 1001, - 1002, - 1003, - 1004, - 1006, - 1007, - 1008, - 1009, - 1010, - 1011, - 1012, - 1013, - 1014, - 1015, - 1016, - 1017, - 1019, - 1020, - 1021, - 1022, - 1023, - 1024, - 1025, - 1026, - 1027, - 1028, - 1029, - 1030, - 1031, - 1032, - 1033, - 1034, - 1035, - 1036, - 1038, - 1039, - 1040, - 1041, - 1042, - 1043, - 1044, - 1045, - 1046, - 1047, - 1048, - 1049, - 1051, - 1052, - 1053, - 1054, - 1055, - 1056, - 1057, - 1058, - 1059, - 1060, - 1061, - 1062, - 1063, - 1064, - 1065, - 1066, - 1067, - 1068, - 1070, - 1071, - 1072, - 1073, - 1074, - 1075, - 1076, - 1077, - 1078, - 1079, - 1080, - 1081, - 1083, - 1084, - 1085, - 1086, - 1087, - 1088, - 1089, - 1090, - 1091, - 1092, - 1093, - 1094, - 1095, - 1096, - 1097, - 1098, - 1099, - 1100, - 1102, - 1103, - 1104, - 1105, - 1106, - 1107, - 1108, - 1109, - 1110, - 1111, - 1112, - 1113, - 1115, - 1116, - 1117, - 1118, - 1119, - 1120, - 1121, - 1122, - 1123, - 1124, - 1125, - 1126, - 1127, - 1128, - 1129, - 1130, - 1131, - 1132, - 1134, - 1135, - 1136, - 1137, - 1138, - 1139, - 1140, - 1141, - 1142, - 1143, - 1144, - 1145, - 1147, - 1148, - 1149, - 1150, - 1151, - 1152, - 1153, - 1154, - 1155, - 1156, - 1157, - 1158, - 1159, - 1160, - 1161, - 1162, - 1163, - 1164, - 1166, - 1167, - 1168, - 1169, - 1170, - 1171, - 1172, - 1173, - 1174, - 1175, - 1176, - 1177, - 1179, - 1180, - 1181, - 1182, - 1183, - 1184, - 1185, - 1186, - 1187, - 1188, - 1189, - 1190, - 1191, - 1192, - 1193, - 1194, - 1195, - 1196, - 1198, - 1199, - 1200, - 1201, - 1202, - 1203, - 1204, - 1205, - 1206, - 1207, - 1208, - 1209, - 1211, - 1212, - 1213, - 1214, - 1215, - 1216, - 1217, - 1218, - 1219, - 1220, - 1221, - 1222, - 1223, - 1224, - 1225, - 1226, - 1227, - 1228, - 1230, - 1231, - 1232, - 1233, - 1234, - 1235, - 1236, - 1237, - 1238, - 1239, - 1240, - 1241, - 1243, - 1244, - 1245, - 1246, - 1247, - 1248, - 1249, - 1250, - 1251, - 1252, - 1253, - 1254, - 1255, - 1256, - 1257, - 1258, - 1259, - 1260, - 1262, - 1263, - 1264, - 1265, - 1266, - 1267, - 1268, - 1269, - 1270, - 1271, - 1272, - 1273, - 1275, - 1276, - 1277, - 1278, - 1279, - 1280, - 1281, - 1282, - 1283, - 1284, - 1285, - 1286, - 1287, - 1288, - 1289, - 1290, - 1291, - 1292, - 1294, - 1295, - 1296, - 1297, - 1298, - 1299, - 1300, - 1301, - 1302, - 1303, - 1304, - 1305, - 1307, - 1308, - 1309, - 1310, - 1311, - 1312, - 1313, - 1314, - 1315, - 1316, - 1317, - 1318, - 1319, - 1320, - 1321, - 1322, - 1323, - 1324, - 1326, - 1327, - 1328, - 1329, - 1330, - 1331, - 1332, - 1333, - 1334, - 1335, - 1336, - 1337, - 1339, - 1340, - 1341, - 1342, - 1343, - 1344, - 1345, - 1346, - 1347, - 1348, - 1349, - 1350, - 1351, - 1352, - 1353, - 1354, - 1355, - 1356, - 1358, - 1359, - 1360, - 1361, - 1362, - 1363, - 1364, - 1365, - 1366, - 1367, - 1368, - 1369, - 1371, - 1372, - 1373, - 1374, - 1375, - 1376, - 1377, - 1378, - 1379, - 1380, - 1381, - 1382, - 1383, - 1384, - 1385, - 1386, - 1387, - 1388, - 1390, - 1391, - 1392, - 1393, - 1394, - 1395, - 1396, - 1397, - 1398, - 1399, - 1400, - 1401, - 1403, - 1404, - 1405, - 1406, - 1407, - 1408, - 1409, - 1410, - 1411, - 1412, - 1413, - 1414, - 1415, - 1416, - 1417, - 1418, - 1419, - 1420, - 1422, - 1423, - 1424, - 1425, - 1426, - 1427, - 1428, - 1429, - 1430, - 1431, - 1432, - 1433, - 1435, - 1436, - 1437, - 1438, - 1439, - 1440, - 1441, - 1442, - 1443, - 1444, - 1445, - 1446, - 1447, - 1448, - 1449, - 1450, - 1451, - 1452, - 1454, - 1455, - 1456, - 1457, - 1458, - 1459, - 1460, - 1461, - 1462, - 1463, - 1464, - 1465, - 1467, - 1468, - 1469, - 1470, - 1471, - 1472, - 1473, - 1474, - 1475, - 1476, - 1477, - 1478, - 1479, - 1480, - 1481, - 1482, - 1483, - 1484, - 1486, - 1487, - 1488, - 1489, - 1490, - 1491, - 1492, - 1493, - 1494, - 1495, - 1496, - 1497, - 1499, - 1500, - 1501, - 1502, - 1503, - 1504, - 1505, - 1506, - 1507, - 1508, - 1509, - 1510, - 1511, - 1512, - 1513, - 1514, - 1515, - 1516, - 1518, - 1519, - 1520, - 1521, - 1522, - 1523, - 1524, - 1525, - 1526, - 1527, - 1528, - 1529, - 1531, - 1532, - 1533, - 1534, - 1535, - 1536, - 1537, - 1538, - 1539, - 1540, - 1541, - 1542, - 1543, - 1544, - 1545, - 1546, - 1547, - 1548, - 1550, - 1551, - 1552, - 1553, - 1554, - 1555, - 1556, - 1557, - 1558, - 1559, - 1560, - 1561, - 1563, - 1564, - 1565, - 1566, - 1567, - 1568, - 1569, - 1570, - 1571, - 1572, - 1573, - 1574, - 1575, - 1576, - 1577, - 1578, - 1579, - 1580, - 1582, - 1583, - 1584, - 1585, - 1586, - 1587, - 1588, - 1589, - 1590, - 1591, - 1592, - 1593, - 1595, - 1596, - 1597, - 1598, - 1599, - 1600, - 1601, - 1602, - 1603, - 1604, - 1605, - 1606, - 1607, - 1608, - 1609, - 1610, - 1611, - 1612, - 1614, - 1615, - 1616, - 1617, - 1618, - 1619, - 1620, - 1621, - 1622, - 1623, - 1624, - 1625, - 1627, - 1628, - 1629, - 1630, - 1631, - 1632, - 1633, - 1634, - 1635, - 1636, - 1637, - 1638, - 1639, - 1640, - 1641, - 1642, - 1643, - 1644, - 1646, - 1647, - 1648, - 1649, - 1650, - 1651, - 1652, - 1653, - 1654, - 1655, - 1656, - 1657, - 1659, - 1660, - 1661, - 1662, - 1663, - 1664, - 1665, - 1666, - 1667, - 1668, - 1669, - 1670, - 1671, - 1672, - 1673, - 1674, - 1675, - 1676, - 1678, - 1679, - 1680, - 1681, - 1682, - 1683, - 1684, - 1685, - 1686, - 1687, - 1688, - 1689, - 1691, - 1692, - 1693, - 1694, - 1695, - 1696, - 1697, - 1698, - 1699, - 1700, - 1701, - 1702, - 1703, - 1704, - 1705, - 1706, - 1707, - 1708, - 1710, - 1711, - 1712, - 1713, - 1714, - 1715, - 1716, - 1717, - 1718, - 1719, - 1720, - 1721, - 1723, - 1724, - 1725, - 1726, - 1727, - 1728, - 1729, - 1730, - 1731, - 1732, - 1733, - 1734, - 1735, - 1736, - 1737, - 1738, - 1739, - 1740, - 1742, - 1743, - 1744, - 1745, - 1746, - 1747, - 1748, - 1749, - 1750, - 1751, - 1752, - 1753, - 1755, - 1756, - 1757, - 1758, - 1759, - 1760, - 1761, - 1762, - 1763, - 1764, - 1765, - 1766, - 1767, - 1768, - 1769, - 1770, - 1771, - 1772, - 1774, - 1775, - 1776, - 1777, - 1778, - 1779, - 1780, - 1781, - 1782, - 1783, - 1784, - 1785, - 1787, - 1788, - 1789, - 1790, - 1791, - 1792, - 1793, - 1794, - 1795, - 1796, - 1797, - 1798, - 1799, - 1800, - 1801, - 1802, - 1803, - 1804, - 1806, - 1807, - 1808, - 1809, - 1810, - 1811, - 1812, - 1813, - 1814, - 1815, - 1816, - 1817, - 1819, - 1820, - 1821, - 1822, - 1823, - 1824, - 1825, - 1826, - 1827, - 1828, - 1829, - 1830, - 1831, - 1832, - 1833, - 1834, - 1835, - 1836, - 1838, - 1839, - 1840, - 1841, - 1842, - 1843, - 1844, - 1845, - 1846, - 1847, - 1848, - 1849, - 1851, - 1852, - 1853, - 1854, - 1855, - 1856, - 1857, - 1858, - 1859, - 1860, - 1861, - 1862, - 1863, - 1864, - 1865, - 1866, - 1867, - 1868, - 1870, - 1871, - 1872, - 1873, - 1874, - 1875, - 1876, - 1877, - 1878, - 1879, - 1880, - 1881, - 1883, - 1884, - 1885, - 1886, - 1887, - 1888, - 1889, - 1890, - 1891, - 1892, - 1893, - 1894, - 1895, - 1896, - 1897, - 1898, - 1899, - 1900, - 1902, - 1903, - 1904, - 1905, - 1906, - 1907, - 1908, - 1909, - 1910, - 1911, - 1912, - 1913, - 1915, - 1916, - 1917, - 1918, - 1919, - 1920, - 1921, - 1922, - 1923, - 1924, - 1925, - 1926, - 1927, - 1928, - 1929, - 1930, - 1931, - 1932, - 1934, - 1935, - 1936, - 1937, - 1938, - 1939, - 1940, - 1941, - 1942, - 1943, - 1944, - 1945, - 1947, - 1948, - 1949, - 1950, - 1951, - 1952, - 1953, - 1954, - 1955, - 1956, - 1957, - 1958, - 1959, - 1960, - 1961, - 1962, - 1963, - 1964, - 1966, - 1967, - 1968, - 1969, - 1970, - 1971, - 1972, - 1973, - 1974, - 1975, - 1976, - 1977, - 1979, - 1980, - 1981, - 1982, - 1983, - 1984, - 1985, - 1986, - 1987, - 1988, - 1989, - 1990, - 1991, - 1992, - 1993, - 1994, - 1995, - 1996, - 1998, - 1999, - 2000, - 2001, - 2002, - 2003, - 2004, - 2005, - 2006, - 2007, - 2008, - 2009, - 2011, - 2012, - 2013, - 2014, - 2015, - 2016, - 2017, - 2018, - 2019, - 2020, - 2021, - 2022, - 2023, - 2024, - 2025, - 2026, - 2027, - 2028, - 2030, - 2031, - 2032, - 2033, - 2034, - 2035, - 2036, - 2037, - 2038, - 2039, - 2040, - 2041, - 2043, - 2044, - 2045, - 2046, - 2047, - 2048, - 2049, - 2050, - 2051, - 2052, - 2053, - 2054, - 2055, - 2056, - 2057, - 2058, - 2059, - 2060, - 2062, - 2063, - 2064, - 2065, - 2066, - 2067, - 2068, - 2069, - 2070, - 2071, - 2072, - 2073, - 2075, - 2076, - 2077, - 2078, - 2079, - 2080, - 2081, - 2082, - 2083, - 2084, - 2085, - 2086, - 2087, - 2088, - 2089, - 2090, - 2091, - 2092, - 2094, - 2095, - 2096, - 2097, - 2098, - 2099, - 2100, - 2101, - 2102, - 2103, - 2104, - 2105, - 2107, - 2108, - 2109, - 2110, - 2111, - 2112, - 2113, - 2114, - 2115, - 2116, - 2117, - 2118, - 2119, - 2120, - 2121, - 2122, - 2123, - 2124, - 2126, - 2127, - 2128, - 2129, - 2130, - 2131, - 2132, - 2133, - 2134, - 2135, - 2136, - 2137, - 2139, - 2140, - 2141, - 2142, - 2143, - 2144, - 2145, - 2146, - 2147, - 2148, - 2149, - 2150, - 2151, - 2152, - 2153, - 2154, - 2155, - 2156, - 2158, - 2159, - 2160, - 2161, - 2162, - 2163, - 2164, - 2165, - 2166, - 2167, - 2168, - 2169, - 2171, - 2172, - 2173, - 2174, - 2175, - 2176, - 2177, - 2178, - 2179, - 2180, - 2181, - 2182, - 2183, - 2184, - 2185, - 2186, - 2187, - 2188, - 2190, - 2191, - 2192, - 2193, - 2194, - 2195, - 2196, - 2197, - 2198, - 2199, - 2200, - 2201, - 2203, - 2204, - 2205, - 2206, - 2207, - 2208, - 2209, - 2210, - 2211, - 2212, - 2213, - 2214, - 2215, - 2216, - 2217, - 2218, - 2219, - 2220, - 2222, - 2223, - 2224, - 2225, - 2226, - 2227, - 2228, - 2229, - 2230, - 2231, - 2232, - 2233, - 2235, - 2236, - 2237, - 2238, - 2239, - 2240, - 2241, - 2242, - 2243, - 2244, - 2245, - 2246, - 2247, - 2248, - 2249, - 2250, - 2251, - 2252, - 2254, - 2255, - 2256, - 2257, - 2258, - 2259, - 2260, - 2261, - 2262, - 2263, - 2264, - 2265, - 2267, - 2268, - 2269, - 2270, - 2271, - 2272, - 2273, - 2274, - 2275, - 2276, - 2277, - 2278, - 2279, - 2280, - 2281, - 2282, - 2283, - 2284, - 2286, - 2287, - 2288, - 2289, - 2290, - 2291, - 2292, - 2293, - 2294, - 2295, - 2296, - 2297, - 2299, - 2300, - 2301, - 2302, - 2303, - 2304, - 2305, - 2306, - 2307, - 2308, - 2309, - 2310, - 2311, - 2312, - 2313, - 2314, - 2315, - 2316, - 2318, - 2319, - 2320, - 2321, - 2322, - 2323, - 2324, - 2325, - 2326, - 2327, - 2328, - 2329, - 2331, - 2332, - 2333, - 2334, - 2335, - 2336, - 2337, - 2338, - 2339, - 2340, - 2341, - 2342, - 2343, - 2344, - 2345, - 2346, - 2347, - 2348, - 2350, - 2351, - 2352, - 2353, - 2354, - 2355, - 2356, - 2357, - 2358, - 2359, - 2360, - 2361, - 2363, - 2364, - 2365, - 2366, - 2367, - 2368, - 2369, - 2370, - 2371, - 2372, - 2373, - 2374, - 2375, - 2376, - 2377, - 2378, - 2379, - 2380, - 2382, - 2383, - 2384, - 2385, - 2386, - 2387, - 2388, - 2389, - 2390, - 2391, - 2392, - 2393, - 2395, - 2396, - 2397, - 2398, - 2399, - 2400, - 2401, - 2402, - 2403, - 2404, - 2405, - 2406, - 2407, - 2408, - 2409, - 2410, - 2411, - 2412, - 2414, - 2415, - 2416, - 2417, - 2418, - 2419, - 2420, - 2421, - 2422, - 2423, - 2424, - 2425, - 2427, - 2428, - 2429, - 2430, - 2431, - 2432, - 2433, - 2434, - 2435, - 2436, - 2437, - 2438, - 2439, - 2440, - 2441, - 2442, - 2443, - 2444, - 2446, - 2447, - 2448, - 2449, - 2450, - 2451, - 2452, - 2453, - 2454, - 2455, - 2456, - 2457, - 2459, - 2460, - 2461, - 2462, - 2463, - 2464, - 2465, - 2466, - 2467, - 2468, - 2469, - 2470, - 2471, - 2472, - 2473, - 2474, - 2475, - 2476, - 2478, - 2479, - 2480, - 2481, - 2482, - 2483, - 2484, - 2485, - 2486, - 2487, - 2488, - 2489, - 2491, - 2492, - 2493, - 2494, - 2495, - 2496, - 2497, - 2498, - 2499, - 2500, - 2501, - 2502, - 2503, - 2504, - 2505, - 2506, - 2507, - 2508, - 2510, - 2511, - 2512, - 2513, - 2514, - 2515, - 2516, - 2517, - 2518, - 2519, - 2520, - 2521, - 2523, - 2524, - 2525, - 2526, - 2527, - 2528, - 2529, - 2530, - 2531, - 2532, - 2533, - 2534, - 2535, - 2536, - 2537, - 2538, - 2539, - 2540, - 2542, - 2543, - 2544, - 2545, - 2546, - 2547, - 2548, - 2549, - 2550, - 2551, - 2552, - 2553, - 2555, - 2556, - 2557, - 2558, - 2559, - 2560, - 2561, - 2562, - 2563, - 2564, - 2565, - 2566, - 2567, - 2568, - 2569, - 2570, - 2571, - 2572, - 2574, - 2575, - 2576, - 2577, - 2578, - 2579, - 2580, - 2581, - 2582, - 2583, - 2584, - 2585, - 2587, - 2588, - 2589, - 2590, - 2591, - 2592, - 2593, - 2594, - 2595, - 2596, - 2597, - 2598, - 2599, - 2600, - 2601, - 2602, - 2603, - 2604, - 2606, - 2607, - 2608, - 2609, - 2610, - 2611, - 2612, - 2613, - 2614, - 2615, - 2616, - 2617, - 2619, - 2620, - 2621, - 2622, - 2623, - 2624, - 2625, - 2626, - 2627, - 2628, - 2629, - 2630, - 2631, - 2632, - 2633, - 2634, - 2635, - 2636, - 2638, - 2639, - 2640, - 2641, - 2642, - 2643, - 2644, - 2645, - 2646, - 2647, - 2648, - 2649, - 2651, - 2652, - 2653, - 2654, - 2655, - 2656, - 2657, - 2658, - 2659, - 2660, - 2661, - 2662, - 2663, - 2664, - 2665, - 2666, - 2667, - 2668, - 2670, - 2671, - 2672, - 2673, - 2674, - 2675, - 2676, - 2677, - 2678, - 2679, - 2680, - 2681, - 2683, - 2684, - 2685, - 2686, - 2687, - 2688, - 2689, - 2690, - 2691, - 2692, - 2693, - 2694, - 2695, - 2696, - 2697, - 2698, - 2699, - 2700, - 2702, - 2703, - 2704, - 2705, - 2706, - 2707, - 2708, - 2709, - 2710, - 2711, - 2712, - 2713, - 2715, - 2716, - 2717, - 2718, - 2719, - 2720, - 2721, - 2722, - 2723, - 2724, - 2725, - 2726, - 2727, - 2728, - 2729, - 2730, - 2731, - 2732, - 2734, - 2735, - 2736, - 2737, - 2738, - 2739, - 2740, - 2741, - 2742, - 2743, - 2744, - 2745, - 2747, - 2748, - 2749, - 2750, - 2751, - 2752, - 2753, - 2754, - 2755, - 2756, - 2757, - 2758, - 2759, - 2760, - 2761, - 2762, - 2763, - 2764, - 2766, - 2767, - 2768, - 2769, - 2770, - 2771, - 2772, - 2773, - 2774, - 2775, - 2776, - 2777, - 2779, - 2780, - 2781, - 2782, - 2783, - 2784, - 2785, - 2786, - 2787, - 2788, - 2789, - 2790, - 2791, - 2792, - 2793, - 2794, - 2795, - 2796, - 2798, - 2799, - 2800, - 2801, - 2802, - 2803, - 2804, - 2805, - 2806, - 2807, - 2808, - 2809, - 2811, - 2812, - 2813, - 2814, - 2815, - 2816, - 2817, - 2818, - 2819, - 2820, - 2821, - 2822, - 2823, - 2824, - 2825, - 2826, - 2827, - 2828, - 2830, - 2831, - 2832, - 2833, - 2834, - 2835, - 2836, - 2837, - 2838, - 2839, - 2840, - 2841, - 2843, - 2844, - 2845, - 2846, - 2847, - 2848, - 2849, - 2850, - 2851, - 2852, - 2853, - 2854, - 2855, - 2856, - 2857, - 2858, - 2859, - 2860, - 2862, - 2863, - 2864, - 2865, - 2866, - 2867, - 2868, - 2869, - 2870, - 2871, - 2872, - 2873, - 2875, - 2876, - 2877, - 2878, - 2879, - 2880, - 2881, - 2882, - 2883, - 2884, - 2885, - 2886, - 2887, - 2888, - 2889, - 2890, - 2891, - 2892, - 2894, - 2895, - 2896, - 2897, - 2898, - 2899, - 2900, - 2901, - 2902, - 2903, - 2904, - 2905, - 2907, - 2908, - 2909, - 2910, - 2911, - 2912, - 2913, - 2914, - 2915, - 2916, - 2917, - 2918, - 2919, - 2920, - 2921, - 2922, - 2923, - 2924, - 2926, - 2927, - 2928, - 2929, - 2930, - 2931, - 2932, - 2933, - 2934, - 2935, - 2936, - 2937, - 2939, - 2940, - 2941, - 2942, - 2943, - 2944, - 2945, - 2946, - 2947, - 2948, - 2949, - 2950, - 2951, - 2952, - 2953, - 2954, - 2955, - 2956, - 2958, - 2959, - 2960, - 2961, - 2962, - 2963, - 2964, - 2965, - 2966, - 2967, - 2968, - 2969, - 2971, - 2972, - 2973, - 2974, - 2975, - 2976, - 2977, - 2978, - 2979, - 2980, - 2981, - 2982, - 2983, - 2984, - 2985, - 2986, - 2987, - 2988, - 2990, - 2991, - 2992, - 2993, - 2994, - 2995, - 2996, - 2997, - 2998, - 2999, - 3000, - 3001, - 3003, - 3004, - 3005, - 3006, - 3007, - 3008, - 3009, - 3010, - 3011, - 3012, - 3013, - 3014, - 3015, - 3016, - 3017, - 3018, - 3019, - 3020, - 3022, - 3023, - 3024, - 3025, - 3026, - 3027, - 3028, - 3029, - 3030, - 3031, - 3032, - 3033, - 3035, - 3036, - 3037, - 3038, - 3039, - 3040, - 3041, - 3042, - 3043, - 3044, - 3045, - 3046, - 3047, - 3048, - 3049, - 3050, - 3051, - 3052, - 3054, - 3055, - 3056, - 3057, - 3058, - 3059, - 3060, - 3061, - 3062, - 3063, - 3064, - 3065, - 3067, - 3068, - 3069, - 3070, - 3071, - 3072, - 3073, - 3074, - 3075, - 3076, - 3077, - 3078, - 3079, - 3080, - 3081, - 3082, - 3083, - 3084, - 3086, - 3087, - 3088, - 3089, - 3090, - 3091, - 3092, - 3093, - 3094, - 3095, - 3096, - 3097, - 3099, - 3100, - 3101, - 3102, - 3103, - 3104, - 3105, - 3106, - 3107, - 3108, - 3109, - 3110, - 3111, - 3112, - 3113, - 3114, - 3115, - 3116, - 3118, - 3119, - 3120, - 3121, - 3122, - 3123, - 3124, - 3125, - 3126, - 3127, - 3128, - 3129, - 3131, - 3132, - 3133, - 3134, - 3135, - 3136, - 3137, - 3138, - 3139, - 3140, - 3141, - 3142, - 3143, - 3144, - 3145, - 3146, - 3147, - 3148, - 3150, - 3151, - 3152, - 3153, - 3154, - 3155, - 3156, - 3157, - 3158, - 3159, - 3160, - 3161, - 3163, - 3164, - 3165, - 3166, - 3167, - 3168, - 3169, - 3170, - 3171, - 3172, - 3173, - 3174, - 3175, - 3176, - 3177, - 3178, - 3179, - 3180, - 3182, - 3183, - 3184, - 3185, - 3186, - 3187, - 3188, - 3189, - 3190, - 3191, - 3192, - 3193, - 3195, - 3196, - 3197, - 3198, - 3199, - 3200, - 3201, - 3202, - 3203, - 3204, - 3205, - 3206, - 3207, - 3208, - 3209, - 3210, - 3211, - 3212, - 3214, - 3215, - 3216, - 3217, - 3218, - 3219, - 3220, - 3221, - 3222, - 3223, - 3224, - 3225, - 3227, - 3228, - 3229, - 3230, - 3231, - 3232, - 3233, - 3234, - 3235, - 3236, - 3237, - 3238, - 3239, - 3240, - 3241, - 3242, - 3243, - 3244, - 3246, - 3247, - 3248, - 3249, - 3250, - 3251, - 3252, - 3253, - 3254, - 3255, - 3256, - 3257, - 3259, - 3260, - 3261, - 3262, - 3263, - 3264, - 3265, - 3266, - 3267, - 3268, - 3269, - 3270, - 3271, - 3272, - 3273, - 3274, - 3275, - 3276, - 3278, - 3279, - 3280, - 3281, - 3282, - 3283, - 3284, - 3285, - 3286, - 3287, - 3288, - 3289, - 3291, - 3292, - 3293, - 3294, - 3295, - 3296, - 3297, - 3298, - 3299, - 3300, - 3301, - 3302, - 3303, - 3304, - 3305, - 3306, - 3307, - 3308, - 3310, - 3311, - 3312, - 3313, - 3314, - 3315, - 3316, - 3317, - 3318, - 3319, - 3320, - 3321, - 3323, - 3324, - 3325, - 3326, - 3327, - 3328, - 3329, - 3330, - 3331, - 3332, - 3333, - 3334, - 3335, - 3336, - 3337, - 3338, - 3339, - 3340, - 3342, - 3343, - 3344, - 3345, - 3346, - 3347, - 3348, - 3349, - 3350, - 3351, - 3352, - 3353, - 3355, - 3356, - 3357, - 3358, - 3359, - 3360, - 3361, - 3362, - 3363, - 3364, - 3365, - 3366, - 3367, - 3368, - 3369, - 3370, - 3371, - 3372, - 3374, - 3375, - 3376, - 3377, - 3378, - 3379, - 3380, - 3381, - 3382, - 3383, - 3384, - 3385, - 3387, - 3388, - 3389, - 3390, - 3391, - 3392, - 3393, - 3394, - 3395, - 3396, - 3397, - 3398, - 3399, - 3400, - 3401, - 3402, - 3403, - 3404, - 3406, - 3407, - 3408, - 3409, - 3410, - 3411, - 3412, - 3413, - 3414, - 3415, - 3416, - 3417, - 3419, - 3420, - 3421, - 3422, - 3423, - 3424, - 3425, - 3426, - 3427, - 3428, - 3429, - 3430, - 3431, - 3432, - 3433, - 3434, - 3435, - 3436, - 3438, - 3439, - 3440, - 3441, - 3442, - 3443, - 3444, - 3445, - 3446, - 3447, - 3448, - 3449, - 3451, - 3452, - 3453, - 3454, - 3455, - 3456, - 3457, - 3458, - 3459, - 3460, - 3461, - 3462, - 3463, - 3464, - 3465, - 3466, - 3467, - 3468, - 3470, - 3471, - 3472, - 3473, - 3474, - 3475, - 3476, - 3477, - 3478, - 3479, - 3480, - 3481, - 3483, - 3484, - 3485, - 3486, - 3487, - 3488, - 3489, - 3490, - 3491, - 3492, - 3493, - 3494, - 3495, - 3496, - 3497, - 3498, - 3499, - 3500, - 3502, - 3503, - 3504, - 3505, - 3506, - 3507, - 3508, - 3509, - 3510, - 3511, - 3512, - 3513, - 3515, - 3516, - 3517, - 3518, - 3519, - 3520, - 3521, - 3522, - 3523, - 3524, - 3525, - 3526, - 3527, - 3528, - 3529, - 3530, - 3531, - 3532, - 3534, - 3535, - 3536, - 3537, - 3538, - 3539, - 3540, - 3541, - 3542, - 3543, - 3544, - 3545, - 3547, - 3548, - 3549, - 3550, - 3551, - 3552, - 3553, - 3554, - 3555, - 3556, - 3557, - 3558, - 3559, - 3560, - 3561, - 3562, - 3563, - 3564, - 3566, - 3567, - 3568, - 3569, - 3570, - 3571, - 3572, - 3573, - 3574, - 3575, - 3576, - 3577, - 3579, - 3580, - 3581, - 3582, - 3583, - 3584, - 3585, - 3586, - 3587, - 3588, - 3589, - 3590, - 3591, - 3592, - 3593, - 3594, - 3595, - 3596, - 3598, - 3599, - 3600, - 3601, - 3602, - 3603, - 3604, - 3605, - 3606, - 3607, - 3608, - 3609, - 3611, - 3612, - 3613, - 3614, - 3615, - 3616, - 3617, - 3618, - 3619, - 3620, - 3621, - 3622, - 3623, - 3624, - 3625, - 3626, - 3627, - 3628, - 3630, - 3631, - 3632, - 3633, - 3634, - 3635, - 3636, - 3637, - 3638, - 3639, - 3640, - 3641, - 3643, - 3644, - 3645, - 3646, - 3647, - 3648, - 3649, - 3650, - 3651, - 3652, - 3653, - 3654, - 3655, - 3656, - 3657, - 3658, - 3659, - 3660, - 3662, - 3663, - 3664, - 3665, - 3666, - 3667, - 3668, - 3669, - 3670, - 3671, - 3672, - 3673, - 3675, - 3676, - 3677, - 3678, - 3679, - 3680, - 3681, - 3682, - 3683, - 3684, - 3685, - 3686, - 3687, - 3688, - 3689, - 3690, - 3691, - 3692, - 3694, - 3695, - 3696, - 3697, - 3698, - 3699, - 3700, - 3701, - 3702, - 3703, - 3704, - 3705, - 3707, - 3708, - 3709, - 3710, - 3711, - 3712, - 3713, - 3714, - 3715, - 3716, - 3717, - 3718, - 3719, - 3720, - 3721, - 3722, - 3723, - 3724, - 3726, - 3727, - 3728, - 3729, - 3730, - 3731, - 3732, - 3733, - 3734, - 3735, - 3736, - 3737, - 3739, - 3740, - 3741, - 3742, - 3743, - 3744, - 3745, - 3746, - 3747, - 3748, - 3749, - 3750, - 3751, - 3752, - 3753, - 3754, - 3755, - 3756, - 3758, - 3759, - 3760, - 3761, - 3762, - 3763, - 3764, - 3765, - 3766, - 3767, - 3768, - 3769, - 3771, - 3772, - 3773, - 3774, - 3775, - 3776, - 3777, - 3778, - 3779, - 3780, - 3781, - 3782, - 3783, - 3784, - 3785, - 3786, - 3787, - 3788, - 3790, - 3791, - 3792, - 3793, - 3794, - 3795, - 3796, - 3797, - 3798, - 3799, - 3800, - 3801, - 3803, - 3804, - 3805, - 3806, - 3807, - 3808, - 3809, - 3810, - 3811, - 3812, - 3813, - 3814, - 3815, - 3816, - 3817, - 3818, - 3819, - 3820, - 3822, - 3823, - 3824, - 3825, - 3826, - 3827, - 3828, - 3829, - 3830, - 3831, - 3832, - 3833, - 3835, - 3836, - 3837, - 3838, - 3839, - 3840, - 3841, - 3842, - 3843, - 3844, - 3845, - 3846, - 3847, - 3848, - 3849, - 3850, - 3851, - 3852, - 3854, - 3855, - 3856, - 3857, - 3858, - 3859, - 3860, - 3861, - 3862, - 3863, - 3864, - 3865, - 3867, - 3868, - 3869, - 3870, - 3871, - 3872, - 3873, - 3874, - 3875, - 3876, - 3877, - 3878, - 3879, - 3880, - 3881, - 3882, - 3883, - 3884, - 3886, - 3887, - 3888, - 3889, - 3890, - 3891, - 3892, - 3893, - 3894, - 3895, - 3896, - 3897, - 3899, - 3900, - 3901, - 3902, - 3903, - 3904, - 3905, - 3906, - 3907, - 3908, - 3909, - 3910, - 3911, - 3912, - 3913, - 3914, - 3915, - 3916, - 3918, - 3919, - 3920, - 3921, - 3922, - 3923, - 3924, - 3925, - 3926, - 3927, - 3928, - 3929, - 3931, - 3932, - 3933, - 3934, - 3935, - 3936, - 3937, - 3938, - 3939, - 3940, - 3941, - 3942, - 3943, - 3944, - 3945, - 3946, - 3947, - 3948, - 3950, - 3951, - 3952, - 3953, - 3954, - 3955, - 3956, - 3957, - 3958, - 3959, - 3960, - 3961, - 3963, - 3964, - 3965, - 3966, - 3967, - 3968, - 3969, - 3970, - 3971, - 3972, - 3973, - 3974, - 3975, - 3976, - 3977, - 3978, - 3979, - 3980, - 3982, - 3983, - 3984, - 3985, - 3986, - 3987, - 3988, - 3989, - 3990, - 3991, - 3992, - 3993, - 3995, - 3996, - 3997, - 3998, - 3999, - 4000, - 4001, - 4002, - 4003, - 4004, - 4005, - 4006, - 4007, - 4008, - 4009, - 4010, - 4011, - 4012, - 4014, - 4015, - 4016, - 4017, - 4018, - 4019, - 4020, - 4021, - 4022, - 4023, - 4024, - 4025, - 4027, - 4028, - 4029, - 4030, - 4031, - 4032, - 4033, - 4034, - 4035, - 4036, - 4037, - 4038, - 4039, - 4040, - 4041, - 4042, - 4043, - 4044, - 4046, - 4047, - 4048, - 4049, - 4050, - 4051, - 4052, - 4053, - 4054, - 4055, - 4056, - 4057, - 4059, - 4060, - 4061, - 4062, - 4063, - 4064, - 4065, - 4066, - 4067, - 4068, - 4069, - 4070, - 4071, - 4072, - 4073, - 4074, - 4075, - 4076, - 4078, - 4079, - 4080, - 4081, - 4082, - 4083, - 4084, - 4085, - 4086, - 4087, - 4088, - 4089, - 4091, - 4092, - 4093, - 4094, - 4095, - 4096, - 4097, - 4098, - 4099, - 4100, - 4101, - 4102, - 4103, - 4104, - 4105, - 4106, - 4107, - 4108, - 4110, - 4111, - 4112, - 4113, - 4114, - 4115, - 4116, - 4117, - 4118, - 4119, - 4120, - 4121, - 4123, - 4124, - 4125, - 4126, - 4127, - 4128, - 4129, - 4130, - 4131, - 4132, - 4133, - 4134, - 4135, - 4136, - 4137, - 4138, - 4139, - 4140, - 4142, - 4143, - 4144, - 4145, - 4146, - 4147, - 4148, - 4149, - 4150, - 4151, - 4152, - 4153, - 4155, - 4156, - 4157, - 4158, - 4159, - 4160, - 4161, - 4162, - 4163, - 4164, - 4165, - 4166, - 4167, - 4168, - 4169, - 4170, - 4171, - 4172, - 4174, - 4175, - 4176, - 4177, - 4178, - 4179, - 4180, - 4181, - 4182, - 4183, - 4184, - 4185, - 4187, - 4188, - 4189, - 4190, - 4191, - 4192, - 4193, - 4194, - 4195, - 4196, - 4197, - 4198, - 4199, - 4200, - 4201, - 4202, - 4203, - 4204, - 4206, - 4207, - 4208, - 4209, - 4210, - 4211, - 4212, - 4213, - 4214, - 4215, - 4216, - 4217, - 4219, - 4220, - 4221, - 4222, - 4223, - 4224, - 4225, - 4226, - 4227, - 4228, - 4229, - 4230, - 4231, - 4232, - 4233, - 4234, - 4235, - 4236, - 4238, - 4239, - 4240, - 4241, - 4242, - 4243, - 4244, - 4245, - 4246, - 4247, - 4248, - 4249, - 4251, - 4252, - 4253, - 4254, - 4255, - 4256, - 4257, - 4258, - 4259, - 4260, - 4261, - 4262, - 4263, - 4264, - 4265, - 4266, - 4267, - 4268, - 4270, - 4271, - 4272, - 4273, - 4274, - 4275, - 4276, - 4277, - 4278, - 4279, - 4280, - 4281, - 4283, - 4284, - 4285, - 4286, - 4287, - 4288, - 4289, - 4290, - 4291, - 4292, - 4293, - 4294, - 4295, - 4296, - 4297, - 4298, - 4299, - 4300, - 4302, - 4303, - 4304, - 4305, - 4306, - 4307, - 4308, - 4309, - 4310, - 4311, - 4312, - 4313, - 4315, - 4316, - 4317, - 4318, - 4319, - 4320, - 4321, - 4322, - 4323, - 4324, - 4325, - 4326, - 4327, - 4328, - 4329, - 4330, - 4331, - 4332, - 4334, - 4335, - 4336, - 4337, - 4338, - 4339, - 4340, - 4341, - 4342, - 4343, - 4344, - 4345, - 4347, - 4348, - 4349, - 4350, - 4351, - 4352, - 4353, - 4354, - 4355, - 4356, - 4357, - 4358, - 4359, - 4360, - 4361, - 4362, - 4363, - 4364, - 4366, - 4367, - 4368, - 4369, - 4370, - 4371, - 4372, - 4373, - 4374, - 4375, - 4376, - 4377, - 4379, - 4380, - 4381, - 4382, - 4383, - 4384, - 4385, - 4386, - 4387, - 4388, - 4389, - 4390, - 4391, - 4392, - 4393, - 4394, - 4395, - 4396, - 4398, - 4399, - 4400, - 4401, - 4402, - 4403, - 4404, - 4405, - 4406, - 4407, - 4408, - 4409, - 4411, - 4412, - 4413, - 4414, - 4415, - 4416, - 4417, - 4418, - 4419, - 4420, - 4421, - 4422, - 4423, - 4424, - 4425, - 4426, - 4427, - 4428, - 4430, - 4431, - 4432, - 4433, - 4434, - 4435, - 4436, - 4437, - 4438, - 4439, - 4440, - 4441, - 4443, - 4444, - 4445, - 4446, - 4447, - 4448, - 4449, - 4450, - 4451, - 4452, - 4453, - 4454, - 4455, - 4456, - 4457, - 4458, - 4459, - 4460, - 4462, - 4463, - 4464, - 4465, - 4466, - 4467, - 4468, - 4469, - 4470, - 4471, - 4472, - 4473, - 4475, - 4476, - 4477, - 4478, - 4479, - 4480, - 4481, - 4482, - 4483, - 4484, - 4485, - 4486, - 4487, - 4488, - 4489, - 4490, - 4491, - 4492, - 4494, - 4495, - 4496, - 4497, - 4498, - 4499, - 4500, - 4501, - 4502, - 4503, - 4504, - 4505, - 4507, - 4508, - 4509, - 4510, - 4511, - 4512, - 4513, - 4514, - 4515, - 4516, - 4517, - 4518, - 4519, - 4520, - 4521, - 4522, - 4523, - 4524, - 4526, - 4527, - 4528, - 4529, - 4530, - 4531, - 4532, - 4533, - 4534, - 4535, - 4536, - 4537, - 4539, - 4540, - 4541, - 4542, - 4543, - 4544, - 4545, - 4546, - 4547, - 4548, - 4549, - 4550, - 4551, - 4552, - 4553, - 4554, - 4555, - 4556, - 4558, - 4559, - 4560, - 4561, - 4562, - 4563, - 4564, - 4565, - 4566, - 4567, - 4568, - 4569, - 4571, - 4572, - 4573, - 4574, - 4575, - 4576, - 4577, - 4578, - 4579, - 4580, - 4581, - 4582, - 4583, - 4584, - 4585, - 4586, - 4587, - 4588, - 4590, - 4591, - 4592, - 4593, - 4594, - 4595, - 4596, - 4597, - 4598, - 4599, - 4600, - 4601, - 4603, - 4604, - 4605, - 4606, - 4607, - 4608, - 4609, - 4610, - 4611, - 4612, - 4613, - 4614, - 4615, - 4616, - 4617, - 4618, - 4619, - 4620, - 4622, - 4623, - 4624, - 4625, - 4626, - 4627, - 4628, - 4629, - 4630, - 4631, - 4632, - 4633, - 4635, - 4636, - 4637, - 4638, - 4639, - 4640, - 4641, - 4642, - 4643, - 4644, - 4645, - 4646, - 4647, - 4648, - 4649, - 4650, - 4651, - 4652, - 4654, - 4655, - 4656, - 4657, - 4658, - 4659, - 4660, - 4661, - 4662, - 4663, - 4664, - 4665, - 4667, - 4668, - 4669, - 4670, - 4671, - 4672, - 4673, - 4674, - 4675, - 4676, - 4677, - 4678, - 4679, - 4680, - 4681, - 4682, - 4683, - 4684, - 4686, - 4687, - 4688, - 4689, - 4690, - 4691, - 4692, - 4693, - 4694, - 4695, - 4696, - 4697, - 4699, - 4700, - 4701, - 4702, - 4703, - 4704, - 4705, - 4706, - 4707, - 4708, - 4709, - 4710, - 4711, - 4712, - 4713, - 4714, - 4715, - 4716, - 4718, - 4719, - 4720, - 4721, - 4722, - 4723, - 4724, - 4725, - 4726, - 4727, - 4728, - 4729, - 4731, - 4732, - 4733, - 4734, - 4735, - 4736, - 4737, - 4738, - 4739, - 4740, - 4741, - 4742, - 4743, - 4744, - 4745, - 4746, - 4747, - 4748, - 4750, - 4751, - 4752, - 4753, - 4754, - 4755, - 4756, - 4757, - 4758, - 4759, - 4760, - 4761, - 4763, - 4764, - 4765, - 4766, - 4767, - 4768, - 4769, - 4770, - 4771, - 4772, - 4773, - 4774, - 4775, - 4776, - 4777, - 4778, - 4779, - 4780, - 4782, - 4783, - 4784, - 4785, - 4786, - 4787, - 4788, - 4789, - 4790, - 4791, - 4792, - 4793, - 4795, - 4796, - 4797, - 4798, - 4799, - 4800, - 4801, - 4802, - 4803, - 4804, - 4805, - 4806, - 4807, - 4808, - 4809, - 4810, - 4811, - 4812, - 4814, - 4815, - 4816, - 4817, - 4818, - 4819, - 4820, - 4821, - 4822, - 4823, - 4824, - 4825, - 4827, - 4828, - 4829, - 4830, - 4831, - 4832, - 4833, - 4834, - 4835, - 4836, - 4837, - 4838, - 4839, - 4840, - 4841, - 4842, - 4843, - 4844, - 4846, - 4847, - 4848, - 4849, - 4850, - 4851, - 4852, - 4853, - 4854, - 4855, - 4856, - 4857, - 4859, - 4860, - 4861, - 4862, - 4863, - 4864, - 4865, - 4866, - 4867, - 4868, - 4869, - 4870, - 4871, - 4872, - 4873, - 4874, - 4875, - 4876, - 4878, - 4879, - 4880, - 4881, - 4882, - 4883, - 4884, - 4885, - 4886, - 4887, - 4888, - 4889, - 4891, - 4892, - 4893, - 4894, - 4895, - 4896, - 4897, - 4898, - 4899, - 4900, - 4901, - 4902, - 4903, - 4904, - 4905, - 4906, - 4907, - 4908, - 4910, - 4911, - 4912, - 4913, - 4914, - 4915, - 4916, - 4917, - 4918, - 4919, - 4920, - 4921, - 4923, - 4924, - 4925, - 4926, - 4927, - 4928, - 4929, - 4930, - 4931, - 4932, - 4933, - 4934, - 4935, - 4936, - 4937, - 4938, - 4939, - 4940, - 4942, - 4943, - 4944, - 4945, - 4946, - 4947, - 4948, - 4949, - 4950, - 4951, - 4952, - 4953, - 4955, - 4956, - 4957, - 4958, - 4959, - 4960, - 4961, - 4962, - 4963, - 4964, - 4965, - 4966, - 4967, - 4968, - 4969, - 4970, - 4971, - 4972, - 4974, - 4975, - 4976, - 4977, - 4978, - 4979, - 4980, - 4981, - 4982, - 4983, - 4984, - 4985, - 4987, - 4988, - 4989, - 4990, - 4991, - 4992, - 4993, - 4994, - 4995, - 4996, - 4997, - 4998, - 4999, - 5000, - 5001, - 5002, - 5003, - 5004, - 5006, - 5007, - 5008, - 5009, - 5010, - 5011, - 5012, - 5013, - 5014, - 5015, - 5016, - 5017, - 5019, - 5020, - 5021, - 5022, - 5023, - 5024, - 5025, - 5026, - 5027, - 5028, - 5029, - 5030, - 5031, - 5032, - 5033, - 5034, - 5035, - 5036, - 5038, - 5039, - 5040, - 5041, - 5042, - 5043, - 5044, - 5045, - 5046, - 5047, - 5048, - 5049, - 5051, - 5052, - 5053, - 5054, - 5055, - 5056, - 5057, - 5058, - 5059, - 5060, - 5061, - 5062, - 5063, - 5064, - 5065, - 5066, - 5067, - 5068, - 5070, - 5071, - 5072, - 5073, - 5074, - 5075, - 5076, - 5077, - 5078, - 5079, - 5080, - 5081, - 5083, - 5084, - 5085, - 5086, - 5087, - 5088, - 5089, - 5090, - 5091, - 5092, - 5093, - 5094, - 5095, - 5096, - 5097, - 5098, - 5099, - 5100, - 5102, - 5103, - 5104, - 5105, - 5106, - 5107, - 5108, - 5109, - 5110, - 5111, - 5112, - 5113, - 5115, - 5116, - 5117, - 5118, - 5119, - 5120, - 5121, - 5122, - 5123, - 5124, - 5125, - 5126, - 5127, - 5128, - 5129, - 5130, - 5131, - 5132, - 5134, - 5135, - 5136, - 5137, - 5138, - 5139, - 5140, - 5141, - 5142, - 5143, - 5144, - 5145, - 5147, - 5148, - 5149, - 5150, - 5151, - 5152, - 5153, - 5154, - 5155, - 5156, - 5157, - 5158, - 5159, - 5160, - 5161, - 5162, - 5163, - 5164, - 5166, - 5167, - 5168, - 5169, - 5170, - 5171, - 5172, - 5173, - 5174, - 5175, - 5176, - 5177, - 5179, - 5180, - 5181, - 5182, - 5183, - 5184, - 5185, - 5186, - 5187, - 5188, - 5189, - 5190, - 5191, - 5192, - 5193, - 5194, - 5195, - 5196, - 5198, - 5199, - 5200, - 5201, - 5202, - 5203, - 5204, - 5205, - 5206, - 5207, - 5208, - 5209, - 5211, - 5212, - 5213, - 5214, - 5215, - 5216, - 5217, - 5218, - 5219, - 5220, - 5221, - 5222, - 5223, - 5224, - 5225, - 5226, - 5227, - 5228, - 5230, - 5231, - 5232, - 5233, - 5234, - 5235, - 5236, - 5237, - 5238, - 5239, - 5240, - 5241, - 5243, - 5244, - 5245, - 5246, - 5247, - 5248, - 5249, - 5250, - 5251, - 5252, - 5253, - 5254, - 5255, - 5256, - 5257, - 5258, - 5259, - 5260, - 5262, - 5263, - 5264, - 5265, - 5266, - 5267, - 5268, - 5269, - 5270, - 5271, - 5272, - 5273, - 5275, - 5276, - 5277, - 5278, - 5279, - 5280, - 5281, - 5282, - 5283, - 5284, - 5285, - 5286, - 5287, - 5288, - 5289, - 5290, - 5291, - 5292, - 5294, - 5295, - 5296, - 5297, - 5298, - 5299, - 5300, - 5301, - 5302, - 5303, - 5304, - 5305, - 5307, - 5308, - 5309, - 5310, - 5311, - 5312, - 5313, - 5314, - 5315, - 5316, - 5317, - 5318, - 5319, - 5320, - 5321, - 5322, - 5323, - 5324, - 5326, - 5327, - 5328, - 5329, - 5330, - 5331, - 5332, - 5333, - 5334, - 5335, - 5336, - 5337, - 5339, - 5340, - 5341, - 5342, - 5343, - 5344, - 5345, - 5346, - 5347, - 5348, - 5349, - 5350, - 5351, - 5352, - 5353, - 5354, - 5355, - 5356, - 5358, - 5359, - 5360, - 5361, - 5362, - 5363, - 5364, - 5365, - 5366, - 5367, - 5368, - 5369, - 5371, - 5372, - 5373, - 5374, - 5375, - 5376, - 5377, - 5378, - 5379, - 5380, - 5381, - 5382, - 5383, - 5384, - 5385, - 5386, - 5387, - 5388, - 5390, - 5391, - 5392, - 5393, - 5394, - 5395, - 5396, - 5397, - 5398, - 5399, - 5400, - 5401, - 5403, - 5404, - 5405, - 5406, - 5407, - 5408, - 5409, - 5410, - 5411, - 5412, - 5413, - 5414, - 5415, - 5416, - 5417, - 5418, - 5419, - 5420, - 5422, - 5423, - 5424, - 5425, - 5426, - 5427, - 5428, - 5429, - 5430, - 5431, - 5432, - 5433, - 5435, - 5436, - 5437, - 5438, - 5439, - 5440, - 5441, - 5442, - 5443, - 5444, - 5445, - 5446, - 5447, - 5448, - 5449, - 5450, - 5451, - 5452, - 5454, - 5455, - 5456, - 5457, - 5458, - 5459, - 5460, - 5461, - 5462, - 5463, - 5464, - 5465, - 5467, - 5468, - 5469, - 5470, - 5471, - 5472, - 5473, - 5474, - 5475, - 5476, - 5477, - 5478, - 5479, - 5480, - 5481, - 5482, - 5483, - 5484, - 5486, - 5487, - 5488, - 5489, - 5490, - 5491, - 5492, - 5493, - 5494, - 5495, - 5496, - 5497, - 5499, - 5500, - 5501, - 5502, - 5503, - 5504, - 5505, - 5506, - 5507, - 5508, - 5509, - 5510, - 5511, - 5512, - 5513, - 5514, - 5515, - 5516, - 5518, - 5519, - 5520, - 5521, - 5522, - 5523, - 5524, - 5525, - 5526, - 5527, - 5528, - 5529, - 5531, - 5532, - 5533, - 5534, - 5535, - 5536, - 5537, - 5538, - 5539, - 5540, - 5541, - 5542, - 5543, - 5544, - 5545, - 5546, - 5547, - 5548, - 5550, - 5551, - 5552, - 5553, - 5554, - 5555, - 5556, - 5557, - 5558, - 5559, - 5560, - 5561, - 5563, - 5564, - 5565, - 5566, - 5567, - 5568, - 5569, - 5570, - 5571, - 5572, - 5573, - 5574, - 5575, - 5576, - 5577, - 5578, - 5579, - 5580, - 5582, - 5583, - 5584, - 5585, - 5586, - 5587, - 5588, - 5589, - 5590, - 5591, - 5592, - 5593, - 5595, - 5596, - 5597, - 5598, - 5599, - 5600, - 5601, - 5602, - 5603, - 5604, - 5605, - 5606, - 5607, - 5608, - 5609, - 5610, - 5611, - 5612, - 5614, - 5615, - 5616, - 5617, - 5618, - 5619, - 5620, - 5621, - 5622, - 5623, - 5624, - 5625, - 5627, - 5628, - 5629, - 5630, - 5631, - 5632, - 5633, - 5634, - 5635, - 5636, - 5637, - 5638, - 5639, - 5640, - 5641, - 5642, - 5643, - 5644, - 5646, - 5647, - 5648, - 5649, - 5650, - 5651, - 5652, - 5653, - 5654, - 5655, - 5656, - 5657, - 5659, - 5660, - 5661, - 5662, - 5663, - 5664, - 5665, - 5666, - 5667, - 5668, - 5669, - 5670, - 5671, - 5672, - 5673, - 5674, - 5675, - 5676, - 5678, - 5679, - 5680, - 5681, - 5682, - 5683, - 5684, - 5685, - 5686, - 5687, - 5688, - 5689, - 5691, - 5692, - 5693, - 5694, - 5695, - 5696, - 5697, - 5698, - 5699, - 5700, - 5701, - 5702, - 5703, - 5704, - 5705, - 5706, - 5707, - 5708, - 5710, - 5711, - 5712, - 5713, - 5714, - 5715, - 5716, - 5717, - 5718, - 5719, - 5720, - 5721, - 5723, - 5724, - 5725, - 5726, - 5727, - 5728, - 5729, - 5730, - 5731, - 5732, - 5733, - 5734, - 5735, - 5736, - 5737, - 5738, - 5739, - 5740, - 5742, - 5743, - 5744, - 5745, - 5746, - 5747, - 5748, - 5749, - 5750, - 5751, - 5752, - 5753, - 5755, - 5756, - 5757, - 5758, - 5759, - 5760, - 5761, - 5762, - 5763, - 5764, - 5765, - 5766, - 5767, - 5768, - 5769, - 5770, - 5771, - 5772, - 5774, - 5775, - 5776, - 5777, - 5778, - 5779, - 5780, - 5781, - 5782, - 5783, - 5784, - 5785, - 5787, - 5788, - 5789, - 5790, - 5791, - 5792, - 5793, - 5794, - 5795, - 5796, - 5797, - 5798, - 5799, - 5800, - 5801, - 5802, - 5803, - 5804, - 5806, - 5807, - 5808, - 5809, - 5810, - 5811, - 5812, - 5813, - 5814, - 5815, - 5816, - 5817, - 5819, - 5820, - 5821, - 5822, - 5823, - 5824, - 5825, - 5826, - 5827, - 5828, - 5829, - 5830, - 5831, - 5832, - 5833, - 5834, - 5835, - 5836, - 5838, - 5839, - 5840, - 5841, - 5842, - 5843, - 5844, - 5845, - 5846, - 5847, - 5848, - 5849, - 5851, - 5852, - 5853, - 5854, - 5855, - 5856, - 5857, - 5858, - 5859, - 5860, - 5861, - 5862, - 5863, - 5864, - 5865, - 5866, - 5867, - 5868, - 5870, - 5871, - 5872, - 5873, - 5874, - 5875, - 5876, - 5877, - 5878, - 5879, - 5880, - 5881, - 5883, - 5884, - 5885, - 5886, - 5887, - 5888, - 5889, - 5890, - 5891, - 5892, - 5893, - 5894, - 5895, - 5896, - 5897, - 5898, - 5899, - 5900, - 5902, - 5903, - 5904, - 5905, - 5906, - 5907, - 5908, - 5909, - 5910, - 5911, - 5912, - 5913, - 5915, - 5916, - 5917, - 5918, - 5919, - 5920, - 5921, - 5922, - 5923, - 5924, - 5925, - 5926, - 5927, - 5928, - 5929, - 5930, - 5931, - 5932, - 5934, - 5935, - 5936, - 5937, - 5938, - 5939, - 5940, - 5941, - 5942, - 5943, - 5944, - 5945, - 5947, - 5948, - 5949, - 5950, - 5951, - 5952, - 5953, - 5954, - 5955, - 5956, - 5957, - 5958, - 5959, - 5960, - 5961, - 5962, - 5963, - 5964, - 5966, - 5967, - 5968, - 5969, - 5970, - 5971, - 5972, - 5973, - 5974, - 5975, - 5976, - 5977, - 5979, - 5980, - 5981, - 5982, - 5983, - 5984, - 5985, - 5986, - 5987, - 5988, - 5989, - 5990, - 5991, - 5992, - 5993, - 5994, - 5995, - 5996, - 5998, - 5999, - 6000, - 6001, - 6002, - 6003, - 6004, - 6005, - 6006, - 6007, - 6008, - 6009, - 6011, - 6012, - 6013, - 6014, - 6015, - 6016, - 6017, - 6018, - 6019, - 6020, - 6021, - 6022, - 6023, - 6024, - 6025, - 6026, - 6027, - 6028, - 6030, - 6031, - 6032, - 6033, - 6034, - 6035, - 6036, - 6037, - 6038, - 6039, - 6040, - 6041, - 6043, - 6044, - 6045, - 6046, - 6047, - 6048, - 6049, - 6050, - 6051, - 6052, - 6053, - 6054, - 6055, - 6056, - 6057, - 6058, - 6059, - 6060, - 6062, - 6063, - 6064, - 6065, - 6066, - 6067, - 6068, - 6069, - 6070, - 6071, - 6072, - 6073, - 6075, - 6076, - 6077, - 6078, - 6079, - 6080, - 6081, - 6082, - 6083, - 6084, - 6085, - 6086, - 6087, - 6088, - 6089, - 6090, - 6091, - 6092, - 6094, - 6095, - 6096, - 6097, - 6098, - 6099, - 6100, - 6101, - 6102, - 6103, - 6104, - 6105, - 6107, - 6108, - 6109, - 6110, - 6111, - 6112, - 6113, - 6114, - 6115, - 6116, - 6117, - 6118, - 6119, - 6120, - 6121, - 6122, - 6123, - 6124, - 6126, - 6127, - 6128, - 6129, - 6130, - 6131, - 6132, - 6133, - 6134, - 6135, - 6136, - 6137, - 6139, - 6140, - 6141, - 6142, - 6143, - 6144, - 6145, - 6146, - 6147, - 6148, - 6149, - 6150, - 6151, - 6152, - 6153, - 6154, - 6155, - 6156, - 6158, - 6159, - 6160, - 6161, - 6162, - 6163, - 6164, - 6165, - 6166, - 6167, - 6168, - 6169, - 6171, - 6172, - 6173, - 6174, - 6175, - 6176, - 6177, - 6178, - 6179, - 6180, - 6181, - 6182, - 6183, - 6184, - 6185, - 6186, - 6187, - 6188, - 6190, - 6191, - 6192, - 6193, - 6194, - 6195, - 6196, - 6197, - 6198, - 6199, - 6200, - 6201, - 6203, - 6204, - 6205, - 6206, - 6207, - 6208, - 6209, - 6210, - 6211, - 6212, - 6213, - 6214, - 6215, - 6216, - 6217, - 6218, - 6219, - 6220, - 6222, - 6223, - 6224, - 6225, - 6226, - 6227, - 6228, - 6229, - 6230, - 6231, - 6232, - 6233, - 6235, - 6236, - 6237, - 6238, - 6239, - 6240, - 6241, - 6242, - 6243, - 6244, - 6245, - 6246, - 6247, - 6248, - 6249, - 6250, - 6251, - 6252, - 6254, - 6255, - 6256, - 6257, - 6258, - 6259, - 6260, - 6261, - 6262, - 6263, - 6264, - 6265, - 6267, - 6268, - 6269, - 6270, - 6271, - 6272, - 6273, - 6274, - 6275, - 6276, - 6277, - 6278, - 6279, - 6280, - 6281, - 6282, - 6283, - 6284, - 6286, - 6287, - 6288, - 6289, - 6290, - 6291, - 6292, - 6293, - 6294, - 6295, - 6296, - 6297, - 6299, - 6300, - 6301, - 6302, - 6303, - 6304, - 6305, - 6306, - 6307, - 6308, - 6309, - 6310, - 6311, - 6312, - 6313, - 6314, - 6315, - 6316, - 6318, - 6319, - 6320, - 6321, - 6322, - 6323, - 6324, - 6325, - 6326, - 6327, - 6328, - 6329, - 6331, - 6332, - 6333, - 6334, - 6335, - 6336, - 6337, - 6338, - 6339, - 6340, - 6341, - 6342, - 6343, - 6344, - 6345, - 6346, - 6347, - 6348, - 6350, - 6351, - 6352, - 6353, - 6354, - 6355, - 6356, - 6357, - 6358, - 6359, - 6360, - 6361, - 6363, - 6364, - 6365, - 6366, - 6367, - 6368, - 6369, - 6370, - 6371, - 6372, - 6373, - 6374, - 6375, - 6376, - 6377, - 6378, - 6379, - 6380, - 6382, - 6383, - 6384, - 6385, - 6386, - 6387, - 6388, - 6389, - 6390, - 6391, - 6392, - 6393, - 6395, - 6396, - 6397, - 6398, - 6399, - 6400, - 6401, - 6402, - 6403, - 6404, - 6405, - 6406, - 6407, - 6408, - 6409, - 6410, - 6411, - 6412, - 6414, - 6415, - 6416, - 6417, - 6418, - 6419, - 6420, - 6421, - 6422, - 6423, - 6424, - 6425, - 6427, - 6428, - 6429, - 6430, - 6431, - 6432, - 6433, - 6434, - 6435, - 6436, - 6437, - 6438, - 6439, - 6440, - 6441, - 6442, - 6443, - 6444, - 6446, - 6447, - 6448, - 6449, - 6450, - 6451, - 6452, - 6453, - 6454, - 6455, - 6456, - 6457, - 6459, - 6460, - 6461, - 6462, - 6463, - 6464, - 6465, - 6466, - 6467, - 6468, - 6469, - 6470, - 6471, - 6472, - 6473, - 6474, - 6475, - 6476, - 6478, - 6479, - 6480, - 6481, - 6482, - 6483, - 6484, - 6485, - 6486, - 6487, - 6488, - 6489, - 6491, - 6492, - 6493, - 6494, - 6495, - 6496, - 6497, - 6498, - 6499, - 6500, - 6501, - 6502, - 6503, - 6504, - 6505, - 6506, - 6507, - 6508, - 6510, - 6511, - 6512, - 6513, - 6514, - 6515, - 6516, - 6517, - 6518, - 6519, - 6520, - 6521, - 6523, - 6524, - 6525, - 6526, - 6527, - 6528, - 6529, - 6530, - 6531, - 6532, - 6533, - 6534, - 6535, - 6536, - 6537, - 6538, - 6539, - 6540, - 6542, - 6543, - 6544, - 6545, - 6546, - 6547, - 6548, - 6549, - 6550, - 6551, - 6552, - 6553, - 6555, - 6556, - 6557, - 6558, - 6559, - 6560, - 6561, - 6562, - 6563, - 6564, - 6565, - 6566, - 6567, - 6568, - 6569, - 6570, - 6571, - 6572, - 6574, - 6575, - 6576, - 6577, - 6578, - 6579, - 6580, - 6581, - 6582, - 6583, - 6584, - 6585, - 6587, - 6588, - 6589, - 6590, - 6591, - 6592, - 6593, - 6594, - 6595, - 6596, - 6597, - 6598, - 6599, - 6600, - 6601, - 6602, - 6603, - 6604, - 6606, - 6607, - 6608, - 6609, - 6610, - 6611, - 6612, - 6613, - 6614, - 6615, - 6616, - 6617, - 6619, - 6620, - 6621, - 6622, - 6623, - 6624, - 6625, - 6626, - 6627, - 6628, - 6629, - 6630, - 6631, - 6632, - 6633, - 6634, - 6635, - 6636, - 6638, - 6639, - 6640, - 6641, - 6642, - 6643, - 6644, - 6645, - 6646, - 6647, - 6648, - 6649, - 6651, - 6652, - 6653, - 6654, - 6655, - 6656, - 6657, - 6658, - 6659, - 6660, - 6661, - 6662, - 6663, - 6664, - 6665, - 6666, - 6667, - 6668, - 6670, - 6671, - 6672, - 6673, - 6674, - 6675, - 6676, - 6677, - 6678, - 6679, - 6680, - 6681, - 6683, - 6684, - 6685, - 6686, - 6687, - 6688, - 6689, - 6690, - 6691, - 6692, - 6693, - 6694, - 6695, - 6696, - 6697, - 6698, - 6699, - 6700, - 6702, - 6703, - 6704, - 6705, - 6706, - 6707, - 6708, - 6709, - 6710, - 6711, - 6712, - 6713, - 6715, - 6716, - 6717, - 6718, - 6719, - 6720, - 6721, - 6722, - 6723, - 6724, - 6725, - 6726, - 6727, - 6728, - 6729, - 6730, - 6731, - 6732, - 6734, - 6735, - 6736, - 6737, - 6738, - 6739, - 6740, - 6741, - 6742, - 6743, - 6744, - 6745, - 6747, - 6748, - 6749, - 6750, - 6751, - 6752, - 6753, - 6754, - 6755, - 6756, - 6757, - 6758, - 6759, - 6760, - 6761, - 6762, - 6763, - 6764, - 6766, - 6767, - 6768, - 6769, - 6770, - 6771, - 6772, - 6773, - 6774, - 6775, - 6776, - 6777, - 6779, - 6780, - 6781, - 6782, - 6783, - 6784, - 6785, - 6786, - 6787, - 6788, - 6789, - 6790, - 6791, - 6792, - 6793, - 6794, - 6795, - 6796, - 6798, - 6799, - 6800, - 6801, - 6802, - 6803, - 6804, - 6805, - 6806, - 6807, - 6808, - 6809, - 6811, - 6812, - 6813, - 6814, - 6815, - 6816, - 6817, - 6818, - 6819, - 6820, - 6821, - 6822, - 6823, - 6824, - 6825, - 6826, - 6827, - 6828, - 6830, - 6831, - 6832, - 6833, - 6834, - 6835, - 6836, - 6837, - 6838, - 6839, - 6840, - 6841, - 6843, - 6844, - 6845, - 6846, - 6847, - 6848, - 6849, - 6850, - 6851, - 6852, - 6853, - 6854, - 6855, - 6856, - 6857, - 6858, - 6859, - 6860, - 6862, - 6863, - 6864, - 6865, - 6866, - 6867, - 6868, - 6869, - 6870, - 6871, - 6872, - 6873, - 6875, - 6876, - 6877, - 6878, - 6879, - 6880, - 6881, - 6882, - 6883, - 6884, - 6885, - 6886, - 6887, - 6888, - 6889, - 6890, - 6891, - 6892, - 6894, - 6895, - 6896, - 6897, - 6898, - 6899, - 6900, - 6901, - 6902, - 6903, - 6904, - 6905, - 6907, - 6908, - 6909, - 6910, - 6911, - 6912, - 6913, - 6914, - 6915, - 6916, - 6917, - 6918, - 6919, - 6920, - 6921, - 6922, - 6923, - 6924, - 6926, - 6927, - 6928, - 6929, - 6930, - 6931, - 6932, - 6933, - 6934, - 6935, - 6936, - 6937, - 6939, - 6940, - 6941, - 6942, - 6943, - 6944, - 6945, - 6946, - 6947, - 6948, - 6949, - 6950, - 6951, - 6952, - 6953, - 6954, - 6955, - 6956, - 6958, - 6959, - 6960, - 6961, - 6962, - 6963, - 6964, - 6965, - 6966, - 6967, - 6968, - 6969, - 6971, - 6972, - 6973, - 6974, - 6975, - 6976, - 6977, - 6978, - 6979, - 6980, - 6981, - 6982, - 6983, - 6984, - 6985, - 6986, - 6987, - 6988, - 6990, - 6991, - 6992, - 6993, - 6994, - 6995, - 6996, - 6997, - 6998, - 6999, - 7000, - 7001, - 7003, - 7004, - 7005, - 7006, - 7007, - 7008, - 7009, - 7010, - 7011, - 7012, - 7013, - 7014, - 7015, - 7016, - 7017, - 7018, - 7019, - 7020, - 7022, - 7023, - 7024, - 7025, - 7026, - 7027, - 7028, - 7029, - 7030, - 7031, - 7032, - 7033, - 7035, - 7036, - 7037, - 7038, - 7039, - 7040, - 7041, - 7042, - 7044, - 7045, - 7046, - 7047, - 7048, - 7049, - 7050, - 7051, - 7053, - 7054, - 7055, - 7056, - 7057, - 7058, - 7059, - 7060, - 7061, - 7062, - 7063, - 7064, - 7065, - 7066, - 7067, - 7068, - 7069, - 7070, - 7072, - 7073, - 7074, - 7077, - 7078, - 7080, - 7082, - 7083, - 7084, - 7085, - 7087, - 7088, - 7089, - 7090, - 7092, - 7093, - 7094, - 7095, - 7097, - 7098, - 7099, - 7100, - 7101, - 7102, - 7103, - 7105, - 7106, - 7107, - 7108, - 7109, - 7110, - 7111, - 7112, - 7113, - 7114, - 7116, - 7117, - 7118, - 7119, - 7122, - 7123, - 7124, - 7125, - 7126, - 7127, - 7128, - 7129, - 7131, - 7132, - 7135, - 7136, - 7137, - 7138, - 7139, - 7141, - 7142, - 7143, - 7144, - 7145, - 7146, - 7147, - 7148, - 7149, - 7150, - 7151, - 7152, - 7154, - 7155, - 7156, - 7157, - 7158, - 7159, - 7160, - 7162, - 7163, - 7164, - 7165, - 7166, - 7167, - 7168, - 7169, - 7170, - 7171, - 7172, - 7174, - 7175, - 7176, - 7178, - 7179, - 7180, - 7181, - 7182, - 7184, - 7185, - 7188, - 7189, - 7190, - 7191, - 7193, - 7194, - 7195, - 7196, - 7197, - 7199, - 7200, - 7201, - 7202, - 7203, - 7204, - 7205, - 7206, - 7207, - 7208, - 7210, - 7211, - 7212, - 7213, - 7214, - 7215, - 7217, - 7218, - 7219, - 7220, - 7221, - 7223, - 7224, - 7225, - 7226, - 7227, - 7228, - 7229, - 7230, - 7231, - 7232, - 7233, - 7234, - 7235, - 7236, - 7237, - 7238, - 7239, - 7240, - 7241, - 7242, - 7243, - 7245, - 7246, - 7248, - 7249, - 7250, - 7251, - 7252, - 7253, - 7254, - 7255, - 7256, - 7257, - 7259, - 7260, - 7261, - 7262, - 7264, - 7265, - 7266, - 7267, - 7268, - 7269, - 7270, - 7271, - 7273, - 7274, - 7275, - 7276, - 7277, - 7278, - 7280, - 7281, - 7282, - 7283, - 7284, - 7286, - 7287, - 7288, - 7289, - 7290, - 7291, - 7292, - 7293, - 7294, - 7296, - 7297, - 7298, - 7299, - 7300, - 7302, - 7303, - 7304, - 7305, - 7306, - 7307, - 7308, - 7309, - 7310, - 7311, - 7313, - 7314, - 7315, - 7316, - 7317, - 7319, - 7321, - 7322, - 7323, - 7325, - 7326, - 7328, - 7329, - 7331, - 7332, - 7333, - 7334, - 7335, - 7336, - 7337, - 7338, - 7339, - 7340, - 7341, - 7342, - 7343, - 7344, - 7345, - 7348, - 7349, - 7350, - 7351, - 7352, - 7354, - 7355, - 7356, - 7357, - 7358, - 7361, - 7362, - 7363, - 7364, - 7365, - 7367, - 7368, - 7369, - 7370, - 7371, - 7372, - 7373, - 7374, - 7375, - 7376, - 7377, - 7378, - 7379, - 7380, - 7381, - 7382, - 7383, - 7384, - 7385, - 7386, - 7387, - 7388, - 7389, - 7390, - 7392, - 7393, - 7394, - 7395, - 7396, - 7397, - 7398, - 7399, - 7400, - 7401, - 7402, - 7403, - 7405, - 7406, - 7407, - 7408, - 7409, - 7410, - 7412, - 7413, - 7414, - 7417, - 7418, - 7419, - 7420, - 7421, - 7422, - 7423, - 7424, - 7425, - 7426, - 7427, - 7428, - 7429, - 7431, - 7432, - 7433, - 7434, - 7435, - 7436, - 7438, - 7439, - 7440, - 7441, - 7442, - 7443, - 7444, - 7445, - 7446, - 7447, - 7448, - 7449, - 7450, - 7451, - 7452, - 7453, - 7454, - 7455, - 7456, - 7457, - 7458, - 7459, - 7460, - 7461, - 7462, - 7464, - 7465, - 7466, - 7467, - 7468, - 7469, - 7471, - 7472, - 7473, - 7474, - 7475, - 7476, - 7478, - 7479, - 7480, - 7481, - 7482, - 7483, - 7484, - 7485, - 7486, - 7487, - 7489, - 7490, - 7491, - 7492, - 7494, - 7495, - 7496, - 7497, - 7498, - 7499, - 7500, - 7501, - 7502, - 7503, - 7504, - 7505, - 7507, - 7508, - 7509, - 7510, - 7511, - 7512, - 7513, - 7514, - 7515, - 7516, - 7517, - 7518, - 7519, - 7520, - 7521, - 7522, - 7523, - 7524, - 7525, - 7526, - 7527, - 7528, - 7529, - 7530, - 7531, - 7532, - 7533, - 7534, - 7535, - 7536, - 7537, - 7538, - 7540, - 7541, - 7542, - 7544, - 7545, - 7546, - 7547, - 7548, - 7549, - 7550, - 7551, - 7552, - 7553, - 7554, - 7555, - 7556, - 7557, - 7558, - 7559, - 7560, - 7561, - 7562, - 7564, - 7565, - 7567, - 7568, - 7569, - 7570, - 7573, - 7574, - 7575, - 7576, - 7577, - 7578, - 7580, - 7581, - 7582, - 7583, - 7585, - 7586, - 7589, - 7590, - 7592, - 7595, - 7596, - 7597, - 7599, - 7601, - 7602, - 7603, - 7604, - 7605, - 7606, - 7608, - 7609, - 7610, - 7612, - 7613, - 7614, - 7615, - 7616, - 7618, - 7619, - 7620, - 7621, - 7622, - 7623, - 7625, - 7626, - 7627, - 7628, - 7629, - 7630, - 7631, - 7632, - 7633, - 7635, - 7636, - 7637, - 7638, - 7639, - 7640, - 7641, - 7644, - 7645, - 7646, - 7647, - 7648, - 7649, - 7651, - 7652, - 7653, - 7654, - 7655, - 7656, - 7657, - 7658, - 7660, - 7661, - 7662, - 7664, - 7665, - 7666, - 7667, - 7669, - 7670, - 7672, - 7673, - 7674, - 7675, - 7676, - 7677, - 7678, - 7679, - 7680, - 7681, - 7682, - 7683, - 7684, - 7685, - 7686, - 7687, - 7688, - 7689, - 7690, - 7691, - 7692, - 7693, - 7694, - 7695, - 7696, - 7697, - 7698, - 7699, - 7701, - 7702, - 7703, - 7704, - 7705, - 7706, - 7707, - 7708, - 7709, - 7710, - 7711, - 7712, - 7713, - 7714, - 7715, - 7716, - 7717, - 7718, - 7719, - 7722, - 7723, - 7724, - 7725, - 7726, - 7727, - 7728, - 7729, - 7732, - 7733, - 7734, - 7736, - 7737, - 7738, - 7739, - 7740, - 7741, - 7742, - 7744, - 7745, - 7746, - 7747, - 7748, - 7749, - 7750, - 7751, - 7752, - 7753, - 7754, - 7756, - 7758, - 7759, - 7760, - 7761, - 7762, - 7763, - 7764, - 7765, - 7766, - 7767, - 7768, - 7769, - 7770, - 7771, - 7772, - 7773, - 7774, - 7775, - 7777, - 7778, - 7779, - 7780, - 7781, - 7782, - 7784, - 7785, - 7786, - 7787, - 7788, - 7789, - 7790, - 7792, - 7793, - 7794, - 7795, - 7796, - 7797, - 7798, - 7799, - 7800, - 7801, - 7802, - 7803, - 7804, - 7805, - 7806, - 7807, - 7808, - 7809, - 7812, - 7813, - 7814, - 7816, - 7817, - 7818, - 7820, - 7821, - 7823, - 7824, - 7825, - 7826, - 7827, - 7828, - 7829, - 7830, - 7831, - 7832, - 7833, - 7834, - 7835, - 7836, - 7837, - 7838, - 7840, - 7842, - 7843, - 7844, - 7845, - 7846, - 7847, - 7848, - 7849, - 7850, - 7851, - 7852, - 7853, - 7855, - 7856, - 7857, - 7858, - 7859, - 7860, - 7861, - 7864, - 7865, - 7866, - 7867, - 7869, - 7870, - 7871, - 7873, - 7874, - 7877, - 7878, - 7879, - 7880, - 7881, - 7882, - 7884, - 7885, - 7886, - 7887, - 7888, - 7890, - 7891, - 7892, - 7893, - 7894, - 7895, - 7896, - 7897, - 7899, - 7900, - 7901, - 7903, - 7904, - 7905, - 7906, - 7907, - 7908, - 7909, - 7910, - 7911, - 7912, - 7913, - 7914, - 7915, - 7916, - 7917, - 7918, - 7919, - 7920, - 7921, - 7922, - 7923, - 7924, - 7925, - 7926, - 7927, - 7928, - 7929, - 7930, - 7931, - 7932, - 7933, - 7934, - 7935, - 7936, - 7937, - 7938, - 7939, - 7940, - 7941, - 7942, - 7943, - 7944, - 7945, - 7946, - 7947, - 7948, - 7949, - 7950, - 7951, - 7952, - 7953, - 7954, - 7955, - 7956, - 7957, - 7958, - 7959, - 7960, - 7961, - 7962, - 7963, - 7964, - 7965, - 7966, - 7967, - 7968, - 7969, - 7970, - 7971, - 7972, - 7973, - 7974, - 7975, - 7976, - 7977, - 7978, - 7979, - 7980, - 7981, - 7982, - 7983, - 7984, - 7985, - 7986, - 7987, - 7988, - 7989, - 7990, - 7991, - 7992, - 7993, - 7994, - 7995, - 7996, - 7997, - 7998, - 7999, - 8000, - 8001, - 8002, - 8003, - 8004, - 8005, - 8006, - 8007, - 8008, - 8009, - 8010, - 8011, - 8012, - 8013, - 8014, - 8015, - 8016, - 8017, - 8018, - 8019, - 8020, - 8021, - 8022, - 8023, - 8024, - 8025, - 8026, - 8027, - 8028, - 8029, - 8030, - 8031, - 8032, - 8033, - 8034, - 8035, - 8036, - 8037, - 8038, - 8039, - 8040, - 8041, - 8042, - 8043, - 8044, - 8045, - 8046, - 8047, - 8048, - 8049, - 8050, - 8051, - 8052, - 8053, - 8054, - 8055, - 8056, - 8057, - 8058, - 8059, - 8060, - 8061, - 8062, - 8063, - 8064, - 8065, - 8066, - 8067, - 8068, - 8069, - 8070, - 8071, - 8072, - 8073, - 8074, - 8075, - 8076, - 8077, - 8078, - 8079, - 8080, - 8081, - 8082, - 8083, - 8084, - 8085, - 8086, - 8087, - 8088, - 8089, - 8090, - 8091, - 8092, - 8093, - 8094, - 8095, - 8096, - 8097, - 8098, - 8099, - 8100, - 8101, - 8102, - 8103, - 8104, - 8105, - 8106, - 8107, - 8108, - 8109, - 8110, - 8111, - 8112, - 8113, - 8114, - 8115, - 8116, - 8117, - 8118, - 8119, - 8120, - 8121, - 8122, - 8123, - 8124, - 8125, - 8126, - 8127, - 8128, - 8129, - 8130, - 8131, - 8132, - 8133, - 8134, - 8135, - 8136, - 8137, - 8138, - 8139, - 8140, - 8141, - 8142, - 8143, - 8144, - 8145, - 8146, - 8147, - 8148, - 8149, - 8150, - 8151, - 8152, - 8153, - 8154, - 8155, - 8156, - 8157, - 8158, - 8159, - 8160, - 8161, - 8162, - 8163, - 8164, - 8165, - 8166, - 8167, - 8168, - 8169, - 8170, - 8171, - 8172, - 8173, - 8174, - 8175, - 8176, - 8177, - 8178, - 8179, - 8180, - 8181, - 8182, - 8183, - 8184, - 8185, - 8186, - 8187, - 8188, - 8189, - 8190, - 8191, - 8192, - 8193, - 8194, - 8195, - 8196, - 8197, - 8198, - 8199, - 8200, - 8201, - 8202, - 8203, - 8204, - 8205, - 8206, - 8207, - 8208, - 8209, - 8210, - 8211, - 8212, - 8213, - 8214, - 8215, - 8216, - 8217, - 8218, - 8219, - 8220, - 8221, - 8222, - 8223, - 8224, - 8225, - 8226, - 8227, - 8228, - 8229, - 8230, - 8231, - 8232, - 8233, - 8234, - 8235, - 8236, - 8237, - 8238, - 8239, - 8240, - 8241, - 8242, - 8243, - 8244, - 8245, - 8246, - 8247, - 8248, - 8249, - 8250, - 8251, - 8252, - 8253, - 8254, - 8255, - 8256, - 8257, - 8258, - 8259, - 8260, - 8261, - 8262, - 8263, - 8264, - 8265, - 8266, - 8267, - 8268, - 8269, - 8270, - 8271, - 8272, - 8273, - 8274, - 8275, - 8276, - 8277, - 8278, - 8279, - 8280, - 8281, - 8282, - 8283, - 8284, - 8285, - 8286, - 8287, - 8288, - 8289, - 8290, - 8291, - 8292, - 8293, - 8294, - 8295, - 8296, - 8297, - 8298, - 8299, - 8300, - 8301, - 8302, - 8303, - 8304, - 8305, - 8306, - 8307, - 8308, - 8309, - 8310, - 8311, - 8312, - 8313, - 8314, - 8315, - 8316, - 8317, - 8318, - 8319, - 8320, - 8321, - 8322, - 8323, - 8324, - 8325, - 8326, - 8327, - 8328, - 8329, - 8330, - 8331, - 8332, - 8333, - 8334, - 8335, - 8336, - 8337, - 8338, - 8339, - 8340, - 8341, - 8342, - 8343, - 8344, - 8345, - 8346, - 8347, - 8348, - 8349, - 8350, - 8351, - 8352, - 8353, - 8354, - 8355, - 8356, - 8357, - 8358, - 8359, - 8360, - 8361, - 8362, - 8363, - 8364, - 8365, - 8366, - 8367, - 8368, - 8369, - 8370, - 8371, - 8372, - 8373, - 8374, - 8375, - 8376, - 8377, - 8378, - 8379, - 8380, - 8381, - 8382, - 8383, - 8384, - 8385, - 8386, - 8387, - 8388, - 8389, - 8390, - 8391, - 8392, - 8393, - 8394, - 8395, - 8396, - 8397, - 8398, - 8399, - 8400, - 8401, - 8402, - 8403, - 8404, - 8405, - 8406, - 8407, - 8408, - 8409, - 8410, - 8411, - 8412, - 8413, - 8414, - 8415, - 8416, - 8417, - 8418, - 8419, - 8420, - 8421, - 8422, - 8423, - 8424, - 8425, - 8426, - 8427, - 8428, - 8429, - 8430, - 8431, - 8432, - 8433, - 8434, - 8435, - 8436, - 8437, - 8438, - 8439, - 8440, - 8441, - 8442, - 8443, - 8444, - 8445, - 8446, - 8447, - 8448, - 8449, - 8450, - 8451, - 8452, - 8453, - 8454, - 8455, - 8456, - 8457, - 8458, - 8459, - 8460, - 8461, - 8462, - 8463, - 8464, - 8465, - 8466, - 8467, - 8468, - 8469, - 8470, - 8471, - 8472, - 8473, - 8474, - 8475, - 8476, - 8477, - 8478, - 8479, - 8480, - 8481, - 8482, - 8483, - 8484, - 8485, - 8486, - 8487, - 8488, - 8489, - 8490, - 8491, - 8492, - 8493, - 8494, - 8495, - 8496, - 8497, - 8498, - 8499, - 8500, - 8501, - 8502, - 8503, - 8504, - 8505, - 8506, - 8507, - 8508, - 8509, - 8510, - 8511, - 8512, - 8513, - 8514, - 8515, - 8516, - 8517, - 8518, - 8519, - 8520, - 8521, - 8522, - 8523, - 8524, - 8525, - 8526, - 8527, - 8528, - 8530, - 8532, - 8534, - 8536, - 8537, - 8538, - 8539, - 8540, - 8541, - 8542, - 8543, - 8544, - 8545, - 8546, - 8547, - 8548, - 8549, - 8551, - 8552, - 8554, - 8555, - 8556, - 8557, - 8558, - 8559, - 8560, - 8561, - 8562, - 8563, - 8564, - 8565, - 8566, - 8567, - 8568, - 8569, - 8570, - 8571, - 8572, - 8573, - 8574, - 8575, - 8576, - 8577, - 8578, - 8579, - 8580, - 8581, - 8582, - 8583, - 8585, - 8586, - 8587, - 8589, - 8590, - 8591, - 8592, - 8593, - 8594, - 8595, - 8596, - 8597, - 8598, - 8599, - 8600, - 8601, - 8602, - 8603, - 8604, - 8605, - 8606, - 8607, - 8608, - 8609, - 8610, - 8611, - 8612, - 8613, - 8614, - 8615, - 8616, - 8617, - 8618, - 8619, - 8620, - 8621, - 8622, - 8623, - 8624, - 8625, - 8626, - 8627, - 8628, - 8629, - 8630, - 8631, - 8632, - 8633, - 8634, - 8635, - 8636, - 8637, - 8638, - 8639, - 8640, - 8641, - 8642, - 8643, - 8644, - 8645, - 8646, - 8647, - 8648, - 8649, - 8650, - 8651, - 8654, - 8655, - 8656, - 8657, - 8658, - 8659, - 8661, - 8662, - 8663, - 8664, - 8665, - 8666, - 8667, - 8668, - 8669, - 8670, - 8671, - 8672, - 8673, - 8674, - 8675, - 8676, - 8677, - 8678, - 8679, - 8680, - 8681, - 8682, - 8683, - 8684, - 8685, - 8686, - 8687, - 8688, - 8689, - 8690, - 8691, - 8692, - 8693, - 8694, - 8695, - 8696, - 8697, - 8698, - 8699, - 8700, - 8702, - 8703, - 8704, - 8705, - 8706, - 8707, - 8708, - 8709, - 8710, - 8711, - 8712, - 8713, - 8714, - 8715, - 8716, - 8717, - 8718, - 8719, - 8720, - 8721, - 8722, - 8723, - 8724, - 8725, - 8726, - 8727, - 8728, - 8729, - 8730, - 8731, - 8732, - 8733, - 8734, - 8735, - 8736, - 8737, - 8738, - 8739, - 8740, - 8741, - 8743, - 8744, - 8745, - 8746, - 8747, - 8748, - 8749, - 8750, - 8751, - 8752, - 8753, - 8754, - 8755, - 8756, - 8757, - 8758, - 8759, - 8760, - 8761, - 8762, - 8763, - 8764, - 8765, - 8766, - 8767, - 8768, - 8769, - 8770, - 8771, - 8772, - 8773, - 8774, - 8775, - 8776, - 8777, - 8778, - 8779, - 8780, - 8781, - 8782, - 8783, - 8784, - 8785, - 8786, - 8787, - 8788, - 8790, - 8791, - 8792, - 8793, - 8794, - 8795, - 8796, - 8797, - 8798, - 8799, - 8800, - 8801, - 8804, - 8805, - 8806, - 8807, - 8808, - 8809, - 8810, - 8811, - 8812, - 8813, - 8814, - 8815, - 8816, - 8817, - 8818, - 8819, - 8820, - 8821, - 8822, - 8823, - 8824, - 8825, - 8826, - 8827, - 8828, - 8829, - 8830, - 8831, - 8832, - 8833, - 8834, - 8835, - 8836, - 8837, - 8838, - 8839, - 8840, - 8841, - 8842, - 8843, - 8844, - 8845, - 8846, - 8847, - 8848, - 8849, - 8850, - 8851, - 8852, - 8854, - 8856, - 8857, - 8858, - 8859, - 8860, - 8861, - 8862, - 8863, - 8864, - 8865, - 8866, - 8867, - 8868, - 8869, - 8870, - 8871, - 8872, - 8873, - 8874, - 8875, - 8876, - 8877, - 8878, - 8879, - 8880, - 8881, - 8882, - 8883, - 8884, - 8885, - 8886, - 8887, - 8888, - 8889, - 8890, - 8891, - 8892, - 8893, - 8894, - 8895, - 8896, - 8897, - 8898, - 8899, - 8900, - 8901, - 8902, - 8903, - 8904, - 8905, - 8906, - 8907, - 8908, - 8909, - 8910, - 8911, - 8912, - 8913, - 8914, - 8915, - 8916, - 8917, - 8918, - 8919, - 8920, - 8921, - 8922, - 8923, - 8924, - 8925, - 8926, - 8927, - 8928, - 8929, - 8930, - 8931, - 8934, - 8935, - 8936, - 8937, - 8938, - 8940, - 8941, - 8942, - 8943, - 8944, - 8945, - 8946, - 8947, - 8948, - 8949, - 8950, - 8951, - 8952, - 8953, - 8954, - 8955, - 8956, - 8958, - 8959, - 8960, - 8961, - 8962, - 8963, - 8964, - 8965, - 8966, - 8967, - 8968, - 8969, - 8970, - 8971, - 8972, - 8973, - 8974, - 8975, - 8976, - 8977, - 8978, - 8980, - 8982, - 8983, - 8984, - 8985, - 8986, - 8987, - 8988, - 8989, - 8990, - 8991, - 8992, - 8993, - 8994, - 8995, - 8996, - 8997, - 8998, - 8999, - 9000, - 9001, - 9003, - 9004, - 9005, - 9006, - 9007, - 9008, - 9009, - 9010, - 9011, - 9012, - 9013, - 9014, - 9015, - 9016, - 9017, - 9018, - 9019, - 9020, - 9021, - 9022, - 9023, - 9024, - 9025, - 9026, - 9027, - 9028, - 9029, - 9030, - 9031, - 9032, - 9033, - 9034, - 9035, - 9036, - 9037, - 9038, - 9039, - 9042, - 9043, - 9044, - 9045, - 9046, - 9047, - 9048, - 9049, - 9050, - 9051, - 9052, - 9053, - 9054, - 9055, - 9056, - 9057, - 9058, - 9059, - 9060, - 9061, - 9062, - 9063, - 9064, - 9065, - 9066, - 9067, - 9068, - 9069, - 9070, - 9071, - 9072, - 9073, - 9074, - 9075, - 9076, - 9077, - 9078, - 9079, - 9080, - 9081, - 9082, - 9083, - 9084, - 9085, - 9086, - 9087, - 9088, - 9090, - 9092, - 9093, - 9094, - 9095, - 9096, - 9097, - 9098, - 9099, - 9100, - 9101, - 9102, - 9103, - 9104, - 9105, - 9106, - 9108, - 9109, - 9110, - 9111, - 9112, - 9113, - 9114, - 9115, - 9116, - 9117, - 9118, - 9119, - 9120, - 9121, - 9122, - 9123, - 9124, - 9125, - 9126, - 9127, - 9128, - 9129, - 9130, - 9131, - 9132, - 9133, - 9136, - 9137, - 9138, - 9139, - 9140, - 9141, - 9142, - 9143, - 9144, - 9145, - 9146, - 9147, - 9148, - 9149, - 9150, - 9151, - 9152, - 9153, - 9154, - 9155, - 9156, - 9157, - 9158, - 9159, - 9160, - 9161, - 9162, - 9163, - 9164, - 9165, - 9166, - 9167, - 9168, - 9169, - 9170, - 9171, - 9172, - 9173, - 9174, - 9175, - 9176, - 9177, - 9178, - 9179, - 9180, - 9181, - 9182, - 9184, - 9186, - 9187, - 9188, - 9189, - 9190, - 9191, - 9192, - 9193, - 9194, - 9195, - 9196, - 9197, - 9198, - 9199, - 9200, - 9201, - 9202, - 9203, - 9204, - 9205, - 9206, - 9207, - 9208, - 9209, - 9212, - 9213, - 9214, - 9215, - 9216, - 9217, - 9218, - 9219, - 9220, - 9221, - 9222, - 9223, - 9224, - 9225, - 9226, - 9227, - 9228, - 9229, - 9230, - 9231, - 9232, - 9233, - 9235, - 9236, - 9237, - 9238, - 9239, - 9240, - 9241, - 9242, - 9243, - 9244, - 9245, - 9246, - 9247, - 9248, - 9249, - 9250, - 9251, - 9252, - 9253, - 9254, - 9255, - 9256, - 9257, - 9258, - 9260, - 9262, - 9263, - 9264, - 9265, - 9270, - 9271, - 9272, - 9273, - 9274, - 9275, - 9276, - 9277, - 9278, - 9279, - 9280, - 9281, - 9282, - 9283, - 9284, - 9285, - 9288, - 9289, - 9290, - 9291, - 9292, - 9293, - 9294, - 9295, - 9296, - 9297, - 9298, - 9299, - 9300, - 9301, - 9302, - 9303, - 9306, - 9307, - 9308, - 9309, - 9310, - 9311, - 9312, - 9314, - 9316, - 9317, - 9318, - 9319, - 9320, - 9321, - 9322, - 9323, - 9324, - 9325, - 9326, - 9327, - 9328, - 9329, - 9330, - 9331, - 9332, - 9333, - 9334, - 9335, - 9336, - 9337, - 9338, - 9339, - 9340, - 9341, - 9342, - 9343, - 9344, - 9345, - 9346, - 9347, - 9348, - 9349, - 9350, - 9351, - 9352, - 9353, - 9354, - 9355, - 9356, - 9357, - 9358, - 9359, - 9360, - 9361, - 9362, - 9363, - 9364, - 9365, - 9366, - 9367, - 9368, - 9369, - 9370, - 9372, - 9373, - 9374, - 9375, - 9376, - 9377, - 9378, - 9379, - 9380, - 9381, - 9382, - 9383, - 9386, - 9387, - 9388, - 9389, - 9390, - 9391, - 9392, - 9394, - 9395, - 9397, - 9398, - 9399, - 9400, - 9401, - 9402, - 9403, - 9404, - 9405, - 9406, - 9407, - 9408, - 9409, - 9410, - 9411, - 9412, - 9413, - 9414, - 9415, - 9416, - 9417, - 9418, - 9419, - 9420, - 9421, - 9422, - 9423, - 9426, - 9427, - 9428, - 9432, - 9433, - 9434, - 9435, - 9436, - 9437, - 9438, - 9439, - 9440, - 9441, - 9442, - 9443, - 9444, - 9445, - 9446, - 9447, - 9448, - 9449, - 9450, - 9451, - 9452, - 9453, - 9454, - 9455, - 9456, - 9457, - 9458, - 9459, - 9460, - 9461, - 9462, - 9463, - 9464, - 9465, - 9466, - 9467, - 9468, - 9469, - 9470, - 9471, - 9472, - 9473, - 9474, - 9475, - 9476, - 9477, - 9478, - 9479, - 9480, - 9481, - 9482, - 9483, - 9484, - 9485, - 9486, - 9487, - 9488, - 9489, - 9490, - 9491, - 9492, - 9493, - 9494, - 9495, - 9496, - 9497, - 9498, - 9499, - 9500, - 9501, - 9504, - 9505, - 9506, - 9507, - 9508, - 9510, - 9511, - 9512, - 9513, - 9514, - 9515, - 9517, - 9518, - 9519, - 9520, - 9521, - 9522, - 9523, - 9524, - 9525, - 9526, - 9527, - 9528, - 9529, - 9530, - 9531, - 9532, - 9533, - 9534, - 9535, - 9537, - 9538, - 9539, - 9540, - 9541, - 9542, - 9543, - 9544, - 9545, - 9546, - 9547, - 9548, - 9549, - 9550, - 9551, - 9552, - 9553, - 9554, - 9555, - 9556, - 9557, - 9558, - 9559, - 9560, - 9561, - 9562, - 9563, - 9564, - 9565, - 9566, - 9567, - 9568, - 9569, - 9570, - 9571, - 9572, - 9573, - 9574, - 9575, - 9576, - 9577, - 9578, - 9579, - 9580, - 9581, - 9582, - 9583, - 9584, - 9586, - 9587, - 9588, - 9589, - 9590, - 9591, - 9592, - 9593, - 9595, - 9596, - 9597, - 9598, - 9599, - 9601, - 9602, - 9603, - 9604, - 9605, - 9606, - 9607, - 9608, - 9609, - 9610, - 9611, - 9612, - 9613, - 9614, - 9615, - 9616, - 9617, - 9618, - 9619, - 9620, - 9621, - 9622, - 9623, - 9624, - 9625, - 9626, - 9627, - 9628, - 9629, - 9630, - 9631, - 9632, - 9633, - 9634, - 9635, - 9636, - 9637, - 9638, - 9639, - 9640, - 9641, - 9642, - 9643, - 9644, - 9645, - 9646, - 9647, - 9648, - 9649, - 9650, - 9651, - 9652, - 9653, - 9654, - 9655, - 9656, - 9657, - 9658, - 9659, - 9660, - 9661, - 9664, - 9665, - 9666, - 9667, - 9668, - 9669, - 9670, - 9671, - 9672, - 9673, - 9674, - 9675, - 9676, - 9677, - 9678, - 9679, - 9680, - 9681, - 9682, - 9683, - 9684, - 9685, - 9686, - 9687, - 9690, - 9691, - 9693, - 9694, - 9695, - 9696, - 9697, - 9698, - 9699, - 9700, - 9701, - 9702, - 9703, - 9704, - 9705, - 9706, - 9707, - 9708, - 9709, - 9710, - 9711, - 9712, - 9713, - 9714, - 9715, - 9716, - 9718, - 9719, - 9720, - 9721, - 9722, - 9723, - 9724, - 9725, - 9726, - 9727, - 9728, - 9729, - 9730, - 9731, - 9732, - 9733, - 9734, - 9735, - 9736, - 9737, - 9738, - 9739, - 9740, - 9741, - 9744, - 9745, - 9746, - 9747, - 9748, - 9749, - 9750, - 9751, - 9752, - 9753, - 9754, - 9755, - 9756, - 9757, - 9758, - 9759, - 9761, - 9763, - 9764, - 9765, - 9766, - 9767, - 9768, - 9769, - 9770, - 9771, - 9772, - 9773, - 9774, - 9775, - 9776, - 9777, - 9778, - 9779, - 9780, - 9781, - 9783, - 9784, - 9785, - 9786, - 9787, - 9788, - 9789, - 9790, - 9791, - 9792, - 9793, - 9794, - 9795, - 9796, - 9797, - 9798, - 9800, - 9801, - 9802, - 9803, - 9806, - 9807, - 9808, - 9809, - 9810, - 9812, - 9813, - 9814, - 9816, - 9817, - 9819, - 9820, - 9821, - 9823, - 9824, - 9825, - 9826, - 9827, - 9828, - 9829, - 9830, - 9831, - 9832, - 9833, - 9834, - 9836, - 9837, - 9838, - 9839, - 9840, - 9841, - 9843, - 9844, - 9845, - 9846, - 9847, - 9848, - 9849, - 9850, - 9851, - 9852, - 9853, - 9854, - 9855, - 9856, - 9857, - 9858, - 9859, - 9860, - 9861, - 9862, - 9865, - 9866, - 9867, - 9868, - 9869, - 9870, - 9871, - 9872, - 9873, - 9874, - 9875, - 9876, - 9877, - 9878, - 9879, - 9880, - 9881, - 9882, - 9883, - 9884, - 9885, - 9886, - 9887, - 9888, - 9889, - 9890, - 9891, - 9892, - 9893, - 9894, - 9895, - 9896, - 9897, - 9898, - 9899, - 9900, - 9901, - 9902, - 9903, - 9904, - 9905, - 9906, - 9907, - 9908, - 9909, - 9910, - 9911, - 9912, - 9913, - 9914, - 9915, - 9916, - 9917, - 9918, - 9919, - 9922, - 9923, - 9924, - 9925, - 9926, - 9927, - 9928, - 9929, - 9930, - 9931, - 9932, - 9933, - 9934, - 9935, - 9936, - 9937, - 9938, - 9939, - 9940, - 9941, - 9942, - 9943, - 9944, - 9945, - 9946, - 9947, - 9948, - 9949, - 9950, - 9951, - 9952, - 9953, - 9954, - 9955, - 9956, - 9957, - 9958, - 9959, - 9960, - 9961, - 9962, - 9963, - 9964, - 9965, - 9966, - 9967, - 9968, - 9969, - 9970, - 9972, - 9973, - 9974, - 9975, - 9976, - 9977, - 9978, - 9979, - 9980, - 9981, - 9982, - 9983, - 9985, - 9988, - 9989, - 9990, - 9991, - 9992, - 9993, - 9994, - 9995, - 9996, - 9997, - 9998, - 9999, - 10000, - 10001, - 10002, - 10003, - 10004, - 10005, - 10006, - 10007, - 10008, - 10009, - 10010, - 10011, - 10012, - 10013, - 10014, - 10015, - 10018, - 10019, - 10020, - 10021, - 10022, - 10023, - 10024, - 10025, - 10026, - 10027, - 10028, - 10029, - 10030, - 10031, - 10033, - 10034, - 10035, - 10036, - 10037, - 10038, - 10039, - 10040, - 10041, - 10042, - 10043, - 10044, - 10045, - 10046, - 10047, - 10048, - 10049, - 10050, - 10051, - 10052, - 10053, - 10054, - 10055, - 10056, - 10057, - 10058, - 10059, - 10060, - 10061, - 10062, - 10063, - 10064, - 10065, - 10066, - 10067, - 10068, - 10069, - 10070, - 10071, - 10072, - 10073, - 10074, - 10075, - 10076, - 10077, - 10078, - 10079, - 10080, - 10081, - 10082, - 10083, - 10084, - 10085, - 10086, - 10087, - 10088, - 10089, - 10090, - 10091, - 10092, - 10093, - 10096, - 10097, - 10098, - 10099, - 10100, - 10101, - 10102, - 10103, - 10104, - 10106, - 10107, - 10108, - 10109, - 10110, - 10111, - 10112, - 10113, - 10114, - 10115, - 10116, - 10117, - 10118, - 10119, - 10120, - 10121, - 10122, - 10123, - 10124, - 10125, - 10126, - 10127, - 10128, - 10129, - 10130, - 10131, - 10132, - 10133, - 10134, - 10135, - 10136, - 10137, - 10138, - 10139, - 10140, - 10141, - 10142, - 10143, - 10144, - 10145, - 10146, - 10147, - 10148, - 10149, - 10150, - 10151, - 10156, - 10157, - 10158, - 10159, - 10160, - 10161, - 10162, - 10164, - 10165, - 10167, - 10168, - 10169, - 10170, - 10171, - 10173, - 10174, - 10175, - 10178, - 10179, - 10180, - 10181, - 10182, - 10183, - 10184, - 10185, - 10186, - 10187, - 10188, - 10189, - 10190, - 10191, - 10193, - 10194, - 10195, - 10198, - 10199, - 10200, - 10201, - 10202, - 10203, - 10204, - 10205, - 10206, - 10207, - 10208, - 10209, - 10210, - 10211, - 10213, - 10214, - 10215, - 10216, - 10217, - 10218, - 10219, - 10220, - 10221, - 10222, - 10223, - 10224, - 10225, - 10226, - 10227, - 10228, - 10229, - 10230, - 10231, - 10232, - 10233, - 10234, - 10235, - 10236, - 10237, - 10238, - 10239, - 10240, - 10241, - 10242, - 10243, - 10244, - 10245, - 10246, - 10247, - 10248, - 10249, - 10250, - 10251, - 10252, - 10253, - 10254, - 10255, - 10256, - 10257, - 10258, - 10259, - 10260, - 10261, - 10262, - 10263, - 10264, - 10265, - 10266, - 10267, - 10268, - 10269, - 10270, - 10271, - 10272, - 10273, - 10274, - 10275, - 10276, - 10277, - 10278, - 10279, - 10280, - 10281, - 10282, - 10283, - 10284, - 10285, - 10286, - 10287, - 10288, - 10289, - 10290, - 10291, - 10292, - 10293, - 10294, - 10295, - 10296, - 10297, - 10298, - 10299, - 10301, - 10303, - 10304, - 10305, - 10306, - 10307, - 10308, - 10309, - 10310, - 10311, - 10312, - 10313, - 10314, - 10315, - 10316, - 10317, - 10318, - 10319, - 10320, - 10321, - 10322, - 10323, - 10324, - 10325, - 10326, - 10327, - 10328, - 10329, - 10330, - 10331, - 10332, - 10333, - 10334, - 10335, - 10336, - 10337, - 10338, - 10339, - 10340, - 10341, - 10342, - 10343, - 10344, - 10345, - 10346, - 10347, - 10348, - 10349, - 10350, - 10351, - 10352, - 10353, - 10354, - 10355, - 10356, - 10357, - 10358, - 10359, - 10360, - 10361, - 10362, - 10363, - 10364, - 10365, - 10366, - 10367, - 10368, - 10369, - 10370, - 10371, - 10372, - 10373, - 10374, - 10375, - 10378, - 10379, - 10380, - 10381, - 10382, - 10383, - 10384, - 10385, - 10386, - 10387, - 10388, - 10389, - 10390, - 10391, - 10392, - 10393, - 10394, - 10395, - 10396, - 10397, - 10398, - 10399, - 10400, - 10401, - 10402, - 10404, - 10405, - 10407, - 10408, - 10410, - 10411, - 10413, - 10414, - 10415, - 10416, - 10417, - 10418, - 10419, - 10420, - 10421, - 10422, - 10423, - 10424, - 10425, - 10426, - 10427, - 10428, - 10429, - 10430, - 10431, - 10432, - 10433, - 10434, - 10435, - 10436, - 10437, - 10438, - 10439, - 10440, - 10441, - 10442, - 10443, - 10444, - 10445, - 10446, - 10447, - 10448, - 10449, - 10450, - 10451, - 10452, - 10453, - 10454, - 10455, - 10457, - 10459, - 10460, - 10461, - 10462, - 10463, - 10464, - 10465, - 10466, - 10467, - 10468, - 10469, - 10470, - 10471, - 10472, - 10473, - 10474, - 10475, - 10476, - 10477, - 10478, - 10479, - 10480, - 10481, - 10482, - 10483, - 10484, - 10485, - 10486, - 10487, - 10488, - 10489, - 10490, - 10491, - 10492, - 10493, - 10495, - 10496, - 10497, - 10498, - 10499, - 10500, - 10501, - 10502, - 10503, - 10504, - 10505, - 10506, - 10507, - 10508, - 10509, - 10510, - 10511, - 10512, - 10513, - 10514, - 10515, - 10516, - 10517, - 10520, - 10521, - 10522, - 10523, - 10524, - 10526, - 10527, - 10528, - 10529, - 10530, - 10531, - 10533, - 10535, - 10536, - 10537, - 10538, - 10539, - 10540, - 10541, - 10542, - 10544, - 10545, - 10546, - 10548, - 10549, - 10551, - 10553, - 10555, - 10556, - 10557, - 10558, - 10559, - 10560, - 10561, - 10562, - 10563, - 10564, - 10565, - 10566, - 10567, - 10568, - 10569, - 10570, - 10571, - 10572, - 10573, - 10574, - 10575, - 10576, - 10577, - 10578, - 10579, - 10580, - 10581, - 10582, - 10583, - 10584, - 10585, - 10586, - 10587, - 10588, - 10589, - 10590, - 10591, - 10592, - 10593, - 10594, - 10595, - 10596, - 10597, - 10598, - 10599, - 10600, - 10601, - 10602, - 10603, - 10604, - 10605, - 10606, - 10607, - 10608, - 10609, - 10610, - 10611, - 10612, - 10613, - 10614, - 10615, - 10616, - 10617, - 10618, - 10619, - 10620, - 10621, - 10622, - 10624, - 10625, - 10627, - 10628, - 10629, - 10630, - 10631, - 10634, - 10635, - 10636, - 10637, - 10638, - 10639, - 10640, - 10641, - 10642, - 10643, - 10644, - 10645, - 10646, - 10647, - 10648, - 10649, - 10650, - 10651, - 10652, - 10653, - 10654, - 10655, - 10656, - 10657, - 10658, - 10659, - 10660, - 10661, - 10662, - 10663, - 10664, - 10665, - 10666, - 10667, - 10668, - 10669, - 10670, - 10671, - 10672, - 10673, - 10674, - 10675, - 10676, - 10677, - 10678, - 10679, - 10680, - 10681, - 10682, - 10683, - 10684, - 10685, - 10686, - 10687, - 10688, - 10689, - 10690, - 10691, - 10692, - 10693, - 10694, - 10695, - 10696, - 10697, - 10699, - 10700, - 10702, - 10703, - 10704, - 10705, - 10706, - 10707, - 10708, - 10709, - 10710, - 10711, - 10712, - 10713, - 10714, - 10715, - 10716, - 10717, - 10718, - 10719, - 10720, - 10721, - 10722, - 10723, - 10724, - 10725, - 10727, - 10728, - 10729, - 10730, - 10731, - 10734, - 10735, - 10736, - 10737, - 10738, - 10739, - 10741, - 10742, - 10744, - 10745, - 10746, - 10747, - 10748, - 10749, - 10750, - 10751, - 10752, - 10753, - 10754, - 10755, - 10756, - 10757, - 10758, - 10759, - 10760, - 10761, - 10762, - 10763, - 10764, - 10765, - 10766, - 10767, - 10768, - 10769, - 10770, - 10771, - 10772, - 10773, - 10774, - 10775, - 10776, - 10777, - 10778, - 10779, - 10780, - 10781, - 10782, - 10783, - 10784, - 10785, - 10786, - 10787, - 10788, - 10789, - 10790, - 10791, - 10792, - 10793, - 10794, - 10795, - 10796, - 10797, - 10798, - 10799, - 10800, - 10801, - 10802, - 10803, - 10804, - 10805, - 10806, - 10807, - 10808, - 10809, - 10810, - 10811, - 10812, - 10813, - 10814, - 10815, - 10818, - 10819, - 10820, - 10821, - 10822, - 10823, - 10824, - 10825, - 10826, - 10827, - 10828, - 10829, - 10830, - 10832, - 10833, - 10834, - 10835, - 10836, - 10837, - 10838, - 10839, - 10840, - 10841, - 10843, - 10844, - 10845, - 10846, - 10847, - 10848, - 10850, - 10851, - 10853, - 10854, - 10855, - 10856, - 10857, - 10858, - 10859, - 10860, - 10861, - 10862, - 10863, - 10864, - 10865, - 10866, - 10867, - 10868, - 10869, - 10870, - 10871, - 10872, - 10873, - 10874, - 10875, - 10876, - 10878, - 10879, - 10880, - 10881, - 10886, - 10887, - 10888, - 10889, - 10890, - 10891, - 10892, - 10893, - 10894, - 10895, - 10896, - 10897, - 10898, - 10899, - 10900, - 10901, - 10904, - 10905, - 10906, - 10907, - 10908, - 10909, - 10910, - 10911, - 10912, - 10913, - 10915, - 10916, - 10917, - 10918, - 10919, - 10920, - 10921, - 10924, - 10925, - 10926, - 10927, - 10928, - 10929, - 10930, - 10931, - 10932, - 10933, - 10934, - 10935, - 10936, - 10937, - 10938, - 10939, - 10940, - 10941, - 10942, - 10943, - 10944, - 10945, - 10946, - 10947, - 10948, - 10949, - 10950, - 10951, - 10952, - 10953, - 10954, - 10955, - 10956, - 10957, - 10958, - 10959, - 10961, - 10962, - 10963, - 10964, - 10965, - 10966, - 10967, - 10968, - 10969, - 10970, - 10971, - 10972, - 10973, - 10974, - 10975, - 10976, - 10977, - 10978, - 10979, - 10980, - 10981, - 10982, - 10983, - 10984, - 10985, - 10986, - 10987, - 10988, - 10989, - 10990, - 10991, - 10992, - 10993, - 10994, - 10995, - 10996, - 10997, - 10998, - 10999, - 11000, - 11001, - 11002, - 11003, - 11004, - 11005, - 11006, - 11007, - 11008, - 11009, - 11010, - 11011, - 11012, - 11013, - 11014, - 11015, - 11016, - 11017, - 11018, - 11019, - 11020, - 11021, - 11022, - 11023, - 11024, - 11025, - 11026, - 11027, - 11028, - 11029, - 11030, - 11031, - 11032, - 11033, - 11034, - 11035, - 11036, - 11037, - 11038, - 11039, - 11040, - 11041, - 11042, - 11043, - 11044, - 11045, - 11046, - 11047, - 11048, - 11049, - 11050, - 11051, - 11052, - 11053, - 11054, - 11055, - 11056, - 11057, - 11058, - 11059, - 11060, - 11061, - 11062, - 11063, - 11064, - 11065, - 11066, - 11067, - 11068, - 11069, - 11070, - 11071, - 11072, - 11073, - 11074, - 11075, - 11076, - 11077, - 11080, - 11081, - 11082, - 11083, - 11084, - 11086, - 11087, - 11088, - 11090, - 11091, - 11092, - 11093, - 11094, - 11095, - 11096, - 11097, - 11098, - 11099, - 11100, - 11101, - 11102, - 11103, - 11104, - 11106, - 11107, - 11108, - 11109, - 11110, - 11111, - 11112, - 11113, - 11114, - 11115, - 11116, - 11117, - 11118, - 11119, - 11120, - 11121, - 11122, - 11123, - 11124, - 11125, - 11126, - 11127, - 11128, - 11129, - 11130, - 11131, - 11132, - 11133, - 11134, - 11135, - 11136, - 11137, - 11138, - 11139, - 11140, - 11141, - 11142, - 11143, - 11144, - 11145, - 11146, - 11147, - 11148, - 11149, - 11150, - 11151, - 11152, - 11153, - 11154, - 11155, - 11156, - 11157, - 11158, - 11159, - 11160, - 11161, - 11162, - 11163, - 11164, - 11165, - 11166, - 11167, - 11168, - 11169, - 11170, - 11171, - 11172, - 11173, - 11174, - 11175, - 11176, - 11177, - 11178, - 11179, - 11180, - 11181, - 11182, - 11183, - 11184, - 11185, - 11188, - 11189, - 11190, - 11191, - 11192, - 11193, - 11194, - 11195, - 11196, - 11197, - 11198, - 11199, - 11200, - 11201, - 11202, - 11203, - 11204, - 11205, - 11206, - 11207, - 11208, - 11209, - 11210, - 11211, - 11212, - 11213, - 11214, - 11215, - 11216, - 11217, - 11218, - 11219, - 11220, - 11221, - 11222, - 11223, - 11224, - 11225, - 11226, - 11227, - 11228, - 11229, - 11230, - 11231, - 11232, - 11233, - 11234, - 11235, - 11236, - 11237, - 11238, - 11239, - 11240, - 11241, - 11242, - 11243, - 11244, - 11245, - 11246, - 11247, - 11249, - 11251, - 11252, - 11253, - 11254, - 11255, - 11256, - 11257, - 11258, - 11259, - 11260, - 11261, - 11262, - 11263, - 11264, - 11265, - 11266, - 11267, - 11268, - 11269, - 11270, - 11271, - 11272, - 11273, - 11274, - 11275, - 11276, - 11277, - 11278, - 11279, - 11282, - 11283, - 11284, - 11285, - 11286, - 11287, - 11288, - 11289, - 11290, - 11291, - 11292, - 11293, - 11294, - 11295, - 11296, - 11297, - 11298, - 11299, - 11300, - 11301, - 11302, - 11303, - 11304, - 11305, - 11306, - 11307, - 11308, - 11309, - 11310, - 11312, - 11313, - 11314, - 11315, - 11316, - 11317, - 11318, - 11319, - 11320, - 11321, - 11322, - 11323, - 11324, - 11325, - 11326, - 11327, - 11328, - 11329, - 11330, - 11331, - 11332, - 11333, - 11334, - 11335, - 11336, - 11337, - 11338, - 11339, - 11340, - 11341, - 11342, - 11343, - 11344, - 11345, - 11346, - 11347, - 11348, - 11349, - 11350, - 11351, - 11352, - 11353, - 11354, - 11355, - 11358, - 11359, - 11360, - 11361, - 11362, - 11363, - 11364, - 11365, - 11366, - 11368, - 11369, - 11370, - 11371, - 11372, - 11373, - 11374, - 11375, - 11376, - 11377, - 11378, - 11379, - 11380, - 11381, - 11382, - 11383, - 11384, - 11385, - 11386, - 11387, - 11388, - 11389, - 11390, - 11391, - 11392, - 11393, - 11394, - 11395, - 11396, - 11397, - 11398, - 11399, - 11400, - 11401, - 11402, - 11403, - 11404, - 11405, - 11406, - 11407, - 11408, - 11409, - 11410, - 11411, - 11416, - 11417, - 11418, - 11419, - 11420, - 11421, - 11422, - 11423, - 11424, - 11425, - 11426, - 11427, - 11428, - 11429, - 11430, - 11431, - 11434, - 11435, - 11436, - 11437, - 11438, - 11439, - 11440, - 11441, - 11442, - 11443, - 11444, - 11445, - 11446, - 11447, - 11448, - 11449, - 11452, - 11453, - 11454, - 11455, - 11456, - 11457, - 11458, - 11459, - 11460, - 11461, - 11462, - 11463, - 11464, - 11465, - 11466, - 11467, - 11468, - 11469, - 11470, - 11471, - 11472, - 11473, - 11474, - 11475, - 11476, - 11477, - 11478, - 11480, - 11481, - 11482, - 11483, - 11484, - 11485, - 11486, - 11487, - 11488, - 11489, - 11490, - 11491, - 11492, - 11493, - 11494, - 11495, - 11496, - 11497, - 11498, - 11500, - 11501, - 11502, - 11503, - 11504, - 11505, - 11506, - 11507, - 11508, - 11509, - 11510, - 11511, - 11512, - 11513, - 11514, - 11515, - 11516, - 11517, - 11518, - 11519, - 11520, - 11521, - 11522, - 11523, - 11524, - 11525, - 11526, - 11527, - 11528, - 11529, - 11530, - 11531, - 11532, - 11533, - 11534, - 11535, - 11536, - 11537, - 11538, - 11539, - 11540, - 11541, - 11542, - 11543, - 11544, - 11546, - 11547, - 11548, - 11549, - 11550, - 11551, - 11552, - 11553, - 11554, - 11555, - 11556, - 11557, - 11558, - 11559, - 11560, - 11561, - 11562, - 11563, - 11564, - 11565, - 11566, - 11567, - 11568, - 11569, - 11570, - 11571, - 11572, - 11573, - 11576, - 11577, - 11578, - 11579, - 11580, - 11581, - 11582, - 11583, - 11584, - 11585, - 11586, - 11587, - 11588, - 11589, - 11590, - 11591, - 11592, - 11593, - 11594, - 11595, - 11596, - 11597, - 11598, - 11599, - 11600, - 11601, - 11602, - 11603, - 11604, - 11605, - 11606, - 11607, - 11608, - 11609, - 11610, - 11611, - 11612, - 11613, - 11614, - 11615, - 11616, - 11617, - 11618, - 11619, - 11620, - 11621, - 11622, - 11623, - 11624, - 11625, - 11626, - 11627, - 11628, - 11629, - 11630, - 11631, - 11632, - 11633, - 11634, - 11635, - 11636, - 11637, - 11639, - 11640, - 11642, - 11643, - 11644, - 11645, - 11646, - 11647, - 11648, - 11649, - 11650, - 11651, - 11652, - 11653, - 11654, - 11655, - 11656, - 11657, - 11658, - 11659, - 11660, - 11661, - 11662, - 11663, - 11664, - 11665, - 11666, - 11667, - 11668, - 11669, - 11672, - 11673, - 11674, - 11675, - 11676, - 11677, - 11678, - 11679, - 11680, - 11681, - 11682, - 11683, - 11684, - 11685, - 11686, - 11687, - 11688, - 11689, - 11690, - 11691, - 11692, - 11693, - 11694, - 11695, - 11696, - 11697, - 11698, - 11699, - 11700, - 11701, - 11702, - 11703, - 11704, - 11705, - 11706, - 11707, - 11708, - 11709, - 11710, - 11711, - 11712, - 11713, - 11714, - 11715, - 11716, - 11717, - 11718, - 11719, - 11720, - 11721, - 11722, - 11723, - 11724, - 11725, - 11726, - 11727, - 11728, - 11729, - 11730, - 11731, - 11732, - 11733, - 11734, - 11735, - 11736, - 11737, - 11738, - 11739, - 11740, - 11741, - 11742, - 11743, - 11744, - 11746, - 11747, - 11750, - 11751, - 11752, - 11753, - 11754, - 11755, - 11756, - 11757, - 11758, - 11759, - 11760, - 11761, - 11762, - 11763, - 11764, - 11765, - 11766, - 11767, - 11768, - 11769, - 11770, - 11771, - 11772, - 11773, - 11774, - 11776, - 11777, - 11778, - 11779, - 11780, - 11781, - 11782, - 11783, - 11784, - 11785, - 11786, - 11787, - 11788, - 11789, - 11790, - 11791, - 11792, - 11793, - 11794, - 11795, - 11796, - 11797, - 11798, - 11799, - 11800, - 11801, - 11802, - 11803, - 11804, - 11805, - 11810, - 11811, - 11812, - 11813, - 11814, - 11815, - 11816, - 11817, - 11818, - 11819, - 11820, - 11821, - 11822, - 11823, - 11824, - 11825, - 11828, - 11829, - 11830, - 11831, - 11832, - 11833, - 11834, - 11835, - 11836, - 11837, - 11838, - 11839, - 11840, - 11841, - 11842, - 11843, - 11844, - 11845, - 11848, - 11849, - 11850, - 11851, - 11852, - 11853, - 11854, - 11855, - 11856, - 11857, - 11858, - 11859, - 11860, - 11861, - 11862, - 11863, - 11864, - 11865, - 11866, - 11867, - 11868, - 11869, - 11870, - 11871, - 11872, - 11873, - 11874, - 11875, - 11876, - 11877, - 11878, - 11879, - 11880, - 11881, - 11882, - 11883, - 11884, - 11885, - 11886, - 11887, - 11888, - 11889, - 11890, - 11891, - 11892, - 11893, - 11894, - 11895, - 11896, - 11897, - 11898, - 11899, - 11900, - 11901, - 11902, - 11903, - 11904, - 11905, - 11906, - 11907, - 11908, - 11909, - 11910, - 11911, - 11912, - 11913, - 11914, - 11915, - 11916, - 11917, - 11918, - 11919, - 11920, - 11921, - 11922, - 11923, - 11924, - 11925, - 11926, - 11927, - 11928, - 11929, - 11930, - 11931, - 11932, - 11933, - 11935, - 11936, - 11937, - 11938, - 11939, - 11941, - 11944, - 11946, - 11947, - 11948, - 11949, - 11950, - 11951, - 11952, - 11953, - 11954, - 11955, - 11956, - 11957, - 11958, - 11959, - 11960, - 11961, - 11964, - 11965, - 11968, - 11969, - 11970, - 11971, - 11972, - 11973, - 11975, - 11976, - 11978, - 11979, - 11981, - 11982, - 11983, - 11984, - 11985, - 11988, - 11989, - 11990, - 11991, - 11992, - 11993, - 11994, - 11995, - 11996, - 11997, - 11998, - 11999, - 12001, - 12002, - 12003, - 12004, - 12005, - 12006, - 12007, - 12008, - 12009, - 12010, - 12011, - 12012, - 12013, - 12014, - 12015, - 12016, - 12017, - 12018, - 12019, - 12020, - 12021, - 12022, - 12023, - 12024, - 12025, - 12026, - 12027, - 12028, - 12029, - 12030, - 12031, - 12032, - 12033, - 12034, - 12035, - 12036, - 12037, - 12038, - 12039, - 12040, - 12041, - 12042, - 12043, - 12044, - 12045, - 12046, - 12047, - 12048, - 12049, - 12052, - 12053, - 12054, - 12055, - 12056, - 12057, - 12058, - 12059, - 12060, - 12061, - 12062, - 12063, - 12064, - 12065, - 12066, - 12067, - 12068, - 12069, - 12070, - 12071, - 12072, - 12073, - 12074, - 12075, - 12077, - 12078, - 12082, - 12083, - 12084, - 12085, - 12086, - 12087, - 12088, - 12089, - 12090, - 12091, - 12092, - 12093, - 12094, - 12095, - 12096, - 12097, - 12098, - 12099, - 12100, - 12101, - 12102, - 12103, - 12104, - 12105, - 12106, - 12107, - 12112, - 12113, - 12114, - 12115, - 12116, - 12117, - 12118, - 12119, - 12120, - 12121, - 12122, - 12123, - 12124, - 12125, - 12127, - 12128, - 12130, - 12131, - 12134, - 12135, - 12136, - 12137, - 12138, - 12139, - 12140, - 12141, - 12142, - 12143, - 12144, - 12145, - 12147, - 12148, - 12149, - 12150, - 12151, - 12154, - 12155, - 12156, - 12157, - 12158, - 12159, - 12160, - 12161, - 12162, - 12163, - 12164, - 12165, - 12166, - 12167, - 12168, - 12169, - 12170, - 12171, - 12172, - 12173, - 12174, - 12175, - 12176, - 12177, - 12178, - 12179, - 12180, - 12181, - 12182, - 12183, - 12184, - 12185, - 12186, - 12187, - 12188, - 12189, - 12190, - 12191, - 12192, - 12193, - 12194, - 12195, - 12196, - 12197, - 12198, - 12199, - 12200, - 12201, - 12202, - 12203, - 12204, - 12205, - 12206, - 12207, - 12208, - 12209, - 12210, - 12211, - 12212, - 12213, - 12214, - 12215, - 12216, - 12217, - 12218, - 12219, - 12220, - 12221, - 12222, - 12223, - 12224, - 12225, - 12226, - 12227, - 12228, - 12229, - 12230, - 12231, - 12232, - 12233, - 12234, - 12235, - 12236, - 12237, - 12238, - 12239, - 12240, - 12241, - 12242, - 12243, - 12244, - 12245, - 12247, - 12250, - 12251, - 12252, - 12253, - 12254, - 12255, - 12256, - 12257, - 12258, - 12259, - 12260, - 12261, - 12262, - 12263, - 12264, - 12265, - 12266, - 12267, - 12268, - 12269, - 12270, - 12271, - 12272, - 12273, - 12274, - 12275, - 12276, - 12278, - 12279, - 12280, - 12281, - 12282, - 12283, - 12284, - 12285, - 12286, - 12287, - 12288, - 12289, - 12290, - 12291, - 12292, - 12293, - 12294, - 12295, - 12296, - 12297, - 12298, - 12299, - 12301, - 12302, - 12303, - 12304, - 12305, - 12306, - 12307, - 12308, - 12309, - 12310, - 12311, - 12316, - 12317, - 12318, - 12319, - 12320, - 12321, - 12322, - 12323, - 12324, - 12325, - 12326, - 12327, - 12328, - 12329, - 12330, - 12331, - 12334, - 12335, - 12336, - 12337, - 12338, - 12339, - 12340, - 12341, - 12342, - 12344, - 12345, - 12346, - 12347, - 12348, - 12349, - 12350, - 12351, - 12354, - 12355, - 12356, - 12357, - 12358, - 12359, - 12360, - 12361, - 12362, - 12363, - 12364, - 12365, - 12366, - 12367, - 12368, - 12369, - 12370, - 12371, - 12372, - 12373, - 12374, - 12375, - 12376, - 12377, - 12378, - 12379, - 12380, - 12382, - 12383, - 12384, - 12385, - 12386, - 12388, - 12389, - 12390, - 12391, - 12392, - 12393, - 12394, - 12395, - 12396, - 12397, - 12398, - 12399, - 12400, - 12401, - 12402, - 12403, - 12404, - 12405, - 12406, - 12407, - 12408, - 12409, - 12410, - 12411, - 12412, - 12413, - 12414, - 12415, - 12416, - 12417, - 12418, - 12419, - 12420, - 12421, - 12422, - 12423, - 12424, - 12425, - 12426, - 12427, - 12434, - 12435, - 12436, - 12437, - 12438, - 12439, - 12440, - 12441, - 12442, - 12443, - 12444, - 12445, - 12446, - 12447, - 12452, - 12453, - 12454, - 12455, - 12456, - 12457, - 12458, - 12459, - 12460, - 12461, - 12462, - 12463, - 12464, - 12465, - 12470, - 12471, - 12472, - 12473, - 12474, - 12475, - 12476, - 12477, - 12478, - 12479, - 12480, - 12481, - 12482, - 12483, - 12484, - 12485, - 12488, - 12489, - 12490, - 12491, - 12492, - 12493, - 12494, - 12495, - 12496, - 12497, - 12498, - 12499, - 12500, - 12501, - 12502, - 12503, - 12506, - 12507, - 12508, - 12509, - 12510, - 12511, - 12512, - 12513, - 12514, - 12515, - 12516, - 12517, - 12518, - 12519, - 12520, - 12521, - 12524, - 12525, - 12526, - 12527, - 12528, - 12529, - 12530, - 12531, - 12532, - 12533, - 12534, - 12535, - 12536, - 12537, - 12538, - 12539, - 12540, - 12541, - 12542, - 12543, - 12544, - 12545, - 12546, - 12547, - 12548, - 12549, - 12550, - 12551, - 12552, - 12553, - 12554, - 12555, - 12556, - 12557, - 12558, - 12559, - 12560, - 12561, - 12562, - 12563, - 12564, - 12565, - 12566, - 12567, - 12568, - 12569, - 12570, - 12571, - 12572, - 12573, - 12574, - 12575, - 12576, - 12577, - 12578, - 12579, - 12580, - 12581, - 12582, - 12583, - 12584, - 12585, - 12586, - 12587, - 12588, - 12589, - 12590, - 12591, - 12592, - 12593, - 12594, - 12595, - 12596, - 12597, - 12598, - 12599, - 12600, - 12601, - 12602, - 12603, - 12604, - 12605, - 12606, - 12607, - 12608, - 12609, - 12610, - 12611, - 12612, - 12613, - 12614, - 12615, - 12616, - 12617, - 12618, - 12619, - 12620, - 12621, - 12622, - 12623, - 12624, - 12625, - 12626, - 12628, - 12629, - 12630, - 12632, - 12633, - 12635, - 12637, - 12638, - 12639, - 12640, - 12641, - 12642, - 12643, - 12645, - 12646, - 12647, - 12648, - 12649, - 12650, - 12652, - 12653, - 12654, - 12655, - 12656, - 12657, - 12658, - 12659, - 12660, - 12661, - 12663, - 12664, - 12665, - 12666, - 12667, - 12668, - 12669, - 12670, - 12671, - 12672, - 12673, - 12674, - 12675, - 12676, - 12677, - 12678, - 12679, - 12680, - 12681, - 12682, - 12683, - 12684, - 12685, - 12686, - 12687, - 12688, - 12689, - 12690, - 12691, - 12692, - 12693, - 12694, - 12695, - 12696, - 12697, - 12698, - 12699, - 12700, - 12701, - 12702, - 12703, - 12704, - 12706, - 12707, - 12709, - 12711, - 12712, - 12713, - 12714, - 12715, - 12716, - 12717, - 12719, - 12720, - 12721, - 12722, - 12723, - 12724, - 12725, - 12726, - 12727, - 12728, - 12729, - 12730, - 12731, - 12732, - 12733, - 12734, - 12735, - 12736, - 12737, - 12738, - 12739, - 12740, - 12741, - 12742, - 12743, - 12744, - 12745, - 12746, - 12747, - 12748, - 12749, - 12750, - 12751, - 12752, - 12753, - 12754, - 12755, - 12756, - 12758, - 12759, - 12760, - 12761, - 12762, - 12763, - 12764, - 12765, - 12768, - 12769, - 12770, - 12771, - 12772, - 12773, - 12774, - 12775, - 12776, - 12777, - 12778, - 12779, - 12780, - 12781, - 12783, - 12784, - 12785, - 12786, - 12787, - 12788, - 12789, - 12790, - 12791, - 12793, - 12794, - 12795, - 12796, - 12797, - 12798, - 12799, - 12800, - 12801, - 12802, - 12803, - 12804, - 12805, - 12806, - 12807, - 12808, - 12809, - 12810, - 12811, - 12812, - 12813, - 12814, - 12815, - 12816, - 12817, - 12818, - 12819, - 12820, - 12821, - 12822, - 12824, - 12825, - 12826, - 12827, - 12828, - 12829, - 12830, - 12831, - 12832, - 12833, - 12834, - 12835, - 12836, - 12837, - 12838, - 12839, - 12840, - 12841, - 12842, - 12843, - 12844, - 12845, - 12846, - 12848, - 12849, - 12850, - 12851, - 12852, - 12853, - 12854, - 12855, - 12857, - 12858, - 12859, - 12860, - 12861, - 12862, - 12863, - 12865, - 12867, - 12868, - 12869, - 12870, - 12871, - 12872, - 12874, - 12875, - 12876, - 12877, - 12878, - 12879, - 12880, - 12881, - 12882, - 12883, - 12884, - 12885, - 12886, - 12887, - 12888, - 12889, - 12890, - 12891, - 12892, - 12893, - 12894, - 12895, - 12896, - 12897, - 12898, - 12899, - 12900, - 12901, - 12902, - 12903, - 12904, - 12905, - 12906, - 12907, - 12908, - 12909, - 12910, - 12911, - 12912, - 12913, - 12914, - 12915, - 12916, - 12917, - 12918, - 12919, - 12920, - 12922, - 12923, - 12924, - 12925, - 12926, - 12927, - 12928, - 12929, - 12931, - 12932, - 12933, - 12934, - 12935, - 12936, - 12937, - 12938, - 12939, - 12941, - 12942, - 12943, - 12944, - 12945, - 12946, - 12947, - 12948, - 12949, - 12950, - 12951, - 12952, - 12953, - 12954, - 12955, - 12956, - 12957, - 12959, - 12960, - 12961, - 12962, - 12963, - 12964, - 12965, - 12966, - 12967, - 12968, - 12969, - 12970, - 12971, - 12972, - 12973, - 12974, - 12975, - 12976, - 12977, - 12978, - 12979, - 12980, - 12981, - 12983, - 12984, - 12985, - 12986, - 12987, - 12988, - 12989, - 12990, - 12991, - 12992, - 12993, - 12994, - 12996, - 12998, - 12999, - 13000, - 13001, - 13002, - 13003, - 13005, - 13006, - 13007, - 13008, - 13009, - 13010, - 13011, - 13012, - 13013, - 13015, - 13016, - 13017, - 13018, - 13019, - 13020, - 13022, - 13023, - 13024, - 13025, - 13026, - 13027, - 13028, - 13029, - 13030, - 13031, - 13032, - 13033, - 13034, - 13035, - 13036, - 13037, - 13038, - 13039, - 13040, - 13041, - 13042, - 13043, - 13044, - 13045, - 13046, - 13047, - 13048, - 13049, - 13050, - 13051, - 13052, - 13053, - 13054, - 13055, - 13056, - 13057, - 13058, - 13059, - 13060, - 13061, - 13062, - 13063, - 13064, - 13065, - 13066, - 13067, - 13068, - 13069, - 13070, - 13071, - 13072, - 13073, - 13074, - 13075, - 13076, - 13077, - 13078, - 13079, - 13081, - 13082, - 13083, - 13084, - 13085, - 13086, - 13089, - 13090, - 13091, - 13092, - 13093, - 13096, - 13097, - 13098, - 13099, - 13100, - 13101, - 13102, - 13103, - 13104, - 13105, - 13107, - 13108, - 13109, - 13110, - 13111, - 13112, - 13113, - 13114, - 13115, - 13116, - 13117, - 13118, - 13119, - 13120, - 13121, - 13122, - 13123, - 13124, - 13125, - 13126, - 13127, - 13128, - 13129, - 13130, - 13131, - 13132, - 13133, - 13134, - 13135, - 13136, - 13137, - 13138, - 13140, - 13141, - 13142, - 13144, - 13145, - 13146, - 13147, - 13148, - 13149, - 13150, - 13151, - 13152, - 13154, - 13155, - 13156, - 13157, - 13158, - 13159, - 13160, - 13161, - 13162, - 13163, - 13164, - 13165, - 13166, - 13167, - 13168, - 13169, - 13170, - 13171, - 13172, - 13173, - 13174, - 13175, - 13176, - 13177, - 13178, - 13179, - 13181, - 13182, - 13183, - 13184, - 13185, - 13186, - 13187, - 13188, - 13189, - 13190, - 13191, - 13192, - 13193, - 13194, - 13195, - 13196, - 13197, - 13198, - 13199, - 13200, - 13201, - 13202, - 13203, - 13204, - 13205, - 13206, - 13207, - 13208, - 13209, - 13210, - 13211, - 13212, - 13213, - 13214, - 13215, - 13216, - 13218, - 13219, - 13220, - 13221, - 13222, - 13223, - 13224, - 13225, - 13226, - 13227, - 13228, - 13229, - 13230, - 13231, - 13232, - 13233, - 13234, - 13235, - 13236, - 13237, - 13238, - 13239, - 13240, - 13241, - 13242, - 13243, - 13244, - 13245, - 13246, - 13247, - 13248, - 13249, - 13250, - 13251, - 13252, - 13253, - 13255, - 13256, - 13257, - 13258, - 13259, - 13260, - 13261, - 13262, - 13263, - 13264, - 13265, - 13266, - 13267, - 13268, - 13269, - 13270, - 13271, - 13272, - 13273, - 13274, - 13275, - 13276, - 13277, - 13278, - 13281, - 13282, - 13283, - 13284, - 13285, - 13286, - 13287, - 13288, - 13289, - 13290, - 13291, - 13292, - 13293, - 13294, - 13295, - 13298, - 13300, - 13301, - 13302, - 13303, - 13304, - 13305, - 13306, - 13308, - 13309, - 13310, - 13311, - 13312, - 13314, - 13315, - 13316, - 13317, - 13318, - 13319, - 13320, - 13321, - 13322, - 13323, - 13324, - 13325, - 13326, - 13327, - 13328, - 13329, - 13330, - 13331, - 13332, - 13333, - 13334, - 13335, - 13336, - 13338, - 13339, - 13340, - 13341, - 13342, - 13343, - 13344, - 13345, - 13346, - 13347, - 13348, - 13349, - 13350, - 13351, - 13352, - 13353, - 13355, - 13356, - 13357, - 13358, - 13359, - 13360, - 13361, - 13362, - 13363, - 13364, - 13366, - 13367, - 13368, - 13370, - 13371, - 13372, - 13373, - 13374, - 13375, - 13376, - 13377, - 13378, - 13379, - 13380, - 13381, - 13382, - 13383, - 13385, - 13386, - 13388, - 13389, - 13390, - 13392, - 13393, - 13394, - 13395, - 13396, - 13397, - 13398, - 13399, - 13400, - 13401, - 13403, - 13404, - 13405, - 13406, - 13407, - 13408, - 13409, - 13410, - 13412, - 13413, - 13414, - 13415, - 13416, - 13417, - 13418, - 13419, - 13420, - 13421, - 13422, - 13423, - 13424, - 13425, - 13426, - 13427, - 13429, - 13430, - 13431, - 13432, - 13433, - 13434, - 13435, - 13436, - 13437, - 13438, - 13439, - 13440, - 13441, - 13442, - 13443, - 13444, - 13445, - 13446, - 13447, - 13448, - 13449, - 13450, - 13451, - 13452, - 13453, - 13454, - 13455, - 13456, - 13457, - 13458, - 13459, - 13460, - 13461, - 13462, - 13463, - 13464, - 13466, - 13467, - 13468, - 13469, - 13470, - 13471, - 13472, - 13473, - 13474, - 13475, - 13476, - 13477, - 13478, - 13479, - 13480, - 13481, - 13482, - 13483, - 13484, - 13485, - 13486, - 13487, - 13488, - 13489, - 13490, - 13491, - 13492, - 13493, - 13494, - 13495, - 13496, - 13497, - 13498, - 13499, - 13500, - 13501, - 13502, - 13503, - 13504, - 13505, - 13506, - 13507, - 13508, - 13509, - 13510, - 13511, - 13512, - 13513, - 13514, - 13515, - 13516, - 13517, - 13518, - 13519, - 13520, - 13521, - 13522, - 13523, - 13524, - 13525, - 13526, - 13527, - 13528, - 13529, - 13530, - 13531, - 13532, - 13533, - 13534, - 13535, - 13536, - 13537, - 13538, - 13539, - 13540, - 13541, - 13542, - 13543, - 13544, - 13545, - 13546, - 13547, - 13548, - 13549, - 13550, - 13551, - 13552, - 13553, - 13554, - 13555, - 13556, - 13557, - 13558, - 13559, - 13560, - 13561, - 13562, - 13563, - 13564, - 13565, - 13566, - 13567, - 13568, - 13569, - 13570, - 13571, - 13572, - 13573, - 13574, - 13575, - 13576, - 13577, - 13578, - 13579, - 13580, - 13581, - 13582, - 13583, - 13584, - 13585, - 13586, - 13587, - 13588, - 13589, - 13590, - 13591, - 13592, - 13593, - 13594, - 13595, - 13596, - 13597, - 13598, - 13599, - 13600, - 13601, - 13602, - 13603, - 13604, - 13605, - 13606, - 13607, - 13608, - 13609, - 13610, - 13611, - 13612, - 13613, - 13614, - 13615, - 13616, - 13618, - 13620, - 13621, - 13623, - 13624, - 13625, - 13626, - 13627, - 13628, - 13629, - 13630, - 13631, - 13632, - 13633, - 13634, - 13635, - 13636, - 13637, - 13638, - 13639, - 13640, - 13641, - 13642, - 13643, - 13644, - 13645, - 13646, - 13647, - 13648, - 13649, - 13650, - 13651, - 13652, - 13653, - 13654, - 13655, - 13656, - 13657, - 13658, - 13659, - 13660, - 13661, - 13662, - 13663, - 13664, - 13665, - 13666, - 13667, - 13668, - 13669, - 13670, - 13671, - 13672, - 13673, - 13674, - 13675, - 13676, - 13678, - 13679, - 13680, - 13681, - 13682, - 13683, - 13684, - 13685, - 13686, - 13687, - 13688, - 13689, - 13690, - 13691, - 13692, - 13693, - 13694, - 13695, - 13696, - 13697, - 13698, - 13699, - 13700, - 13701, - 13702, - 13703, - 13704, - 13705, - 13706, - 13707, - 13708, - 13709, - 13710, - 13711, - 13712, - 13713, - 13714, - 13715, - 13716, - 13717, - 13718, - 13719, - 13720, - 13721, - 13722, - 13723, - 13724, - 13725, - 13726, - 13727, - 13728, - 13729, - 13730, - 13731, - 13732, - 13733, - 13734, - 13735, - 13736, - 13737, - 13738, - 13739, - 13740, - 13741, - 13742, - 13743, - 13744, - 13745, - 13746, - 13747, - 13748, - 13749, - 13750, - 13751, - 13752, - 13753, - 13754, - 13755, - 13756, - 13757, - 13758, - 13759, - 13760, - 13761, - 13762, - 13763, - 13764, - 13765, - 13766, - 13767, - 13768, - 13769, - 13770, - 13771, - 13772, - 13773, - 13774, - 13775, - 13776, - 13777, - 13778, - 13779, - 13780, - 13781, - 13782, - 13783, - 13784, - 13785, - 13786, - 13787, - 13788, - 13789, - 13790, - 13791, - 13792, - 13793, - 13794, - 13795, - 13796, - 13797, - 13798, - 13799, - 13800, - 13802, - 13803, - 13804, - 13805, - 13806, - 13807, - 13808, - 13809, - 13810, - 13811, - 13812, - 13813, - 13814, - 13815, - 13816, - 13818, - 13819, - 13820, - 13821, - 13822, - 13823, - 13824, - 13825, - 13826, - 13827, - 13828, - 13829, - 13830, - 13831, - 13832, - 13833, - 13834, - 13835, - 13836, - 13837, - 13838, - 13839, - 13841, - 13842, - 13843, - 13844, - 13845, - 13846, - 13847, - 13848, - 13849, - 13850, - 13852, - 13854, - 13855, - 13856, - 13857, - 13858, - 13859, - 13861, - 13862, - 13863, - 13864, - 13865, - 13866, - 13867, - 13868, - 13869, - 13870, - 13871, - 13872, - 13873, - 13874, - 13875, - 13876, - 13877, - 13878, - 13879, - 13880, - 13882, - 13883, - 13884, - 13885, - 13886, - 13888, - 13889, - 13890, - 13891, - 13892, - 13893, - 13894, - 13895, - 13896, - 13898, - 13899, - 13900, - 13901, - 13902, - 13903, - 13904, - 13905, - 13906, - 13907, - 13908, - 13909, - 13910, - 13911, - 13912, - 13914, - 13915, - 13916, - 13917, - 13918, - 13919, - 13920, - 13921, - 13922, - 13923, - 13924, - 13925, - 13926, - 13927, - 13928, - 13929, - 13930, - 13931, - 13932, - 13933, - 13934, - 13935, - 13936, - 13937, - 13938, - 13939, - 13940, - 13941, - 13942, - 13943, - 13944, - 13945, - 13946, - 13947, - 13948, - 13949, - 13950, - 13951, - 13952, - 13953, - 13954, - 13955, - 13956, - 13957, - 13958, - 13959, - 13960, - 13961, - 13963, - 13964, - 13965, - 13966, - 13967, - 13968, - 13969, - 13970, - 13971, - 13972, - 13973, - 13974, - 13975, - 13976, - 13977, - 13978, - 13979, - 13980, - 13981, - 13982, - 13983, - 13984, - 13985, - 13986, - 13987, - 13988, - 13989, - 13990, - 13991, - 13992, - 13993, - 13994, - 13995, - 13996, - 13997, - 13998, - 13999, - 14000, - 14001, - 14003, - 14004, - 14005, - 14006, - 14007, - 14009, - 14010, - 14011, - 14012, - 14013, - 14014, - 14015, - 14016, - 14017, - 14018, - 14019, - 14020, - 14021, - 14022, - 14023, - 14024, - 14025, - 14026, - 14028, - 14029, - 14030, - 14032, - 14033, - 14034, - 14035, - 14036, - 14037, - 14039, - 14040, - 14041, - 14042, - 14043, - 14044, - 14045, - 14046, - 14047, - 14048, - 14049, - 14050, - 14051, - 14052, - 14053, - 14054, - 14055, - 14056, - 14057, - 14058, - 14059, - 14060, - 14061, - 14062, - 14063, - 14064, - 14065, - 14066, - 14067, - 14068, - 14069, - 14070, - 14071, - 14081, - 14083, - 14084, - 14085, - 14086, - 14087, - 14089, - 14093, - 14095, - 14096, - 14099, - 14101, - 14102, - 14103, - 14104, - 14105, - 14107, - 14110, - 14111, - 14113, - 14114, - 14117, - 14119, - 14120, - 14121, - 14122, - 14123, - 14125, - 14127, - 14128, - 14129, - 14131, - 14132, - 14135, - 14137, - 14138, - 14139, - 14140, - 14141, - 14143, - 14146, - 14147, - 14149, - 14150, - 14153, - 14155, - 14156, - 14157, - 14158, - 14161, - 14162, - 14163, - 14164, - 14165, - 14168, - 14171, - 14173, - 14174, - 14175, - 14176, - 14177, - 14179, - 14180, - 14182, - 14183, - 14185, - 14186, - 14188, - 14189, - 14191, - 14192, - 14193, - 14194, - 14195, - 14197, - 14198, - 14200, - 14201, - 14203, - 14204, - 14205, - 14206, - 14209, - 14211, - 14213, - 14216, - 14218, - 14219, - 14222, - 14224, - 14225, - 14227, - 14228, - 14231, - 14233, - 14234, - 14236, - 14237, - 14240, - 14242, - 14243, - 14245, - 14246, - 14249, - 14251, - 14253, - 14254, - 14255, - 14257, - 14258, - 14259, - 14260, - 14261, - 14262, - 14264, - 14267, - 14269, - 14270, - 14271, - 14272, - 14273, - 14274, - 14275, - 14276, - 14277, - 14278, - 14279, - 14280, - 14281, - 14282, - 14283, - 14285, - 14287, - 14288, - 14289, - 14290, - 14291, - 14292, - 14293, - 14294, - 14295, - 14296, - 14297, - 14298, - 14299, - 14300, - 14302, - 14303, - 14304, - 14305, - 14306, - 14307, - 14308, - 14309, - 14310, - 14311, - 14312, - 14313, - 14314, - 14315, - 14316, - 14317, - 14318, - 14319, - 14320, - 14322, - 14323, - 14324, - 14325, - 14326, - 14327, - 14328, - 14329, - 14330, - 14331, - 14334, - 14335, - 14336, - 14338, - 14340, - 14342, - 14343, - 14344, - 14345, - 14346, - 14347, - 14348, - 14349, - 14350, - 14351, - 14352, - 14354, - 14357, - 14358, - 14359, - 14360, - 14361, - 14362, - 14363, - 14364, - 14365, - 14367, - 14368, - 14369, - 14370, - 14371, - 14372, - 14373, - 14374, - 14375, - 14376, - 14377, - 14378, - 14380, - 14385, - 14387, - 14389, - 14391, - 14393, - 14394, - 14395, - 14396, - 14397, - 14398, - 14399, - 14402, - 14403, - 14404, - 14405, - 14406, - 14407, - 14408, - 14409, - 14410, - 14411, - 14412, - 14413, - 14415, - 14416, - 14417, - 14418, - 14419, - 14426, - 14427, - 14428, - 14429, - 14430, - 14431, - 14438, - 14439, - 14440, - 14441, - 14442, - 14443, - 14444, - 14446, - 14447, - 14448, - 14450, - 14451, - 14452, - 14453, - 14454, - 14455, - 14458, - 14459, - 14460, - 14461, - 14462, - 14463, - 14464, - 14465, - 14466, - 14467, - 14468, - 14470, - 14471, - 14472, - 14474, - 14475, - 14476, - 14477, - 14478, - 14480, - 14482, - 14483, - 14484, - 14486, - 14487, - 14488, - 14489, - 14490, - 14492, - 14493, - 14494, - 14495, - 14496, - 14498, - 14499, - 14500, - 14501, - 14502, - 14504, - 14505, - 14506, - 14507, - 14510, - 14511, - 14513, - 14514, - 14516, - 14517, - 14518, - 14519, - 14520, - 14522, - 14523, - 14525, - 14526, - 14528, - 14529, - 14530, - 14531, - 14532, - 14534, - 14535, - 14536, - 14537, - 14538, - 14540, - 14541, - 14542, - 14543, - 14544, - 14546, - 14547, - 14548, - 14549, - 14550, - 14553, - 14554, - 14555, - 14556, - 14558, - 14559, - 14560, - 14561, - 14562, - 14564, - 14565, - 14566, - 14567, - 14568, - 14569, - 14574, - 14575, - 14576, - 14577, - 14578, - 14579, - 14580, - 14581, - 14582, - 14583, - 14584, - 14585, - 14586, - 14587, - 14588, - 14589, - 14590, - 14591, - 14592, - 14594, - 14595, - 14596, - 14597, - 14598, - 14599, - 14600, - 14601, - 14602, - 14603, - 14604, - 14605, - 14606, - 14624, - 14626, - 14628, - 14630, - 14631, - 14632, - 14633, - 14634, - 14635, - 14636, - 14637, - 14638, - 14639, - 14641, - 14642, - 14643, - 14645, - 14647, - 14648, - 14650, - 14652, - 14654, - 14655, - 14656, - 14657, - 14658, - 14659, - 14660, - 14661, - 14662, - 14663, - 14664, - 14665, - 14667, - 14670, - 14671, - 14672, - 14673, - 14674, - 14675, - 14678, - 14679, - 14680, - 14681, - 14682, - 14683, - 14684, - 14685, - 14686, - 14687, - 14688, - 14689, - 14690, - 14691, - 14692, - 14693, - 14694, - 14695, - 14716, - 14717, - 14721, - 14722, - 14726, - 14727, - 14729, - 14731, - 14732, - 14734, - 14736, - 14737, - 14739, - 14741, - 14742, - 14744, - 14746, - 14747, - 14749, - 14751, - 14752, - 14754, - 14757, - 14759, - 14761, - 14762, - 14764, - 14766, - 14767, - 14769, - 14771, - 14772, - 14774, - 14776, - 14777, - 14779, - 14781, - 14782, - 14784, - 14786, - 14787, - 14788, - 14789, - 14791, - 14792, - 14794, - 14796, - 14797, - 14798, - 14799, - 14801, - 14802, - 14804, - 14806, - 14808, - 14809, - 14811, - 14812, - 14813, - 14814, - 14816, - 14817, - 14818, - 14819, - 14823, - 14824, - 14826, - 14827, - 14828, - 14829, - 14830, - 14831, - 14832, - 14833, - 14834, - 14835, - 14836, - 14837, - 14838, - 14839, - 14840, - 14841, - 14842, - 14843, - 14844, - 14845, - 14846, - 14847, - 14848, - 14849, - 14850, - 14851, - 14852, - 14853, - 14854, - 14855, - 14856, - 14857, - 14859, - 14864, - 14865, - 14866, - 14867, - 14868, - 14869, - 14870, - 14871, - 14872, - 14873, - 14874, - 14875, - 14877, - 14879, - 14880, - 14881, - 14882, - 14883, - 14884, - 14885, - 14886, - 14887, - 14888, - 14889, - 14890, - 14891, - 14906, - 14907, - 14908, - 14909, - 14910, - 14911, - 14912, - 14913, - 14914, - 14915, - 14916, - 14917, - 14919, - 14922, - 14923, - 14924, - 14925, - 14926, - 14927, - 14930, - 14931, - 14932, - 14933, - 14934, - 14935, - 14936, - 14937, - 14938, - 14939, - 14940, - 14941, - 14942, - 14943, - 14944, - 14945, - 14946, - 14947 - ], - "23": [ - 7043, - 7052, - 7071, - 7075, - 7076, - 7079, - 7081, - 7086, - 7091, - 7096, - 7104, - 7115, - 7120, - 7121, - 7130, - 7133, - 7134, - 7140, - 7153, - 7161, - 7173, - 7177, - 7183, - 7186, - 7187, - 7192, - 7198, - 7209, - 7216, - 7222, - 7244, - 7247, - 7258, - 7263, - 7272, - 7279, - 7285, - 7295, - 7301, - 7312, - 7318, - 7320, - 7324, - 7327, - 7330, - 7346, - 7347, - 7353, - 7359, - 7360, - 7366, - 7391, - 7404, - 7411, - 7415, - 7416, - 7430, - 7437, - 7463, - 7470, - 7477, - 7488, - 7493, - 7506, - 7539, - 7543, - 7563, - 7566, - 7571, - 7572, - 7579, - 7584, - 7587, - 7588, - 7591, - 7593, - 7594, - 7598, - 7600, - 7607, - 7611, - 7617, - 7624, - 7634, - 7642, - 7643, - 7650, - 7659, - 7663, - 7668, - 7671, - 7700, - 7720, - 7721, - 7730, - 7731, - 7735, - 7743, - 7755, - 7757, - 7776, - 7783, - 7791, - 7810, - 7811, - 7815, - 7819, - 7822, - 7839, - 7841, - 7854, - 7862, - 7863, - 7868, - 7872, - 7875, - 7876, - 7883, - 7889, - 7898, - 7902, - 8529, - 8531, - 8533, - 8535, - 8550, - 8588, - 8652, - 8653, - 8701, - 8789, - 8802, - 8803, - 8853, - 8855, - 8932, - 8933, - 8957, - 8979, - 8981, - 9040, - 9041, - 9089, - 9091, - 9107, - 9134, - 9135, - 9183, - 9185, - 9210, - 9211, - 9234, - 9259, - 9261, - 9266, - 9267, - 9268, - 9269, - 9286, - 9287, - 9304, - 9305, - 9313, - 9315, - 9371, - 9384, - 9393, - 9396, - 9425, - 9429, - 9431, - 9502, - 9503, - 9509, - 9594, - 9600, - 9662, - 9663, - 9689, - 9692, - 9742, - 9743, - 9760, - 9762, - 9782, - 9799, - 9804, - 9805, - 9815, - 9818, - 9822, - 9835, - 9842, - 9864, - 9920, - 9921, - 9986, - 10016, - 10017, - 10032, - 10094, - 10095, - 10105, - 10152, - 10153, - 10154, - 10155, - 10163, - 10166, - 10172, - 10176, - 10177, - 10192, - 10196, - 10197, - 10212, - 10300, - 10302, - 10376, - 10377, - 10403, - 10406, - 10409, - 10412, - 10456, - 10458, - 10494, - 10518, - 10519, - 10532, - 10534, - 10543, - 10547, - 10550, - 10552, - 10554, - 10623, - 10626, - 10632, - 10633, - 10726, - 10732, - 10733, - 10740, - 10743, - 10816, - 10817, - 10831, - 10842, - 10849, - 10852, - 10877, - 10882, - 10883, - 10884, - 10885, - 10902, - 10903, - 10914, - 10922, - 10923, - 10960, - 11078, - 11079, - 11105, - 11186, - 11187, - 11250, - 11280, - 11281, - 11311, - 11356, - 11357, - 11412, - 11413, - 11414, - 11415, - 11432, - 11433, - 11450, - 11451, - 11479, - 11499, - 11574, - 11575, - 11670, - 11671, - 11748, - 11749, - 11775, - 11806, - 11807, - 11808, - 11809, - 11826, - 11827, - 11846, - 11847, - 11942, - 11945, - 11962, - 11966, - 11967, - 11974, - 11977, - 11980, - 11986, - 12050, - 12051, - 12076, - 12079, - 12108, - 12109, - 12110, - 12111, - 12126, - 12129, - 12132, - 12133, - 12146, - 12152, - 12153, - 12248, - 12249, - 12277, - 12312, - 12313, - 12314, - 12315, - 12332, - 12333, - 12343, - 12352, - 12353, - 12381, - 12387, - 12428, - 12429, - 12430, - 12431, - 12432, - 12433, - 12448, - 12449, - 12450, - 12451, - 12466, - 12467, - 12468, - 12469, - 12486, - 12487, - 12504, - 12505, - 12522, - 12523, - 12662, - 12823, - 12847, - 12921, - 12958, - 12995, - 13106, - 13143, - 13180, - 13217, - 13254, - 13365, - 13402 - ], - "22": [ - 8553, - 8742, - 9002, - 9385, - 9430, - 9516, - 9536, - 9585, - 9688, - 9717, - 9863, - 9971, - 9984, - 9987, - 10698, - 10701, - 11248, - 11367, - 11545, - 11638, - 11641, - 11745, - 11934, - 11940, - 11943, - 11963, - 11987, - 12000, - 12080, - 12081, - 12246, - 12300, - 12651, - 12873, - 13021, - 13095, - 13280, - 13354, - 13391, - 13428, - 13465 - ], - "20": [ - 12757, - 12766, - 12997, - 13080, - 13087, - 13094, - 13139, - 13153, - 13279, - 13296, - 13297, - 13299, - 13313, - 13337, - 13369, - 13384, - 13387, - 13411, - 14414 - ], - "19": [ - 12767, - 12982, - 13307, - 13801, - 13817, - 13840, - 13851, - 13853, - 13860, - 14214, - 14223, - 14232, - 14241, - 14250, - 14268, - 14286, - 14341, - 14356, - 14382, - 14383, - 14392, - 14400, - 14401, - 14668, - 14669, - 14676, - 14677, - 14920, - 14921, - 14928, - 14929 - ], - "21": [ - 13617, - 13619, - 13622 - ], - "18": [ - 13677 - ], - "15": [ - 13962, - 14002, - 14031, - 14301, - 14321, - 14332, - 14333, - 14337, - 14339, - 14353, - 14355, - 14366, - 14379, - 14381, - 14384, - 14386, - 14388, - 14390, - 14666, - 14918 - ], - "16": [ - 14008 - ], - "14": [ - 14027, - 14038 - ], - "12": [ - 14151, - 14160, - 14169, - 14178, - 14207, - 14210, - 14215, - 14229, - 14238, - 14247, - 14252, - 14256, - 14265, - 14473, - 14479, - 14485, - 14491, - 14570, - 14571, - 14572, - 14573, - 14608, - 14609, - 14610, - 14611, - 14625, - 14627, - 14640, - 14892, - 14893 - ], - "13": [ - 14159, - 14263, - 14607, - 14820, - 14821, - 14822, - 14825, - 14858, - 14860, - 14861, - 14862, - 14863, - 14876, - 14878 - ], - "10": [ - 14167, - 14212, - 14221, - 14230, - 14239, - 14248, - 14266, - 14284 - ], - "11": [ - 14497, - 14503, - 14509, - 14515, - 14521, - 14527, - 14533, - 14539, - 14545, - 14551, - 14557, - 14563, - 14593, - 14612, - 14613, - 14614, - 14615, - 14616, - 14617, - 14618, - 14619, - 14620, - 14621, - 14622, - 14623, - 14629, - 14644, - 14646, - 14649, - 14651, - 14653, - 14760, - 14765, - 14770, - 14775, - 14780, - 14785, - 14790, - 14795, - 14800, - 14805, - 14810, - 14815, - 14894, - 14895, - 14896, - 14897, - 14898, - 14899, - 14900, - 14901, - 14902, - 14903, - 14904, - 14905 - ], - "9": [ - 14508, - 14512, - 14524, - 14552 - ], - "6": [ - 14701, - 14702, - 14703, - 14704, - 14706, - 14707, - 14709, - 14711, - 14712, - 14713, - 14714, - 14723, - 14733, - 14740, - 14743, - 14745, - 14750, - 14753, - 14755, - 14763, - 14793, - 14803 - ], - "7": [ - 14719, - 14724, - 14756, - 14773, - 14778, - 14783, - 14807 - ], - "4": [ - 14948, - 14949, - 14950, - 14951, - 14952, - 14953, - 14954, - 14955, - 14956, - 14957, - 14958, - 14959, - 14960, - 14961, - 14962, - 14963, - 14964, - 14965, - 14966, - 14967, - 14968, - 14969, - 14970, - 14971, - 14972, - 14973, - 14974, - 14975, - 14976, - 14977, - 14978, - 14979, - 14980, - 14981, - 14982, - 14983, - 14984, - 14985, - 14986, - 14987, - 14988, - 14989, - 14990, - 14991, - 14992, - 14993, - 14994, - 14995, - 14996, - 14997, - 14998, - 14999, - 15000, - 15001, - 15002, - 15003, - 15004, - 15005, - 15006, - 15007, - 15008, - 15009, - 15010, - 15011, - 15012, - 15013, - 15014, - 15015, - 15016, - 15017, - 15018, - 15019, - 15020, - 15021, - 15022, - 15023, - 15024, - 15025, - 15026, - 15027, - 15028, - 15029, - 15030, - 15031, - 15032, - 15033, - 15034, - 15035, - 15036, - 15037, - 15038, - 15039, - 15040, - 15041, - 15042, - 15043, - 15044, - 15045, - 15046, - 15047, - 15048, - 15049, - 15050, - 15051, - 15052, - 15053, - 15054, - 15055, - 15056, - 15057, - 15058, - 15059, - 15060, - 15061, - 15062, - 15063, - 15064, - 15065, - 15066, - 15067, - 15068, - 15069, - 15070, - 15071, - 15072, - 15073, - 15074, - 15075, - 15076, - 15077, - 15078, - 15079, - 15080, - 15081, - 15082, - 15083, - 15084, - 15085, - 15086, - 15087, - 15088, - 15089, - 15090, - 15091, - 15092, - 15093, - 15094, - 15095, - 15096, - 15097, - 15098, - 15099, - 15100, - 15101, - 15102, - 15103, - 15104, - 15105, - 15106, - 15107, - 15108, - 15109, - 15110, - 15111, - 15112, - 15113, - 15114, - 15115, - 15116, - 15117, - 15118, - 15119, - 15120, - 15121, - 15122, - 15123, - 15124, - 15125, - 15126, - 15127, - 15128, - 15129, - 15130, - 15131, - 15132, - 15133, - 15134, - 15135, - 15136, - 15137, - 15138, - 15139, - 15140, - 15141, - 15142, - 15143, - 15144, - 15145, - 15146, - 15147, - 15148, - 15149, - 15150, - 15151, - 15152, - 15153, - 15154, - 15155, - 15156, - 15157, - 15158, - 15159, - 15160, - 15161, - 15162, - 15163, - 15164, - 15165, - 15166, - 15167, - 15168, - 15169, - 15170, - 15171, - 15172, - 15173, - 15174, - 15175, - 15176, - 15177, - 15178, - 15179, - 15180, - 15181, - 15182, - 15183, - 15184, - 15185, - 15186, - 15187, - 15188, - 15189, - 15190, - 15191, - 15192, - 15193, - 15194, - 15195, - 15196, - 15197, - 15198, - 15199, - 15200, - 15201, - 15202, - 15203, - 15204, - 15205, - 15206, - 15207, - 15208, - 15209, - 15210, - 15211, - 15212, - 15213, - 15214, - 15215, - 15216, - 15217, - 15218, - 15219, - 15220, - 15221, - 15222, - 15223, - 15224, - 15225, - 15226, - 15227, - 15228, - 15229, - 15230, - 15231, - 15232, - 15233, - 15234, - 15235, - 15236, - 15237, - 15238, - 15239, - 15240, - 15241, - 15242, - 15243, - 15244, - 15245, - 15246, - 15247, - 15248, - 15249, - 15250, - 15251, - 15252, - 15253, - 15254, - 15255, - 15256, - 15257, - 15258, - 15259, - 15260, - 15261, - 15262, - 15263, - 15264, - 15265, - 15266, - 15267, - 15268, - 15269, - 15270, - 15271, - 15272, - 15273, - 15274, - 15275, - 15276, - 15277, - 15278, - 15279, - 15280, - 15281, - 15282, - 15283, - 15284, - 15285, - 15286, - 15287, - 15288, - 15289, - 15290, - 15291, - 15292, - 15293, - 15294, - 15295, - 15296, - 15297, - 15298, - 15299, - 15300, - 15301, - 15302, - 15303, - 15304, - 15305, - 15306, - 15307, - 15308, - 15309, - 15310, - 15311, - 15312, - 15313, - 15314, - 15315, - 15316, - 15317, - 15318, - 15319, - 15320, - 15321, - 15322, - 15323, - 15324, - 15325, - 15326, - 15327, - 15328, - 15329, - 15330, - 15331, - 15332, - 15333, - 15334, - 15335, - 15336, - 15337, - 15338, - 15339, - 15340, - 15341, - 15342, - 15343, - 15344, - 15345, - 15346, - 15347, - 15348, - 15349, - 15350, - 15351, - 15352, - 15353, - 15354, - 15355, - 15356, - 15357, - 15358, - 15359, - 15360, - 15361, - 15362, - 15363, - 15364, - 15365, - 15366, - 15367, - 15368, - 15369, - 15370, - 15371, - 15372, - 15373, - 15374, - 15375, - 15376, - 15377, - 15378, - 15379, - 15380, - 15381, - 15382, - 15383, - 15384, - 15385, - 15386, - 15387, - 15388, - 15389, - 15390, - 15391, - 15392, - 15393, - 15394, - 15395, - 15396, - 15397, - 15398, - 15399, - 15400, - 15401, - 15402, - 15403, - 15404, - 15405, - 15406, - 15407, - 15408, - 15409, - 15410, - 15411, - 15412, - 15413, - 15414, - 15415, - 15416, - 15417, - 15418, - 15419, - 15420, - 15421, - 15422, - 15423, - 15424, - 15425, - 15426, - 15427, - 15428, - 15429, - 15430, - 15431, - 15432, - 15433, - 15434, - 15435, - 15436, - 15437, - 15438, - 15439, - 15440, - 15441, - 15442, - 15443, - 15444, - 15445, - 15446, - 15447, - 15448, - 15449, - 15450, - 15451, - 15452, - 15453, - 15454, - 15455, - 15456, - 15457, - 15458, - 15459, - 15460, - 15461, - 15462, - 15463, - 15464, - 15465, - 15466, - 15467, - 15468, - 15469, - 15470, - 15471, - 15472, - 15473, - 15474, - 15475, - 15476, - 15477, - 15478, - 15479, - 15480, - 15481, - 15482, - 15483, - 15484, - 15485, - 15486, - 15487, - 15488, - 15489, - 15490, - 15491, - 15492, - 15493, - 15494, - 15495, - 15496, - 15497, - 15498, - 15499, - 15500, - 15501, - 15502, - 15503, - 15504, - 15505, - 15506, - 15507, - 15508, - 15509, - 15510, - 15511, - 15512, - 15513, - 15514, - 15515, - 15516, - 15517, - 15518, - 15519, - 15520, - 15521, - 15522, - 15523, - 15524, - 15525, - 15526, - 15527, - 15528, - 15529, - 15530, - 15531, - 15532, - 15533, - 15534, - 15535, - 15536, - 15537, - 15538, - 15539, - 15540, - 15541, - 15542, - 15543, - 15544, - 15545, - 15546, - 15547, - 15548, - 15549, - 15550, - 15551, - 15552, - 15553, - 15554, - 15555, - 15556, - 15557, - 15558, - 15559, - 15560, - 15561, - 15562, - 15563, - 15564, - 15565, - 15566, - 15567, - 15568, - 15569, - 15570, - 15571, - 15572, - 15573, - 15574, - 15575, - 15576, - 15577, - 15578, - 15579, - 15580, - 15581, - 15582, - 15583, - 15584, - 15585, - 15586, - 15587, - 15588, - 15589, - 15590, - 15591, - 15592, - 15593, - 15594, - 15595, - 15596, - 15597, - 15598, - 15599, - 15600, - 15601, - 15602, - 15603, - 15604, - 15605, - 15606, - 15607, - 15608, - 15609, - 15610, - 15611, - 15612, - 15613, - 15614, - 15615, - 15616, - 15617, - 15618, - 15619, - 15620, - 15621, - 15622, - 15623, - 15624, - 15625, - 15626, - 15627, - 15628, - 15629, - 15630, - 15631, - 15632, - 15633, - 15634, - 15635, - 15636, - 15637, - 15638, - 15639, - 15640, - 15641, - 15642, - 15643, - 15644, - 15645, - 15646, - 15647, - 15648, - 15649, - 15650, - 15651, - 15652, - 15653, - 15654, - 15655, - 15656, - 15657, - 15658, - 15659, - 15660, - 15661, - 15662, - 15663, - 15664, - 15665, - 15666, - 15667, - 15668, - 15669, - 15670, - 15671, - 15672, - 15673, - 15674, - 15675, - 15676, - 15677, - 15678, - 15679, - 15680, - 15681, - 15682, - 15683, - 15684, - 15685, - 15686, - 15687, - 15688, - 15689, - 15690, - 15691, - 15692, - 15693, - 15694, - 15695, - 15696, - 15697, - 15698, - 15699, - 15700, - 15701, - 15702, - 15703, - 15704, - 15705, - 15706, - 15707, - 15708, - 15709, - 15710, - 15711, - 15712, - 15713, - 15714, - 15715, - 15716, - 15717, - 15718, - 15719, - 15720, - 15721, - 15722, - 15723, - 15724, - 15725, - 15726, - 15727, - 15728, - 15729, - 15730, - 15731, - 15732, - 15733, - 15734, - 15735, - 15736, - 15737, - 15738, - 15739, - 15740, - 15741, - 15742, - 15743, - 15744, - 15745, - 15746, - 15747, - 15748, - 15749, - 15750, - 15751, - 15752, - 15753, - 15754, - 15755, - 15756, - 15757, - 15758, - 15759, - 15760, - 15761, - 15762, - 15763, - 15764, - 15765, - 15766, - 15767, - 15768, - 15769, - 15770, - 15771, - 15772, - 15773, - 15774, - 15775, - 15776, - 15777, - 15778, - 15779, - 15780, - 15781, - 15782, - 15783, - 15784, - 15785, - 15786, - 15787, - 15788, - 15789, - 15790, - 15791, - 15792, - 15793, - 15794, - 15795, - 15796, - 15797, - 15798, - 15799, - 15800, - 15801, - 15802, - 15803, - 15804, - 15805, - 15806, - 15807, - 15808, - 15809, - 15810, - 15811, - 15812, - 15813, - 15814, - 15815, - 15816, - 15817, - 15818, - 15819, - 15820, - 15821, - 15822, - 15823, - 15824, - 15825, - 15826, - 15827, - 15828, - 15829, - 15830, - 15831, - 15832, - 15833, - 15834, - 15835, - 15836, - 15837, - 15838, - 15839, - 15840, - 15841, - 15842, - 15843, - 15844, - 15845, - 15846, - 15847, - 15848, - 15849, - 15850, - 15851, - 15852, - 15853, - 15854, - 15855, - 15856, - 15857, - 15858, - 15859, - 15860, - 15861, - 15862, - 15863, - 15864, - 15865, - 15866, - 15867, - 15868, - 15869, - 15870, - 15871, - 15872, - 15873, - 15874, - 15875, - 15876, - 15877, - 15878, - 15879, - 15880, - 15881, - 15882, - 15883, - 15884, - 15885, - 15886, - 15887, - 15888, - 15889, - 15890, - 15891, - 15892, - 15893, - 15894, - 15895, - 15896, - 15897, - 15898, - 15899, - 15900, - 15901, - 15902, - 15903, - 15904, - 15905, - 15906, - 15907, - 15908, - 15909, - 15910, - 15911, - 15912, - 15913, - 15914, - 15915, - 15916, - 15917, - 15918, - 15919, - 15920, - 15921, - 15922, - 15923, - 15924, - 15925, - 15926, - 15927, - 15928, - 15929, - 15930, - 15931, - 15932, - 15933, - 15934, - 15935, - 15936, - 15937, - 15938, - 15939, - 15940, - 15941, - 15942, - 15943, - 15944, - 15945, - 15946, - 15947, - 15948, - 15949, - 15950, - 15951, - 15952, - 15953, - 15954, - 15955, - 15956, - 15957, - 15958, - 15959, - 15960, - 15961, - 15962, - 15963, - 15964, - 15965, - 15966, - 15967, - 15968, - 15969, - 15970, - 15971, - 15972, - 15973, - 15974, - 15975, - 15976, - 15977, - 15978, - 15979, - 15980, - 15981, - 15982, - 15983, - 15984, - 15985, - 15986, - 15987, - 15988, - 15989, - 15990, - 15991, - 15992, - 15993, - 15994, - 15995, - 15996, - 15997, - 15998, - 15999, - 16000, - 16001, - 16002, - 16003, - 16004, - 16005, - 16006, - 16007, - 16008, - 16009, - 16010, - 16011, - 16012, - 16013, - 16014, - 16015, - 16016, - 16017, - 16018, - 16019, - 16020, - 16021, - 16022, - 16023, - 16024, - 16025, - 16026, - 16027, - 16028, - 16029, - 16030, - 16031, - 16032, - 16033, - 16034, - 16035, - 16036, - 16037, - 16038, - 16039, - 16040, - 16041, - 16042, - 16043, - 16044, - 16045, - 16046, - 16047, - 16048, - 16049, - 16050, - 16051, - 16052, - 16053, - 16054, - 16055, - 16056, - 16057, - 16058, - 16059, - 16060, - 16061, - 16062, - 16063, - 16064, - 16065, - 16066, - 16067, - 16068, - 16069, - 16070, - 16071, - 16072, - 16073, - 16074, - 16075, - 16076, - 16077, - 16078, - 16079, - 16080, - 16081, - 16082, - 16083, - 16084, - 16085, - 16086, - 16087, - 16088, - 16089, - 16090, - 16091, - 16092, - 16093, - 16094, - 16095, - 16096, - 16097, - 16098, - 16099, - 16100, - 16101, - 16102, - 16103, - 16104, - 16105, - 16106, - 16107, - 16108, - 16109, - 16110, - 16111, - 16112, - 16113, - 16114, - 16115, - 16116, - 16117, - 16118, - 16119, - 16120, - 16121, - 16122, - 16123, - 16124, - 16125, - 16126, - 16127, - 16128, - 16129, - 16130, - 16131, - 16132, - 16133, - 16134, - 16135, - 16136, - 16137, - 16138, - 16139, - 16140, - 16141, - 16142, - 16143, - 16144, - 16145, - 16146, - 16147, - 16148, - 16149, - 16150, - 16151, - 16152, - 16153, - 16154, - 16155, - 16156, - 16157, - 16158, - 16159, - 16160, - 16161, - 16162, - 16163, - 16164, - 16165, - 16166, - 16167, - 16168, - 16169, - 16170, - 16171, - 16172, - 16173, - 16174, - 16175, - 16176, - 16177, - 16178, - 16179, - 16180, - 16181, - 16182, - 16183, - 16184, - 16185, - 16186, - 16187, - 16188, - 16189, - 16190, - 16191, - 16192, - 16193, - 16194, - 16195, - 16196, - 16197, - 16198, - 16199, - 16200, - 16201, - 16202, - 16203, - 16204, - 16205, - 16206, - 16207, - 16208, - 16209, - 16210, - 16211, - 16212, - 16213, - 16214, - 16215, - 16216, - 16217, - 16218, - 16219, - 16220, - 16221, - 16222, - 16223, - 16224, - 16225, - 16226, - 16227, - 16228, - 16229, - 16230, - 16231, - 16232, - 16233, - 16234, - 16235, - 16236, - 16237, - 16238, - 16239, - 16240, - 16241, - 16242, - 16243, - 16244, - 16245, - 16246, - 16247, - 16248, - 16249, - 16250, - 16251, - 16252, - 16253, - 16254, - 16255, - 16256, - 16257, - 16258, - 16259, - 16260, - 16261, - 16262, - 16263, - 16264, - 16265, - 16266, - 16267, - 16268, - 16269, - 16270, - 16271, - 16272, - 16273, - 16274, - 16275, - 16276, - 16277, - 16278, - 16279, - 16280, - 16281, - 16282, - 16283, - 16284, - 16285, - 16286, - 16287, - 16288, - 16289, - 16290, - 16291, - 16292, - 16293, - 16294, - 16295, - 16296, - 16297, - 16298, - 16299, - 16300, - 16301, - 16302, - 16303, - 16304, - 16305, - 16306, - 16307, - 16308, - 16309, - 16310, - 16311, - 16312, - 16313, - 16314, - 16315, - 16316, - 16317, - 16318, - 16319, - 16320, - 16321, - 16322, - 16323, - 16324, - 16325, - 16326, - 16327, - 16328, - 16329, - 16330, - 16331, - 16332, - 16333, - 16334, - 16335, - 16336, - 16337, - 16338, - 16339, - 16340, - 16341, - 16342, - 16343, - 16344, - 16345, - 16346, - 16347, - 16348, - 16349, - 16350, - 16351, - 16352, - 16353, - 16354, - 16355, - 16356, - 16357, - 16358, - 16359, - 16360, - 16361, - 16362, - 16363, - 16364, - 16365, - 16366, - 16367, - 16368, - 16369, - 16370, - 16371, - 16372, - 16373, - 16374, - 16375, - 16376, - 16377, - 16378, - 16379, - 16380, - 16381, - 16382, - 16383, - 16384, - 16385, - 16386, - 16387, - 16388, - 16389, - 16390, - 16391, - 16392, - 16393, - 16394, - 16395, - 16396, - 16397, - 16398, - 16399, - 16400, - 16401, - 16402, - 16403, - 16404, - 16405, - 16406, - 16407, - 16408, - 16409, - 16410, - 16411, - 16412, - 16413, - 16414, - 16415, - 16416, - 16417, - 16418, - 16419, - 16420, - 16421, - 16422, - 16423, - 16424, - 16425, - 16426, - 16427, - 16428, - 16429, - 16430, - 16431, - 16432, - 16433, - 16434, - 16435, - 16436, - 16437, - 16438, - 16439, - 16440, - 16441, - 16442, - 16443, - 16444, - 16445, - 16446, - 16447, - 16448, - 16449, - 16450, - 16451, - 16452, - 16453, - 16454, - 16455, - 16456, - 16457, - 16458, - 16459, - 16460, - 16461, - 16462, - 16463, - 16464, - 16465, - 16466, - 16467, - 16468, - 16469, - 16470, - 16471, - 16472, - 16473, - 16474, - 16475, - 16476, - 16477, - 16478, - 16479, - 16480, - 16481, - 16482, - 16483, - 16484, - 16485, - 16486, - 16487, - 16488, - 16489, - 16490, - 16491, - 16492, - 16493, - 16494, - 16495, - 16496, - 16497, - 16498, - 16499, - 16500, - 16501, - 16502, - 16503, - 16504, - 16505, - 16506, - 16507, - 16508, - 16509, - 16510, - 16511, - 16512, - 16513, - 16514, - 16515, - 16516, - 16517, - 16518, - 16519, - 16520, - 16521, - 16522, - 16523, - 16524, - 16525, - 16526, - 16527, - 16528, - 16529, - 16530, - 16531, - 16532, - 16533, - 16534, - 16535, - 16536, - 16537, - 16538, - 16539, - 16540, - 16541, - 16542, - 16543, - 16544, - 16545, - 16546, - 16547, - 16548, - 16549, - 16550, - 16551, - 16552, - 16553, - 16554, - 16555, - 16556, - 16557, - 16558, - 16559, - 16560, - 16561, - 16562, - 16563, - 16564, - 16565, - 16566, - 16567, - 16568, - 16569, - 16570, - 16571, - 16572, - 16573, - 16574, - 16575, - 16576, - 16577, - 16578, - 16579, - 16580, - 16581, - 16582, - 16583, - 16584, - 16585, - 16586, - 16587, - 16588, - 16589, - 16590, - 16591, - 16592, - 16593, - 16594, - 16595, - 16596, - 16597, - 16598, - 16599, - 16600, - 16601, - 16602, - 16603, - 16604, - 16605, - 16606, - 16607, - 16608, - 16609, - 16610, - 16611, - 16612, - 16613, - 16614, - 16615, - 16616, - 16617, - 16618, - 16619, - 16620, - 16621, - 16622, - 16623, - 16624, - 16625, - 16626, - 16627, - 16628, - 16629, - 16630, - 16631, - 16632, - 16633, - 16634, - 16635, - 16636, - 16637, - 16638, - 16639, - 16640, - 16641, - 16642, - 16643, - 16644, - 16645, - 16646, - 16647, - 16648, - 16649, - 16650, - 16651, - 16652, - 16653, - 16654, - 16655, - 16656, - 16657, - 16658, - 16659, - 16660, - 16661, - 16662, - 16663, - 16664, - 16665, - 16666, - 16667, - 16668, - 16669, - 16670, - 16671, - 16672, - 16673, - 16674, - 16675, - 16676, - 16677, - 16678, - 16679, - 16680, - 16681, - 16682, - 16683, - 16684, - 16685, - 16686, - 16687, - 16688, - 16689, - 16690, - 16691, - 16692, - 16693, - 16694, - 16695, - 16696, - 16697, - 16698, - 16699, - 16700, - 16701, - 16702, - 16703, - 16704, - 16705, - 16706, - 16707, - 16708, - 16709, - 16710, - 16711, - 16712, - 16713, - 16714, - 16715, - 16716, - 16717, - 16718, - 16719, - 16720, - 16721, - 16722, - 16723, - 16724, - 16725, - 16726, - 16727, - 16728, - 16729, - 16730, - 16731, - 16732, - 16733, - 16734, - 16735, - 16736, - 16737, - 16738, - 16739, - 16740, - 16741, - 16742, - 16743, - 16744, - 16745, - 16746, - 16747, - 16748, - 16749, - 16750, - 16751, - 16752, - 16753, - 16754, - 16755, - 16756, - 16757, - 16758, - 16759, - 16760, - 16761, - 16762, - 16763, - 16764, - 16765, - 16766, - 16767, - 16768, - 16769, - 16770, - 16771, - 16772, - 16773, - 16774, - 16775, - 16776, - 16777, - 16778, - 16779, - 16780, - 16781, - 16782, - 16783, - 16784, - 16785, - 16786, - 16787, - 16788, - 16789, - 16790, - 16791, - 16792, - 16793, - 16794, - 16795, - 16796, - 16797, - 16798, - 16799, - 16800, - 16801, - 16802, - 16803, - 16804, - 16805, - 16806, - 16807, - 16808, - 16809, - 16810, - 16811, - 16812, - 16813, - 16814, - 16815, - 16816, - 16817, - 16818, - 16819, - 16820, - 16821, - 16822, - 16823, - 16824, - 16825, - 16826, - 16827, - 16828, - 16829, - 16830, - 16831, - 16832, - 16833, - 16834, - 16835, - 16836, - 16837, - 16838, - 16839, - 16840, - 16841, - 16842, - 16843, - 16844, - 16845, - 16846, - 16847, - 16848, - 16849, - 16850, - 16851, - 16852, - 16853, - 16854, - 16855, - 16856, - 16857, - 16858, - 16859, - 16860, - 16861, - 16862, - 16863, - 16864, - 16865, - 16866, - 16867, - 16868, - 16869, - 16870, - 16871, - 16872, - 16873, - 16874, - 16875, - 16876, - 16877, - 16878, - 16879, - 16880, - 16881, - 16882, - 16883, - 16884, - 16885, - 16886, - 16887, - 16888, - 16889, - 16890, - 16891, - 16892, - 16893, - 16894, - 16895, - 16896, - 16897, - 16898, - 16899, - 16900, - 16901, - 16902, - 16903, - 16904, - 16905, - 16906, - 16907, - 16908, - 16909, - 16910, - 16911, - 16912, - 16913, - 16914, - 16915, - 16916, - 16917, - 16918, - 16919, - 16920, - 16921, - 16922, - 16923, - 16924, - 16925, - 16926, - 16927, - 16928, - 16929, - 16930, - 16931, - 16932, - 16933, - 16934, - 16935, - 16936, - 16937, - 16938, - 16939, - 16940, - 16941, - 16942, - 16943, - 16944, - 16945, - 16946, - 16947, - 16948, - 16949, - 16950, - 16951, - 16952, - 16953, - 16954, - 16955, - 16956, - 16957, - 16958, - 16959, - 16960, - 16961, - 16962, - 16963, - 16964, - 16965, - 16966, - 16967, - 16968, - 16969, - 16970, - 16971, - 16972, - 16973, - 16974, - 16975, - 16976, - 16977, - 16978, - 16979, - 16980, - 16981, - 16982, - 16983, - 16984, - 16985, - 16986, - 16987, - 16988, - 16989, - 16990, - 16991, - 16992, - 16993, - 16994, - 16995, - 16996, - 16997, - 16998, - 16999, - 17000, - 17001, - 17002, - 17003, - 17004, - 17005, - 17006, - 17007, - 17008, - 17009, - 17010, - 17011, - 17012, - 17013, - 17014, - 17015, - 17016, - 17017, - 17018, - 17019, - 17020, - 17021, - 17022, - 17023, - 17024, - 17025, - 17026, - 17027, - 17028, - 17029, - 17030, - 17031, - 17032, - 17033, - 17034, - 17035, - 17036, - 17037, - 17038, - 17039, - 17040, - 17041, - 17042, - 17043, - 17044, - 17045, - 17046, - 17047, - 17048, - 17049, - 17050, - 17051, - 17052, - 17053, - 17054, - 17055, - 17056, - 17057, - 17058, - 17059, - 17060, - 17061, - 17062, - 17063, - 17064, - 17065, - 17066, - 17067, - 17068, - 17069, - 17070, - 17071, - 17072, - 17073, - 17074, - 17075, - 17076, - 17077, - 17078, - 17079, - 17080, - 17081, - 17082, - 17083, - 17084, - 17085, - 17086, - 17087, - 17088, - 17089, - 17090, - 17091, - 17092, - 17093, - 17094, - 17095, - 17096, - 17097, - 17098, - 17099, - 17100, - 17101, - 17102, - 17103, - 17104, - 17105, - 17106, - 17107, - 17108, - 17109, - 17110, - 17111, - 17112, - 17113, - 17114, - 17115, - 17116, - 17117, - 17118, - 17119, - 17120, - 17121, - 17122, - 17123, - 17124, - 17125, - 17126, - 17127, - 17128, - 17129, - 17130, - 17131, - 17132, - 17133, - 17134, - 17135, - 17136, - 17137, - 17138, - 17139, - 17140, - 17141, - 17142, - 17143, - 17144, - 17145, - 17146, - 17147 - ] - }, - "gauge_frames": { - "14948": 127239, - "14949": 127241, - "14950": 127243, - "14951": 127245, - "14952": 127247, - "14953": 127249, - "14954": 127251, - "14955": 127253, - "14956": 127255, - "14957": 127257, - "14958": 127239, - "14959": 127241, - "14960": 127243, - "14961": 127245, - "14962": 127247, - "14963": 127249, - "14964": 127251, - "14965": 127253, - "14966": 127255, - "14967": 127257, - "14968": 127259, - "14969": 127261, - "14970": 127263, - "14971": 127265, - "14972": 127267, - "14973": 127269, - "14974": 127271, - "14975": 127273, - "14976": 127275, - "14977": 127247, - "14978": 127277, - "14979": 127279, - "14980": 127281, - "14981": 127283, - "14982": 127285, - "14983": 127287, - "14984": 127289, - "14985": 127291, - "14986": 127293, - "14987": 127259, - "14988": 127261, - "14989": 127263, - "14990": 127265, - "14991": 127267, - "14992": 127269, - "14993": 127271, - "14994": 127273, - "14995": 127275, - "14996": 127247, - "14997": 127277, - "14998": 127279, - "14999": 127281, - "15000": 127283, - "15001": 127285, - "15002": 127287, - "15003": 127289, - "15004": 127291, - "15005": 127293, - "15006": 127295, - "15007": 127297, - "15008": 127299, - "15009": 127301, - "15010": 127303, - "15011": 127305, - "15012": 127307, - "15013": 127267, - "15014": 127269, - "15015": 127309, - "15016": 127311, - "15017": 127313, - "15018": 127241, - "15019": 127315, - "15020": 127317, - "15021": 127319, - "15022": 127321, - "15023": 127323, - "15024": 127325, - "15025": 127327, - "15026": 127329, - "15027": 127331, - "15028": 127333, - "15029": 127335, - "15030": 127337, - "15031": 127339, - "15032": 127341, - "15033": 127295, - "15034": 127297, - "15035": 127299, - "15036": 127301, - "15037": 127303, - "15038": 127305, - "15039": 127307, - "15040": 127267, - "15041": 127269, - "15042": 127309, - "15043": 127311, - "15044": 127313, - "15045": 127241, - "15046": 127315, - "15047": 127317, - "15048": 127319, - "15049": 127321, - "15050": 127323, - "15051": 127325, - "15052": 127327, - "15053": 127329, - "15054": 127331, - "15055": 127333, - "15056": 127335, - "15057": 127337, - "15058": 127339, - "15059": 127341, - "15060": 127343, - "15061": 127345, - "15062": 127347, - "15063": 127349, - "15064": 127351, - "15065": 127301, - "15066": 127353, - "15067": 127355, - "15068": 127357, - "15069": 127283, - "15070": 127285, - "15071": 127359, - "15072": 127361, - "15073": 127363, - "15074": 127365, - "15075": 127251, - "15076": 127367, - "15077": 127369, - "15078": 127371, - "15079": 127321, - "15080": 127373, - "15081": 127375, - "15082": 127377, - "15083": 127325, - "15084": 127379, - "15085": 127381, - "15086": 127383, - "15087": 127385, - "15088": 127387, - "15089": 127389, - "15090": 127391, - "15091": 127393, - "15092": 127395, - "15093": 127397, - "15094": 127343, - "15095": 127345, - "15096": 127347, - "15097": 127349, - "15098": 127351, - "15099": 127301, - "15100": 127353, - "15101": 127355, - "15102": 127357, - "15103": 127283, - "15104": 127285, - "15105": 127359, - "15106": 127361, - "15107": 127363, - "15108": 127365, - "15109": 127251, - "15110": 127367, - "15111": 127369, - "15112": 127371, - "15113": 127321, - "15114": 127373, - "15115": 127375, - "15116": 127377, - "15117": 127325, - "15118": 127379, - "15119": 127381, - "15120": 127383, - "15121": 127385, - "15122": 127387, - "15123": 127389, - "15124": 127391, - "15125": 127393, - "15126": 127395, - "15127": 127397, - "15128": 127399, - "15129": 127401, - "15130": 127403, - "15131": 127405, - "15132": 127407, - "15133": 127409, - "15134": 127327, - "15135": 127411, - "15136": 127413, - "15137": 127415, - "15138": 127279, - "15139": 127293, - "15140": 127417, - "15141": 127361, - "15142": 127419, - "15143": 127421, - "15144": 127257, - "15145": 127423, - "15146": 127369, - "15147": 127425, - "15148": 127427, - "15149": 127317, - "15150": 127429, - "15151": 127431, - "15152": 127433, - "15153": 127341, - "15154": 127379, - "15155": 127435, - "15156": 127437, - "15157": 127439, - "15158": 127441, - "15159": 127443, - "15160": 127445, - "15161": 127447, - "15162": 127449, - "15163": 127451, - "15164": 127453, - "15165": 127455, - "15166": 127457, - "15167": 127397, - "15168": 127399, - "15169": 127401, - "15170": 127403, - "15171": 127405, - "15172": 127407, - "15173": 127409, - "15174": 127327, - "15175": 127411, - "15176": 127413, - "15177": 127415, - "15178": 127279, - "15179": 127293, - "15180": 127417, - "15181": 127361, - "15182": 127419, - "15183": 127421, - "15184": 127257, - "15185": 127423, - "15186": 127369, - "15187": 127425, - "15188": 127427, - "15189": 127317, - "15190": 127429, - "15191": 127431, - "15192": 127433, - "15193": 127341, - "15194": 127379, - "15195": 127435, - "15196": 127437, - "15197": 127439, - "15198": 127441, - "15199": 127443, - "15200": 127445, - "15201": 127447, - "15202": 127449, - "15203": 127451, - "15204": 127453, - "15205": 127455, - "15206": 127457, - "15207": 127397, - "15208": 127459, - "15209": 127461, - "15210": 127463, - "15211": 127465, - "15212": 127405, - "15213": 127467, - "15214": 127469, - "15215": 127305, - "15216": 127471, - "15217": 127473, - "15218": 127413, - "15219": 127475, - "15220": 127275, - "15221": 127273, - "15222": 127477, - "15223": 127349, - "15224": 127419, - "15225": 127421, - "15226": 127245, - "15227": 127479, - "15228": 127365, - "15229": 127481, - "15230": 127483, - "15231": 127485, - "15232": 127313, - "15233": 127487, - "15234": 127489, - "15235": 127491, - "15236": 127311, - "15237": 127355, - "15238": 127493, - "15239": 127495, - "15240": 127497, - "15241": 127499, - "15242": 127501, - "15243": 127503, - "15244": 127505, - "15245": 127507, - "15246": 127509, - "15247": 127511, - "15248": 127513, - "15249": 127455, - "15250": 127515, - "15251": 127517, - "15252": 127363, - "15253": 127459, - "15254": 127461, - "15255": 127463, - "15256": 127465, - "15257": 127405, - "15258": 127467, - "15259": 127469, - "15260": 127305, - "15261": 127471, - "15262": 127473, - "15263": 127413, - "15264": 127475, - "15265": 127275, - "15266": 127273, - "15267": 127477, - "15268": 127349, - "15269": 127419, - "15270": 127421, - "15271": 127245, - "15272": 127479, - "15273": 127365, - "15274": 127481, - "15275": 127483, - "15276": 127485, - "15277": 127313, - "15278": 127487, - "15279": 127489, - "15280": 127491, - "15281": 127311, - "15282": 127355, - "15283": 127493, - "15284": 127495, - "15285": 127497, - "15286": 127499, - "15287": 127501, - "15288": 127503, - "15289": 127505, - "15290": 127507, - "15291": 127509, - "15292": 127511, - "15293": 127513, - "15294": 127455, - "15295": 127515, - "15296": 127517, - "15297": 127363, - "15298": 127459, - "15299": 127519, - "15300": 127521, - "15301": 127465, - "15302": 127403, - "15303": 127523, - "15304": 127469, - "15305": 127337, - "15306": 127525, - "15307": 127527, - "15308": 127453, - "15309": 127529, - "15310": 127263, - "15311": 127531, - "15312": 127289, - "15313": 127533, - "15314": 127347, - "15315": 127451, - "15316": 127409, - "15317": 127535, - "15318": 127255, - "15319": 127537, - "15320": 127351, - "15321": 127539, - "15322": 127541, - "15323": 127543, - "15324": 127299, - "15325": 127545, - "15326": 127547, - "15327": 127549, - "15328": 127551, - "15329": 127335, - "15330": 127553, - "15331": 127393, - "15332": 127555, - "15333": 127557, - "15334": 127497, - "15335": 127559, - "15336": 127561, - "15337": 127563, - "15338": 127565, - "15339": 127567, - "15340": 127569, - "15341": 127511, - "15342": 127513, - "15343": 127439, - "15344": 127571, - "15345": 127573, - "15346": 127391, - "15347": 127459, - "15348": 127519, - "15349": 127521, - "15350": 127465, - "15351": 127403, - "15352": 127523, - "15353": 127469, - "15354": 127337, - "15355": 127525, - "15356": 127527, - "15357": 127453, - "15358": 127529, - "15359": 127263, - "15360": 127531, - "15361": 127289, - "15362": 127533, - "15363": 127347, - "15364": 127451, - "15365": 127409, - "15366": 127535, - "15367": 127255, - "15368": 127537, - "15369": 127351, - "15370": 127539, - "15371": 127541, - "15372": 127543, - "15373": 127299, - "15374": 127545, - "15375": 127547, - "15376": 127549, - "15377": 127551, - "15378": 127335, - "15379": 127553, - "15380": 127393, - "15381": 127555, - "15382": 127557, - "15383": 127497, - "15384": 127559, - "15385": 127561, - "15386": 127563, - "15387": 127565, - "15388": 127567, - "15389": 127569, - "15390": 127511, - "15391": 127513, - "15392": 127439, - "15393": 127571, - "15394": 127573, - "15395": 127391, - "15396": 127505, - "15397": 127575, - "15398": 127577, - "15399": 127487, - "15400": 127429, - "15401": 127579, - "15402": 127479, - "15403": 127331, - "15404": 127581, - "15405": 127583, - "15406": 127447, - "15407": 127585, - "15408": 127277, - "15409": 127587, - "15410": 127271, - "15411": 127533, - "15412": 127373, - "15413": 127417, - "15414": 127589, - "15415": 127423, - "15416": 127535, - "15417": 127591, - "15418": 127243, - "15419": 127537, - "15420": 127367, - "15421": 127593, - "15422": 127595, - "15423": 127597, - "15424": 127315, - "15425": 127599, - "15426": 127547, - "15427": 127601, - "15428": 127603, - "15429": 127309, - "15430": 127605, - "15431": 127387, - "15432": 127607, - "15433": 127557, - "15434": 127495, - "15435": 127609, - "15436": 127611, - "15437": 127613, - "15438": 127615, - "15439": 127565, - "15440": 127567, - "15441": 127617, - "15442": 127477, - "15443": 127507, - "15444": 127437, - "15445": 127619, - "15446": 127621, - "15447": 127359, - "15448": 127505, - "15449": 127575, - "15450": 127577, - "15451": 127487, - "15452": 127429, - "15453": 127579, - "15454": 127479, - "15455": 127331, - "15456": 127581, - "15457": 127583, - "15458": 127447, - "15459": 127585, - "15460": 127277, - "15461": 127587, - "15462": 127271, - "15463": 127533, - "15464": 127373, - "15465": 127417, - "15466": 127589, - "15467": 127423, - "15468": 127535, - "15469": 127591, - "15470": 127243, - "15471": 127537, - "15472": 127367, - "15473": 127593, - "15474": 127595, - "15475": 127597, - "15476": 127315, - "15477": 127599, - "15478": 127547, - "15479": 127601, - "15480": 127603, - "15481": 127309, - "15482": 127605, - "15483": 127387, - "15484": 127607, - "15485": 127557, - "15486": 127495, - "15487": 127609, - "15488": 127611, - "15489": 127613, - "15490": 127615, - "15491": 127565, - "15492": 127567, - "15493": 127617, - "15494": 127477, - "15495": 127507, - "15496": 127437, - "15497": 127619, - "15498": 127621, - "15499": 127359, - "15500": 127515, - "15501": 127623, - "15502": 127625, - "15503": 127627, - "15504": 127491, - "15505": 127433, - "15506": 127629, - "15507": 127517, - "15508": 127307, - "15509": 127631, - "15510": 127633, - "15511": 127415, - "15512": 127585, - "15513": 127291, - "15514": 127635, - "15515": 127281, - "15516": 127543, - "15517": 127377, - "15518": 127427, - "15519": 127637, - "15520": 127457, - "15521": 127553, - "15522": 127639, - "15523": 127249, - "15524": 127573, - "15525": 127395, - "15526": 127641, - "15527": 127643, - "15528": 127597, - "15529": 127339, - "15530": 127645, - "15531": 127551, - "15532": 127647, - "15533": 127603, - "15534": 127319, - "15535": 127605, - "15536": 127357, - "15537": 127649, - "15538": 127561, - "15539": 127501, - "15540": 127651, - "15541": 127609, - "15542": 127653, - "15543": 127613, - "15544": 127655, - "15545": 127571, - "15546": 127529, - "15547": 127657, - "15548": 127485, - "15549": 127475, - "15550": 127443, - "15551": 127619, - "15552": 127621, - "15553": 127371, - "15554": 127515, - "15555": 127623, - "15556": 127625, - "15557": 127627, - "15558": 127491, - "15559": 127433, - "15560": 127629, - "15561": 127517, - "15562": 127307, - "15563": 127631, - "15564": 127633, - "15565": 127415, - "15566": 127585, - "15567": 127291, - "15568": 127635, - "15569": 127281, - "15570": 127543, - "15571": 127377, - "15572": 127427, - "15573": 127637, - "15574": 127457, - "15575": 127553, - "15576": 127639, - "15577": 127249, - "15578": 127573, - "15579": 127395, - "15580": 127641, - "15581": 127643, - "15582": 127597, - "15583": 127339, - "15584": 127645, - "15585": 127551, - "15586": 127647, - "15587": 127603, - "15588": 127319, - "15589": 127605, - "15590": 127357, - "15591": 127649, - "15592": 127561, - "15593": 127501, - "15594": 127651, - "15595": 127609, - "15596": 127653, - "15597": 127613, - "15598": 127655, - "15599": 127571, - "15600": 127529, - "15601": 127657, - "15602": 127485, - "15603": 127475, - "15604": 127443, - "15605": 127619, - "15606": 127621, - "15607": 127371, - "15608": 127483, - "15609": 127659, - "15610": 127625, - "15611": 127627, - "15612": 127503, - "15613": 127445, - "15614": 127629, - "15615": 127471, - "15616": 127323, - "15617": 127631, - "15618": 127661, - "15619": 127431, - "15620": 127601, - "15621": 127265, - "15622": 127663, - "15623": 127261, - "15624": 127521, - "15625": 127385, - "15626": 127401, - "15627": 127637, - "15628": 127411, - "15629": 127545, - "15630": 127665, - "15631": 127239, - "15632": 127525, - "15633": 127353, - "15634": 127667, - "15635": 127643, - "15636": 127577, - "15637": 127303, - "15638": 127645, - "15639": 127563, - "15640": 127647, - "15641": 127615, - "15642": 127297, - "15643": 127599, - "15644": 127375, - "15645": 127669, - "15646": 127523, - "15647": 127467, - "15648": 127671, - "15649": 127589, - "15650": 127673, - "15651": 127579, - "15652": 127655, - "15653": 127541, - "15654": 127549, - "15655": 127675, - "15656": 127463, - "15657": 127489, - "15658": 127407, - "15659": 127595, - "15660": 127581, - "15661": 127677, - "15662": 127345, - "15663": 127483, - "15664": 127659, - "15665": 127625, - "15666": 127627, - "15667": 127503, - "15668": 127445, - "15669": 127629, - "15670": 127471, - "15671": 127323, - "15672": 127631, - "15673": 127661, - "15674": 127431, - "15675": 127601, - "15676": 127265, - "15677": 127663, - "15678": 127261, - "15679": 127521, - "15680": 127385, - "15681": 127401, - "15682": 127637, - "15683": 127411, - "15684": 127545, - "15685": 127665, - "15686": 127239, - "15687": 127525, - "15688": 127353, - "15689": 127667, - "15690": 127643, - "15691": 127577, - "15692": 127303, - "15693": 127645, - "15694": 127563, - "15695": 127647, - "15696": 127615, - "15697": 127297, - "15698": 127599, - "15699": 127375, - "15700": 127669, - "15701": 127523, - "15702": 127467, - "15703": 127671, - "15704": 127589, - "15705": 127673, - "15706": 127579, - "15707": 127655, - "15708": 127541, - "15709": 127549, - "15710": 127675, - "15711": 127463, - "15712": 127489, - "15713": 127407, - "15714": 127595, - "15715": 127581, - "15716": 127677, - "15717": 127345, - "15718": 127473, - "15719": 127659, - "15720": 127651, - "15721": 127657, - "15722": 127493, - "15723": 127435, - "15724": 127641, - "15725": 127461, - "15726": 127329, - "15727": 127623, - "15728": 127661, - "15729": 127441, - "15730": 127611, - "15731": 127259, - "15732": 127663, - "15733": 127287, - "15734": 127569, - "15735": 127381, - "15736": 127449, - "15737": 127639, - "15738": 127399, - "15739": 127531, - "15740": 127665, - "15741": 127253, - "15742": 127519, - "15743": 127343, - "15744": 127667, - "15745": 127633, - "15746": 127617, - "15747": 127295, - "15748": 127635, - "15749": 127555, - "15750": 127653, - "15751": 127607, - "15752": 127333, - "15753": 127587, - "15754": 127383, - "15755": 127669, - "15756": 127539, - "15757": 127481, - "15758": 127671, - "15759": 127591, - "15760": 127673, - "15761": 127593, - "15762": 127649, - "15763": 127527, - "15764": 127559, - "15765": 127675, - "15766": 127509, - "15767": 127499, - "15768": 127425, - "15769": 127583, - "15770": 127575, - "15771": 127677, - "15772": 127389, - "15773": 127473, - "15774": 127659, - "15775": 127651, - "15776": 127657, - "15777": 127493, - "15778": 127435, - "15779": 127641, - "15780": 127461, - "15781": 127329, - "15782": 127623, - "15783": 127661, - "15784": 127441, - "15785": 127611, - "15786": 127259, - "15787": 127663, - "15788": 127287, - "15789": 127569, - "15790": 127381, - "15791": 127449, - "15792": 127639, - "15793": 127399, - "15794": 127531, - "15795": 127665, - "15796": 127253, - "15797": 127519, - "15798": 127343, - "15799": 127667, - "15800": 127633, - "15801": 127617, - "15802": 127295, - "15803": 127635, - "15804": 127555, - "15805": 127653, - "15806": 127607, - "15807": 127333, - "15808": 127587, - "15809": 127383, - "15810": 127669, - "15811": 127539, - "15812": 127481, - "15813": 127671, - "15814": 127591, - "15815": 127673, - "15816": 127593, - "15817": 127649, - "15818": 127527, - "15819": 127559, - "15820": 127675, - "15821": 127509, - "15822": 127499, - "15823": 127425, - "15824": 127583, - "15825": 127575, - "15826": 127677, - "15827": 127389, - "15828": 127247, - "15829": 127241, - "15830": 127251, - "15831": 127257, - "15832": 127245, - "15833": 127255, - "15834": 127243, - "15835": 127249, - "15836": 127239, - "15837": 127253, - "15838": 127247, - "15839": 127241, - "15840": 127251, - "15841": 127257, - "15842": 127245, - "15843": 127255, - "15844": 127243, - "15845": 127249, - "15846": 127239, - "15847": 127253, - "15848": 127247, - "15849": 127269, - "15850": 127285, - "15851": 127293, - "15852": 127273, - "15853": 127289, - "15854": 127271, - "15855": 127281, - "15856": 127261, - "15857": 127287, - "15858": 127247, - "15859": 127269, - "15860": 127285, - "15861": 127293, - "15862": 127273, - "15863": 127289, - "15864": 127271, - "15865": 127281, - "15866": 127261, - "15867": 127287, - "15868": 127241, - "15869": 127269, - "15870": 127325, - "15871": 127341, - "15872": 127311, - "15873": 127335, - "15874": 127309, - "15875": 127319, - "15876": 127297, - "15877": 127333, - "15878": 127241, - "15879": 127269, - "15880": 127325, - "15881": 127341, - "15882": 127311, - "15883": 127335, - "15884": 127309, - "15885": 127319, - "15886": 127297, - "15887": 127333, - "15888": 127251, - "15889": 127285, - "15890": 127325, - "15891": 127397, - "15892": 127363, - "15893": 127391, - "15894": 127359, - "15895": 127371, - "15896": 127345, - "15897": 127389, - "15898": 127251, - "15899": 127285, - "15900": 127325, - "15901": 127397, - "15902": 127363, - "15903": 127391, - "15904": 127359, - "15905": 127371, - "15906": 127345, - "15907": 127389, - "15908": 127257, - "15909": 127293, - "15910": 127341, - "15911": 127397, - "15912": 127419, - "15913": 127451, - "15914": 127417, - "15915": 127427, - "15916": 127401, - "15917": 127449, - "15918": 127257, - "15919": 127293, - "15920": 127341, - "15921": 127397, - "15922": 127419, - "15923": 127451, - "15924": 127417, - "15925": 127427, - "15926": 127401, - "15927": 127449, - "15928": 127245, - "15929": 127273, - "15930": 127311, - "15931": 127363, - "15932": 127419, - "15933": 127511, - "15934": 127477, - "15935": 127485, - "15936": 127463, - "15937": 127509, - "15938": 127245, - "15939": 127273, - "15940": 127311, - "15941": 127363, - "15942": 127419, - "15943": 127511, - "15944": 127477, - "15945": 127485, - "15946": 127463, - "15947": 127509, - "15948": 127255, - "15949": 127289, - "15950": 127335, - "15951": 127391, - "15952": 127451, - "15953": 127511, - "15954": 127533, - "15955": 127543, - "15956": 127521, - "15957": 127569, - "15958": 127255, - "15959": 127289, - "15960": 127335, - "15961": 127391, - "15962": 127451, - "15963": 127511, - "15964": 127533, - "15965": 127543, - "15966": 127521, - "15967": 127569, - "15968": 127243, - "15969": 127271, - "15970": 127309, - "15971": 127359, - "15972": 127417, - "15973": 127477, - "15974": 127533, - "15975": 127597, - "15976": 127577, - "15977": 127617, - "15978": 127243, - "15979": 127271, - "15980": 127309, - "15981": 127359, - "15982": 127417, - "15983": 127477, - "15984": 127533, - "15985": 127597, - "15986": 127577, - "15987": 127617, - "15988": 127249, - "15989": 127281, - "15990": 127319, - "15991": 127371, - "15992": 127427, - "15993": 127485, - "15994": 127543, - "15995": 127597, - "15996": 127627, - "15997": 127657, - "15998": 127249, - "15999": 127281, - "16000": 127319, - "16001": 127371, - "16002": 127427, - "16003": 127485, - "16004": 127543, - "16005": 127597, - "16006": 127627, - "16007": 127657, - "16008": 127239, - "16009": 127261, - "16010": 127297, - "16011": 127345, - "16012": 127401, - "16013": 127463, - "16014": 127521, - "16015": 127577, - "16016": 127627, - "16017": 127675, - "16018": 127239, - "16019": 127261, - "16020": 127297, - "16021": 127345, - "16022": 127401, - "16023": 127463, - "16024": 127521, - "16025": 127577, - "16026": 127627, - "16027": 127675, - "16028": 127253, - "16029": 127287, - "16030": 127333, - "16031": 127389, - "16032": 127449, - "16033": 127509, - "16034": 127569, - "16035": 127617, - "16036": 127657, - "16037": 127675, - "16038": 127253, - "16039": 127287, - "16040": 127333, - "16041": 127389, - "16042": 127449, - "16043": 127509, - "16044": 127569, - "16045": 127617, - "16046": 127657, - "16047": 127675, - "16048": 127247, - "16049": 127267, - "16050": 127283, - "16051": 127279, - "16052": 127275, - "16053": 127263, - "16054": 127277, - "16055": 127291, - "16056": 127265, - "16057": 127259, - "16058": 127247, - "16059": 127267, - "16060": 127283, - "16061": 127279, - "16062": 127275, - "16063": 127263, - "16064": 127277, - "16065": 127291, - "16066": 127265, - "16067": 127259, - "16068": 127241, - "16069": 127267, - "16070": 127321, - "16071": 127317, - "16072": 127313, - "16073": 127299, - "16074": 127315, - "16075": 127339, - "16076": 127303, - "16077": 127295, - "16078": 127241, - "16079": 127267, - "16080": 127321, - "16081": 127317, - "16082": 127313, - "16083": 127299, - "16084": 127315, - "16085": 127339, - "16086": 127303, - "16087": 127295, - "16088": 127251, - "16089": 127283, - "16090": 127321, - "16091": 127369, - "16092": 127365, - "16093": 127351, - "16094": 127367, - "16095": 127395, - "16096": 127353, - "16097": 127343, - "16098": 127251, - "16099": 127283, - "16100": 127321, - "16101": 127369, - "16102": 127365, - "16103": 127351, - "16104": 127367, - "16105": 127395, - "16106": 127353, - "16107": 127343, - "16108": 127257, - "16109": 127279, - "16110": 127317, - "16111": 127369, - "16112": 127421, - "16113": 127409, - "16114": 127423, - "16115": 127457, - "16116": 127411, - "16117": 127399, - "16118": 127257, - "16119": 127279, - "16120": 127317, - "16121": 127369, - "16122": 127421, - "16123": 127409, - "16124": 127423, - "16125": 127457, - "16126": 127411, - "16127": 127399, - "16128": 127245, - "16129": 127275, - "16130": 127313, - "16131": 127365, - "16132": 127421, - "16133": 127469, - "16134": 127479, - "16135": 127517, - "16136": 127471, - "16137": 127461, - "16138": 127245, - "16139": 127275, - "16140": 127313, - "16141": 127365, - "16142": 127421, - "16143": 127469, - "16144": 127479, - "16145": 127517, - "16146": 127471, - "16147": 127461, - "16148": 127255, - "16149": 127263, - "16150": 127299, - "16151": 127351, - "16152": 127409, - "16153": 127469, - "16154": 127537, - "16155": 127573, - "16156": 127525, - "16157": 127519, - "16158": 127255, - "16159": 127263, - "16160": 127299, - "16161": 127351, - "16162": 127409, - "16163": 127469, - "16164": 127537, - "16165": 127573, - "16166": 127525, - "16167": 127519, - "16168": 127243, - "16169": 127277, - "16170": 127315, - "16171": 127367, - "16172": 127423, - "16173": 127479, - "16174": 127537, - "16175": 127621, - "16176": 127581, - "16177": 127575, - "16178": 127243, - "16179": 127277, - "16180": 127315, - "16181": 127367, - "16182": 127423, - "16183": 127479, - "16184": 127537, - "16185": 127621, - "16186": 127581, - "16187": 127575, - "16188": 127249, - "16189": 127291, - "16190": 127339, - "16191": 127395, - "16192": 127457, - "16193": 127517, - "16194": 127573, - "16195": 127621, - "16196": 127631, - "16197": 127623, - "16198": 127249, - "16199": 127291, - "16200": 127339, - "16201": 127395, - "16202": 127457, - "16203": 127517, - "16204": 127573, - "16205": 127621, - "16206": 127631, - "16207": 127623, - "16208": 127239, - "16209": 127265, - "16210": 127303, - "16211": 127353, - "16212": 127411, - "16213": 127471, - "16214": 127525, - "16215": 127581, - "16216": 127631, - "16217": 127659, - "16218": 127239, - "16219": 127265, - "16220": 127303, - "16221": 127353, - "16222": 127411, - "16223": 127471, - "16224": 127525, - "16225": 127581, - "16226": 127631, - "16227": 127659, - "16228": 127253, - "16229": 127259, - "16230": 127295, - "16231": 127343, - "16232": 127399, - "16233": 127461, - "16234": 127519, - "16235": 127575, - "16236": 127623, - "16237": 127659, - "16238": 127253, - "16239": 127259, - "16240": 127295, - "16241": 127343, - "16242": 127399, - "16243": 127461, - "16244": 127519, - "16245": 127575, - "16246": 127623, - "16247": 127659, - "16248": 127269, - "16249": 127267, - "16250": 127301, - "16251": 127327, - "16252": 127305, - "16253": 127337, - "16254": 127331, - "16255": 127307, - "16256": 127323, - "16257": 127329, - "16258": 127269, - "16259": 127267, - "16260": 127301, - "16261": 127327, - "16262": 127305, - "16263": 127337, - "16264": 127331, - "16265": 127307, - "16266": 127323, - "16267": 127329, - "16268": 127285, - "16269": 127283, - "16270": 127301, - "16271": 127379, - "16272": 127355, - "16273": 127393, - "16274": 127387, - "16275": 127357, - "16276": 127375, - "16277": 127383, - "16278": 127285, - "16279": 127283, - "16280": 127301, - "16281": 127379, - "16282": 127355, - "16283": 127393, - "16284": 127387, - "16285": 127357, - "16286": 127375, - "16287": 127383, - "16288": 127293, - "16289": 127279, - "16290": 127327, - "16291": 127379, - "16292": 127413, - "16293": 127453, - "16294": 127447, - "16295": 127415, - "16296": 127431, - "16297": 127441, - "16298": 127293, - "16299": 127279, - "16300": 127327, - "16301": 127379, - "16302": 127413, - "16303": 127453, - "16304": 127447, - "16305": 127415, - "16306": 127431, - "16307": 127441, - "16308": 127273, - "16309": 127275, - "16310": 127305, - "16311": 127355, - "16312": 127413, - "16313": 127513, - "16314": 127507, - "16315": 127475, - "16316": 127489, - "16317": 127499, - "16318": 127273, - "16319": 127275, - "16320": 127305, - "16321": 127355, - "16322": 127413, - "16323": 127513, - "16324": 127507, - "16325": 127475, - "16326": 127489, - "16327": 127499, - "16328": 127289, - "16329": 127263, - "16330": 127337, - "16331": 127393, - "16332": 127453, - "16333": 127513, - "16334": 127567, - "16335": 127529, - "16336": 127549, - "16337": 127559, - "16338": 127289, - "16339": 127263, - "16340": 127337, - "16341": 127393, - "16342": 127453, - "16343": 127513, - "16344": 127567, - "16345": 127529, - "16346": 127549, - "16347": 127559, - "16348": 127271, - "16349": 127277, - "16350": 127331, - "16351": 127387, - "16352": 127447, - "16353": 127507, - "16354": 127567, - "16355": 127585, - "16356": 127601, - "16357": 127611, - "16358": 127271, - "16359": 127277, - "16360": 127331, - "16361": 127387, - "16362": 127447, - "16363": 127507, - "16364": 127567, - "16365": 127585, - "16366": 127601, - "16367": 127611, - "16368": 127281, - "16369": 127291, - "16370": 127307, - "16371": 127357, - "16372": 127415, - "16373": 127475, - "16374": 127529, - "16375": 127585, - "16376": 127647, - "16377": 127653, - "16378": 127281, - "16379": 127291, - "16380": 127307, - "16381": 127357, - "16382": 127415, - "16383": 127475, - "16384": 127529, - "16385": 127585, - "16386": 127647, - "16387": 127653, - "16388": 127261, - "16389": 127265, - "16390": 127323, - "16391": 127375, - "16392": 127431, - "16393": 127489, - "16394": 127549, - "16395": 127601, - "16396": 127647, - "16397": 127673, - "16398": 127261, - "16399": 127265, - "16400": 127323, - "16401": 127375, - "16402": 127431, - "16403": 127489, - "16404": 127549, - "16405": 127601, - "16406": 127647, - "16407": 127673, - "16408": 127287, - "16409": 127259, - "16410": 127329, - "16411": 127383, - "16412": 127441, - "16413": 127499, - "16414": 127559, - "16415": 127611, - "16416": 127653, - "16417": 127673, - "16418": 127287, - "16419": 127259, - "16420": 127329, - "16421": 127383, - "16422": 127441, - "16423": 127499, - "16424": 127559, - "16425": 127611, - "16426": 127653, - "16427": 127673, - "16428": 127325, - "16429": 127321, - "16430": 127301, - "16431": 127361, - "16432": 127349, - "16433": 127347, - "16434": 127373, - "16435": 127377, - "16436": 127385, - "16437": 127381, - "16438": 127325, - "16439": 127321, - "16440": 127301, - "16441": 127361, - "16442": 127349, - "16443": 127347, - "16444": 127373, - "16445": 127377, - "16446": 127385, - "16447": 127381, - "16448": 127341, - "16449": 127317, - "16450": 127327, - "16451": 127361, - "16452": 127405, - "16453": 127403, - "16454": 127429, - "16455": 127433, - "16456": 127445, - "16457": 127435, - "16458": 127341, - "16459": 127317, - "16460": 127327, - "16461": 127361, - "16462": 127405, - "16463": 127403, - "16464": 127429, - "16465": 127433, - "16466": 127445, - "16467": 127435, - "16468": 127311, - "16469": 127313, - "16470": 127305, - "16471": 127349, - "16472": 127405, - "16473": 127465, - "16474": 127487, - "16475": 127491, - "16476": 127503, - "16477": 127493, - "16478": 127311, - "16479": 127313, - "16480": 127305, - "16481": 127349, - "16482": 127405, - "16483": 127465, - "16484": 127487, - "16485": 127491, - "16486": 127503, - "16487": 127493, - "16488": 127335, - "16489": 127299, - "16490": 127337, - "16491": 127347, - "16492": 127403, - "16493": 127465, - "16494": 127547, - "16495": 127551, - "16496": 127563, - "16497": 127555, - "16498": 127335, - "16499": 127299, - "16500": 127337, - "16501": 127347, - "16502": 127403, - "16503": 127465, - "16504": 127547, - "16505": 127551, - "16506": 127563, - "16507": 127555, - "16508": 127309, - "16509": 127315, - "16510": 127331, - "16511": 127373, - "16512": 127429, - "16513": 127487, - "16514": 127547, - "16515": 127603, - "16516": 127615, - "16517": 127607, - "16518": 127309, - "16519": 127315, - "16520": 127331, - "16521": 127373, - "16522": 127429, - "16523": 127487, - "16524": 127547, - "16525": 127603, - "16526": 127615, - "16527": 127607, - "16528": 127319, - "16529": 127339, - "16530": 127307, - "16531": 127377, - "16532": 127433, - "16533": 127491, - "16534": 127551, - "16535": 127603, - "16536": 127655, - "16537": 127649, - "16538": 127319, - "16539": 127339, - "16540": 127307, - "16541": 127377, - "16542": 127433, - "16543": 127491, - "16544": 127551, - "16545": 127603, - "16546": 127655, - "16547": 127649, - "16548": 127297, - "16549": 127303, - "16550": 127323, - "16551": 127385, - "16552": 127445, - "16553": 127503, - "16554": 127563, - "16555": 127615, - "16556": 127655, - "16557": 127669, - "16558": 127297, - "16559": 127303, - "16560": 127323, - "16561": 127385, - "16562": 127445, - "16563": 127503, - "16564": 127563, - "16565": 127615, - "16566": 127655, - "16567": 127669, - "16568": 127333, - "16569": 127295, - "16570": 127329, - "16571": 127381, - "16572": 127435, - "16573": 127493, - "16574": 127555, - "16575": 127607, - "16576": 127649, - "16577": 127669, - "16578": 127333, - "16579": 127295, - "16580": 127329, - "16581": 127381, - "16582": 127435, - "16583": 127493, - "16584": 127555, - "16585": 127607, - "16586": 127649, - "16587": 127669, - "16588": 127397, - "16589": 127369, - "16590": 127379, - "16591": 127361, - "16592": 127455, - "16593": 127439, - "16594": 127437, - "16595": 127443, - "16596": 127407, - "16597": 127425, - "16598": 127397, - "16599": 127369, - "16600": 127379, - "16601": 127361, - "16602": 127455, - "16603": 127439, - "16604": 127437, - "16605": 127443, - "16606": 127407, - "16607": 127425, - "16608": 127363, - "16609": 127365, - "16610": 127355, - "16611": 127349, - "16612": 127455, - "16613": 127497, - "16614": 127495, - "16615": 127501, - "16616": 127467, - "16617": 127481, - "16618": 127363, - "16619": 127365, - "16620": 127355, - "16621": 127349, - "16622": 127455, - "16623": 127497, - "16624": 127495, - "16625": 127501, - "16626": 127467, - "16627": 127481, - "16628": 127391, - "16629": 127351, - "16630": 127393, - "16631": 127347, - "16632": 127439, - "16633": 127497, - "16634": 127557, - "16635": 127561, - "16636": 127523, - "16637": 127539, - "16638": 127391, - "16639": 127351, - "16640": 127393, - "16641": 127347, - "16642": 127439, - "16643": 127497, - "16644": 127557, - "16645": 127561, - "16646": 127523, - "16647": 127539, - "16648": 127359, - "16649": 127367, - "16650": 127387, - "16651": 127373, - "16652": 127437, - "16653": 127495, - "16654": 127557, - "16655": 127613, - "16656": 127579, - "16657": 127593, - "16658": 127359, - "16659": 127367, - "16660": 127387, - "16661": 127373, - "16662": 127437, - "16663": 127495, - "16664": 127557, - "16665": 127613, - "16666": 127579, - "16667": 127593, - "16668": 127371, - "16669": 127395, - "16670": 127357, - "16671": 127377, - "16672": 127443, - "16673": 127501, - "16674": 127561, - "16675": 127613, - "16676": 127629, - "16677": 127641, - "16678": 127371, - "16679": 127395, - "16680": 127357, - "16681": 127377, - "16682": 127443, - "16683": 127501, - "16684": 127561, - "16685": 127613, - "16686": 127629, - "16687": 127641, - "16688": 127345, - "16689": 127353, - "16690": 127375, - "16691": 127385, - "16692": 127407, - "16693": 127467, - "16694": 127523, - "16695": 127579, - "16696": 127629, - "16697": 127667, - "16698": 127345, - "16699": 127353, - "16700": 127375, - "16701": 127385, - "16702": 127407, - "16703": 127467, - "16704": 127523, - "16705": 127579, - "16706": 127629, - "16707": 127667, - "16708": 127389, - "16709": 127343, - "16710": 127383, - "16711": 127381, - "16712": 127425, - "16713": 127481, - "16714": 127539, - "16715": 127593, - "16716": 127641, - "16717": 127667, - "16718": 127389, - "16719": 127343, - "16720": 127383, - "16721": 127381, - "16722": 127425, - "16723": 127481, - "16724": 127539, - "16725": 127593, - "16726": 127641, - "16727": 127667, - "16728": 127419, - "16729": 127421, - "16730": 127413, - "16731": 127405, - "16732": 127455, - "16733": 127459, - "16734": 127505, - "16735": 127515, - "16736": 127483, - "16737": 127473, - "16738": 127419, - "16739": 127421, - "16740": 127413, - "16741": 127405, - "16742": 127455, - "16743": 127459, - "16744": 127505, - "16745": 127515, - "16746": 127483, - "16747": 127473, - "16748": 127451, - "16749": 127409, - "16750": 127453, - "16751": 127403, - "16752": 127439, - "16753": 127459, - "16754": 127565, - "16755": 127571, - "16756": 127541, - "16757": 127527, - "16758": 127451, - "16759": 127409, - "16760": 127453, - "16761": 127403, - "16762": 127439, - "16763": 127459, - "16764": 127565, - "16765": 127571, - "16766": 127541, - "16767": 127527, - "16768": 127417, - "16769": 127423, - "16770": 127447, - "16771": 127429, - "16772": 127437, - "16773": 127505, - "16774": 127565, - "16775": 127619, - "16776": 127595, - "16777": 127583, - "16778": 127417, - "16779": 127423, - "16780": 127447, - "16781": 127429, - "16782": 127437, - "16783": 127505, - "16784": 127565, - "16785": 127619, - "16786": 127595, - "16787": 127583, - "16788": 127427, - "16789": 127457, - "16790": 127415, - "16791": 127433, - "16792": 127443, - "16793": 127515, - "16794": 127571, - "16795": 127619, - "16796": 127643, - "16797": 127633, - "16798": 127427, - "16799": 127457, - "16800": 127415, - "16801": 127433, - "16802": 127443, - "16803": 127515, - "16804": 127571, - "16805": 127619, - "16806": 127643, - "16807": 127633, - "16808": 127401, - "16809": 127411, - "16810": 127431, - "16811": 127445, - "16812": 127407, - "16813": 127483, - "16814": 127541, - "16815": 127595, - "16816": 127643, - "16817": 127661, - "16818": 127401, - "16819": 127411, - "16820": 127431, - "16821": 127445, - "16822": 127407, - "16823": 127483, - "16824": 127541, - "16825": 127595, - "16826": 127643, - "16827": 127661, - "16828": 127449, - "16829": 127399, - "16830": 127441, - "16831": 127435, - "16832": 127425, - "16833": 127473, - "16834": 127527, - "16835": 127583, - "16836": 127633, - "16837": 127661, - "16838": 127449, - "16839": 127399, - "16840": 127441, - "16841": 127435, - "16842": 127425, - "16843": 127473, - "16844": 127527, - "16845": 127583, - "16846": 127633, - "16847": 127661, - "16848": 127511, - "16849": 127469, - "16850": 127513, - "16851": 127465, - "16852": 127497, - "16853": 127459, - "16854": 127535, - "16855": 127553, - "16856": 127545, - "16857": 127531, - "16858": 127511, - "16859": 127469, - "16860": 127513, - "16861": 127465, - "16862": 127497, - "16863": 127459, - "16864": 127535, - "16865": 127553, - "16866": 127545, - "16867": 127531, - "16868": 127477, - "16869": 127479, - "16870": 127507, - "16871": 127487, - "16872": 127495, - "16873": 127505, - "16874": 127535, - "16875": 127605, - "16876": 127599, - "16877": 127587, - "16878": 127477, - "16879": 127479, - "16880": 127507, - "16881": 127487, - "16882": 127495, - "16883": 127505, - "16884": 127535, - "16885": 127605, - "16886": 127599, - "16887": 127587, - "16888": 127485, - "16889": 127517, - "16890": 127475, - "16891": 127491, - "16892": 127501, - "16893": 127515, - "16894": 127553, - "16895": 127605, - "16896": 127645, - "16897": 127635, - "16898": 127485, - "16899": 127517, - "16900": 127475, - "16901": 127491, - "16902": 127501, - "16903": 127515, - "16904": 127553, - "16905": 127605, - "16906": 127645, - "16907": 127635, - "16908": 127463, - "16909": 127471, - "16910": 127489, - "16911": 127503, - "16912": 127467, - "16913": 127483, - "16914": 127545, - "16915": 127599, - "16916": 127645, - "16917": 127663, - "16918": 127463, - "16919": 127471, - "16920": 127489, - "16921": 127503, - "16922": 127467, - "16923": 127483, - "16924": 127545, - "16925": 127599, - "16926": 127645, - "16927": 127663, - "16928": 127509, - "16929": 127461, - "16930": 127499, - "16931": 127493, - "16932": 127481, - "16933": 127473, - "16934": 127531, - "16935": 127587, - "16936": 127635, - "16937": 127663, - "16938": 127509, - "16939": 127461, - "16940": 127499, - "16941": 127493, - "16942": 127481, - "16943": 127473, - "16944": 127531, - "16945": 127587, - "16946": 127635, - "16947": 127663, - "16948": 127533, - "16949": 127537, - "16950": 127567, - "16951": 127547, - "16952": 127557, - "16953": 127565, - "16954": 127535, - "16955": 127609, - "16956": 127589, - "16957": 127591, - "16958": 127533, - "16959": 127537, - "16960": 127567, - "16961": 127547, - "16962": 127557, - "16963": 127565, - "16964": 127535, - "16965": 127609, - "16966": 127589, - "16967": 127591, - "16968": 127543, - "16969": 127573, - "16970": 127529, - "16971": 127551, - "16972": 127561, - "16973": 127571, - "16974": 127553, - "16975": 127609, - "16976": 127637, - "16977": 127639, - "16978": 127543, - "16979": 127573, - "16980": 127529, - "16981": 127551, - "16982": 127561, - "16983": 127571, - "16984": 127553, - "16985": 127609, - "16986": 127637, - "16987": 127639, - "16988": 127521, - "16989": 127525, - "16990": 127549, - "16991": 127563, - "16992": 127523, - "16993": 127541, - "16994": 127545, - "16995": 127589, - "16996": 127637, - "16997": 127665, - "16998": 127521, - "16999": 127525, - "17000": 127549, - "17001": 127563, - "17002": 127523, - "17003": 127541, - "17004": 127545, - "17005": 127589, - "17006": 127637, - "17007": 127665, - "17008": 127569, - "17009": 127519, - "17010": 127559, - "17011": 127555, - "17012": 127539, - "17013": 127527, - "17014": 127531, - "17015": 127591, - "17016": 127639, - "17017": 127665, - "17018": 127569, - "17019": 127519, - "17020": 127559, - "17021": 127555, - "17022": 127539, - "17023": 127527, - "17024": 127531, - "17025": 127591, - "17026": 127639, - "17027": 127665, - "17028": 127597, - "17029": 127621, - "17030": 127585, - "17031": 127603, - "17032": 127613, - "17033": 127619, - "17034": 127605, - "17035": 127609, - "17036": 127625, - "17037": 127651, - "17038": 127597, - "17039": 127621, - "17040": 127585, - "17041": 127603, - "17042": 127613, - "17043": 127619, - "17044": 127605, - "17045": 127609, - "17046": 127625, - "17047": 127651, - "17048": 127577, - "17049": 127581, - "17050": 127601, - "17051": 127615, - "17052": 127579, - "17053": 127595, - "17054": 127599, - "17055": 127589, - "17056": 127625, - "17057": 127671, - "17058": 127577, - "17059": 127581, - "17060": 127601, - "17061": 127615, - "17062": 127579, - "17063": 127595, - "17064": 127599, - "17065": 127589, - "17066": 127625, - "17067": 127671, - "17068": 127617, - "17069": 127575, - "17070": 127611, - "17071": 127607, - "17072": 127593, - "17073": 127583, - "17074": 127587, - "17075": 127591, - "17076": 127651, - "17077": 127671, - "17078": 127617, - "17079": 127575, - "17080": 127611, - "17081": 127607, - "17082": 127593, - "17083": 127583, - "17084": 127587, - "17085": 127591, - "17086": 127651, - "17087": 127671, - "17088": 127627, - "17089": 127631, - "17090": 127647, - "17091": 127655, - "17092": 127629, - "17093": 127643, - "17094": 127645, - "17095": 127637, - "17096": 127625, - "17097": 127677, - "17098": 127627, - "17099": 127631, - "17100": 127647, - "17101": 127655, - "17102": 127629, - "17103": 127643, - "17104": 127645, - "17105": 127637, - "17106": 127625, - "17107": 127677, - "17108": 127657, - "17109": 127623, - "17110": 127653, - "17111": 127649, - "17112": 127641, - "17113": 127633, - "17114": 127635, - "17115": 127639, - "17116": 127651, - "17117": 127677, - "17118": 127657, - "17119": 127623, - "17120": 127653, - "17121": 127649, - "17122": 127641, - "17123": 127633, - "17124": 127635, - "17125": 127639, - "17126": 127651, - "17127": 127677, - "17128": 127675, - "17129": 127659, - "17130": 127673, - "17131": 127669, - "17132": 127667, - "17133": 127661, - "17134": 127663, - "17135": 127665, - "17136": 127671, - "17137": 127677, - "17138": 127675, - "17139": 127659, - "17140": 127673, - "17141": 127669, - "17142": 127667, - "17143": 127661, - "17144": 127663, - "17145": 127665, - "17146": 127671, - "17147": 127677, - "14740": 148093, - "14745": 148093, - "14750": 148093, - "14755": 148093, - "14701": 148094, - "14706": 148094, - "14711": 148094, - "14702": 148095, - "14707": 148095, - "14712": 148095, - "14704": 148096, - "14709": 148096, - "14714": 148096, - "14151": 148098, - "14160": 148098, - "14169": 148098, - "14178": 148098, - "14473": 148098, - "14479": 148098, - "14485": 148098, - "14491": 148098, - "14570": 148098, - "14571": 148098, - "14572": 148098, - "14573": 148098, - "14608": 148098, - "14609": 148098, - "14610": 148098, - "14611": 148098, - "14892": 148098, - "14893": 148098, - "14497": 148099, - "14503": 148099, - "14612": 148099, - "14613": 148099, - "14760": 148099, - "14765": 148099, - "14894": 148099, - "14895": 148099, - "14509": 148100, - "14515": 148100, - "14614": 148100, - "14615": 148100, - "14770": 148100, - "14775": 148100, - "14896": 148100, - "14897": 148100, - "14521": 148101, - "14527": 148101, - "14616": 148101, - "14617": 148101, - "14780": 148101, - "14785": 148101, - "14898": 148101, - "14899": 148101, - "14533": 148102, - "14539": 148102, - "14618": 148102, - "14619": 148102, - "14790": 148102, - "14795": 148102, - "14900": 148102, - "14901": 148102, - "14545": 148103, - "14551": 148103, - "14620": 148103, - "14621": 148103, - "14800": 148103, - "14805": 148103, - "14902": 148103, - "14903": 148103, - "14557": 148104, - "14563": 148104, - "14622": 148104, - "14623": 148104, - "14810": 148104, - "14815": 148104, - "14904": 148104, - "14905": 148104, - "14332": 150359, - "14333": 150359, - "14229": 150360, - "14238": 150360, - "14256": 150360, - "14247": 150360, - "14265": 150360, - "14773": 150361, - "14778": 150361, - "14783": 150361, - "14719": 150362, - "14724": 150362, - "14793": 150363, - "14803": 150363, - "14703": 150364, - "14713": 150365, - "14723": 150366, - "14733": 150367, - "14743": 150368, - "14753": 150369, - "14763": 150370, - "8652": 200000, - "8653": 200001, - "8802": 200002, - "8803": 200003, - "8932": 200004, - "8933": 200005, - "9040": 200006, - "9041": 200007, - "9134": 200008, - "9135": 200009, - "9210": 200010, - "9211": 200011, - "9266": 200012, - "9267": 200013, - "9268": 200014, - "9269": 200015, - "9286": 200016, - "9287": 200017, - "9304": 200018, - "9305": 200019, - "9502": 200020, - "9503": 200021, - "9662": 200022, - "9663": 200023, - "9804": 200024, - "9805": 200025, - "9920": 200026, - "9921": 200027, - "10016": 200028, - "10017": 200029, - "10094": 200030, - "10095": 200031, - "10152": 200032, - "10153": 200033, - "10154": 200034, - "10155": 200035, - "10176": 200036, - "10177": 200037, - "10196": 200038, - "10197": 200039, - "10376": 200040, - "10377": 200041, - "10518": 200042, - "10519": 200043, - "10632": 200044, - "10633": 200045, - "10732": 200046, - "10733": 200047, - "10816": 200048, - "10817": 200049, - "10882": 200050, - "10883": 200051, - "10884": 200052, - "10885": 200053, - "10902": 200054, - "10903": 200055, - "10922": 200056, - "10923": 200057, - "11078": 200058, - "11079": 200059, - "11186": 200060, - "11187": 200061, - "11280": 200062, - "11281": 200063, - "11356": 200064, - "11357": 200065, - "11412": 200066, - "11413": 200067, - "11414": 200068, - "11415": 200069, - "11432": 200070, - "11433": 200071, - "11450": 200072, - "11451": 200073, - "11574": 200074, - "11575": 200075, - "11670": 200076, - "11671": 200077, - "11748": 200078, - "11749": 200079, - "11806": 200080, - "11807": 200081, - "11808": 200082, - "11809": 200083, - "11826": 200084, - "11827": 200085, - "11846": 200086, - "11847": 200087, - "11966": 200088, - "11967": 200089, - "12050": 200090, - "12051": 200091, - "12108": 200092, - "12109": 200093, - "12110": 200094, - "12111": 200095, - "12132": 200096, - "12133": 200097, - "12152": 200098, - "12153": 200099, - "12248": 200100, - "12249": 200101, - "12312": 200102, - "12313": 200103, - "12314": 200104, - "12315": 200105, - "12332": 200106, - "12333": 200107, - "12352": 200108, - "12353": 200109, - "12428": 200110, - "12429": 200111, - "12430": 200112, - "12431": 200113, - "12432": 200114, - "12433": 200115, - "12448": 200116, - "12449": 200117, - "12450": 200118, - "12451": 200119, - "12466": 200120, - "12467": 200121, - "12468": 200122, - "12469": 200123, - "12486": 200124, - "12487": 200125, - "12504": 200126, - "12505": 200127, - "12522": 200128, - "12523": 200129, - "14414": 200130, - "13411": 200131, - "13337": 200132, - "13622": 200133, - "13619": 200134, - "13617": 200135, - "13860": 200136, - "13853": 200137, - "13851": 200138, - "14918": 200139, - "14339": 200140, - "14337": 200141, - "14666": 200142, - "14355": 200143, - "14353": 200144, - "14390": 200145, - "14381": 200146, - "14379": 200147, - "14640": 200148, - "14627": 200149, - "14625": 200150, - "14301": 200151, - "14321": 200152, - "14366": 200153, - "12000": 200154, - "11745": 200155, - "9688": 200156, - "9863": 200157, - "12081": 200158, - "9585": 200159, - "14756": 200160, - "14807": 200161, - "14552": 200162, - "14512": 200163, - "14508": 200164, - "14524": 200165, - "14629": 200166, - "14167": 200167, - "14653": 200168, - "14593": 200169, - "14649": 200170, - "14651": 200171, - "14646": 200172, - "14644": 200173, - "14252": 200174, - "14207": 200175, - "14215": 200176, - "14210": 200177, - "14027": 200178, - "14038": 200179, - "14263": 200180, - "14002": 200181, - "13962": 200182, - "13677": 200183, - "12767": 200184, - "13094": 200185, - "12080": 200186, - "12997": 200188, - "13139": 200189, - "12982": 200190, - "13087": 200191, - "14008": 200192, - "9536": 200193, - "9430": 200194, - "13153": 200195, - "13297": 200196, - "13307": 200197, - "13279": 200198, - "14388": 200199, - "11367": 200200, - "14384": 200201, - "9516": 200202, - "14031": 200203, - "13369": 200204, - "13296": 200207, - "13299": 200208, - "14386": 200210, - "13080": 200211, - "12766": 200213, - "13384": 200214, - "9717": 200215, - "9971": 200216, - "13801": 200217, - "14928": 200218, - "14929": 200219, - "14341": 200220, - "14921": 200221, - "14920": 200222, - "13840": 200223, - "14401": 200224, - "14400": 200225, - "14392": 200226, - "14383": 200227, - "14382": 200228, - "14356": 200229, - "14668": 200230, - "14669": 200231, - "13817": 200232, - "14676": 200233, - "14677": 200234, - "14159": 200235, - "14876": 200236, - "14861": 200237, - "14860": 200238, - "14858": 200239, - "14822": 200240, - "14821": 200241, - "14820": 200242, - "14607": 200243, - "14878": 200244, - "14863": 200245, - "14862": 200246, - "14825": 200247, - "13313": 200248, - "13387": 200249, - "12757": 200250, - "11248": 200251, - "12651": 200252, - "9984": 200253, - "9987": 200254, - "10698": 200255, - "10701": 200256, - "12873": 200257, - "11638": 200258, - "11641": 200259, - "13021": 200260, - "11934": 200261, - "11940": 200262, - "11943": 200263, - "11963": 200264, - "13280": 200265, - "13095": 200266, - "11987": 200267, - "13354": 200268, - "13391": 200269, - "13428": 200270, - "13465": 200271, - "7643": 200272, - "7650": 200273, - "7659": 200274, - "7663": 200275, - "7668": 200276, - "7671": 200277, - "7700": 200278, - "7720": 200279, - "7721": 200280, - "7730": 200281, - "7731": 200282, - "7588": 200283, - "7735": 200284, - "7642": 200285, - "7634": 200286, - "7624": 200287, - "7617": 200288, - "7611": 200289, - "7607": 200290, - "7600": 200291, - "7598": 200292, - "7593": 200293, - "7594": 200294, - "7591": 200295, - "7052": 200296, - "7841": 200297, - "7902": 200298, - "7898": 200299, - "7889": 200300, - "7883": 200301, - "7876": 200302, - "7875": 200303, - "7872": 200304, - "7868": 200305, - "7863": 200306, - "7862": 200307, - "7854": 200308, - "7743": 200309, - "7839": 200310, - "7822": 200311, - "7819": 200312, - "7815": 200313, - "7811": 200314, - "7810": 200315, - "7791": 200316, - "7783": 200317, - "7776": 200318, - "7757": 200319, - "7755": 200320, - "7209": 200321, - "7161": 200322, - "7173": 200323, - "7177": 200324, - "7183": 200325, - "7186": 200326, - "7187": 200327, - "7192": 200328, - "7198": 200329, - "7153": 200330, - "7216": 200331, - "7222": 200332, - "7244": 200333, - "7247": 200334, - "7258": 200335, - "7263": 200336, - "7272": 200337, - "7279": 200338, - "7096": 200339, - "7043": 200340, - "7071": 200341, - "7075": 200342, - "7076": 200343, - "7079": 200344, - "7081": 200345, - "7086": 200346, - "7091": 200347, - "7584": 200348, - "7104": 200349, - "7115": 200350, - "7120": 200351, - "7121": 200352, - "7130": 200353, - "7134": 200354, - "7133": 200355, - "7140": 200356, - "7477": 200357, - "7360": 200358, - "7366": 200359, - "7391": 200360, - "7404": 200361, - "7411": 200362, - "7415": 200363, - "7416": 200364, - "7430": 200365, - "7437": 200366, - "7463": 200367, - "7470": 200368, - "7295": 200369, - "7488": 200370, - "7493": 200371, - "7506": 200372, - "7539": 200373, - "7543": 200374, - "7563": 200375, - "7566": 200376, - "7571": 200377, - "7572": 200378, - "7579": 200379, - "7587": 200380, - "7285": 200381, - "7359": 200382, - "7353": 200383, - "7347": 200384, - "7346": 200385, - "7330": 200386, - "7327": 200387, - "7324": 200388, - "7318": 200389, - "7312": 200390, - "7320": 200391, - "7301": 200392, - "9692": 200393, - "9864": 200394, - "11977": 200395, - "8789": 200396, - "9986": 200397, - "11980": 200398, - "10163": 200399, - "10166": 200400, - "10547": 200401, - "12126": 200402, - "12146": 200403, - "10192": 200404, - "10212": 200405, - "10403": 200406, - "10406": 200407, - "10550": 200408, - "10409": 200409, - "9799": 200410, - "10456": 200411, - "10458": 200412, - "9742": 200413, - "9762": 200414, - "10032": 200415, - "10494": 200416, - "9782": 200417, - "10554": 200418, - "9815": 200419, - "9818": 200420, - "10532": 200421, - "10534": 200422, - "10172": 200423, - "10552": 200424, - "11945": 200425, - "11775": 200426, - "11974": 200427, - "12079": 200428, - "11942": 200429, - "11962": 200430, - "12343": 200431, - "11986": 200432, - "12129": 200433, - "10831": 200434, - "10740": 200435, - "10743": 200436, - "10726": 200437, - "10852": 200438, - "10626": 200439, - "10960": 200440, - "10877": 200441, - "11250": 200442, - "10623": 200443, - "9396": 200444, - "9425": 200445, - "9594": 200446, - "9429": 200447, - "9431": 200448, - "10300": 200449, - "9743": 200450, - "9760": 200451, - "9509": 200452, - "9107": 200453, - "9234": 200454, - "8550": 200455, - "9384": 200456, - "9393": 200457, - "9822": 200458, - "8588": 200459, - "9842": 200460, - "10302": 200461, - "9600": 200462, - "9689": 200463, - "10105": 200464, - "9385": 200465, - "8553": 200466, - "11545": 200467, - "9002": 200468, - "8742": 200469, - "12246": 200470, - "12300": 200471, - "13254": 200472, - "11499": 200473, - "13402": 200474, - "13365": 200475, - "11479": 200476, - "12662": 200477, - "12381": 200478, - "8957": 200479, - "12387": 200480, - "12277": 200481, - "12076": 200482, - "11105": 200483, - "13217": 200484, - "10914": 200485, - "10849": 200486, - "12823": 200487, - "10842": 200488, - "12847": 200489, - "10543": 200490, - "10412": 200491, - "9835": 200492, - "13180": 200493, - "12995": 200494, - "12921": 200495, - "12958": 200496, - "11311": 200497, - "13106": 200498, - "13143": 200499, - "8529": 200500, - "8531": 200501, - "9371": 200502, - "8535": 200503, - "8533": 200504, - "8701": 200505, - "9315": 200506, - "9313": 200507, - "9261": 200508, - "8853": 200509, - "8855": 200510, - "9259": 200511, - "9185": 200512, - "8979": 200513, - "8981": 200514, - "9183": 200515, - "9089": 200516, - "9091": 200517, - "14212": 300001, - "14214": 300000, - "14221": 300003, - "14223": 300002, - "14230": 300005, - "14232": 300004, - "14239": 300007, - "14241": 300006, - "14248": 300009, - "14250": 300008, - "14266": 300011, - "14268": 300010, - "14284": 300013, - "14286": 300012 - }, - "patterns": [ - [ - [ - 6, - 6, - 6, - 6, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4 - ], - 220 - ], - [ - [ - 7, - 7, - 7, - 7, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4 - ], - 70 - ], - [ - [ - 9, - 9, - 9, - 9, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4 - ], - 40 - ], - [ - [ - 10, - 10, - 10, - 10, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4 - ], - 80 - ], - [ - [ - 11, - 11, - 11, - 11, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4 - ], - 550 - ], - [ - [ - 12, - 12, - 12, - 12, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4 - ], - 300 - ], - [ - [ - 13, - 13, - 13, - 13, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4 - ], - 140 - ], - [ - [ - 14, - 14, - 14, - 14, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4 - ], - 20 - ], - [ - [ - 15, - 15, - 15, - 15, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4 - ], - 200 - ], - [ - [ - 16, - 16, - 16, - 16, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4 - ], - 10 - ], - [ - [ - 18, - 18, - 18, - 18, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4 - ], - 10 - ], - [ - [ - 19, - 19, - 19, - 19, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4 - ], - 310 - ], - [ - [ - 20, - 20, - 20, - 20, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4 - ], - 190 - ], - [ - [ - 21, - 21, - 21, - 21, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4 - ], - 30 - ], - [ - [ - 22, - 22, - 22, - 22, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4 - ], - 410 - ], - [ - [ - 23, - 23, - 23, - 23, - 4, - 4, - 4, - 4, - 4, - 4, - 4 - ], - 3690 - ], - [ - [ - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4, - 4 - ], - 739 - ], - [ - [ - 24, - 24, - 24, - 24, - 24 - ], - 110080 - ] - ], - "segments": { - "4": [ - [ - 0, - 5280, - 0, - 0, - [ - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27 - ] - ], - [ - 5280, - 6890, - 1, - 220, - [ - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26 - ] - ], - [ - 6890, - 7730, - 2, - 290, - [ - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24 - ] - ], - [ - 7730, - 9330, - 3, - 330, - [ - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23 - ] - ], - [ - 9330, - 19780, - 4, - 410, - [ - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22 - ] - ], - [ - 19780, - 25180, - 5, - 960, - [ - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21 - ] - ], - [ - 25180, - 27560, - 6, - 1260, - [ - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20 - ] - ], - [ - 27560, - 27880, - 7, - 1400, - [ - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19 - ] - ], - [ - 27880, - 30880, - 8, - 1420, - [ - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18 - ] - ], - [ - 30880, - 31020, - 9, - 1620, - [ - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17 - ] - ], - [ - 31020, - 31140, - 10, - 1630, - [ - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15 - ] - ], - [ - 31140, - 34550, - 11, - 1640, - [ - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14 - ] - ], - [ - 34550, - 36450, - 12, - 1950, - [ - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13 - ] - ], - [ - 36450, - 36720, - 13, - 2140, - [ - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12 - ] - ], - [ - 36720, - 40000, - 14, - 2170, - [ - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11 - ] - ], - [ - 40000, - 65830, - 15, - 2580, - [ - 4, - 5, - 6, - 7, - 8, - 9, - 10 - ] - ], - [ - 65830, - 88000, - 16, - 6270, - [ - 0, - 1, - 2, - 3, - 4, - 5, - 6, - 7, - 8, - 9, - 10, - 11, - 12, - 13, - 14, - 15, - 16, - 17, - 18, - 19, - 20, - 21, - 22, - 23, - 24, - 25, - 26, - 27, - 28, - 29 - ] - ] - ], - "6": [ - [ - 0, - 880, - 0, - 0, - [ - 0, - 1, - 2, - 3 - ] - ] - ], - "7": [ - [ - 0, - 280, - 1, - 220, - [ - 0, - 1, - 2, - 3 - ] - ] - ], - "9": [ - [ - 0, - 160, - 2, - 290, - [ - 0, - 1, - 2, - 3 - ] - ] - ], - "10": [ - [ - 0, - 320, - 3, - 330, - [ - 0, - 1, - 2, - 3 - ] - ] - ], - "11": [ - [ - 0, - 2200, - 4, - 410, - [ - 0, - 1, - 2, - 3 - ] - ] - ], - "12": [ - [ - 0, - 1200, - 5, - 960, - [ - 0, - 1, - 2, - 3 - ] - ] - ], - "13": [ - [ - 0, - 560, - 6, - 1260, - [ - 0, - 1, - 2, - 3 - ] - ] - ], - "14": [ - [ - 0, - 80, - 7, - 1400, - [ - 0, - 1, - 2, - 3 - ] - ] - ], - "15": [ - [ - 0, - 800, - 8, - 1420, - [ - 0, - 1, - 2, - 3 - ] - ] - ], - "16": [ - [ - 0, - 40, - 9, - 1620, - [ - 0, - 1, - 2, - 3 - ] - ] - ], - "18": [ - [ - 0, - 40, - 10, - 1630, - [ - 0, - 1, - 2, - 3 - ] - ] - ], - "19": [ - [ - 0, - 1240, - 11, - 1640, - [ - 0, - 1, - 2, - 3 - ] - ] - ], - "20": [ - [ - 0, - 760, - 12, - 1950, - [ - 0, - 1, - 2, - 3 - ] - ] - ], - "21": [ - [ - 0, - 120, - 13, - 2140, - [ - 0, - 1, - 2, - 3 - ] - ] - ], - "22": [ - [ - 0, - 1640, - 14, - 2170, - [ - 0, - 1, - 2, - 3 - ] - ] - ], - "23": [ - [ - 0, - 14760, - 15, - 2580, - [ - 0, - 1, - 2, - 3 - ] - ] - ], - "24": [ - [ - 0, - 550400, - 17, - 7009, - [ - 0, - 1, - 2, - 3, - 4 - ] - ] - ] - }, - "helper_occurrences": 3317400, - "local_registers": 20107, - "external_work_local": 20107, - "external_work_family": 867045, - "data_families": 281600, - "banks_per_stage": 117089, - "live_families": 867045, - "assignment": "q=role_index*40+replica; select residual-rank segment [lo,hi); (bank_offset,within)=divmod(q-lo,len(blocks)); family=281600+117089*stage+bank_start+bank_offset; block=blocks[within]; offset=sum(pattern widths before block)", - "data_route": "stage0:(family,class(d)); stage>0:(family,right(d,rho(stage,port)))", - "helper_route": "(family,right(d,tau(stage),inverse(normalizer(stage,pattern,block,frame))))", - "normalizer": "scalar=(block+1); exact permutation from stage window residual coordinates to block; inverse chart identified by source-bound gauge frame. Apply factors right-to-left. Cover arithmetic is not reduced modulo 2.", - "phase_schedule": [ - [ - "stage", - 0, - 0, - "all_cover_classes" - ], - [ - "stage", - 0, - 1, - "all_cover_classes" - ], - [ - "stage", - 0, - 2, - "all_cover_classes" - ], - [ - "stage", - 0, - 3, - "all_cover_classes" - ], - [ - "stage", - 0, - 4, - "all_cover_classes" - ], - [ - "stage", - 0, - 5, - "all_cover_classes" - ], - [ - "stage", - 0, - 6, - "all_cover_classes" - ], - [ - "stage", - 0, - 7, - "all_cover_classes" - ], - [ - "stage", - 0, - 8, - "all_cover_classes" - ], - [ - "stage", - 0, - 9, - "all_cover_classes" - ], - [ - "stage", - 0, - 10, - "all_cover_classes" - ], - [ - "stage", - 0, - 11, - "all_cover_classes" - ], - [ - "stage", - 0, - 12, - "all_cover_classes" - ], - [ - "stage", - 0, - 13, - "all_cover_classes" - ], - [ - "stage", - 0, - 14, - "all_cover_classes" - ], - [ - "stage", - 0, - 15, - "all_cover_classes" - ], - [ - "stage", - 0, - 16, - "all_cover_classes" - ], - [ - "stage", - 0, - 17, - "all_cover_classes" - ], - [ - "stage", - 0, - 18, - "all_cover_classes" - ], - [ - "stage", - 0, - 19, - "all_cover_classes" - ], - [ - "stage", - 0, - 20, - "all_cover_classes" - ], - [ - "stage", - 0, - 21, - "all_cover_classes" - ], - [ - "stage", - 0, - 22, - "all_cover_classes" - ], - [ - "stage", - 0, - 23, - "all_cover_classes" - ], - [ - "stage", - 0, - 24, - "all_cover_classes" - ], - [ - "stage", - 0, - 25, - "all_cover_classes" - ], - [ - "stage", - 0, - 26, - "all_cover_classes" - ], - [ - "stage", - 0, - 27, - "all_cover_classes" - ], - [ - "stage", - 0, - 28, - "all_cover_classes" - ], - [ - "stage", - 0, - 29, - "all_cover_classes" - ], - [ - "stage", - 0, - 30, - "all_cover_classes" - ], - [ - "stage", - 0, - 31, - "all_cover_classes" - ], - [ - "stage", - 0, - 32, - "all_cover_classes" - ], - [ - "stage", - 0, - 33, - "all_cover_classes" - ], - [ - "stage", - 0, - 34, - "all_cover_classes" - ], - [ - "stage", - 0, - 35, - "all_cover_classes" - ], - [ - "stage", - 0, - 36, - "all_cover_classes" - ], - [ - "stage", - 0, - 37, - "all_cover_classes" - ], - [ - "stage", - 0, - 38, - "all_cover_classes" - ], - [ - "stage", - 0, - 39, - "all_cover_classes" - ], - [ - "stage", - 1, - 0, - "all_cover_classes" - ], - [ - "stage", - 1, - 1, - "all_cover_classes" - ], - [ - "stage", - 1, - 2, - "all_cover_classes" - ], - [ - "stage", - 1, - 3, - "all_cover_classes" - ], - [ - "stage", - 1, - 4, - "all_cover_classes" - ], - [ - "stage", - 1, - 5, - "all_cover_classes" - ], - [ - "stage", - 1, - 6, - "all_cover_classes" - ], - [ - "stage", - 1, - 7, - "all_cover_classes" - ], - [ - "stage", - 1, - 8, - "all_cover_classes" - ], - [ - "stage", - 1, - 9, - "all_cover_classes" - ], - [ - "stage", - 1, - 10, - "all_cover_classes" - ], - [ - "stage", - 1, - 11, - "all_cover_classes" - ], - [ - "stage", - 1, - 12, - "all_cover_classes" - ], - [ - "stage", - 1, - 13, - "all_cover_classes" - ], - [ - "stage", - 1, - 14, - "all_cover_classes" - ], - [ - "stage", - 1, - 15, - "all_cover_classes" - ], - [ - "stage", - 1, - 16, - "all_cover_classes" - ], - [ - "stage", - 1, - 17, - "all_cover_classes" - ], - [ - "stage", - 1, - 18, - "all_cover_classes" - ], - [ - "stage", - 1, - 19, - "all_cover_classes" - ], - [ - "stage", - 1, - 20, - "all_cover_classes" - ], - [ - "stage", - 1, - 21, - "all_cover_classes" - ], - [ - "stage", - 1, - 22, - "all_cover_classes" - ], - [ - "stage", - 1, - 23, - "all_cover_classes" - ], - [ - "stage", - 1, - 24, - "all_cover_classes" - ], - [ - "stage", - 1, - 25, - "all_cover_classes" - ], - [ - "stage", - 1, - 26, - "all_cover_classes" - ], - [ - "stage", - 1, - 27, - "all_cover_classes" - ], - [ - "stage", - 1, - 28, - "all_cover_classes" - ], - [ - "stage", - 1, - 29, - "all_cover_classes" - ], - [ - "stage", - 1, - 30, - "all_cover_classes" - ], - [ - "stage", - 1, - 31, - "all_cover_classes" - ], - [ - "stage", - 1, - 32, - "all_cover_classes" - ], - [ - "stage", - 1, - 33, - "all_cover_classes" - ], - [ - "stage", - 1, - 34, - "all_cover_classes" - ], - [ - "stage", - 1, - 35, - "all_cover_classes" - ], - [ - "stage", - 1, - 36, - "all_cover_classes" - ], - [ - "stage", - 1, - 37, - "all_cover_classes" - ], - [ - "stage", - 1, - 38, - "all_cover_classes" - ], - [ - "stage", - 1, - 39, - "all_cover_classes" - ], - [ - "idle", - 1, - 0, - "all_cover_classes" - ], - [ - "bridge", - 1, - 0, - "all_cover_classes" - ], - [ - "idle", - 1, - 1, - "all_cover_classes" - ], - [ - "bridge", - 1, - 1, - "all_cover_classes" - ], - [ - "idle", - 1, - 2, - "all_cover_classes" - ], - [ - "bridge", - 1, - 2, - "all_cover_classes" - ], - [ - "idle", - 1, - 3, - "all_cover_classes" - ], - [ - "bridge", - 1, - 3, - "all_cover_classes" - ], - [ - "idle", - 1, - 4, - "all_cover_classes" - ], - [ - "bridge", - 1, - 4, - "all_cover_classes" - ], - [ - "idle", - 1, - 5, - "all_cover_classes" - ], - [ - "bridge", - 1, - 5, - "all_cover_classes" - ], - [ - "idle", - 1, - 6, - "all_cover_classes" - ], - [ - "bridge", - 1, - 6, - "all_cover_classes" - ], - [ - "idle", - 1, - 7, - "all_cover_classes" - ], - [ - "bridge", - 1, - 7, - "all_cover_classes" - ], - [ - "idle", - 1, - 8, - "all_cover_classes" - ], - [ - "bridge", - 1, - 8, - "all_cover_classes" - ], - [ - "idle", - 1, - 9, - "all_cover_classes" - ], - [ - "bridge", - 1, - 9, - "all_cover_classes" - ], - [ - "idle", - 1, - 10, - "all_cover_classes" - ], - [ - "bridge", - 1, - 10, - "all_cover_classes" - ], - [ - "idle", - 1, - 11, - "all_cover_classes" - ], - [ - "bridge", - 1, - 11, - "all_cover_classes" - ], - [ - "idle", - 1, - 12, - "all_cover_classes" - ], - [ - "bridge", - 1, - 12, - "all_cover_classes" - ], - [ - "idle", - 1, - 13, - "all_cover_classes" - ], - [ - "bridge", - 1, - 13, - "all_cover_classes" - ], - [ - "idle", - 1, - 14, - "all_cover_classes" - ], - [ - "bridge", - 1, - 14, - "all_cover_classes" - ], - [ - "idle", - 1, - 15, - "all_cover_classes" - ], - [ - "bridge", - 1, - 15, - "all_cover_classes" - ], - [ - "idle", - 1, - 16, - "all_cover_classes" - ], - [ - "bridge", - 1, - 16, - "all_cover_classes" - ], - [ - "idle", - 1, - 17, - "all_cover_classes" - ], - [ - "bridge", - 1, - 17, - "all_cover_classes" - ], - [ - "idle", - 1, - 18, - "all_cover_classes" - ], - [ - "bridge", - 1, - 18, - "all_cover_classes" - ], - [ - "idle", - 1, - 19, - "all_cover_classes" - ], - [ - "bridge", - 1, - 19, - "all_cover_classes" - ], - [ - "idle", - 1, - 20, - "all_cover_classes" - ], - [ - "bridge", - 1, - 20, - "all_cover_classes" - ], - [ - "idle", - 1, - 21, - "all_cover_classes" - ], - [ - "bridge", - 1, - 21, - "all_cover_classes" - ], - [ - "idle", - 1, - 22, - "all_cover_classes" - ], - [ - "bridge", - 1, - 22, - "all_cover_classes" - ], - [ - "idle", - 1, - 23, - "all_cover_classes" - ], - [ - "bridge", - 1, - 23, - "all_cover_classes" - ], - [ - "idle", - 1, - 24, - "all_cover_classes" - ], - [ - "bridge", - 1, - 24, - "all_cover_classes" - ], - [ - "idle", - 1, - 25, - "all_cover_classes" - ], - [ - "bridge", - 1, - 25, - "all_cover_classes" - ], - [ - "idle", - 1, - 26, - "all_cover_classes" - ], - [ - "bridge", - 1, - 26, - "all_cover_classes" - ], - [ - "idle", - 1, - 27, - "all_cover_classes" - ], - [ - "bridge", - 1, - 27, - "all_cover_classes" - ], - [ - "idle", - 1, - 28, - "all_cover_classes" - ], - [ - "bridge", - 1, - 28, - "all_cover_classes" - ], - [ - "idle", - 1, - 29, - "all_cover_classes" - ], - [ - "bridge", - 1, - 29, - "all_cover_classes" - ], - [ - "idle", - 1, - 30, - "all_cover_classes" - ], - [ - "bridge", - 1, - 30, - "all_cover_classes" - ], - [ - "idle", - 1, - 31, - "all_cover_classes" - ], - [ - "bridge", - 1, - 31, - "all_cover_classes" - ], - [ - "idle", - 1, - 32, - "all_cover_classes" - ], - [ - "bridge", - 1, - 32, - "all_cover_classes" - ], - [ - "idle", - 1, - 33, - "all_cover_classes" - ], - [ - "bridge", - 1, - 33, - "all_cover_classes" - ], - [ - "idle", - 1, - 34, - "all_cover_classes" - ], - [ - "bridge", - 1, - 34, - "all_cover_classes" - ], - [ - "idle", - 1, - 35, - "all_cover_classes" - ], - [ - "bridge", - 1, - 35, - "all_cover_classes" - ], - [ - "idle", - 1, - 36, - "all_cover_classes" - ], - [ - "bridge", - 1, - 36, - "all_cover_classes" - ], - [ - "idle", - 1, - 37, - "all_cover_classes" - ], - [ - "bridge", - 1, - 37, - "all_cover_classes" - ], - [ - "idle", - 1, - 38, - "all_cover_classes" - ], - [ - "bridge", - 1, - 38, - "all_cover_classes" - ], - [ - "idle", - 1, - 39, - "all_cover_classes" - ], - [ - "bridge", - 1, - 39, - "all_cover_classes" - ], - [ - "stage", - 2, - 0, - "all_cover_classes" - ], - [ - "stage", - 2, - 1, - "all_cover_classes" - ], - [ - "stage", - 2, - 2, - "all_cover_classes" - ], - [ - "stage", - 2, - 3, - "all_cover_classes" - ], - [ - "stage", - 2, - 4, - "all_cover_classes" - ], - [ - "stage", - 2, - 5, - "all_cover_classes" - ], - [ - "stage", - 2, - 6, - "all_cover_classes" - ], - [ - "stage", - 2, - 7, - "all_cover_classes" - ], - [ - "stage", - 2, - 8, - "all_cover_classes" - ], - [ - "stage", - 2, - 9, - "all_cover_classes" - ], - [ - "stage", - 2, - 10, - "all_cover_classes" - ], - [ - "stage", - 2, - 11, - "all_cover_classes" - ], - [ - "stage", - 2, - 12, - "all_cover_classes" - ], - [ - "stage", - 2, - 13, - "all_cover_classes" - ], - [ - "stage", - 2, - 14, - "all_cover_classes" - ], - [ - "stage", - 2, - 15, - "all_cover_classes" - ], - [ - "stage", - 2, - 16, - "all_cover_classes" - ], - [ - "stage", - 2, - 17, - "all_cover_classes" - ], - [ - "stage", - 2, - 18, - "all_cover_classes" - ], - [ - "stage", - 2, - 19, - "all_cover_classes" - ], - [ - "stage", - 2, - 20, - "all_cover_classes" - ], - [ - "stage", - 2, - 21, - "all_cover_classes" - ], - [ - "stage", - 2, - 22, - "all_cover_classes" - ], - [ - "stage", - 2, - 23, - "all_cover_classes" - ], - [ - "stage", - 2, - 24, - "all_cover_classes" - ], - [ - "stage", - 2, - 25, - "all_cover_classes" - ], - [ - "stage", - 2, - 26, - "all_cover_classes" - ], - [ - "stage", - 2, - 27, - "all_cover_classes" - ], - [ - "stage", - 2, - 28, - "all_cover_classes" - ], - [ - "stage", - 2, - 29, - "all_cover_classes" - ], - [ - "stage", - 2, - 30, - "all_cover_classes" - ], - [ - "stage", - 2, - 31, - "all_cover_classes" - ], - [ - "stage", - 2, - 32, - "all_cover_classes" - ], - [ - "stage", - 2, - 33, - "all_cover_classes" - ], - [ - "stage", - 2, - 34, - "all_cover_classes" - ], - [ - "stage", - 2, - 35, - "all_cover_classes" - ], - [ - "stage", - 2, - 36, - "all_cover_classes" - ], - [ - "stage", - 2, - 37, - "all_cover_classes" - ], - [ - "stage", - 2, - 38, - "all_cover_classes" - ], - [ - "stage", - 2, - 39, - "all_cover_classes" - ], - [ - "idle", - 2, - 0, - "all_cover_classes" - ], - [ - "bridge", - 2, - 0, - "all_cover_classes" - ], - [ - "idle", - 2, - 1, - "all_cover_classes" - ], - [ - "bridge", - 2, - 1, - "all_cover_classes" - ], - [ - "idle", - 2, - 2, - "all_cover_classes" - ], - [ - "bridge", - 2, - 2, - "all_cover_classes" - ], - [ - "idle", - 2, - 3, - "all_cover_classes" - ], - [ - "bridge", - 2, - 3, - "all_cover_classes" - ], - [ - "idle", - 2, - 4, - "all_cover_classes" - ], - [ - "bridge", - 2, - 4, - "all_cover_classes" - ], - [ - "idle", - 2, - 5, - "all_cover_classes" - ], - [ - "bridge", - 2, - 5, - "all_cover_classes" - ], - [ - "idle", - 2, - 6, - "all_cover_classes" - ], - [ - "bridge", - 2, - 6, - "all_cover_classes" - ], - [ - "idle", - 2, - 7, - "all_cover_classes" - ], - [ - "bridge", - 2, - 7, - "all_cover_classes" - ], - [ - "idle", - 2, - 8, - "all_cover_classes" - ], - [ - "bridge", - 2, - 8, - "all_cover_classes" - ], - [ - "idle", - 2, - 9, - "all_cover_classes" - ], - [ - "bridge", - 2, - 9, - "all_cover_classes" - ], - [ - "idle", - 2, - 10, - "all_cover_classes" - ], - [ - "bridge", - 2, - 10, - "all_cover_classes" - ], - [ - "idle", - 2, - 11, - "all_cover_classes" - ], - [ - "bridge", - 2, - 11, - "all_cover_classes" - ], - [ - "idle", - 2, - 12, - "all_cover_classes" - ], - [ - "bridge", - 2, - 12, - "all_cover_classes" - ], - [ - "idle", - 2, - 13, - "all_cover_classes" - ], - [ - "bridge", - 2, - 13, - "all_cover_classes" - ], - [ - "idle", - 2, - 14, - "all_cover_classes" - ], - [ - "bridge", - 2, - 14, - "all_cover_classes" - ], - [ - "idle", - 2, - 15, - "all_cover_classes" - ], - [ - "bridge", - 2, - 15, - "all_cover_classes" - ], - [ - "idle", - 2, - 16, - "all_cover_classes" - ], - [ - "bridge", - 2, - 16, - "all_cover_classes" - ], - [ - "idle", - 2, - 17, - "all_cover_classes" - ], - [ - "bridge", - 2, - 17, - "all_cover_classes" - ], - [ - "idle", - 2, - 18, - "all_cover_classes" - ], - [ - "bridge", - 2, - 18, - "all_cover_classes" - ], - [ - "idle", - 2, - 19, - "all_cover_classes" - ], - [ - "bridge", - 2, - 19, - "all_cover_classes" - ], - [ - "idle", - 2, - 20, - "all_cover_classes" - ], - [ - "bridge", - 2, - 20, - "all_cover_classes" - ], - [ - "idle", - 2, - 21, - "all_cover_classes" - ], - [ - "bridge", - 2, - 21, - "all_cover_classes" - ], - [ - "idle", - 2, - 22, - "all_cover_classes" - ], - [ - "bridge", - 2, - 22, - "all_cover_classes" - ], - [ - "idle", - 2, - 23, - "all_cover_classes" - ], - [ - "bridge", - 2, - 23, - "all_cover_classes" - ], - [ - "idle", - 2, - 24, - "all_cover_classes" - ], - [ - "bridge", - 2, - 24, - "all_cover_classes" - ], - [ - "idle", - 2, - 25, - "all_cover_classes" - ], - [ - "bridge", - 2, - 25, - "all_cover_classes" - ], - [ - "idle", - 2, - 26, - "all_cover_classes" - ], - [ - "bridge", - 2, - 26, - "all_cover_classes" - ], - [ - "idle", - 2, - 27, - "all_cover_classes" - ], - [ - "bridge", - 2, - 27, - "all_cover_classes" - ], - [ - "idle", - 2, - 28, - "all_cover_classes" - ], - [ - "bridge", - 2, - 28, - "all_cover_classes" - ], - [ - "idle", - 2, - 29, - "all_cover_classes" - ], - [ - "bridge", - 2, - 29, - "all_cover_classes" - ], - [ - "idle", - 2, - 30, - "all_cover_classes" - ], - [ - "bridge", - 2, - 30, - "all_cover_classes" - ], - [ - "idle", - 2, - 31, - "all_cover_classes" - ], - [ - "bridge", - 2, - 31, - "all_cover_classes" - ], - [ - "idle", - 2, - 32, - "all_cover_classes" - ], - [ - "bridge", - 2, - 32, - "all_cover_classes" - ], - [ - "idle", - 2, - 33, - "all_cover_classes" - ], - [ - "bridge", - 2, - 33, - "all_cover_classes" - ], - [ - "idle", - 2, - 34, - "all_cover_classes" - ], - [ - "bridge", - 2, - 34, - "all_cover_classes" - ], - [ - "idle", - 2, - 35, - "all_cover_classes" - ], - [ - "bridge", - 2, - 35, - "all_cover_classes" - ], - [ - "idle", - 2, - 36, - "all_cover_classes" - ], - [ - "bridge", - 2, - 36, - "all_cover_classes" - ], - [ - "idle", - 2, - 37, - "all_cover_classes" - ], - [ - "bridge", - 2, - 37, - "all_cover_classes" - ], - [ - "idle", - 2, - 38, - "all_cover_classes" - ], - [ - "bridge", - 2, - 38, - "all_cover_classes" - ], - [ - "idle", - 2, - 39, - "all_cover_classes" - ], - [ - "bridge", - 2, - 39, - "all_cover_classes" - ], - [ - "stage", - 3, - 0, - "all_cover_classes" - ], - [ - "stage", - 3, - 1, - "all_cover_classes" - ], - [ - "stage", - 3, - 2, - "all_cover_classes" - ], - [ - "stage", - 3, - 3, - "all_cover_classes" - ], - [ - "stage", - 3, - 4, - "all_cover_classes" - ], - [ - "stage", - 3, - 5, - "all_cover_classes" - ], - [ - "stage", - 3, - 6, - "all_cover_classes" - ], - [ - "stage", - 3, - 7, - "all_cover_classes" - ], - [ - "stage", - 3, - 8, - "all_cover_classes" - ], - [ - "stage", - 3, - 9, - "all_cover_classes" - ], - [ - "stage", - 3, - 10, - "all_cover_classes" - ], - [ - "stage", - 3, - 11, - "all_cover_classes" - ], - [ - "stage", - 3, - 12, - "all_cover_classes" - ], - [ - "stage", - 3, - 13, - "all_cover_classes" - ], - [ - "stage", - 3, - 14, - "all_cover_classes" - ], - [ - "stage", - 3, - 15, - "all_cover_classes" - ], - [ - "stage", - 3, - 16, - "all_cover_classes" - ], - [ - "stage", - 3, - 17, - "all_cover_classes" - ], - [ - "stage", - 3, - 18, - "all_cover_classes" - ], - [ - "stage", - 3, - 19, - "all_cover_classes" - ], - [ - "stage", - 3, - 20, - "all_cover_classes" - ], - [ - "stage", - 3, - 21, - "all_cover_classes" - ], - [ - "stage", - 3, - 22, - "all_cover_classes" - ], - [ - "stage", - 3, - 23, - "all_cover_classes" - ], - [ - "stage", - 3, - 24, - "all_cover_classes" - ], - [ - "stage", - 3, - 25, - "all_cover_classes" - ], - [ - "stage", - 3, - 26, - "all_cover_classes" - ], - [ - "stage", - 3, - 27, - "all_cover_classes" - ], - [ - "stage", - 3, - 28, - "all_cover_classes" - ], - [ - "stage", - 3, - 29, - "all_cover_classes" - ], - [ - "stage", - 3, - 30, - "all_cover_classes" - ], - [ - "stage", - 3, - 31, - "all_cover_classes" - ], - [ - "stage", - 3, - 32, - "all_cover_classes" - ], - [ - "stage", - 3, - 33, - "all_cover_classes" - ], - [ - "stage", - 3, - 34, - "all_cover_classes" - ], - [ - "stage", - 3, - 35, - "all_cover_classes" - ], - [ - "stage", - 3, - 36, - "all_cover_classes" - ], - [ - "stage", - 3, - 37, - "all_cover_classes" - ], - [ - "stage", - 3, - 38, - "all_cover_classes" - ], - [ - "stage", - 3, - 39, - "all_cover_classes" - ], - [ - "stage", - 4, - 0, - "all_cover_classes" - ], - [ - "stage", - 4, - 1, - "all_cover_classes" - ], - [ - "stage", - 4, - 2, - "all_cover_classes" - ], - [ - "stage", - 4, - 3, - "all_cover_classes" - ], - [ - "stage", - 4, - 4, - "all_cover_classes" - ], - [ - "stage", - 4, - 5, - "all_cover_classes" - ], - [ - "stage", - 4, - 6, - "all_cover_classes" - ], - [ - "stage", - 4, - 7, - "all_cover_classes" - ], - [ - "stage", - 4, - 8, - "all_cover_classes" - ], - [ - "stage", - 4, - 9, - "all_cover_classes" - ], - [ - "stage", - 4, - 10, - "all_cover_classes" - ], - [ - "stage", - 4, - 11, - "all_cover_classes" - ], - [ - "stage", - 4, - 12, - "all_cover_classes" - ], - [ - "stage", - 4, - 13, - "all_cover_classes" - ], - [ - "stage", - 4, - 14, - "all_cover_classes" - ], - [ - "stage", - 4, - 15, - "all_cover_classes" - ], - [ - "stage", - 4, - 16, - "all_cover_classes" - ], - [ - "stage", - 4, - 17, - "all_cover_classes" - ], - [ - "stage", - 4, - 18, - "all_cover_classes" - ], - [ - "stage", - 4, - 19, - "all_cover_classes" - ], - [ - "stage", - 4, - 20, - "all_cover_classes" - ], - [ - "stage", - 4, - 21, - "all_cover_classes" - ], - [ - "stage", - 4, - 22, - "all_cover_classes" - ], - [ - "stage", - 4, - 23, - "all_cover_classes" - ], - [ - "stage", - 4, - 24, - "all_cover_classes" - ], - [ - "stage", - 4, - 25, - "all_cover_classes" - ], - [ - "stage", - 4, - 26, - "all_cover_classes" - ], - [ - "stage", - 4, - 27, - "all_cover_classes" - ], - [ - "stage", - 4, - 28, - "all_cover_classes" - ], - [ - "stage", - 4, - 29, - "all_cover_classes" - ], - [ - "stage", - 4, - 30, - "all_cover_classes" - ], - [ - "stage", - 4, - 31, - "all_cover_classes" - ], - [ - "stage", - 4, - 32, - "all_cover_classes" - ], - [ - "stage", - 4, - 33, - "all_cover_classes" - ], - [ - "stage", - 4, - 34, - "all_cover_classes" - ], - [ - "stage", - 4, - 35, - "all_cover_classes" - ], - [ - "stage", - 4, - 36, - "all_cover_classes" - ], - [ - "stage", - 4, - 37, - "all_cover_classes" - ], - [ - "stage", - 4, - 38, - "all_cover_classes" - ], - [ - "stage", - 4, - 39, - "all_cover_classes" - ], - [ - "idle", - 4, - 0, - "all_cover_classes" - ], - [ - "bridge", - 4, - 0, - "all_cover_classes" - ], - [ - "idle", - 4, - 1, - "all_cover_classes" - ], - [ - "bridge", - 4, - 1, - "all_cover_classes" - ], - [ - "idle", - 4, - 2, - "all_cover_classes" - ], - [ - "bridge", - 4, - 2, - "all_cover_classes" - ], - [ - "idle", - 4, - 3, - "all_cover_classes" - ], - [ - "bridge", - 4, - 3, - "all_cover_classes" - ], - [ - "idle", - 4, - 4, - "all_cover_classes" - ], - [ - "bridge", - 4, - 4, - "all_cover_classes" - ], - [ - "idle", - 4, - 5, - "all_cover_classes" - ], - [ - "bridge", - 4, - 5, - "all_cover_classes" - ], - [ - "idle", - 4, - 6, - "all_cover_classes" - ], - [ - "bridge", - 4, - 6, - "all_cover_classes" - ], - [ - "idle", - 4, - 7, - "all_cover_classes" - ], - [ - "bridge", - 4, - 7, - "all_cover_classes" - ], - [ - "idle", - 4, - 8, - "all_cover_classes" - ], - [ - "bridge", - 4, - 8, - "all_cover_classes" - ], - [ - "idle", - 4, - 9, - "all_cover_classes" - ], - [ - "bridge", - 4, - 9, - "all_cover_classes" - ], - [ - "idle", - 4, - 10, - "all_cover_classes" - ], - [ - "bridge", - 4, - 10, - "all_cover_classes" - ], - [ - "idle", - 4, - 11, - "all_cover_classes" - ], - [ - "bridge", - 4, - 11, - "all_cover_classes" - ], - [ - "idle", - 4, - 12, - "all_cover_classes" - ], - [ - "bridge", - 4, - 12, - "all_cover_classes" - ], - [ - "idle", - 4, - 13, - "all_cover_classes" - ], - [ - "bridge", - 4, - 13, - "all_cover_classes" - ], - [ - "idle", - 4, - 14, - "all_cover_classes" - ], - [ - "bridge", - 4, - 14, - "all_cover_classes" - ], - [ - "idle", - 4, - 15, - "all_cover_classes" - ], - [ - "bridge", - 4, - 15, - "all_cover_classes" - ], - [ - "idle", - 4, - 16, - "all_cover_classes" - ], - [ - "bridge", - 4, - 16, - "all_cover_classes" - ], - [ - "idle", - 4, - 17, - "all_cover_classes" - ], - [ - "bridge", - 4, - 17, - "all_cover_classes" - ], - [ - "idle", - 4, - 18, - "all_cover_classes" - ], - [ - "bridge", - 4, - 18, - "all_cover_classes" - ], - [ - "idle", - 4, - 19, - "all_cover_classes" - ], - [ - "bridge", - 4, - 19, - "all_cover_classes" - ], - [ - "idle", - 4, - 20, - "all_cover_classes" - ], - [ - "bridge", - 4, - 20, - "all_cover_classes" - ], - [ - "idle", - 4, - 21, - "all_cover_classes" - ], - [ - "bridge", - 4, - 21, - "all_cover_classes" - ], - [ - "idle", - 4, - 22, - "all_cover_classes" - ], - [ - "bridge", - 4, - 22, - "all_cover_classes" - ], - [ - "idle", - 4, - 23, - "all_cover_classes" - ], - [ - "bridge", - 4, - 23, - "all_cover_classes" - ], - [ - "idle", - 4, - 24, - "all_cover_classes" - ], - [ - "bridge", - 4, - 24, - "all_cover_classes" - ], - [ - "idle", - 4, - 25, - "all_cover_classes" - ], - [ - "bridge", - 4, - 25, - "all_cover_classes" - ], - [ - "idle", - 4, - 26, - "all_cover_classes" - ], - [ - "bridge", - 4, - 26, - "all_cover_classes" - ], - [ - "idle", - 4, - 27, - "all_cover_classes" - ], - [ - "bridge", - 4, - 27, - "all_cover_classes" - ], - [ - "idle", - 4, - 28, - "all_cover_classes" - ], - [ - "bridge", - 4, - 28, - "all_cover_classes" - ], - [ - "idle", - 4, - 29, - "all_cover_classes" - ], - [ - "bridge", - 4, - 29, - "all_cover_classes" - ], - [ - "idle", - 4, - 30, - "all_cover_classes" - ], - [ - "bridge", - 4, - 30, - "all_cover_classes" - ], - [ - "idle", - 4, - 31, - "all_cover_classes" - ], - [ - "bridge", - 4, - 31, - "all_cover_classes" - ], - [ - "idle", - 4, - 32, - "all_cover_classes" - ], - [ - "bridge", - 4, - 32, - "all_cover_classes" - ], - [ - "idle", - 4, - 33, - "all_cover_classes" - ], - [ - "bridge", - 4, - 33, - "all_cover_classes" - ], - [ - "idle", - 4, - 34, - "all_cover_classes" - ], - [ - "bridge", - 4, - 34, - "all_cover_classes" - ], - [ - "idle", - 4, - 35, - "all_cover_classes" - ], - [ - "bridge", - 4, - 35, - "all_cover_classes" - ], - [ - "idle", - 4, - 36, - "all_cover_classes" - ], - [ - "bridge", - 4, - 36, - "all_cover_classes" - ], - [ - "idle", - 4, - 37, - "all_cover_classes" - ], - [ - "bridge", - 4, - 37, - "all_cover_classes" - ], - [ - "idle", - 4, - 38, - "all_cover_classes" - ], - [ - "bridge", - 4, - 38, - "all_cover_classes" - ], - [ - "idle", - 4, - 39, - "all_cover_classes" - ], - [ - "bridge", - 4, - 39, - "all_cover_classes" - ], - [ - "terminal_exchange", - 0, - "all_cover_classes" - ], - [ - "terminal_exchange", - 1, - "all_cover_classes" - ], - [ - "terminal_exchange", - 2, - "all_cover_classes" - ], - [ - "terminal_exchange", - 3, - "all_cover_classes" - ], - [ - "terminal_exchange", - 4, - "all_cover_classes" - ], - [ - "terminal_exchange", - 5, - "all_cover_classes" - ], - [ - "terminal_exchange", - 6, - "all_cover_classes" - ], - [ - "terminal_exchange", - 7, - "all_cover_classes" - ], - [ - "terminal_exchange", - 8, - "all_cover_classes" - ], - [ - "terminal_exchange", - 9, - "all_cover_classes" - ], - [ - "terminal_exchange", - 10, - "all_cover_classes" - ], - [ - "terminal_exchange", - 11, - "all_cover_classes" - ], - [ - "terminal_exchange", - 12, - "all_cover_classes" - ], - [ - "terminal_exchange", - 13, - "all_cover_classes" - ], - [ - "terminal_exchange", - 14, - "all_cover_classes" - ], - [ - "terminal_exchange", - 15, - "all_cover_classes" - ], - [ - "terminal_exchange", - 16, - "all_cover_classes" - ], - [ - "terminal_exchange", - 17, - "all_cover_classes" - ], - [ - "terminal_exchange", - 18, - "all_cover_classes" - ], - [ - "terminal_exchange", - 19, - "all_cover_classes" - ], - [ - "terminal_exchange", - 20, - "all_cover_classes" - ], - [ - "terminal_exchange", - 21, - "all_cover_classes" - ], - [ - "terminal_exchange", - 22, - "all_cover_classes" - ], - [ - "terminal_exchange", - 23, - "all_cover_classes" - ], - [ - "terminal_exchange", - 24, - "all_cover_classes" - ], - [ - "terminal_exchange", - 25, - "all_cover_classes" - ], - [ - "terminal_exchange", - 26, - "all_cover_classes" - ], - [ - "terminal_exchange", - 27, - "all_cover_classes" - ], - [ - "terminal_exchange", - 28, - "all_cover_classes" - ], - [ - "terminal_exchange", - 29, - "all_cover_classes" - ], - [ - "terminal_exchange", - 30, - "all_cover_classes" - ], - [ - "terminal_exchange", - 31, - "all_cover_classes" - ], - [ - "terminal_exchange", - 32, - "all_cover_classes" - ], - [ - "terminal_exchange", - 33, - "all_cover_classes" - ], - [ - "terminal_exchange", - 34, - "all_cover_classes" - ], - [ - "terminal_exchange", - 35, - "all_cover_classes" - ], - [ - "terminal_exchange", - 36, - "all_cover_classes" - ], - [ - "terminal_exchange", - 37, - "all_cover_classes" - ], - [ - "terminal_exchange", - 38, - "all_cover_classes" - ], - [ - "terminal_exchange", - 39, - "all_cover_classes" - ] - ], - "completion": "No COMPLETE emitted by bank mapper. Discharged by separately admitted bank endpoint theorem; not newly proved by this extractor.", - "boundary_methods": "BankPlan.map_boundary_row handles IDLE(4), BRIDGE(5), EXCHANGE(7); rejects COMPLETE(6).", - "callable": "Inputs.plan.local_address(stage,replica,local,cover); iter_global_connections(inputs,stage,replica,cover)" -} diff --git a/docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_EXTRACT.py b/docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_EXTRACT.py deleted file mode 100644 index 146ec3a6c8..0000000000 --- a/docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_EXTRACT.py +++ /dev/null @@ -1,468 +0,0 @@ -#!/usr/bin/env python3 -"""Source-bound connection inventory for the admitted JOINT259 local word. - -Reads the already generated final artifact. Does not run prepare/verify, replay -all columns, or modify a supplier. The compact event inventory is lossless given -the pinned raw input. See SCHEMA for the exact columns and version conventions. -""" -import argparse -import base64 -from collections import Counter -import gzip -import hashlib -import importlib.util -import io -import json -from pathlib import Path -import struct -import sys -import zlib -from types import ModuleType -import joint259_system_docs_sources as SOURCES - -sys.dont_write_bytecode = True -ROOT = Path(__file__).resolve().parent -PACKAGE = ROOT / 'pr259_interval_compatibility_20261010/hybrid_package' -INPUT = PACKAGE.parent / 'hybrid_admission/fresh_1/hybrid' -MANIFEST_SHA = '9f6d8637b9a119cfe4566a02ab2d704f23c502e5e4357b40c28ef85a3fd4de89' -RAW_SHA = 'acf510b1377a6bd96eea50577de1aa049382499335fa7e5cac9b0300ecb377c7' -GENERATED_PINS = { - 'initial.json': '2ffcd7fa9060653501873475271d48a054d063a528946714a4d23b21fb9bb162', - 'physical.json': '49aa1a8762372d62b5105341696227307b2ba4b04e930bb86aaf8064cebb6eb2', - 'all-gauge-entrances.json': '6717b795c8df73aaf6279455427834889ecdc6e872ed3e9cf8763a1c23bd29a1', -} -PHYSICAL_KEYS = ('scalar_projection_sha256','tagged_scalar_sha256', - 'weighted_scalar_events','coefficient_histogram','categories','category_names', - 'physical_registers','independent_dirty_registers','positive_rank_moves', - 'paid_histogram','used_frames') -def invariant_metadata(name, data): - value = json.loads(data) - if name == 'all-gauge-entrances.json': - value = sorted(value, key=lambda q:q['role']) - elif name == 'physical.json': - value = {k:value[k] for k in PHYSICAL_KEYS} - value['used_frames'] = sorted(value['used_frames'], key=lambda q:q['frame_id']) - return value -CONNECTION_SHA = '14d13b5b4e851a66c20af1850d77a71fe21cbe3fda35c72000709f767275222e' -V, N = 1760, 20107 -RAW = struct.Struct('<6i') -LINK = struct.Struct('<20i') -OP_NAMES = ('MOVE', 'ADD', 'COPY', 'ERASE') -SCHEMA = { - 'schema': 'joint259-operation-connections/1', - 'raw_columns': ['opcode', 'a', 'b', 'c', 'f', 'z'], - 'link_columns': [ - 'destination', 'source', 'destination_value_before', - 'destination_value_after', 'source_value_version', - 'destination_frame_before', 'destination_frame_after', - 'source_frame', 'destination_frame_version_before', - 'destination_frame_version_after', 'source_frame_version', - 'destination_value_producer', 'source_value_producer', - 'destination_frame_producer', 'source_frame_producer', - 'copy_source', 'copy_event', 'copy_source_value_version', - 'copy_source_frame_version', 'copy_generation'], - 'record_id': 'zero-based position in pinned records.bin.gz', - 'event_id': 'local:{record_id}; a read producer >=0 names local:{producer}', - 'initial_producer': '-(register_id+2); -1 means absent, never an initial value', - 'version_convention': 'Value versions change on ADD and COPY. Frame versions change on MOVE and COPY. ERASE removes both; every scratch COPY gets a fresh generation, so versions are never reused. MOVE preserves the semantic payload version; its recursive implementation is not expanded here.', - 'links': 'Each nonabsent producer column is a producer-to-current-consumer edge. Output value/frame producer is the current event when its corresponding version changes; unchanged versions retain their producer. Consumer lists are exactly the transpose of these edges, without duplicating a massive adjacency list.', - 'MOVE': 'raw=(0,q,old_frame,new_frame,rank,0); destination=q, source=q; payload preserved; frame advances', - 'ADD': 'raw=(1,dst,src,coefficient,frame,category); read both old payloads before writing dst; src preserved; frames unchanged', - 'COPY': 'raw=(2,source,temp,source_frame,output_frame,paid_rank); destination=temp; copy unchanged source to new temporary. Global lowering expands this macro into COPY then paid MOVE.', - 'ERASE': 'raw=(3,source,temp,source_frame,output_frame,paid_rank); destination=temp, source=retained source; verify immutable source and temporary lifetime, then remove temporary', - 'address_check_scope': 'Injectivity checks distinguish syntactic full (family, route-word) keys. Algebraic rational/mod-q route nonaliasing is inherited from the separately admitted bank proof, not newly proved.', - 'scope': 'Exact finite local operation/def-use inventory plus callable global BankPlan address maps. Not a complete arbitrary-input-size compiler and not the overview graph.', - 'unexpanded': ['finite cover class enumeration', 'recursive child programs and stopping policy', 'q-local fallback implementation', 'complex supplier internals', 'all-size tape movements'], -} - - -def require(condition, message): - if not condition: - raise ValueError(message) - - -def sha(data): - return hashlib.sha256(data).hexdigest() - - -def read_json(path): - return json.loads(path.read_text()) - - -def compact(value): - return json.dumps(value, sort_keys=True, separators=(',', ':')).encode() - - -class Inputs: - """Read and pin static inputs; reconstruct ownership without source replay.""" - def __init__(self, package=PACKAGE, inputs=INPUT): - self.package, self.inputs = SOURCES.open_source(package), Path(inputs) - SOURCES.integrity(self.package, MANIFEST_SHA) - manifest_bytes = (self.package / 'MANIFEST.json').read_bytes() - require(sha(manifest_bytes) in (MANIFEST_SHA, SOURCES.BINDING['accepted_public_manifest_sha256']), 'selected manifest changed') - self.manifest = json.loads(manifest_bytes)['files'] - self.pins = {'package_manifest': sha(manifest_bytes), 'scientific_archive_manifest': MANIFEST_SHA} - self.raw = gzip.decompress(self.generated('records.bin.gz')) - require(sha(self.raw) == RAW_SHA, 'not the admitted final local word') - require(len(self.raw) % RAW.size == 0, 'incomplete six-int raw row') - self.initial = {int(k): v for k, v in json.loads(self.generated('initial.json')).items()} - self.physical = json.loads(self.generated('physical.json')) - self.entrances = json.loads(self.generated('all-gauge-entrances.json')) - self.dimensions = {r['frame_id']: r['dimension'] for r in self.physical['used_frames']} - self.zero = next(f for f, d in self.dimensions.items() if d == 0) - require(set(self.initial) == set(range(N)), 'initial register coverage') - require(len(self.raw) // RAW.size == 859771, 'unexpected final operation count') - self.roles, self.borrow, self.removed = self.reconstruct_roles() - gauges = {r['role']: r['frame'] for r in self.entrances} - require(len(gauges) == len(self.entrances) == 2827, 'entrance ownership count') - require(all(self.initial[2*V+i] == gauges.get(r, self.zero) - for i, r in enumerate(self.roles)), 'role/initial-frame binding') - families = {} - for role in self.roles: - rank = 24 - self.dimensions[gauges[role]] if role in gauges else 24 - families.setdefault(rank, []).append(role) - self.static('bank_template.py') - self.static('code/global_lowering.py') - self.static('code/physical527.py') - self.static('hybrid_transform.py') - module = ModuleType('joint259_connection_bank') - exec(compile(self.static('bank_template.py'), 'verified bank_template.py', 'exec'), module.__dict__) - self.plan = module.BankPlan(families, gauges, self.roles) - - def generated(self, name): - data = (self.inputs / name).read_bytes() - if name == 'records.bin.gz': - require(sha(gzip.decompress(data)) == RAW_SHA, 'generated raw word changed') - self.pins['generated/records.decompressed'] = RAW_SHA - else: - digest = sha(compact(invariant_metadata(name, data))) - require(digest == GENERATED_PINS[name], 'generated invariant metadata changed: ' + name) - self.pins['generated-invariant/' + name] = digest - return data - - def static(self, name): - data = (self.package / name).read_bytes() - require(name in self.manifest and sha(data) == self.manifest[name], 'source changed: ' + name) - self.pins[name] = sha(data) - return data - - def reconstruct_roles(self): - base = 'loader/source_inputs/base_bit/research/paired-cube-diagonal-bit-168/selected/bit/' - joint = 'loader/source_inputs/pr210/research/coordinated-crossover-pr200/' - word = json.loads(gzip.decompress(self.static(base+'word_p12.json.gz'))) - profile = json.loads(self.static(base+'profile_p12.json')) - donor = dict(json.loads(self.static(joint+'joint/pairs.json'))) - removed = {word['rootroles'][r['root']] for r in json.loads(self.static(base+'sinks.json'))} - borrow = {} - selections = [(joint+'borrow/selection.json', 'role'), - (joint+'gaugeb/selection.json', 'role'), - (joint+'newg/selection.json', 'role'), - ('source527/extra/selection.json', 'role'), - ('source527/fresh/selection.json', 'role'), - ('source527/paired-selection.json', 'aliased_role')] - for path, key in selections: - rows = json.loads(self.static(path)) - rows = rows['selection'] if isinstance(rows, dict) else rows - for r in rows: - require(r[key] not in borrow, 'duplicate source loan') - borrow[r[key]] = r['source'] - roles = sorted({donor.get(q, q) for q in range(profile['R'])} - set(borrow) - removed) - require(len(roles) == 16587 and len(borrow) == 527 and len(removed) == 34, 'ownership census') - return roles, borrow, removed - - def rows(self): - return RAW.iter_unpack(self.raw) - - -class Inventory: - """O(registers) working memory; every row reads before it writes.""" - def __init__(self, initial, dimensions, categories): - # State = [value version, frame ID, frame version, value producer, frame producer]. - self.state = {q: [0, frame, 0, -q-2, -q-2] for q, frame in initial.items()} - self.dimensions = dimensions - self.categories = categories - self.counts = Counter() - self.category_counts = Counter() - self.coefficients = Counter() - self.paid = Counter() - self.copy = None - self.generation = 0 - self.lifetimes = [] - self.link_count = 0 - self.semantic = hashlib.sha256() - self.tagged = hashlib.sha256() - - def read(self, q, event): - require(q in self.state, f'read-before-definition or read-after-erase: {event}:{q}') - state = self.state[q] - require(state[3] < event and state[4] < event, 'read is not before write') - return state[:] - - def guard_write(self, q, event): - require(self.copy is None or q != self.copy['source'], f'copied source mutated in lifetime: {event}:{q}') - - def step(self, event, row): - op, a, b, c, f, z = row - require(op in range(4), 'unknown opcode') - self.counts[OP_NAMES[op]] += 1 - dst, src = (b, a) if op in (2, 3) else (a, b) if op == 1 else (a, a) - old = None if op == 2 else self.read(dst, event) - source = self.read(src, event) - copy = self.copy - if op == 0: - self.guard_write(dst, event) - require(old[1] == b and c in self.dimensions, 'MOVE before/after frame') - require(f == self.dimensions[c]-self.dimensions[b] and f >= 0, 'MOVE rank') - require(z == 0, 'MOVE reserved field') - new = [old[0], c, old[2]+1, old[3], event] - self.state[dst] = new - if f: - self.paid[f] += 1 - elif op == 1: - self.guard_write(dst, event) - require(dst != src and dst != N, 'ADD operands alias or overwrite work') - require(old[1] == source[1] == f, 'ADD required frames') - require(0 <= z < len(self.categories), 'ADD category') - category = self.categories[z] - require((src == N) == (category == 'center'), 'center/scratch binding') - if src == N: - require(copy is not None, 'scratch read without COPY') - require(self.state[copy['source']] == copy['snapshot'], 'copy source changed') - copy['reads'] += 1 - new = [old[0]+1, old[1], old[2], event, old[4]] - self.state[dst] = new - self.category_counts[category] += 1 - self.coefficients[abs(c)] += 1 - logical_source = copy['source'] if src == N else src - self.semantic.update(json.dumps([a, logical_source, c], separators=(',', ':')).encode()+b'\n') - self.tagged.update(json.dumps([a, b, c, f, category], separators=(',', ':')).encode()+b'\n') - elif op == 2: - require(self.copy is None and dst == N and dst not in self.state, 'COPY while temporary live') - require(src != N and source[1] == c, 'COPY source/frame') - require(self.dimensions[c] == z == 22 and self.dimensions[f] == 0, 'COPY rank/output frame') - self.generation += 1 - new = [self.generation, f, self.generation, event, event] - self.state[dst] = new - self.copy = copy = dict(source=src, temporary=dst, copy_event=event, - snapshot=source[:], generation=self.generation, reads=0) - self.paid[z] += 1 - else: - require(copy is not None and dst == N and src == copy['source'], 'ERASE lifetime/source') - require(source == copy['snapshot'] and source[1] == c and old[1] == f, 'ERASE immutable source/frame') - require(copy['reads'] == 220 and z == 22, 'ERASE scatter coverage') - new = None - self.lifetimes.append(dict(copy_event=copy['copy_event'], erase_event=event, - source=src, source_value_version=source[0], source_frame_version=source[2], - source_value_producer=source[3], source_frame_producer=source[4], - temporary=dst, generation=copy['generation'], reads=copy['reads'], immutable=True)) - del self.state[dst] - self.copy = None - before = old if old is not None else [-1]*5 - after = new if new is not None else [-1]*5 - edge = (dst, src, before[0], after[0], source[0], before[1], after[1], source[1], - before[2], after[2], source[2], before[3], source[3], before[4], source[4], - copy['source'] if copy else -1, copy['copy_event'] if copy else -1, - copy['snapshot'][0] if copy else -1, copy['snapshot'][2] if copy else -1, - copy['generation'] if copy else -1) - self.link_count += sum(p != -1 for p in edge[11:15]) - return edge - - def finish(self): - require(self.copy is None and N not in self.state, 'unclosed COPY') - return dict(opcode_counts=dict(self.counts), categories=dict(self.category_counts), - coefficient_histogram=dict(self.coefficients), paid_histogram=dict(sorted(self.paid.items())), - producer_consumer_links=self.link_count, copied_source_lifetimes=self.lifetimes, - scalar_projection_sha256=self.semantic.hexdigest(), tagged_scalar_sha256=self.tagged.hexdigest(), - final_state_sha256=sha(compact(self.state)), final_live_registers=len(self.state)) - - -def validate_inventory(inputs, inventory, count, links): - summary = inventory.finish() - summary.update(events=count, link_bytes_sha256=links.hexdigest(), link_record_bytes=LINK.size) - require(count == 859771 and links.hexdigest() == CONNECTION_SHA, 'complete inventory count/digest') - for key in ('scalar_projection_sha256', 'tagged_scalar_sha256'): - require(summary[key] == inputs.physical[key], key+' metadata mismatch') - require(summary['opcode_counts'] == {'MOVE':99340,'ADD':760383,'COPY':24,'ERASE':24}, 'opcode census') - require(summary['paid_histogram'] == {int(k):v for k,v in inputs.physical['paid_histogram'].items()}, 'paid census') - require(summary['categories'] == inputs.physical['categories'], 'category census') - return summary - - -def write_inventory(inputs, output): - """Write complete plain JSONL to a binary stream, suitable for gzip wrapping.""" - output.write(compact(dict(kind='metadata', **SCHEMA, source_pins=inputs.pins, raw_sha256=RAW_SHA))+b'\n') - inventory = Inventory(inputs.initial, inputs.dimensions, inputs.physical['category_names']) - links = hashlib.sha256() - count = 0 - for event, row in enumerate(inputs.rows()): - edge = inventory.step(event, row) - links.update(LINK.pack(*edge)) - output.write(compact(dict(event_id=event, raw=row, connections=edge))+b'\n') - count += 1 - summary = validate_inventory(inputs, inventory, count, links) - output.write(compact(dict(kind='validation', **summary))+b'\n') - return summary - - -def scan(inputs, start=0, stop=None, capture=False): - inventory = Inventory(inputs.initial, inputs.dimensions, inputs.physical['category_names']) - links = hashlib.sha256() - compressed = io.BytesIO() - encoder = zlib.compressobj(level=9) - count = 0 - for event, row in enumerate(inputs.rows()): - if stop is not None and event >= stop: - break - edge = inventory.step(event, row) - packed = LINK.pack(*edge) - links.update(packed) - count += 1 - if capture and event >= start: - compressed.write(encoder.compress(packed)) - if capture: - compressed.write(encoder.flush()) - summary = validate_inventory(inputs, inventory, count, links) if stop is None else {'partial_prefix_events': count} - summary.update(events=count, link_bytes_sha256=links.hexdigest(), link_record_bytes=LINK.size) - if stop is None: - for key in ('scalar_projection_sha256', 'tagged_scalar_sha256'): - require(summary[key] == inputs.physical[key], key+' metadata mismatch') - require(summary['opcode_counts'] == {'MOVE': 99340, 'ADD': 760383, 'COPY': 24, 'ERASE': 24}, 'opcode census') - require(summary['paid_histogram'] == {int(k):v for k,v in inputs.physical['paid_histogram'].items()}, 'paid census') - require(summary['categories'] == inputs.physical['categories'], 'category census') - return summary, compressed.getvalue() - - -def iter_stage_rows(inputs, stage): - """Exact eight-field logical lowering, retaining local-record provenance.""" - require(0 <= stage < 5, 'stage out of range') - reverse = stage in (1, 3) - offsets = range(len(inputs.raw)-RAW.size, -1, -RAW.size) if reverse else range(0, len(inputs.raw), RAW.size) - plan = inputs.plan - def family(local): - return 4*V+len(inputs.roles) if local == N else ( - plan.active[stage][0]*V+local if local < V else - plan.active[stage][1]*V+local-V if local < 2*V else 4*V+local-2*V) - for offset in offsets: - op, a, b, c, f, z = RAW.unpack_from(inputs.raw, offset) - common = (stage, int(reverse)) - if op == 0: - yield offset//RAW.size, (0, family(a), c if reverse else b, b if reverse else c, f, 0, *common) - elif op == 1: - yield offset//RAW.size, (1, family(a), family(b), -c if reverse else c, f, z, *common) - elif op == (3 if reverse else 2): - yield offset//RAW.size, (2, family(b), family(a), 0, c, 0, *common) - yield offset//RAW.size, (0, family(b), c, f, z, 0, *common) - else: - yield offset//RAW.size, (3, family(b), -1, 0, f, 0, *common) - - -def iter_global_connections(inputs, stage, replica, cover='d'): - """Call for any of 200 stage/replica pairs; d stays an exact formal key.""" - for local_event, row in iter_stage_rows(inputs, stage): - yield local_event, inputs.plan.map_stage_row(stage, replica, row, cover) - - -def iter_saved_connections(root=ROOT): - """Decode the persisted inventory and verify every shard and the full digest.""" - inputs = Inputs() - manifest = read_json(Path(root)/'JOINT259_CONNECTION_EVENTS_MANIFEST.json') - require(manifest['raw_sha256'] == RAW_SHA, 'inventory raw binding') - require(manifest['link_bytes_sha256'] == CONNECTION_SHA, 'inventory expected connection digest') - digest = hashlib.sha256() - cursor = 0 - for shard in manifest['shards']: - require(shard['start'] == cursor, 'inventory gap or overlap') - encoded = (Path(root)/shard['file']).read_bytes() - require(sha(encoded) == shard['file_sha256'], 'inventory shard changed') - data = zlib.decompress(base64.b64decode(encoded, validate=False)) - require(len(data) == (shard['stop']-shard['start'])*LINK.size, 'inventory shard length') - digest.update(data) - for edge in LINK.iter_unpack(data): - yield cursor, RAW.unpack_from(inputs.raw, cursor*RAW.size), edge - cursor += 1 - require(cursor == 859771, 'incomplete persisted inventory') - require(digest.hexdigest() == manifest['link_bytes_sha256'], 'inventory full digest') - - -def address_map(inputs, exhaustive=False): - plan = inputs.plan - result = dict(schema='joint259-parametric-bank-map/1', - source_sha256=inputs.pins['bank_template.py'], stages=5, replicas=40, - active_data_banks=plan.active, helper_roles=inputs.roles, - residual_rank_families=plan.families, gauge_frames=plan.gauge_frames, - patterns=plan.patterns, segments=plan.segments, - helper_occurrences=5*40*len(inputs.roles), - local_registers=N, external_work_local=N, external_work_family=plan.work_family, - data_families=plan.data_families, banks_per_stage=plan.banks_per_stage, - live_families=plan.live_families, - assignment='q=role_index*40+replica; select residual-rank segment [lo,hi); (bank_offset,within)=divmod(q-lo,len(blocks)); family=281600+117089*stage+bank_start+bank_offset; block=blocks[within]; offset=sum(pattern widths before block)', - data_route='stage0:(family,class(d)); stage>0:(family,right(d,rho(stage,port)))', - helper_route='(family,right(d,tau(stage),inverse(normalizer(stage,pattern,block,frame))))', - normalizer='scalar=(block+1); exact permutation from stage window residual coordinates to block; inverse chart identified by source-bound gauge frame. Apply factors right-to-left. Cover arithmetic is not reduced modulo 2.', - phase_schedule=list(plan.phase_schedule()), - completion='No COMPLETE emitted by bank mapper. Discharged by separately admitted bank endpoint theorem; not newly proved by this extractor.', - boundary_methods='BankPlan.map_boundary_row handles IDLE(4), BRIDGE(5), EXCHANGE(7); rejects COMPLETE(6).', - callable='Inputs.plan.local_address(stage,replica,local,cover); iter_global_connections(inputs,stage,replica,cover)') - if exhaustive: - digest = hashlib.sha256() - assignments = 0 - for stage in range(5): - for replica in range(40): - addresses = [plan.local_address(stage, replica, local) for local in range(N+1)] - require(len(set(addresses)) == N+1, 'full address collision') - require(addresses[-1] == (plan.work_family, ('external_work',0)), 'work address') - digest.update(compact(addresses)) - assignments += len(addresses) - result['fresh_full_address_checks'] = dict(namespaces=200, addresses=assignments, - address_digest_sha256=digest.hexdigest(), all_full_keys_injective=True, - check_scope='Distinct syntactic (family, route-word) keys; algebraic route nonaliasing inherited, not re-proved.') - return result - - -def validate_output_path(path, package): - path=Path(path) - require(not path.exists() and not path.is_symlink(), 'output must be a new file') - resolved=path.resolve();package_path=Path(package) - if package_path.is_dir(): - require(not resolved.is_relative_to(package_path.resolve()), 'output must be outside source package') - return resolved - - -def main(): - parser = argparse.ArgumentParser(description=__doc__) - parser.add_argument('--package', type=Path, default=PACKAGE, help='admitted original/public source directory or ZIP') - parser.add_argument('--inputs', type=Path, default=INPUT, help='fresh final hybrid directory from verifier OUTPUT/hybrid') - parser.add_argument('--summary', action='store_true') - parser.add_argument('--map', action='store_true') - parser.add_argument('--check-addresses', action='store_true') - parser.add_argument('--schema', action='store_true') - parser.add_argument('--chunk', nargs=2, type=int, metavar=('START','STOP')) - parser.add_argument('--inventory', type=Path, help='write complete gzip JSONL inventory, metadata first') - args = parser.parse_args() - if args.schema: - print(json.dumps(SCHEMA, indent=2)); return - inputs = Inputs(args.package, args.inputs) - if args.chunk: - start, stop = args.chunk - require(0 <= start < stop <= len(inputs.raw)//RAW.size, 'chunk range') - _, data = scan(inputs, start, stop, capture=True) - print(base64.b64encode(data).decode()); return - if args.map: - print(json.dumps(address_map(inputs, args.check_addresses), indent=2)); return - if args.inventory: - destination=validate_output_path(args.inventory,args.package) - with destination.open('xb') as raw_output: - with gzip.GzipFile(fileobj=raw_output, mode='wb', mtime=0) as output: - write_inventory(inputs, output) - print(json.dumps({'inventory':str(args.inventory), 'sha256':sha(args.inventory.read_bytes())})); return - summary, _ = scan(inputs) - summary.update(schema=SCHEMA['schema'], scope=SCHEMA['scope'], source_pins=inputs.pins, - raw_sha256=RAW_SHA, raw_records=len(inputs.raw)//RAW.size, - address_map=address_map(inputs, args.check_addresses) if args.check_addresses else { - 'exact_parametric':True, 'scope':'Syntactic full address keys; algebraic route nonaliasing inherited.', 'stage_replica_pairs':200, - 'helper_occurrences':3317400, 'live_families':867045}) - print(json.dumps(summary, indent=2)) - - -if __name__ == '__main__': - main() diff --git a/docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_MANIFEST.json b/docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_MANIFEST.json deleted file mode 100644 index 60b110aba0..0000000000 --- a/docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_MANIFEST.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "schema": "joint259-connection-rebuild-manifest/1", - "delivery": "Complete reproducible generator, invariant bindings, schema, map and tested scan; generated trace is rebuilt on demand", - "accepted_scientific_manifest_sha256": "9f6d8637b9a119cfe4566a02ab2d704f23c502e5e4357b40c28ef85a3fd4de89", - "accepted_public_manifest_sha256": "0af10dcca505cbd913cf1b9220a08b6a62687650ace4e3d1efd093e828e3990e", - "raw_decompressed_sha256": "acf510b1377a6bd96eea50577de1aa049382499335fa7e5cac9b0300ecb377c7", - "canonical_invariant_sha256": { - "initial.json": "2ffcd7fa9060653501873475271d48a054d063a528946714a4d23b21fb9bb162", - "physical.json": "49aa1a8762372d62b5105341696227307b2ba4b04e930bb86aaf8064cebb6eb2", - "all-gauge-entrances.json": "6717b795c8df73aaf6279455427834889ecdc6e872ed3e9cf8763a1c23bd29a1" - }, - "invariant_projection": "JOINT259_CONNECTION_EXTRACT.invariant_metadata; full initial state; role-sorted entrances; named physical scalar/category/census/frame-basis fields, excluding runtime receipts", - "expected_local_events": 859771, - "expected_typed_read_links": 3439036, - "expected_link_record_bytes": 80, - "expected_packed_link_sha256": "14d13b5b4e851a66c20af1850d77a71fe21cbe3fda35c72000709f767275222e", - "source_dependencies": ["joint259_system_docs_sources.py", "joint259_system_docs_source_binding.json"], - "extract_command": "python JOINT259_CONNECTION_EXTRACT.py --package SOURCE --inputs OUTPUT/hybrid --inventory DEST/JOINT259_CONNECTION_EVENTS.jsonl.gz", - "test_command": "python JOINT259_CONNECTION_TESTS.py --package SOURCE --inputs OUTPUT/hybrid --full --writer", - "published_generated_trace": false, - "excluded_partial_artifacts": "JOINT259_CONNECTION_EVENTS_*.b64", - "limitations": "Six-field selected IR and documented ownership/lowering interfaces only; new opcodes/layouts require reviewed adapter changes. Syntactic address-key checks do not replace the inherited algebraic bank proof." -} diff --git a/docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_README.md b/docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_README.md deleted file mode 100644 index 27cb285301..0000000000 --- a/docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_README.md +++ /dev/null @@ -1,105 +0,0 @@ -# JOINT259 operation connection inventory - -Start with JOINT259_CONNECTION_SUMMARY.json, SCHEMA.json, and MANIFEST.json. -The system overview is a separate descriptive graph. Its edges must never be -presented as the complete operation inventory. - -## Exact scope - -The selected final local word has 859,771 operations: 760,383 ADD, 99,340 MOVE, -24 COPY and 24 ERASE. The generator emits every original six-int row plus -20 connection fields: source/destination IDs, semantic value versions, frame -IDs and state versions, and producer events. Four typed producer columns -define 3,439,036 read links; consumer lists are their exact transpose. -Initial producer IDs are -(register+2), and -1 means absent. - -MOVE preserves semantic payload while advancing its frame state. ADD reads -both old operands before writing its destination. COPY creates a fresh -temporary generation, preserves the retained source and expands into COPY -plus MOVE in global lowering. ERASE checks that source and lifetime before -removing the temporary. All 24 copied-source lifetimes have 220 reads each. - -The complete word is freshly scanned, with frame-state/read-before-write, -scalar/tagged digest, paid/category count, and copied-source immutability -checks. This is a structural connection check, not a new scalar all-column, -geometric-containment or arbitrary-size compiler proof. - -The BankPlan map includes 16,587 actual helper roles, residual rank families, -gauge-frame IDs, packing segments/patterns and phase schedule. -iter_global_connections(inputs, stage, replica, cover='d') maps every local -operation for any of 200 stage/replica pairs. All five logical stage streams -match the admitted Lowerer exactly at 859,795 rows each. Each of 24 local COPY -macros contributes an additional lowered MOVE. The 4,021,600-address check -tests distinct syntactic (family, route-word) keys. Algebraic rational/mod-q -nonaliasing remains inherited from the separately admitted bank proof. - -Unexpanded: finite-cover enumeration, recursive child programs and stopping -policy, q-local fallback, complex supplier internals and arbitrary-size tape -movements. COMPLETE is rejected by the mapper; bank completion is inherited. - -## Portable rebuild - -Extractor requirements: Python 3.11+, standard library only. Its shared -source adapter and binding JSON must be beside the extractor: -joint259_system_docs_sources.py and joint259_system_docs_source_binding.json. - -Use an admitted source directory or ZIP with the original scientific manifest -9f6d8637b9a119cfe4566a02ab2d704f23c502e5e4357b40c28ef85a3fd4de89 -or approved public manifest -0af10dcca505cbd913cf1b9220a08b6a62687650ace4e3d1efd093e828e3990e. -The adapter validates the complete closure and 117 retained numerical pins. - -Existing fresh verifier output can be reused; no expensive verification is -rerun by the extractor. To produce inputs when none exist, run the selected -source package's documented verifier using its own requirements (Python 3.11+ -and SymPy 1.14.0); OUTPUT must be new and outside the source package: - - python SOURCE/verify.py --output OUTPUT - -The final input directory is OUTPUT/hybrid, not OUTPUT itself. Then: - - python JOINT259_CONNECTION_EXTRACT.py --package SOURCE --inputs OUTPUT/hybrid --summary - python JOINT259_CONNECTION_EXTRACT.py --package SOURCE --inputs OUTPUT/hybrid --map - python JOINT259_CONNECTION_TESTS.py --package SOURCE --inputs OUTPUT/hybrid --full --writer - -SOURCE can also be the admitted source ZIP for extraction/testing, without -extracting it. The verifier itself should be run from its documented source -directory. Input binding uses the decompressed raw SHA and canonical invariant -metadata digests. Gzip compression/header, JSON formatting, and runtime/timing -receipt differences are allowed; raw/frame/category/census changes are not. - -Generate the complete portable gzip JSONL in an authorized writable location: - - python JOINT259_CONNECTION_EXTRACT.py --package SOURCE --inputs OUTPUT/hybrid --inventory DEST/JOINT259_CONNECTION_EVENTS.jsonl.gz - -The destination must be a new file outside a directory-valued source package. -The output is self-describing: metadata first, all 859,771 operation rows, -validation last. Public delivery is the tested complete generator and source -binding manifest, not a multi-megabyte generated trace. Four experimental -base64 shards 000-003 are partial, private, excluded from publication and every -completeness claim. --saved is an optional developer facility requiring a -separate complete shard index; it is not part of the delivered workflow. - -Expected packed 20-int-per-event connection SHA: -14d13b5b4e851a66c20af1850d77a71fe21cbe3fda35c72000709f767275222e. - -## Reuse and change boundaries - -Automatic within the documented six-int MOVE/ADD/COPY/ERASE IR: enumerate all -events, rebuild producer/consumer links and value/frame versions, check -lifetimes, expand the selected five-stage lowering, and evaluate BankPlan -addresses. Changed event order, coefficients or frames can be re-extracted -only after an explicit reviewed source/config update. - -Manual configuration: approved package closure/source binding, RAW_SHA, -GENERATED_PINS invariant projections, CONNECTION_SHA regression value and -expected operation/category/census controls. These currently live in the -extractor and source-binding JSON, not a generic architecture parser config. - -Manual adapter work is required for different role-selection files or role -counts, initial state layout, new opcode/field conventions, new COPY semantics, -different stages/replicas, or a new bank API. The selected N,V and ownership -census assertions deliberately fail loudly on incompatible systems. A new -system requires renewed tests and review. Do not update labels/counts alone -to make a stale artifact pass. Supplier and historical generator files are -unchanged. diff --git a/docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_SCHEMA.json b/docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_SCHEMA.json deleted file mode 100644 index 6b3f247e95..0000000000 --- a/docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_SCHEMA.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "schema": "joint259-operation-connections/1", - "raw_columns": [ - "opcode", - "a", - "b", - "c", - "f", - "z" - ], - "link_columns": [ - "destination", - "source", - "destination_value_before", - "destination_value_after", - "source_value_version", - "destination_frame_before", - "destination_frame_after", - "source_frame", - "destination_frame_version_before", - "destination_frame_version_after", - "source_frame_version", - "destination_value_producer", - "source_value_producer", - "destination_frame_producer", - "source_frame_producer", - "copy_source", - "copy_event", - "copy_source_value_version", - "copy_source_frame_version", - "copy_generation" - ], - "record_id": "zero-based position in pinned records.bin.gz", - "event_id": "local:{record_id}; a read producer >=0 names local:{producer}", - "initial_producer": "-(register_id+2); -1 means absent, never an initial value", - "version_convention": "Value versions change on ADD and COPY. Frame versions change on MOVE and COPY. ERASE removes both; every scratch COPY gets a fresh generation, so versions are never reused. MOVE preserves the semantic payload version; its recursive implementation is not expanded here.", - "links": "Each nonabsent producer column is a producer-to-current-consumer edge. Output value/frame producer is the current event when its corresponding version changes; unchanged versions retain their producer. Consumer lists are exactly the transpose of these edges, without duplicating a massive adjacency list.", - "MOVE": "raw=(0,q,old_frame,new_frame,rank,0); destination=q, source=q; payload preserved; frame advances", - "ADD": "raw=(1,dst,src,coefficient,frame,category); read both old payloads before writing dst; src preserved; frames unchanged", - "COPY": "raw=(2,source,temp,source_frame,output_frame,paid_rank); destination=temp; copy unchanged source to new temporary. Global lowering expands this macro into COPY then paid MOVE.", - "ERASE": "raw=(3,source,temp,source_frame,output_frame,paid_rank); destination=temp, source=retained source; verify immutable source and temporary lifetime, then remove temporary", - "address_check_scope": "Injectivity checks distinguish syntactic full (family, route-word) keys. Algebraic rational/mod-q route nonaliasing is inherited from the separately admitted bank proof, not newly proved.", - "scope": "Exact finite local operation/def-use inventory plus callable global BankPlan address maps. Not a complete arbitrary-input-size compiler and not the overview graph.", - "unexpanded": [ - "finite cover class enumeration", - "recursive child programs and stopping policy", - "q-local fallback implementation", - "complex supplier internals", - "all-size tape movements" - ] -} diff --git a/docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_SUMMARY.json b/docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_SUMMARY.json deleted file mode 100644 index de1d31ab86..0000000000 --- a/docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_SUMMARY.json +++ /dev/null @@ -1,425 +0,0 @@ -{ - "opcode_counts": { - "ADD": 760383, - "MOVE": 99340, - "COPY": 24, - "ERASE": 24 - }, - "categories": { - "dirty_read": 655112, - "multicut_basis": 756, - "inject": 1760, - "gauge_mix": 87, - "forward_gate": 40758, - "partner_mix": 793, - "center": 5280, - "echelon_setup": 24, - "rank_setup": 81, - "equal_setup": 234, - "terminal_pre": 102, - "closed_interval_precondition": 21, - "closed_interval_compensation": 14, - "closed_interval_inverse": 21, - "anchor_inject": 48, - "fresh_source_read": 3, - "equal_read": 92, - "echelon_read": 40, - "rank_inverse": 81, - "echelon_inverse": 24, - "equal_inverse": 234, - "terminal_write": 90, - "terminal_post": 102, - "side_root": 8664, - "partner_delivery": 1760, - "partner_cleanup": 880, - "cleanup_gate": 40758, - "anchor_restore": 48, - "uninject": 1760, - "multicut_inverse": 756 - }, - "coefficient_histogram": { - "1": 759063, - "3": 1320 - }, - "paid_histogram": { - "1": 42263, - "2": 19516, - "3": 9713, - "4": 3017, - "5": 2368, - "6": 1562, - "7": 1233, - "8": 634, - "9": 652, - "10": 769, - "11": 414, - "12": 1517, - "13": 585, - "14": 1067, - "15": 244, - "16": 1000, - "17": 469, - "18": 487, - "19": 323, - "20": 1365, - "21": 5575, - "22": 1344 - }, - "producer_consumer_links": 3439036, - "copied_source_lifetimes": [ - { - "copy_event": 694585, - "erase_event": 694806, - "source": 3640, - "source_value_version": 9, - "source_frame_version": 8, - "source_value_producer": 694515, - "source_frame_producer": 694273, - "temporary": 20107, - "generation": 1, - "reads": 220, - "immutable": true - }, - { - "copy_event": 694807, - "erase_event": 695028, - "source": 3655, - "source_value_version": 9, - "source_frame_version": 10, - "source_value_producer": 694518, - "source_frame_producer": 694278, - "temporary": 20107, - "generation": 2, - "reads": 220, - "immutable": true - }, - { - "copy_event": 695029, - "erase_event": 695250, - "source": 10136, - "source_value_version": 8, - "source_frame_version": 7, - "source_value_producer": 694521, - "source_frame_producer": 694283, - "temporary": 20107, - "generation": 3, - "reads": 220, - "immutable": true - }, - { - "copy_event": 695251, - "erase_event": 695472, - "source": 10137, - "source_value_version": 8, - "source_frame_version": 7, - "source_value_producer": 694524, - "source_frame_producer": 694288, - "temporary": 20107, - "generation": 4, - "reads": 220, - "immutable": true - }, - { - "copy_event": 695473, - "erase_event": 695694, - "source": 10172, - "source_value_version": 8, - "source_frame_version": 7, - "source_value_producer": 694527, - "source_frame_producer": 694293, - "temporary": 20107, - "generation": 5, - "reads": 220, - "immutable": true - }, - { - "copy_event": 695695, - "erase_event": 695916, - "source": 10173, - "source_value_version": 8, - "source_frame_version": 7, - "source_value_producer": 694530, - "source_frame_producer": 694298, - "temporary": 20107, - "generation": 6, - "reads": 220, - "immutable": true - }, - { - "copy_event": 695917, - "erase_event": 696138, - "source": 10204, - "source_value_version": 8, - "source_frame_version": 8, - "source_value_producer": 694533, - "source_frame_producer": 694303, - "temporary": 20107, - "generation": 7, - "reads": 220, - "immutable": true - }, - { - "copy_event": 696139, - "erase_event": 696360, - "source": 10205, - "source_value_version": 8, - "source_frame_version": 7, - "source_value_producer": 694536, - "source_frame_producer": 694308, - "temporary": 20107, - "generation": 8, - "reads": 220, - "immutable": true - }, - { - "copy_event": 696361, - "erase_event": 696582, - "source": 10232, - "source_value_version": 8, - "source_frame_version": 7, - "source_value_producer": 694539, - "source_frame_producer": 694313, - "temporary": 20107, - "generation": 9, - "reads": 220, - "immutable": true - }, - { - "copy_event": 696583, - "erase_event": 696804, - "source": 10233, - "source_value_version": 8, - "source_frame_version": 7, - "source_value_producer": 694542, - "source_frame_producer": 694318, - "temporary": 20107, - "generation": 10, - "reads": 220, - "immutable": true - }, - { - "copy_event": 696805, - "erase_event": 697026, - "source": 10256, - "source_value_version": 8, - "source_frame_version": 8, - "source_value_producer": 694545, - "source_frame_producer": 694323, - "temporary": 20107, - "generation": 11, - "reads": 220, - "immutable": true - }, - { - "copy_event": 697027, - "erase_event": 697248, - "source": 10257, - "source_value_version": 8, - "source_frame_version": 7, - "source_value_producer": 694548, - "source_frame_producer": 694328, - "temporary": 20107, - "generation": 12, - "reads": 220, - "immutable": true - }, - { - "copy_event": 697249, - "erase_event": 697470, - "source": 11068, - "source_value_version": 8, - "source_frame_version": 6, - "source_value_producer": 694551, - "source_frame_producer": 694333, - "temporary": 20107, - "generation": 13, - "reads": 220, - "immutable": true - }, - { - "copy_event": 697471, - "erase_event": 697692, - "source": 11069, - "source_value_version": 8, - "source_frame_version": 7, - "source_value_producer": 694554, - "source_frame_producer": 694338, - "temporary": 20107, - "generation": 14, - "reads": 220, - "immutable": true - }, - { - "copy_event": 697693, - "erase_event": 697914, - "source": 11070, - "source_value_version": 8, - "source_frame_version": 8, - "source_value_producer": 694557, - "source_frame_producer": 694343, - "temporary": 20107, - "generation": 15, - "reads": 220, - "immutable": true - }, - { - "copy_event": 697915, - "erase_event": 698136, - "source": 11071, - "source_value_version": 8, - "source_frame_version": 8, - "source_value_producer": 694560, - "source_frame_producer": 694348, - "temporary": 20107, - "generation": 16, - "reads": 220, - "immutable": true - }, - { - "copy_event": 698137, - "erase_event": 698358, - "source": 11072, - "source_value_version": 8, - "source_frame_version": 7, - "source_value_producer": 694563, - "source_frame_producer": 694353, - "temporary": 20107, - "generation": 17, - "reads": 220, - "immutable": true - }, - { - "copy_event": 698359, - "erase_event": 698580, - "source": 11073, - "source_value_version": 8, - "source_frame_version": 8, - "source_value_producer": 694566, - "source_frame_producer": 694358, - "temporary": 20107, - "generation": 18, - "reads": 220, - "immutable": true - }, - { - "copy_event": 698581, - "erase_event": 698802, - "source": 11074, - "source_value_version": 8, - "source_frame_version": 8, - "source_value_producer": 694569, - "source_frame_producer": 694363, - "temporary": 20107, - "generation": 19, - "reads": 220, - "immutable": true - }, - { - "copy_event": 698803, - "erase_event": 699024, - "source": 11075, - "source_value_version": 8, - "source_frame_version": 8, - "source_value_producer": 694572, - "source_frame_producer": 694368, - "temporary": 20107, - "generation": 20, - "reads": 220, - "immutable": true - }, - { - "copy_event": 699025, - "erase_event": 699246, - "source": 11076, - "source_value_version": 8, - "source_frame_version": 8, - "source_value_producer": 694575, - "source_frame_producer": 694373, - "temporary": 20107, - "generation": 21, - "reads": 220, - "immutable": true - }, - { - "copy_event": 699247, - "erase_event": 699468, - "source": 11077, - "source_value_version": 8, - "source_frame_version": 9, - "source_value_producer": 694578, - "source_frame_producer": 694378, - "temporary": 20107, - "generation": 22, - "reads": 220, - "immutable": true - }, - { - "copy_event": 699469, - "erase_event": 699690, - "source": 11078, - "source_value_version": 8, - "source_frame_version": 8, - "source_value_producer": 694581, - "source_frame_producer": 694383, - "temporary": 20107, - "generation": 23, - "reads": 220, - "immutable": true - }, - { - "copy_event": 699691, - "erase_event": 699912, - "source": 11079, - "source_value_version": 8, - "source_frame_version": 7, - "source_value_producer": 694584, - "source_frame_producer": 694388, - "temporary": 20107, - "generation": 24, - "reads": 220, - "immutable": true - } - ], - "scalar_projection_sha256": "ee13c58a083efb20ea6eb0b66563e222b4728c9a2e2cdc91136452b9013ceeeb", - "tagged_scalar_sha256": "fde0c5174796866e7a3a2833df6270954651eb3cf6c287b89e9d5982de181ee0", - "final_state_sha256": "b5e5dac58ba9b20685847804452bd4fa9167b5bef19314be0370edbccf2cf3bc", - "final_live_registers": 20107, - "events": 859771, - "link_bytes_sha256": "14d13b5b4e851a66c20af1850d77a71fe21cbe3fda35c72000709f767275222e", - "link_record_bytes": 80, - "schema": "joint259-operation-connections/1", - "scope": "Exact finite local operation/def-use inventory plus callable global BankPlan address maps. Not a complete arbitrary-input-size compiler and not the overview graph.", - "source_pins": { - "package_manifest": "9f6d8637b9a119cfe4566a02ab2d704f23c502e5e4357b40c28ef85a3fd4de89", - "scientific_archive_manifest": "9f6d8637b9a119cfe4566a02ab2d704f23c502e5e4357b40c28ef85a3fd4de89", - "generated/records.decompressed": "acf510b1377a6bd96eea50577de1aa049382499335fa7e5cac9b0300ecb377c7", - "generated-invariant/initial.json": "2ffcd7fa9060653501873475271d48a054d063a528946714a4d23b21fb9bb162", - "generated-invariant/physical.json": "49aa1a8762372d62b5105341696227307b2ba4b04e930bb86aaf8064cebb6eb2", - "generated-invariant/all-gauge-entrances.json": "6717b795c8df73aaf6279455427834889ecdc6e872ed3e9cf8763a1c23bd29a1", - "loader/source_inputs/base_bit/research/paired-cube-diagonal-bit-168/selected/bit/word_p12.json.gz": "1cb7e8ed45cf542e304fddc4b12247dbb248a0dc84dedbd832f336b2d172793a", - "loader/source_inputs/base_bit/research/paired-cube-diagonal-bit-168/selected/bit/profile_p12.json": "c44ef8640cbcbcc9bac3a30e13373bd79efddde55d7cea514354ca2cdb60d66d", - "loader/source_inputs/pr210/research/coordinated-crossover-pr200/joint/pairs.json": "da54b863601b5cbc21d27fc5cd623bf805f974a3e47b81ed29a85aa5bad0fa05", - "loader/source_inputs/base_bit/research/paired-cube-diagonal-bit-168/selected/bit/sinks.json": "c00ff70c564829d4b97740f92796fc6ce14fbcd5ca519663828650552b80249d", - "loader/source_inputs/pr210/research/coordinated-crossover-pr200/borrow/selection.json": "6932749407e14b199651f0a7deff02c6de74e2c1be0a1300263f1e164927fb8b", - "loader/source_inputs/pr210/research/coordinated-crossover-pr200/gaugeb/selection.json": "b0f9f0e67f94a3c21069f393ea27f9483d315bff2f53f77270163065a6345d1c", - "loader/source_inputs/pr210/research/coordinated-crossover-pr200/newg/selection.json": "d94ef4e0b8ca98a7385b364cf245816a7cad08f850a60ce8b67aab4c3a89f3f4", - "source527/extra/selection.json": "791f6ddeb19add7026ba37461256c13efe3d35bba0bccf1cb9787a01fc16f0f2", - "source527/fresh/selection.json": "4df5f96064349415882ece4ac9abd19cc778f18c0306a27b3d65027dcb04b6c7", - "source527/paired-selection.json": "67a24896e5ff6a16735efdff57fbb875aa411aba00cbabb22c43a91cdf63e084", - "bank_template.py": "e255bdc0c0aa4465485ee34ece7d1f04ce3ce363d8ac62edc9de5608e46f8965", - "code/global_lowering.py": "c888c4d3c38d4a59b48f8a328fc495b3b38ee36ede133495522d8d76c100794b", - "code/physical527.py": "1723a5c53ec236529e46980c8eb2c45134c61275ac7fb85c8ad92223784de07c", - "hybrid_transform.py": "c06837bbc6ccf068362e1f09f110319f20135588f42e3cb3f8bc753436802e09" - }, - "raw_sha256": "acf510b1377a6bd96eea50577de1aa049382499335fa7e5cac9b0300ecb377c7", - "raw_records": 859771, - "address_map": { - "exact_parametric": true, - "scope": "Syntactic full address keys; algebraic route nonaliasing inherited.", - "stage_replica_pairs": 200, - "helper_occurrences": 3317400, - "live_families": 867045 - }, - "generated_trace_delivery": "Generated on demand by the tested complete generator; partial base64 shards are excluded.", - "accepted_public_manifest_sha256": "0af10dcca505cbd913cf1b9220a08b6a62687650ace4e3d1efd093e828e3990e" -} diff --git a/docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_TESTS.py b/docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_TESTS.py deleted file mode 100644 index 2d383a48ec..0000000000 --- a/docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_TESTS.py +++ /dev/null @@ -1,186 +0,0 @@ -#!/usr/bin/env python3 -"""Read-only positive and mutation tests for JOINT259 connection extraction.""" -import argparse -from array import array -import hashlib -import importlib.util -from itertools import zip_longest -import json -import struct -import sys -import unittest -from unittest.mock import patch -from types import ModuleType -import gzip -import io -sys.dont_write_bytecode = True -import JOINT259_CONNECTION_EXTRACT as E - - -class ConnectionTests(unittest.TestCase): - def fresh(self): - return E.Inventory({0:1,1:0,2:1}, {0:0,1:22,2:24}, ['center','other']) - - def test_add_reads_both_old_versions(self): - inv = self.fresh() - edge = inv.step(0, (1,0,2,1,1,1)) - self.assertEqual(edge[2:5], (0,1,0)) - self.assertEqual(edge[11:13], (-2,-4)) - self.assertEqual(inv.state[2], [0,1,0,-4,-4]) - - def test_move_preserves_payload_but_advances_frame(self): - inv = self.fresh() - edge = inv.step(0, (0,0,1,2,2,0)) - self.assertEqual(edge[2:4], (0,0)) - self.assertEqual(edge[8:10], (0,1)) - self.assertEqual(inv.state[0][3:], [-2,0]) - - def test_immutable_copy_lifetime_and_unique_generations(self): - inv = self.fresh() - for generation in (1,2): - at=(generation-1)*222 - inv.step(at, (2,0,E.N,1,0,22)) - for i in range(220): - inv.step(at+i+1, (1,1,E.N,1,0,0)) - inv.step(at+221, (3,0,E.N,1,0,22)) - self.assertNotIn(E.N,inv.state) - self.assertEqual([x['generation']for x in inv.lifetimes],[1,2]) - - def test_read_before_copy_rejected(self): - with self.assertRaisesRegex(ValueError,'read-before-definition'): - self.fresh().step(0,(1,1,E.N,1,0,0)) - - def test_alias_rejected(self): - with self.assertRaisesRegex(ValueError,'alias'): - self.fresh().step(0,(1,0,0,1,1,1)) - - def test_source_payload_mutation_rejected(self): - inv=self.fresh();inv.step(0,(2,0,E.N,1,0,22)) - with self.assertRaisesRegex(ValueError,'copied source mutated'): - inv.step(1,(1,0,2,1,1,1)) - - def test_source_frame_mutation_rejected(self): - inv=self.fresh();inv.step(0,(2,0,E.N,1,0,22)) - with self.assertRaisesRegex(ValueError,'copied source mutated'): - inv.step(1,(0,0,1,2,2,0)) - - def test_premature_erase_rejected(self): - inv=self.fresh();inv.step(0,(2,0,E.N,1,0,22)) - with self.assertRaisesRegex(ValueError,'scatter coverage'): - inv.step(1,(3,0,E.N,1,0,22)) - - def test_double_copy_rejected(self): - inv=self.fresh();inv.step(0,(2,0,E.N,1,0,22)) - with self.assertRaisesRegex(ValueError,'temporary live'): - inv.step(1,(2,2,E.N,1,0,22)) - - def test_bad_frame_rejected(self): - with self.assertRaisesRegex(ValueError,'required frames'): - self.fresh().step(0,(1,0,1,1,1,1)) - - def test_missing_erase_rejected(self): - inv=self.fresh();inv.step(0,(2,0,E.N,1,0,22)) - with self.assertRaisesRegex(ValueError,'unclosed COPY'): - inv.finish() - - -class PortableBindingTests(unittest.TestCase): - def test_metadata_formatting_and_runtime_variation(self): - physical=E.read_json(E.INPUT/'physical.json') - altered=dict(physical,seconds=999999,another_runtime_receipt='ignored') - self.assertEqual(E.sha(E.compact(E.invariant_metadata('physical.json',json.dumps(altered)))), - E.GENERATED_PINS['physical.json']) - altered['weighted_scalar_events']+=1 - self.assertNotEqual(E.sha(E.compact(E.invariant_metadata('physical.json',json.dumps(altered)))), - E.GENERATED_PINS['physical.json']) - - def test_recompressed_raw_accepted_and_changed_raw_rejected(self): - obj=E.Inputs.__new__(E.Inputs);obj.inputs=E.INPUT;obj.pins={} - raw=gzip.decompress((E.INPUT/'records.bin.gz').read_bytes()) - encoded=gzip.compress(raw,compresslevel=1,mtime=123456) - with patch.object(type(E.INPUT),'read_bytes',return_value=encoded): - obj.generated('records.bin.gz') - altered=bytearray(raw);altered[0]^=1 - with patch.object(type(E.INPUT),'read_bytes',return_value=gzip.compress(altered)): - with self.assertRaisesRegex(ValueError,'raw word changed'): - obj.generated('records.bin.gz') - - def test_invariant_input_tampering_rejected(self): - obj=E.Inputs.__new__(E.Inputs);obj.inputs=E.INPUT;obj.pins={} - initial=E.read_json(E.INPUT/'initial.json');initial['0']+=1 - with patch.object(type(E.INPUT),'read_bytes',return_value=json.dumps(initial).encode()): - with self.assertRaisesRegex(ValueError,'invariant metadata changed'): - obj.generated('initial.json') - - -class OutputPathTests(unittest.TestCase): - def test_existing_output_rejected(self): - with self.assertRaisesRegex(ValueError,'output must be a new file'): - E.validate_output_path(E.INPUT/'initial.json',E.PACKAGE) - def test_source_output_rejected(self): - with self.assertRaisesRegex(ValueError,'output must be outside source package'): - E.validate_output_path(E.INPUT/'JOINT259_NOT_CREATED.jsonl.gz',E.INPUT) - - -def test_complete_writer(package, inputs_path): - inputs=E.Inputs(package, inputs_path) - buffer=io.BytesIO() - with gzip.GzipFile(fileobj=buffer,mode='wb',compresslevel=1,mtime=0) as out: - result=E.write_inventory(inputs,out) - raw=hashlib.sha256();links=hashlib.sha256();count=0 - with gzip.GzipFile(fileobj=io.BytesIO(buffer.getvalue()),mode='rb') as source: - header=json.loads(next(source));E.require(header['kind']=='metadata' and header['raw_sha256']==E.RAW_SHA,'JSONL header') - footer=None - for line in source: - row=json.loads(line) - if row.get('kind')=='validation': - E.require(footer is None,'duplicate footer');footer=row;continue - E.require(footer is None and row['event_id']==count,'JSONL event coverage/order') - raw.update(E.RAW.pack(*row['raw']));links.update(E.LINK.pack(*row['connections']));count+=1 - E.require(count==859771 and raw.hexdigest()==E.RAW_SHA,'JSONL raw readback') - E.require(links.hexdigest()==E.CONNECTION_SHA==footer['link_bytes_sha256'],'JSONL link readback') - E.require(footer['events']==count,'JSONL footer coverage') - return dict(status='PASS_COMPLETE_JSONL_WRITER_READBACK',events=count,metadata_first=True, - validation_last=True,raw_sha256=raw.hexdigest(),link_sha256=links.hexdigest(), - gzip_bytes=len(buffer.getvalue()),persisted_trace=False) - - -def run_full(saved=False, package=E.PACKAGE, inputs_path=E.INPUT): - inputs=E.Inputs(package, inputs_path) - summary,_=E.scan(inputs) - E.require(summary['link_bytes_sha256']=='14d13b5b4e851a66c20af1850d77a71fe21cbe3fda35c72000709f767275222e','connection regression') - original=ModuleType('joint259_connection_original_global') - original.__file__='verified/global_lowering.py' - exec(compile(inputs.static('code/global_lowering.py'),original.__file__,'exec'),original.__dict__) - lower=original.Lowerer.__new__(original.Lowerer) - lower.records=array('i');lower.records.frombytes(inputs.raw) - if sys.byteorder!='little':lower.records.byteswap() - comparisons=[] - for stage in range(5): - digest=hashlib.sha256();count=0 - for ours,theirs in zip_longest(E.iter_stage_rows(inputs,stage),lower.iter_stage(stage)): - E.require(ours is not None and theirs is not None and ours[1]==theirs,'stage lowering divergence') - digest.update(struct.pack('<8i',*theirs));count+=1 - E.require(count==859795,'lowered stage count') - comparisons.append(dict(stage=stage,records=count,exact_original_lowerer_match=True,sha256=digest.hexdigest())) - addresses=E.address_map(inputs,exhaustive=True)['fresh_full_address_checks'] - try:inputs.plan.map_boundary_row(0,(6,0,-1,0,1,0,-1,0)) - except AssertionError:completion_rejected=True - else:raise ValueError('unproved completion mapped') - saved_count=sum(1 for _ in E.iter_saved_connections()) if saved else None - return dict(status='PASS_BOUNDED_CONNECTION_INVENTORY',events=summary['events'], - producer_consumer_links=summary['producer_consumer_links'], - immutable_copy_lifetimes=len(summary['copied_source_lifetimes']), - exact_global_lowering_comparisons=comparisons,full_addresses=addresses, - unproved_completion_rejected=completion_rejected,saved_inventory_events=saved_count, - supplier_verification_rerun=False,new_all_size_proof=False) - - -if __name__=='__main__': - parser=argparse.ArgumentParser();parser.add_argument('--full',action='store_true');parser.add_argument('--writer',action='store_true');parser.add_argument('--saved',action='store_true');parser.add_argument('--package',type=E.Path,default=E.PACKAGE);parser.add_argument('--inputs',type=E.Path,default=E.INPUT);args=parser.parse_args() - E.INPUT=args.inputs - suite=unittest.TestSuite([unittest.defaultTestLoader.loadTestsFromTestCase(ConnectionTests),unittest.defaultTestLoader.loadTestsFromTestCase(PortableBindingTests),unittest.defaultTestLoader.loadTestsFromTestCase(OutputPathTests)]) - result=unittest.TextTestRunner(stream=sys.stderr,verbosity=2).run(suite) - if not result.wasSuccessful():raise SystemExit(1) - if args.full:print(json.dumps(run_full(args.saved,args.package,args.inputs),indent=2)) - if args.writer:print(json.dumps(test_complete_writer(args.package,args.inputs),indent=2)) diff --git a/docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_VALIDATION.json b/docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_VALIDATION.json deleted file mode 100644 index 8f0e00eafd..0000000000 --- a/docs/multicut-delayed-inverse-checkpoint/JOINT259_CONNECTION_VALIDATION.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "schema": "joint259-connection-validation/1", - "status": "PASS_COMPLETE_STRUCTURAL_SCAN_PORTABILITY_AND_WRITER_READBACK", - "local_events": 859771, - "typed_value_frame_producer_read_links": 3439036, - "immutable_copied_source_lifetimes": 24, - "scatter_reads_per_lifetime": 220, - "unit_and_portability_tests": 14, - "exact_original_lowerer_stages": 5, - "rows_per_lowered_stage": 859795, - "syntactic_address_namespaces": 200, - "syntactic_address_keys": 4021600, - "address_sha256": "50f5ce7c36ebece906d6fa8594076e405f763873ec472f3dda6ad6d86f92b342", - "address_scope": "Distinct syntactic family/route-word keys; algebraic rational/mod-q nonaliasing is inherited, not re-proved", - "complete_jsonl_writer_readback": { - "passed": true, - "events": 859771, - "metadata_first": true, - "validation_last": true, - "raw_sha256": "acf510b1377a6bd96eea50577de1aa049382499335fa7e5cac9b0300ecb377c7", - "link_sha256": "14d13b5b4e851a66c20af1850d77a71fe21cbe3fda35c72000709f767275222e" - }, - "portability_controls": ["recompressed raw accepted", "JSON/runtime variation accepted", "altered raw rejected", "altered initial state rejected", "altered invariant census rejected"], - "independent_review": "Public-source mapping repeated complete scan, all Lowerer/address checks and actual JSONL readback successfully", - "complete_trace_persisted": false, - "partial_shards_excluded": true, - "supplier_verification_rerun": false, - "new_algebraic_or_all_size_proof": false, - "cli_output_safeguard": "Separate final I/O guard and targeted test handled by documentation builder; not included in this 14-test semantic receipt" -} diff --git a/docs/multicut-delayed-inverse-checkpoint/QA.json b/docs/multicut-delayed-inverse-checkpoint/QA.json index 12da251c31..8037209a8d 100644 --- a/docs/multicut-delayed-inverse-checkpoint/QA.json +++ b/docs/multicut-delayed-inverse-checkpoint/QA.json @@ -3,7 +3,7 @@ "block_count": 21, "byte_identical_rebuilds": true, "pdfs": { - "complete_system.pdf": { + "functional_architecture.pdf": { "blocks": [ "F01", "F02", @@ -27,7 +27,7 @@ "F20", "F21" ], - "internal_links": 774, + "internal_links": 756, "pages": [ { "id": "CONTENTS", @@ -54,846 +54,238 @@ "page": 5, "title": "Functional architecture | complete conditional closure" }, - { - "id": "L01", - "page": 6, - "title": "Logical wiring | actual stream ABI" - }, - { - "id": "L02", - "page": 7, - "title": "Logical wiring | delayed target inverse" - }, - { - "id": "L03", - "page": 8, - "title": "Logical wiring | five-stage data paths" - }, - { - "id": "L04", - "page": 9, - "title": "Logical wiring | exact bank and replica map" - }, - { - "id": "L05", - "page": 10, - "title": "Logical wiring | closed proof ports" - }, { "id": "CATALOG", - "page": 11, + "page": 6, "title": "Functional blocks | F01 + F02" }, { "id": "CATALOG02", - "page": 12, + "page": 7, "title": "Functional blocks | F03 + F04" }, { "id": "CATALOG04", - "page": 13, + "page": 8, "title": "Functional blocks | F05 + F06" }, { "id": "CATALOG06", - "page": 14, + "page": 9, "title": "Functional blocks | F07 + F08" }, { "id": "CATALOG08", - "page": 15, + "page": 10, "title": "Functional blocks | F09 + F10" }, { "id": "CATALOG10", - "page": 16, + "page": 11, "title": "Functional blocks | F11 + F12" }, { "id": "CATALOG12", - "page": 17, + "page": 12, "title": "Functional blocks | F13 + F14" }, { "id": "CATALOG14", - "page": 18, + "page": 13, "title": "Functional blocks | F15 + F16" }, { "id": "CATALOG16", - "page": 19, + "page": 14, "title": "Functional blocks | F17 + F18" }, { "id": "CATALOG18", - "page": 20, + "page": 15, "title": "Functional blocks | F19 + F20" }, { "id": "CATALOG20", - "page": 21, + "page": 16, "title": "Functional blocks | F21" }, { "id": "H_CATALOG", - "page": 22, + "page": 17, "title": "Full hierarchy | blocks 1-6 of 87" }, { "id": "H_CATALOG6", - "page": 23, + "page": 18, "title": "Full hierarchy | blocks 7-12 of 87" }, { "id": "H_CATALOG12", - "page": 24, + "page": 19, "title": "Full hierarchy | blocks 13-18 of 87" }, { "id": "H_CATALOG18", - "page": 25, + "page": 20, "title": "Full hierarchy | blocks 19-24 of 87" }, { "id": "H_CATALOG24", - "page": 26, + "page": 21, "title": "Full hierarchy | blocks 25-30 of 87" }, { "id": "H_CATALOG30", - "page": 27, + "page": 22, "title": "Full hierarchy | blocks 31-36 of 87" }, { "id": "H_CATALOG36", - "page": 28, + "page": 23, "title": "Full hierarchy | blocks 37-42 of 87" }, { "id": "H_CATALOG42", - "page": 29, + "page": 24, "title": "Full hierarchy | blocks 43-48 of 87" }, { "id": "H_CATALOG48", - "page": 30, + "page": 25, "title": "Full hierarchy | blocks 49-54 of 87" }, { "id": "H_CATALOG54", - "page": 31, + "page": 26, "title": "Full hierarchy | blocks 55-60 of 87" }, { "id": "H_CATALOG60", - "page": 32, + "page": 27, "title": "Full hierarchy | blocks 61-66 of 87" }, { "id": "H_CATALOG66", - "page": 33, + "page": 28, "title": "Full hierarchy | blocks 67-72 of 87" }, { "id": "H_CATALOG72", - "page": 34, + "page": 29, "title": "Full hierarchy | blocks 73-78 of 87" }, { "id": "H_CATALOG78", - "page": 35, + "page": 30, "title": "Full hierarchy | blocks 79-84 of 87" }, { "id": "H_CATALOG84", - "page": 36, + "page": 31, "title": "Full hierarchy | blocks 85-87 of 87" }, { "id": "H_CONNECTIONS", - "page": 37, + "page": 32, "title": "Preserved interface connections | 1-10 of 53" }, { "id": "H_CONNECTIONS10", - "page": 38, + "page": 33, "title": "Preserved interface connections | 11-20 of 53" }, { "id": "H_CONNECTIONS20", - "page": 39, + "page": 34, "title": "Preserved interface connections | 21-30 of 53" }, { "id": "H_CONNECTIONS30", - "page": 40, + "page": 35, "title": "Preserved interface connections | 31-40 of 53" }, { "id": "H_CONNECTIONS40", - "page": 41, + "page": 36, "title": "Preserved interface connections | 41-50 of 53" }, { "id": "H_CONNECTIONS50", - "page": 42, + "page": 37, "title": "Preserved interface connections | 51-53 of 53" }, { "id": "H_REQUIREMENTS", - "page": 43, + "page": 38, "title": "Original requirement vocabulary | 1-5" }, { "id": "H_REQUIREMENTS5", - "page": 44, + "page": 39, "title": "Original requirement vocabulary | 6-10" }, { "id": "H_REQUIREMENTS10", - "page": 45, + "page": 40, "title": "Original requirement vocabulary | 11-15" }, { "id": "H_REQUIREMENTS15", - "page": 46, + "page": 41, "title": "Original requirement vocabulary | 16-16" }, { "id": "REQUIREMENTS", - "page": 47, + "page": 42, "title": "Requirement traceability | 1-6" }, { "id": "REQUIREMENTS2", - "page": 48, + "page": 43, "title": "Requirement traceability | 7-12" }, { "id": "SOURCES", - "page": 49, + "page": 44, "title": "Source anchors | 1-8" }, { "id": "SOURCES8", - "page": 50, + "page": 45, "title": "Source anchors | 9-16" }, { "id": "SOURCES16", - "page": 51, + "page": 46, "title": "Source anchors | 17-24" }, { "id": "SOURCES24", - "page": 52, + "page": 47, "title": "Source anchors | 25-32" }, { "id": "SOURCES32", - "page": 53, + "page": 48, "title": "Source anchors | 33-40" }, { "id": "SOURCES40", - "page": 54, + "page": 49, "title": "Source anchors | 41-46" }, { "id": "SCOPE", - "page": 55, + "page": 50, "title": "Coverage and publication boundary" }, { "id": "BUILD", - "page": 56, - "title": "Reproduce both diagram families" - } - ], - "sha256": "1db865c17ef25786c715a5c7bbaa58707a9b565303da6b4261134157d757ce20" - }, - "functional_architecture.pdf": { - "blocks": [ - "F01", - "F02", - "F03", - "F04", - "F05", - "F06", - "F07", - "F08", - "F09", - "F10", - "F11", - "F12", - "F13", - "F14", - "F15", - "F16", - "F17", - "F18", - "F19", - "F20", - "F21" - ], - "internal_links": 756, - "pages": [ - { - "id": "CONTENTS", - "page": 1, - "title": "The selected construction, at three levels" - }, - { - "id": "H_SYSTEM", - "page": 2, - "title": "Functional hierarchy | integers to exact product" - }, - { - "id": "H_TRANSFORMS", - "page": 3, - "title": "Functional hierarchy | source-transform internals" - }, - { - "id": "FVIEW1", - "page": 4, - "title": "Functional architecture | local supplier" - }, - { - "id": "FVIEW2", - "page": 5, - "title": "Functional architecture | complete conditional closure" - }, - { - "id": "CATALOG", - "page": 6, - "title": "Functional blocks | F01 + F02" - }, - { - "id": "CATALOG02", - "page": 7, - "title": "Functional blocks | F03 + F04" - }, - { - "id": "CATALOG04", - "page": 8, - "title": "Functional blocks | F05 + F06" - }, - { - "id": "CATALOG06", - "page": 9, - "title": "Functional blocks | F07 + F08" - }, - { - "id": "CATALOG08", - "page": 10, - "title": "Functional blocks | F09 + F10" - }, - { - "id": "CATALOG10", - "page": 11, - "title": "Functional blocks | F11 + F12" - }, - { - "id": "CATALOG12", - "page": 12, - "title": "Functional blocks | F13 + F14" - }, - { - "id": "CATALOG14", - "page": 13, - "title": "Functional blocks | F15 + F16" - }, - { - "id": "CATALOG16", - "page": 14, - "title": "Functional blocks | F17 + F18" - }, - { - "id": "CATALOG18", - "page": 15, - "title": "Functional blocks | F19 + F20" - }, - { - "id": "CATALOG20", - "page": 16, - "title": "Functional blocks | F21" - }, - { - "id": "H_CATALOG", - "page": 17, - "title": "Full hierarchy | blocks 1-6 of 87" - }, - { - "id": "H_CATALOG6", - "page": 18, - "title": "Full hierarchy | blocks 7-12 of 87" - }, - { - "id": "H_CATALOG12", - "page": 19, - "title": "Full hierarchy | blocks 13-18 of 87" - }, - { - "id": "H_CATALOG18", - "page": 20, - "title": "Full hierarchy | blocks 19-24 of 87" - }, - { - "id": "H_CATALOG24", - "page": 21, - "title": "Full hierarchy | blocks 25-30 of 87" - }, - { - "id": "H_CATALOG30", - "page": 22, - "title": "Full hierarchy | blocks 31-36 of 87" - }, - { - "id": "H_CATALOG36", - "page": 23, - "title": "Full hierarchy | blocks 37-42 of 87" - }, - { - "id": "H_CATALOG42", - "page": 24, - "title": "Full hierarchy | blocks 43-48 of 87" - }, - { - "id": "H_CATALOG48", - "page": 25, - "title": "Full hierarchy | blocks 49-54 of 87" - }, - { - "id": "H_CATALOG54", - "page": 26, - "title": "Full hierarchy | blocks 55-60 of 87" - }, - { - "id": "H_CATALOG60", - "page": 27, - "title": "Full hierarchy | blocks 61-66 of 87" - }, - { - "id": "H_CATALOG66", - "page": 28, - "title": "Full hierarchy | blocks 67-72 of 87" - }, - { - "id": "H_CATALOG72", - "page": 29, - "title": "Full hierarchy | blocks 73-78 of 87" - }, - { - "id": "H_CATALOG78", - "page": 30, - "title": "Full hierarchy | blocks 79-84 of 87" - }, - { - "id": "H_CATALOG84", - "page": 31, - "title": "Full hierarchy | blocks 85-87 of 87" - }, - { - "id": "H_CONNECTIONS", - "page": 32, - "title": "Preserved interface connections | 1-10 of 53" - }, - { - "id": "H_CONNECTIONS10", - "page": 33, - "title": "Preserved interface connections | 11-20 of 53" - }, - { - "id": "H_CONNECTIONS20", - "page": 34, - "title": "Preserved interface connections | 21-30 of 53" - }, - { - "id": "H_CONNECTIONS30", - "page": 35, - "title": "Preserved interface connections | 31-40 of 53" - }, - { - "id": "H_CONNECTIONS40", - "page": 36, - "title": "Preserved interface connections | 41-50 of 53" - }, - { - "id": "H_CONNECTIONS50", - "page": 37, - "title": "Preserved interface connections | 51-53 of 53" - }, - { - "id": "H_REQUIREMENTS", - "page": 38, - "title": "Original requirement vocabulary | 1-5" - }, - { - "id": "H_REQUIREMENTS5", - "page": 39, - "title": "Original requirement vocabulary | 6-10" - }, - { - "id": "H_REQUIREMENTS10", - "page": 40, - "title": "Original requirement vocabulary | 11-15" - }, - { - "id": "H_REQUIREMENTS15", - "page": 41, - "title": "Original requirement vocabulary | 16-16" - }, - { - "id": "REQUIREMENTS", - "page": 42, - "title": "Requirement traceability | 1-6" - }, - { - "id": "REQUIREMENTS2", - "page": 43, - "title": "Requirement traceability | 7-12" - }, - { - "id": "SOURCES", - "page": 44, - "title": "Source anchors | 1-8" - }, - { - "id": "SOURCES8", - "page": 45, - "title": "Source anchors | 9-16" - }, - { - "id": "SOURCES16", - "page": 46, - "title": "Source anchors | 17-24" - }, - { - "id": "SOURCES24", - "page": 47, - "title": "Source anchors | 25-32" - }, - { - "id": "SOURCES32", - "page": 48, - "title": "Source anchors | 33-40" - }, - { - "id": "SOURCES40", - "page": 49, - "title": "Source anchors | 41-46" - }, - { - "id": "SCOPE", - "page": 50, - "title": "Coverage and publication boundary" - }, - { - "id": "BUILD", - "page": 51, - "title": "Reproduce both diagram families" - } - ], - "sha256": "4bbee6f185f11d8283b9432a2e8fb011f70c335defc881027220c3c90dcbc37c" - }, - "logical_wiring.pdf": { - "blocks": [ - "F01", - "F02", - "F03", - "F04", - "F05", - "F06", - "F07", - "F08", - "F09", - "F10", - "F11", - "F12", - "F13", - "F14", - "F15", - "F16", - "F17", - "F18", - "F19", - "F20", - "F21" - ], - "internal_links": 749, - "pages": [ - { - "id": "CONTENTS", - "page": 1, - "title": "The selected construction, at three levels" - }, - { - "id": "H_SYSTEM", - "page": 2, - "title": "Functional hierarchy | integers to exact product" - }, - { - "id": "H_TRANSFORMS", - "page": 3, - "title": "Functional hierarchy | source-transform internals" - }, - { - "id": "L01", - "page": 4, - "title": "Logical wiring | actual stream ABI" - }, - { - "id": "L02", - "page": 5, - "title": "Logical wiring | delayed target inverse" - }, - { - "id": "L03", - "page": 6, - "title": "Logical wiring | five-stage data paths" - }, - { - "id": "L04", - "page": 7, - "title": "Logical wiring | exact bank and replica map" - }, - { - "id": "L05", - "page": 8, - "title": "Logical wiring | closed proof ports" - }, - { - "id": "CATALOG", - "page": 9, - "title": "Functional blocks | F01 + F02" - }, - { - "id": "CATALOG02", - "page": 10, - "title": "Functional blocks | F03 + F04" - }, - { - "id": "CATALOG04", - "page": 11, - "title": "Functional blocks | F05 + F06" - }, - { - "id": "CATALOG06", - "page": 12, - "title": "Functional blocks | F07 + F08" - }, - { - "id": "CATALOG08", - "page": 13, - "title": "Functional blocks | F09 + F10" - }, - { - "id": "CATALOG10", - "page": 14, - "title": "Functional blocks | F11 + F12" - }, - { - "id": "CATALOG12", - "page": 15, - "title": "Functional blocks | F13 + F14" - }, - { - "id": "CATALOG14", - "page": 16, - "title": "Functional blocks | F15 + F16" - }, - { - "id": "CATALOG16", - "page": 17, - "title": "Functional blocks | F17 + F18" - }, - { - "id": "CATALOG18", - "page": 18, - "title": "Functional blocks | F19 + F20" - }, - { - "id": "CATALOG20", - "page": 19, - "title": "Functional blocks | F21" - }, - { - "id": "H_CATALOG", - "page": 20, - "title": "Full hierarchy | blocks 1-6 of 87" - }, - { - "id": "H_CATALOG6", - "page": 21, - "title": "Full hierarchy | blocks 7-12 of 87" - }, - { - "id": "H_CATALOG12", - "page": 22, - "title": "Full hierarchy | blocks 13-18 of 87" - }, - { - "id": "H_CATALOG18", - "page": 23, - "title": "Full hierarchy | blocks 19-24 of 87" - }, - { - "id": "H_CATALOG24", - "page": 24, - "title": "Full hierarchy | blocks 25-30 of 87" - }, - { - "id": "H_CATALOG30", - "page": 25, - "title": "Full hierarchy | blocks 31-36 of 87" - }, - { - "id": "H_CATALOG36", - "page": 26, - "title": "Full hierarchy | blocks 37-42 of 87" - }, - { - "id": "H_CATALOG42", - "page": 27, - "title": "Full hierarchy | blocks 43-48 of 87" - }, - { - "id": "H_CATALOG48", - "page": 28, - "title": "Full hierarchy | blocks 49-54 of 87" - }, - { - "id": "H_CATALOG54", - "page": 29, - "title": "Full hierarchy | blocks 55-60 of 87" - }, - { - "id": "H_CATALOG60", - "page": 30, - "title": "Full hierarchy | blocks 61-66 of 87" - }, - { - "id": "H_CATALOG66", - "page": 31, - "title": "Full hierarchy | blocks 67-72 of 87" - }, - { - "id": "H_CATALOG72", - "page": 32, - "title": "Full hierarchy | blocks 73-78 of 87" - }, - { - "id": "H_CATALOG78", - "page": 33, - "title": "Full hierarchy | blocks 79-84 of 87" - }, - { - "id": "H_CATALOG84", - "page": 34, - "title": "Full hierarchy | blocks 85-87 of 87" - }, - { - "id": "H_CONNECTIONS", - "page": 35, - "title": "Preserved interface connections | 1-10 of 53" - }, - { - "id": "H_CONNECTIONS10", - "page": 36, - "title": "Preserved interface connections | 11-20 of 53" - }, - { - "id": "H_CONNECTIONS20", - "page": 37, - "title": "Preserved interface connections | 21-30 of 53" - }, - { - "id": "H_CONNECTIONS30", - "page": 38, - "title": "Preserved interface connections | 31-40 of 53" - }, - { - "id": "H_CONNECTIONS40", - "page": 39, - "title": "Preserved interface connections | 41-50 of 53" - }, - { - "id": "H_CONNECTIONS50", - "page": 40, - "title": "Preserved interface connections | 51-53 of 53" - }, - { - "id": "H_REQUIREMENTS", - "page": 41, - "title": "Original requirement vocabulary | 1-5" - }, - { - "id": "H_REQUIREMENTS5", - "page": 42, - "title": "Original requirement vocabulary | 6-10" - }, - { - "id": "H_REQUIREMENTS10", - "page": 43, - "title": "Original requirement vocabulary | 11-15" - }, - { - "id": "H_REQUIREMENTS15", - "page": 44, - "title": "Original requirement vocabulary | 16-16" - }, - { - "id": "REQUIREMENTS", - "page": 45, - "title": "Requirement traceability | 1-6" - }, - { - "id": "REQUIREMENTS2", - "page": 46, - "title": "Requirement traceability | 7-12" - }, - { - "id": "SOURCES", - "page": 47, - "title": "Source anchors | 1-8" - }, - { - "id": "SOURCES8", - "page": 48, - "title": "Source anchors | 9-16" - }, - { - "id": "SOURCES16", - "page": 49, - "title": "Source anchors | 17-24" - }, - { - "id": "SOURCES24", - "page": 50, - "title": "Source anchors | 25-32" - }, - { - "id": "SOURCES32", "page": 51, - "title": "Source anchors | 33-40" - }, - { - "id": "SOURCES40", - "page": 52, - "title": "Source anchors | 41-46" - }, - { - "id": "SCOPE", - "page": 53, - "title": "Coverage and publication boundary" - }, - { - "id": "BUILD", - "page": 54, - "title": "Reproduce both diagram families" + "title": "Reproduce the architecture reference" } ], - "sha256": "f700f70c7192d57271fcb6434b16720b4f39d60850c72d76040b5d67cd9497f5" + "sha256": "21cce9f08282a13775f6282f0bc9802c6ca6449f9c899bac75d26ca91842f556" } }, "requirements": 12, diff --git a/docs/multicut-delayed-inverse-checkpoint/README.md b/docs/multicut-delayed-inverse-checkpoint/README.md index e67e66b9d0..321230a0eb 100644 --- a/docs/multicut-delayed-inverse-checkpoint/README.md +++ b/docs/multicut-delayed-inverse-checkpoint/README.md @@ -1,213 +1,66 @@ -# Functional Architecture and Supporting References for PR #277 +# Architecture Reference and Workflow Diagrams for PR #277 -This package documents the verified PR259-derived construction checkpoint in -[PR #277](https://github.com/CrocSwap/integer-mult-bounds/pull/277). -[Exact public construction source and reproduction instructions](https://github.com/hcg890/integer-mult-bounds/blob/c2f07d311bfdad0d89bf961e4da133ee97bb78de/research/multicut-delayed-inverse-checkpoint/README.md) -are pinned to commit `c2f07d311bfdad0d89bf961e4da133ee97bb78de`. -The approved public source manifest is pinned below. -The later PR266 result is stronger; this checkpoint's conditional exponent is -0.000711045547624400. +Architecture reference material for the older verified construction checkpoint +in [PR #277](https://github.com/CrocSwap/integer-mult-bounds/pull/277). +Conditional kappa is 0.000711045547624400; the inspected later PR266 checkpoint +is stronger. -![Functional overview](summary-functional.svg) +![High-level architecture overview](summary-functional.svg) -[Open the architecture reference PDF (51 pages; visual block-and-arrow views on pages 2–5)](functional_architecture.pdf) +[Open the architecture reference PDF](functional_architecture.pdf). +Pages 2–5 contain visual architecture and compiler-workflow views. The other +pages contain contents, explanations, requirements, source references and +coverage limits. This is not a 51-page diagram or a complete wiring schematic. +The local compiler workflow has ten connected blocks; the overview shows the +operand-to-product process with separate supplier support. -## Read the diagrams +## Rebuild the retained architecture -The retained PDF has contents, outline bookmarks, clickable block explanations, -requirements, source anchors and cross-page references. Pages 2–5 are visual -block-and-arrow architecture views; pages 6–51 are supporting reference material. -The rejected logical/wiring and combined PDFs and the logical preview have been -removed from this public submission. Purpose-fit review of a short architecture -extract is pending; no new extract is published yet. - -There are three deliberately separate layers: - -1. The full integer-product hierarchy preserves all 87 original A/B/C/R/D block - IDs. The outer algorithm and inherited theorem interfaces remain explicit - contracts. Historical source471 internals are not silently treated as the - current source527 implementation. -2. F01-F21 explain the selected current construction. All 53 declared block - dependencies name their input/output ports. These are architecture and - evidence dependencies, not scalar-operation edges. -3. JOINT259_CONNECTION_EXTRACT.py reconstructs the exact selected local - operation/value/frame connection inventory and the indexed global address - map. The ordinary diagrams use compact buses and templates instead of drawing - millions of repeated edges. - -All 53 original typed relations and 75 documentary relations are retained in -hierarchy_edges.json with current scope classifications. A historical relation -is never promoted to current physical execution merely because its names match. - -The selected composition is: exact PR249's 21 entrances; 513 of PR259's 518 -cohorts; seven closed delayed-inverse intervals replacing five conflicting -quartets; the same 25 PR258/PR260 retimings applied once. PR251's extra sixteen -entrances are excluded. PR254 is ancestry, not an additional independent gain. - -## Build tools and publication scope - -Use Python 3.11 or later. Install the pinned dependencies: +Use Python 3.11+ and a fresh isolated environment: python -m pip install -r joint259_system_docs_requirements.txt - -From this documentation directory, run: - - python -B joint259_system_docs_incremental.py --source /path/to/verified/construction --cache ./page-cache.json --output ./build-new --svg - -The source may be the admitted construction directory or its ZIP. The approved -public manifest is 0af10dcca505cbd913cf1b9220a08b6a62687650ace4e3d1efd093e828e3990e: -137 total paths, including 136 manifest members and 117 unchanged numerical -source pins. The original tested archive is also admitted. Every file is checked; -unknown manifests, missing/extra files, symlinks and path aliases are rejected. -source_binding.json and QA.json distinguish the actual consumed manifest from -the scientific archive. The public documentation cleanup reuses that archive's -scientific execution evidence; documentation generation does not replay science. - -Choose a new output directory for every build and reuse the cache file. -The source package is checked before and after the build and is never modified. -Use --clean to ignore the cache. Without --svg, PDF generation uses Python only. - -Python dependencies: -- reportlab==4.4.9 -- pypdf==6.10.0 -- Pillow==12.3.0 -- charset-normalizer==3.5.1 - -System dependencies: -- Graphviz is not used. -- SVG export requires Poppler pdftocairo on PATH. The tested converter is - 25.03.0; its actual executable/version is included in cache dependencies. -- Raster equivalence tests require pdftoppm. The tested version is 26.05.0. -- Document fonts are the Vera font bytes bundled in the pinned ReportLab wheel. - No platform-installed fonts are needed for the PDFs or outlined page SVGs. -- The two small summary SVGs use ordinary vector text with explicit font sizes. - They are rebuilt each time, separately from the page-render cache. - -On macOS, Poppler is available from the official Homebrew package. On Debian or -Ubuntu it is provided by poppler-utils. Installing a different converter version -invalidates SVG cache entries; byte-identical SVG comparisons require the same -converter. - -## What is regenerated - -The retained build tools reproduce the previously reviewed documentation -outputs locally from the same models. Public publication is limited to the -functional architecture reference and functional overview. Other generated -outputs are excluded from this PR. These tools and reference inventories do -not claim that this submission supplies a wiring schematic. - -The incremental build records each page's actual vector drawing commands, then -reuses only cache entries with matching schema, drawing plan, source/dependency -keys, font bytes and PDF hash. It always rebuilds navigation and current -indexes. Link-target-only changes can reuse a page's appearance while changing -its live links. Unchanged page drawings remain identical. - -Cached visuals are not proof receipts. The cache is local build state with -staleness and accidental-corruption checks, not an authenticated database -against someone who can replace both data and its hashes. - -[Detailed cache design, command options and tests](joint259_system_docs_incremental_README.md) - -## Safe changes and the parser boundary - -This is a reusable documentation and finite-IR extraction pipeline within its -declared formats. It is not an arbitrary-program architecture inference tool. - -Automatic after a valid, explicitly reviewed input/model update: -- Re-extract source/destination and value/frame dependencies from supported - local MOVE, ADD, COPY and ERASE records. -- Expand the supported five-stage and BankPlan index/address maps. -- Regenerate matching diagrams, block explanations, indexes and navigation. -- Repaint affected pages and compare incremental output against a clean build. - -A reviewer must update the adapter/model when a new opcode, ownership rule, -address-map family, proof interface or narrative meaning appears. Unknown -source pins, undeclared ports, missing required inputs and unsupported local -operations fail; they must not silently reuse old explanations or receipts. -A source-byte change does not automatically establish a new mathematical proof. - -Minimal update procedure: - -1. Create a separately pinned construction snapshot and obtain its required - scientific verification. Preserve the prior checkpoint. -2. Review source/IR compatibility, every changed proof interface and the active - numerical pins. Update the source-binding configuration deliberately. -3. Update affected F blocks, ports, explanations, requirements and heritage. - Reconcile changed A/B/C/R/D allocations and inherited contracts. -4. Run the exact connection extractor and its hostile tests from the new - admitted outputs. Do not treat a matching dimension as a matching subspace. -5. Run a clean documentation build and a warm/changed build; compare outputs. - Check every changed page visually at normal reading size. -6. Obtain independent mathematical/source and visual review, then record the - exact deliverable hashes and actual construction PR number. - -Compatible data changes are parsed; new semantics are reviewed. Current -checkpoint-specific source and result expectations are intentional guards. - -## Test the rebuild behavior - - python -B joint259_system_docs_incremental_test.py --source /path/to/verified/construction --raster-dpi 40 - -Tests use in-memory controlled changes and do not edit scientific inputs. -They check: -- Cold, warm and changed clean/incremental PDF byte equality -- Original-renderer versus cached-renderer drawing streams, text and links -- Every PDF page's raster pixels at the requested resolution -- Block behavior, visible names, requirements, source-index metadata and wiring -- Added/deleted pages, stable-ID renames, index-formula changes and undo -- Internal and external link-target-only edits with zero unnecessary repainting -- Renderer/config/font/source dependency invalidation -- Damaged cache schemas, keys, hashes and page bytes -- Rejection of an unrecognized scientific source pin -- Vector-only SVG exports and preserved links - -The recorded current suite covers 161 pages across 51-page functional, -54-page logical and 56-page combined documents. Measured example timings on the -cloud were 0.560 s cold, 0.375 s warm and 0.373 s for one behavior edit; that edit -repainted one of 56 master pages. These are documentation build measurements, -not multiplication runtime claims. Exact final timings and hashes are in -joint259_system_docs_incremental_test_report.json. - -## Scientific and coverage boundary - -The original scientific package manifest is -9f6d8637b9a119cfe4566a02ab2d704f23c502e5e4357b40c28ef85a3fd4de89. -Its selected raw word is -acf510b1377a6bd96eea50577de1aa049382499335fa7e5cac9b0300ecb377c7. - -Mac reproduction passes all eight mandatory stages, with all 143 source files -unchanged, 25 scalar controls, six prime controls and eight omitted-stage -controls. The certificate SHA256 is + python -B joint259_system_docs_incremental.py --source /path/to/verified/construction --output /new/architecture-build --svg + +Use a new output directory outside the construction package. The optional +--svg flag requires Poppler pdftocairo and creates linked per-page architecture +SVGs locally; they are not published in this PR. Without --svg the build uses +Python only. Graphviz is not used. Reuse a --cache path for later builds, or +use --clean to ignore the cache. + +The default build emits only the functional PDF family and functional summary. +It also emits local source, requirement and dependency indexes. The minimal +public output set is functional_architecture.pdf, summary-functional.svg, +QA.json and incremental_receipt.json. EXPECTED_ARTIFACTS.json pins their hashes. +The page cache is local build state and is not a proof receipt. + +The retained Python modules and JSON models form the dependency closure for +functional rendering. Separate event/wiring extraction tools, logical/combined render families and +logical previews have been removed from the public package. The original +independent reviews are retained as historical records, with fresh +functional-only test evidence recorded separately. All local originals remain +preserved. + +## Verification and scientific boundary + +The renderer requires deterministic PDF rebuilds, valid block/port relations, +resolved internal links, nonempty page text and unchanged admitted source +files. QA.json records these finite documentation checks. Inspect changed +pages visually; documentation generation does not replay science. + +The public construction manifest is +0af10dcca505cbd913cf1b9220a08b6a62687650ace4e3d1efd093e828e3990e. +Its 117 numerical pins are unchanged from the 143-file archive that freshly +passed all eight mandatory scientific stages. The scientific archive manifest +is 9f6d8637b9a119cfe4566a02ab2d704f23c502e5e4357b40c28ef85a3fd4de89. +The certificate SHA256 is 7eb58ec449c932b7092481746390c776365f302a742836cddef5643c0351802b. -scientific_reproduction.json contains sanitized source-bound evidence facts. - -The result remains conditional on the inherited all-size compiler, -GL-cover/common-ancestor charts, restored rows, routing, prime supply, recovery, -complex-symbolic and analytic interfaces. Those internals are contracts in these -diagrams. Neither compact bus notation nor a successful documentation build -proves unexpanded internals. -The local scan covers 859,771 operations and 3,439,036 explicit value/frame -producer-consumer links. All 24 copied-center lifetimes and their 220 reads each -are checked. Five stage streams are compared against the original Lowerer, and -all 4,021,600 full-address keys across 200 stage/replica namespaces are checked -for injectivity. The public deliverable uses the reproducible extractor, -manifest and summary rather than a giant pre-expanded trace. +The all-size compiler, chart, routing, prime, recovery and analytic interfaces +remain inherited hypotheses. Functional blocks and arrows summarize roles and +compiler flow; they do not establish a complete physical circuit or prove the +unexpanded theorem internals. Source lineage, licenses and contributor credits +remain in the construction's heritage record. -## Notation and provenance - -Compact buses, indexed repeated instances and linked hierarchy follow familiar -EDA conventions while preserving mathematical stream types. Frame dimension -is not a hardware bit width, and these diagrams do not claim a hardware clock -rate. The exact expansion formulas are project-specific. - -Examples of primary-source conventions: -- [KiCad buses and hierarchical sheets](https://docs.kicad.org/9.0/en/eeschema/eeschema.html#buses) -- [AMD Vivado selective logic expansion](https://docs.amd.com/r/en-US/ug893-vivado-ide/Expanding-Logic-from-Selected-Cells-and-Pins) -- [MathWorks bus element interfaces](https://www.mathworks.com/help/simulink/ug/simplify-subsystem-bus-interfaces.html) - -Historical documentation is preserved unchanged. Contributor licenses, -attribution and AI-assistance disclosures remain part of the source lineage. -The construction's heritage appendix is the authoritative detailed credit -record; diagrams do not imply contributor review or endorsement. +[Focused cache and navigation verification](joint259_system_docs_incremental_README.md) + python -B joint259_system_docs_incremental_test.py --source /path/to/verified/construction --raster-dpi 40 diff --git a/docs/multicut-delayed-inverse-checkpoint/connection_index.json b/docs/multicut-delayed-inverse-checkpoint/connection_index.json index 27df217ebb..877494302d 100644 --- a/docs/multicut-delayed-inverse-checkpoint/connection_index.json +++ b/docs/multicut-delayed-inverse-checkpoint/connection_index.json @@ -1015,69 +1015,13 @@ ], "complete_individual_operation_inventory": false, "coverage_limits": [ - "E-series IDs are block dependencies, not scalar/COPY events.", - "Global numerical operation counts do not prove complete per-operation extraction.", - "Parametric address formulas are anchored to BankPlan; no fabricated gate-level internals." + "Block dependencies describe architecture and compiler/proof flow, not individual physical-operation wires.", + "The visual views and reference indexes do not expand inherited theorem internals." ], - "level": "functional blocks with exact parametric wiring contracts", - "operation_schema": { - "global_fields": [ - "op", - "operand_a", - "operand_b", - "coefficient_or_frame", - "frame_or_rank", - "category_or_boundary", - "stage", - "complement" - ], - "local_fields": [ - "op", - "a", - "b", - "c", - "f", - "z" - ], - "local_helper_ids": [ - 3520, - 20106 - ], - "local_source_ids": [ - 0, - 1759 - ], - "local_target_ids": [ - 1760, - 3519 - ], - "local_work_id": 20107, - "opcodes": { - "ADD": 1, - "BRIDGE": 5, - "COMPLETE": 6, - "COPY": 2, - "ERASE": 3, - "EXCHANGE": 7, - "IDLE": 4, - "MOVE": 0 - } - }, - "parametric_domains": { - "cover_classes": "symbolic finite GL cover; compiler theorem supplies enumeration", - "helper_assignments": 3317400, - "helper_roles": 16587, - "ports": 1760, - "replicas": 40, - "stages": 5 - }, - "schema": "selected-construction-connections/1", + "level": "functional architecture block dependencies", + "schema": "selected-functional-architecture/1", "scientific_archive_manifest_sha256": "9f6d8637b9a119cfe4566a02ab2d704f23c502e5e4357b40c28ef85a3fd4de89", "source_manifest_sha256": "0af10dcca505cbd913cf1b9220a08b6a62687650ace4e3d1efd093e828e3990e", - "state_versions": { - "derived_ssa_extraction": "Separate JOINT259_CONNECTION_EXTRACT.py generates complete local value/frame producer-consumer inventory; this overview index is not that trace.", - "native": false - }, "unexpanded": [ "all-size weighted compiler internals", "full GL-cover and common-ancestor charts", diff --git a/docs/multicut-delayed-inverse-checkpoint/diagram_model.json b/docs/multicut-delayed-inverse-checkpoint/diagram_model.json index dbcfe5bac4..75ba7e062d 100644 --- a/docs/multicut-delayed-inverse-checkpoint/diagram_model.json +++ b/docs/multicut-delayed-inverse-checkpoint/diagram_model.json @@ -1101,5 +1101,5 @@ ], "schema": "selected-construction-architecture/1", "source_manifest_sha256": "9f6d8637b9a119cfe4566a02ab2d704f23c502e5e4357b40c28ef85a3fd4de89", - "title": "[Info Docs] Logical and Functional Diagrams, Explanations, and Build Tools for PR #277" + "title": "[Info Docs] Architecture Reference and Workflow Diagrams for PR #277" } diff --git a/docs/multicut-delayed-inverse-checkpoint/functional_architecture.pdf b/docs/multicut-delayed-inverse-checkpoint/functional_architecture.pdf index 64ff02e518c645b450272fa630ddb468bd29c4fc..3bb0b1cd4c72603f2f1a4a4e36978dfc7ab5eb4d 100644 GIT binary patch delta 29401 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 delta 29240 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 Ue#bipj=52Ethu>#zI^Qe0mxtT2mk;8 diff --git a/docs/multicut-delayed-inverse-checkpoint/incremental_receipt.json b/docs/multicut-delayed-inverse-checkpoint/incremental_receipt.json index d077f20ea7..9d6fd01d86 100644 --- a/docs/multicut-delayed-inverse-checkpoint/incremental_receipt.json +++ b/docs/multicut-delayed-inverse-checkpoint/incremental_receipt.json @@ -13,12 +13,12 @@ }, "extra": {}, "files": { - "cache_implementation": "6f58d535d1bcbae03bc0ad55d13d9712e6b8fede7a30ed208d48dc373fb2e0c0", + "cache_implementation": "d8b68721b990d470f2df1a9a71631eddc177a8fdd13712f7f7ef45c157031e9b", "font_Vera.ttf": "c4c45690b345435b2cba52ecabe275f05e49b389b39fe68ad03afbb551288d3d", "font_VeraBd.ttf": "cc037385e4d55bfde89b13e03091ee93bf40c0c52ddd391ff031ab276f13b8e9", - "renderer": "5cffa0f1fd4482880c4eac652a7ac64bb8e8a7ffc10324f9e8fb1f791aea0c88", + "renderer": "b95275e4aeb973e54ff48772b89f5694cff53d410e83b2ef3146a08ee727600e", "renderer_module_hierarchy_views": "defdda0f0434bd6ec7200e6c2863916e52425445729d381af751dfc791a07353", - "renderer_module_previews": "c56d7888582da9c617f87926c481242900bdb3e92080003b30e751a6d014d361", + "renderer_module_previews": "13673f01cce4e69531e6f1436d1d15f0808fe73c4b26af8abfd2a6eff5909671", "renderer_module_source_views": "b87a69833347df7f56d93c83b185fb3be3c616df22c860555385f33ea485be2c", "requirements": "a9dbb802817bb330332628dc8c98fac5178600766e0837e9cd042438e159d9c3", "source_binding": "53acbfc4c9cb93404f951789e866339a315ae84d6218a32932638a6ecc6d961c" @@ -37,13 +37,11 @@ "schema": "joint259-vector-page-cache/1", "source_manifest_sha256": "9f6d8637b9a119cfe4566a02ab2d704f23c502e5e4357b40c28ef85a3fd4de89" }, - "dependency_sha256": "3573eb79be53fb633485c43af72ac181fb635db6688ebe1d8aff0786c82ed984", - "model_sha256": "70efd42b62459028187d1fe040b343cfabd8a8e6744dcdb48bbd61d5f0908010", + "dependency_sha256": "584e62b411bd5b77569851d5296b31bb5867db5e6348c8aa67f81f03a972ea56", + "model_sha256": "90bb02f05c9413c36900ec1e12cc45e030c37ac873426e95f3d19eb4147d8b06", "page_cache_validation": "Schema, dependency and drawing-plan keys, PDF hash and single-page structure checked before reuse.", "pdfs": { - "complete_system.pdf": "1db865c17ef25786c715a5c7bbaa58707a9b565303da6b4261134157d757ce20", - "functional_architecture.pdf": "4bbee6f185f11d8283b9432a2e8fb011f70c335defc881027220c3c90dcbc37c", - "logical_wiring.pdf": "f700f70c7192d57271fcb6434b16720b4f39d60850c72d76040b5d67cd9497f5" + "functional_architecture.pdf": "21cce9f08282a13775f6282f0bc9802c6ca6449f9c899bac75d26ca91842f556" }, "schema": "joint259-vector-page-cache/1", "scope": "Vector-page rendering cache only; science replay is separate.", diff --git a/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_build.py b/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_build.py index d2bde29654..1423c09e8d 100644 --- a/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_build.py +++ b/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_build.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -"""Regenerate both selected-construction diagrams, master PDF and connection index. +"""Regenerate the selected functional architecture reference and its indexes. No Graphviz is used. Diagrams are vector paths in deterministic ReportLab PDFs. The source package is read-only. The default build writes only to a new --output. @@ -144,18 +144,14 @@ def finish(self): for page in r.pages:assert (page.extract_text()or"").strip() return raw,{"pages":self.pages,"internal_links":len(self.links),"blocks":sorted(self.used_blocks),"sha256":sha(raw)} def cover(d): - d.page("CONTENTS","The selected construction, at three levels","Functional architecture and logical wiring") + d.page("CONTENTS","The selected construction, at three levels","Functional architecture and compiler workflow") d.text(42,673,d.model["title"],14,INK,width=1000,bold=True) d.panel(42,458,500,155,"THE NUMERICAL CONTRACT","513 retained PR259 cohorts + seven delayed-inverse intervals + the same 25 PR258/260 retimings applied once.\nConditional kappa: 0.000711045547624400.\nLiteral stock 867,045; 19,786,600 paid children.",TEAL) - d.panel(566,458,512,155,"HOW TO READ THE CONNECTIONS",str(len(d.model['blocks']))+" current blocks and "+str(len(d.model['edges']))+" typed block dependencies. All 87 original hierarchy IDs are reconciled separately.\nL01-L05 expand parametric wiring. The literal event inventory is separate; inherited all-size internals remain contracts.",GOLD) + d.panel(566,458,512,155,"HOW TO READ THE CONNECTIONS",str(len(d.model['blocks']))+" current blocks and "+str(len(d.model['edges']))+" typed block dependencies. All 87 original hierarchy IDs are reconciled separately.\nArchitecture views show high-level process and compiler flow. Inherited all-size internals remain contracts.",GOLD) y=418 d.link(46,y,"Full integer-product hierarchy and all 87 original blocks","H_SYSTEM",850,12);y-=27 - if d.kind in ("functional","combined"): - for key,t in [("FVIEW1","Functional: source-bound local supplier"),("FVIEW2","Functional: global assembly and exact closure")]: - d.link(46,y,t,key,600,13);y-=29 - if d.kind in ("logical","combined"): - for key,t in [("L01","Logical: stream ABI and state transitions"),("L02","Logical: seven delayed-inverse interval wires"),("L03","Logical: five-stage data-bank wiring"),("L04","Logical: bank address and replica mapping"),("L05","Logical: proof ports and unexpanded interfaces")]: - d.link(46,y,t,key,750,13);y-=29 + for key,t in [("FVIEW1","Functional: source-bound local supplier"),("FVIEW2","Functional: global assembly and exact closure")]: + d.link(46,y,t,key,600,13);y-=29 for key,t in [("CATALOG","Block catalog: what, why, ports, requirements and proof"),("REQUIREMENTS","Requirements and source traceability"),("SOURCES","Exact source anchors and hashes"),("SCOPE","Coverage, heritage and reproduction boundary")]: d.link(46,y,t,key,820,12);y-=27 d.text(46,y-12,"Navigation: clickable blocks open the catalog; source IDs open exact proof anchors; every page returns here.",11,MUTED,width=1000) @@ -180,69 +176,6 @@ def fviews(d): d.text(42,663,"The bit and complex suppliers remain distinct. Scalar, geometric, bank, moment and finite proof ports must all close.",13,MUTED) d.panel(42,128,589,135,"SIDE INPUTS AND BOUNDARIES","F10 semantics/prefix and F15 geometry/primes feed F20. F11 records feed F14; F16 guards also feed F19. The connection index names all declared block inputs.\nF21 requires raw, bit, scalar, primes, banks, complex, math and finite results, then rechecks the source manifest.",TEAL) d.text(42,77,"The arrows are compiler/proof dataflow. No local optimization or individual PR contributes an independent additive kappa gain.",11,MUTED) -def lviews(d): - d.page("L01","Logical wiring | actual stream ABI","Six-field local word to eight-field global record") - d.panel(42,502,498,148,"LOCAL REGISTER INTERFACE","source s: 0 <= s < 1,760\nold target t: 1,760 <= t < 3,520\nindependent helper h: 3,520 <= h < 20,107\ntemporary work: 20,107, live only inside COPY/ERASE",BLUE) - d.panel(565,502,513,148,"LOCAL RECORD (op,a,b,c,f,z)","MOVE: (0, q, before, after, rank, 0)\nADD: (1, dst, src, coefficient, common_frame, category)\nCOPY: (2, source, temporary, input_frame, output_frame, rank)\nERASE: (3, source, temporary, input_frame, output_frame, rank)\nThe local center rank is 22 for both COPY and ERASE.",TEAL,True) - y=419 - for title,txt in [("ADD state transition","dst[v+1] <- dst[v] + coefficient * src[u]; every other payload version survives. MOVE changes address-frame state, not the scalar payload version."),("COPY lifecycle","COPY creates a temporary view of an immutable source in an explicit frame. Its 220 scatter consumers occur before ERASE; reflected stages create a fresh copy and never invert erasure."),("Global record","(op, family_a, family_b, coefficient_or_frame, frame_or_rank, category_or_boundary, stage, complement). Interpretation is opcode-specific; frame fields are never mistaken for stream IDs."),("Connection extraction boundary","The authoritative word has explicit source/destination IDs and lifetime delimiters. SSA-style versions and producer/consumer edges are a derived inventory, not native fields. Block-edge E IDs do not enumerate these operations.")]: - y=d.text(45,y,title,14,TEAL,bold=True);y=d.text(45,y-5,txt,12,INK,1020)-20 - d.link(45,88,"F03 emitter","B_F03",140);d.link(215,88,"F10 semantic replay","B_F10",180);d.link(430,88,"F11 global ABI","B_F11",165) - d.page("L02","Logical wiring | delayed target inverse","Exact parametric six-stream network; repeated seven times") - d.text(42,666,"For one interval j: targets [p,t1,t2,t3], helpers [low,high]. All old target and helper values are arbitrary.",13,MUTED) - xs=[155,370,585,800,1000];ys=[580,516,452,388,324,260];names=["pivot p","target t1","target t2","target t3","helper low","helper high"] - for yy,name in zip(ys,names): - d.text(42,yy-4,name,12,INK,bold=True);d.c.setStrokeColor(HexColor("#C0CFD5"));d.c.line(142,yy,1044,yy) - for x,lab in zip(xs[1:4],["frame ZERO","L: rank 5 / H: rank 14","K: rank 20"]):d.text(x-73,620,lab,12,TEAL,width=215,bold=True) - # Three target subtractions, then two pivot compensations, then inverse. - for yy in ys[1:4]: - d.c.setStrokeColor(HexColor(BLUE));d.c.line(xs[1],ys[0],xs[1],yy) - d.c.setFillColor(HexColor(BLUE));d.c.circle(xs[1],yy,6,fill=1,stroke=0);d.text(xs[1]+11,yy+7,"-p",10,BLUE) - for off,yy,label in [(-15,ys[4],"-low @L"),(15,ys[5],"-high @H")]: - d.c.setStrokeColor(HexColor(TEAL));d.c.line(xs[2]+off,yy,xs[2]+off,ys[0]);d.c.setFillColor(HexColor(TEAL));d.c.circle(xs[2]+off,ys[0],6,fill=1,stroke=0);d.text(xs[2]-65,yy+12,label,10,TEAL) - for yy in ys[1:4]: - d.c.setStrokeColor(HexColor(GOLD));d.c.line(xs[3],ys[0],xs[3],yy) - d.c.setFillColor(HexColor(GOLD));d.c.circle(xs[3],yy,6,fill=1,stroke=0);d.text(xs[3]+12,yy+7,"+p",10,GOLD) - d.panel(42,78,502,121,"EXACT ENDPOINT","Each of p,t1,t2,t3 receives -low-high. Helpers retain their values. The literal inverse restores all six columns.\n8 ADDs per interval; 56 total replacement ADDs.",TEAL) - d.panel(566,78,512,121,"FRAME / OBSERVER CONTRACT","L <= H <= K, with nonzero exact Gram determinants. No surviving external observer crosses the interval. Four retained-cohort cuts see zero on all 14 chosen helper-prefix columns.",GOLD) - d.link(800,226,"F08 proof and witnesses","B_F08",230) - d.page("L03","Logical wiring | five-stage data paths","One logical replica; literal expansion repeats forty times") - d.text(42,666,"Every stage iterates its complete local word for all cover classes. Helper families are reused logically, then banked stage-privately.",13,MUTED) - lanes=[("X1",578),("Y1",492),("X2",406),("Y2",320)] - for name,yy in lanes: - d.text(42,yy-4,name,14,INK,bold=True);d.c.setStrokeColor(HexColor("#C0CFD5"));d.c.line(113,yy,1070,yy) - pairs=[(0,1),(1,0),(0,1),(3,2),(2,3)] - for i,((a,b),x) in enumerate(zip(pairs,[175,354,533,712,891])): - d.text(x-39,620,"stage %d %s"%(i,"R" if i in(1,3)else"F"),13,TEAL,bold=True) - ya,yb=lanes[a][1],lanes[b][1];d.c.setStrokeColor(HexColor(BLUE));d.c.setLineWidth(2);d.c.line(x,ya,x,yb) - for yy in [ya,yb]:d.c.setFillColor(HexColor(BLUE));d.c.circle(x,yy,8,fill=1,stroke=0) - d.text(x-56,245,"source %s"%lanes[a][0],10,MUTED,140);d.text(x-56,229,"target %s"%lanes[b][0],10,MUTED,140) - if i in(1,2,4):d.text(x-66,286,"idle + bridges",10,GOLD,width=150) - d.panel(42,73,1028,111,"EXACT BOUNDARY CONNECTIONS","After stage 1: X1 += X2; Y2 -= Y1. After stage 2: Y2 += Y1; X1 -= X2.\nAfter stage 4: Y1 -= Y2; X2 += X1. Final pairs (X1,Y1) and (X2,Y2) exchange as newX=oldY, newY=-oldX.\nIDLE projector widths: (46,46), (23,23), then (50,50,4,4). Each applies across all 1,760 ports.",TEAL) - d.link(842,208,"F11 exact route projectors","B_F11",240) - d.page("L04","Logical wiring | exact bank and replica map","Parametric expansion, not millions of drawn edges") - d.panel(42,491,485,157,"INDEX DOMAIN","stage i in [0,5); replica r in [0,40); port t in [0,1760).\nResidual width a=24-dim(entrance(u)). Index j_a(u) is local to the sorted role family of width a, not the global helper census.\nOccurrence q=40*j_a(u)+r; symbolic cover class d.",BLUE) - d.panel(554,491,524,157,"FULL ADDRESS","data family=(4*r+bank)*1760+t\nhelper family=281600+i*117089+stage_bank\nhelper route=d*tau_i*N^-1\nexternal work family=867045, route=(external_work,0)\nN=(block+1)*Pi*embed_i(B^-1)",TEAL) - d.text(43,459,"E-BANK: choose the unique rank-a segment [lo,hi) containing q, with block-slot list S and stage-bank base beta.",11,INK) - d.text(43,439,"k=floor((q-lo)/len(S)); b=S[(q-lo) mod len(S)]; stage_bank=beta+k; offset=sum(widths[0:b]); widths is this pattern.",11,TEAL) - d.text(43,418,'Example pattern 17: five residual blocks of width 24, totaling 120 coordinates.',10,MUTED) - x=43;y=337;unit=8.4 - for k,rank in enumerate([24,24,24,24,24]): - d.c.setFillColor(HexColor(["#C4E2E9","#A8D2DA"][k%2]));d.c.rect(x,y,rank*unit,60,fill=1,stroke=0) - d.text(x+20,y+22,"block %d: rank %d"%(k,rank),12,INK,width=rank*unit-22);x+=rank*unit - d.panel(42,133,503,163,"RECONCILIATION","3,317,400 assignments = 5*40*16,587.\n200 complete stage/replica namespaces are injective in (family,route), even with 34,965 intentional same-family coincidences.\n770 frame-ID charts; 459 distinct entrance bases.",TEAL) - d.panel(568,133,510,163,"COMPLETION DISCHARGE","Match all 2,827 tagged entrances and prove each full 240-column bank/work swap. Subtract only tagged counts.\nOrdinary children sharing widths 5,10,15,20,50 survive. map_boundary_row rejects COMPLETE opcode 6.",GOLD) - d.link(43,86,"F12 assignment","B_F12",180);d.link(260,86,"F13 actual charts","B_F13",180);d.link(480,86,"F14 full addresses","B_F14",200) - d.page("L05","Logical wiring | closed proof ports","What is expanded, parameterized, and still inherited") - d.panel(42,456,322,186,"EXPANDED / EXACT","Local ADD/MOVE/COPY/ERASE ABI; seven interval templates; five active data-bank pairs; boundary shears/exchanges; exact stage/replica/helper address formulas.\nAll F01-F21 ports have source anchors.",TEAL) - d.panel(389,456,332,186,"PARAMETRIC REPETITION","513 retained cohorts with exact candidate bases; 25 scalar-keyed retimings; 18 packing patterns; 40 replicas; 200 stage/replica namespaces; all symbolic cover classes.\nWitness IDs remain authoritative.",BLUE) - d.panel(747,456,331,186,"UNEXPANDED INTERNALS","All-size weighted compiler, full GL-cover/common-ancestor charts, restored-row routing primitives, eligible-prime supply, recovery and complex symbolic/analytic theorems.\nThese are contracts, not gate-level drawings.",GOLD) - d.text(44,412,"Required proof ports into F21",19,INK,bold=True) - ports=[("raw","reconstructed source ledger"),("bit","physical / global / geometry"),("scalar","F2, chosen lift, source decoder"),("primes","actual determinant inventory"),("banks","full-address callable bank word"),("complex","pinned complex source and guard"),("math","two moments + bootstrap + outer47"),("finite","complete bill and full cutoff")] - for i,(a,b) in enumerate(ports): - x=45+(i%2)*526;y=342-(i//2)*60 - d.text(x,y,a,13,TEAL,bold=True);d.text(x+84,y,b,12,INK,width=418) - d.text(44,71,"Coverage limit: these PDFs do not claim an individual-operation connection inventory. See connection_index.json for exact level and extraction status.",11,RED,width=1010) def catalog(d): for i in range(0,len(d.model["blocks"]),2): bs=d.model["blocks"][i:i+2] @@ -284,30 +217,30 @@ def scope(d): sections=[ ("Selected active heritage","PR249's 21 transported entrances -> PR259's 513 retained cohorts (five quartets removed) + seven new delayed-inverse intervals -> 25 same-gate PR258/PR260 retimings once. PR254 is ancestry, not another additive saving. PR251's extra sixteen entrances are excluded."), ("Architectural and theorem heritage","PR234 supplies Henry Grant / hcg890's five-stage architecture and finite interfaces. PR237 is a prior width-120 bank extension; no exclusive priority is claimed. The source527 and completed-bank chains retain all upstream licenses and contributor notices. Complex source is Jacob Sussman's f010392 snapshot; PR209 is its documentation pointer, and PR193 supplies the helper lineage."), - ("Coverage stated exactly","The current block catalog and connection index account for every declared input port. All 87 original hierarchy IDs are explicitly reconciled. Logical sheets give compact parametric wiring; the separate local event extractor provides value/frame versions and producer-consumer edges. The symbolic cover domain and inherited theorem internals remain unexpanded."), + ("Coverage stated exactly","The current architecture catalog and dependency index account for every declared block input port. All 87 original hierarchy IDs are explicitly reconciled. The visual views summarize architecture and compiler flow; reference pages preserve source and requirement traceability. Inherited theorem internals remain unexpanded."), ("Evidence and pending checks","The recorded cloud admission freshly executed changed stages and reused byte/AST-bound unchanged signed-source and complex evidence. Mac standalone replay has now reported all eight stages passing with 143 unchanged source files. This explicit PR259 hybrid checkpoint remains mathematically conditional and is below the later PR266 frontier. Documentation checks are separate from scientific replay."), ("Public follow-up only","Construction checkpoint PR #277: https://github.com/CrocSwap/integer-mult-bounds/pull/277. Public source commit c2f07d311bfdad0d89bf961e4da133ee97bb78de is linked in README.md. Source anchors retain exact relative paths, symbols, line numbers and hashes. The historical combined_system_schematic_20261010 generator is preserved unchanged.") ] y=666 for title,body in sections: y=d.text(43,y,title,15,TEAL,bold=True)-4;y=d.text(43,y,body,12,INK,1018)-21 - d.page("BUILD","Reproduce both diagram families","Pinned Python dependencies; no Graphviz requirement") + d.page("BUILD","Reproduce the architecture reference","Pinned Python dependencies; no Graphviz requirement") y=672 for title,body in [ ("Install","Python 3.11+; python -m pip install -r joint259_system_docs_requirements.txt. Pinned reportlab 4.4.9, pypdf 6.10.0, Pillow 12.3.0, charset-normalizer 3.5.1. Graphviz is not used or required."), - ("One build command","python -B joint259_system_docs_incremental.py --source /path/to/public-package --output joint259-docs-build --svg. An admitted source ZIP also works. Actual consumed manifest is recorded separately from the tested science archive in source_binding.json and QA.json."), - ("Outputs","functional_architecture.pdf; logical_wiring.pdf; complete_system.pdf; connection_index.json; source_index.json; requirement_traceability.json; diagram_model.json; QA.json. Both families are regenerated from the same block/edge model and same pinned source."), + ("Architecture build command","python -B joint259_system_docs_incremental.py --source /path/to/public-package --output joint259-docs-build --svg. An admitted source ZIP also works. Actual consumed manifest is recorded separately from the tested science archive in source_binding.json and QA.json."), + ("Outputs","functional_architecture.pdf; summary-functional.svg; QA.json; incremental_receipt.json. The retained renderer also emits local source, requirement and dependency indexes from the same pinned source."), ("Automatic reproducibility checks","Build every PDF twice in memory and require byte-identical SHA256, unchanged manifest, no missing/extra source files, valid proof anchors, all catalog block IDs present, all internal links resolved, nonempty extractable page text and no layout overflow. QA.json records counts, pins and output digests."), - ("Independent visual check","Use Poppler: pdftoppm -png -r 100 complete_system.pdf review/page. Inspect every page for clipping, missing glyphs and readable connectors. Poppler is an optional renderer, not a generation dependency; record its actual version in visual QA."), + ("Independent visual check","Use Poppler: pdftoppm -png -r 100 functional_architecture.pdf review/page. Inspect every page for clipping, missing glyphs and readable connectors. Poppler is an optional renderer, not a generation dependency; record its actual version in visual QA."), ("Scientific verification remains separate","From a clean source package, use Python 3.11+ and SymPy 1.14.0 with assertions enabled: python -B verify.py --output /new/output/directory. Never write inside the immutable source package; never use -O. A successful documentation build is not an all-eight-stage science replay.") ]: y=d.text(43,y,title,15,TEAL,bold=True)-5;y=d.text(43,y,body,12,INK,1015)-25 def render(kind,model,refs): + if kind != "functional":raise ValueError("Unsupported architecture output kind") validate_model(model) d=Doc(kind,model,refs);cover(d) hierarchy_views.overview(d);hierarchy_views.transforms(d) - if kind in("functional","combined"):fviews(d) - if kind in("logical","combined"):lviews(d) + fviews(d) catalog(d);hierarchy_views.catalog(d);hierarchy_views.connections(d);hierarchy_views.requirements(d);requirements(d);sources(d);scope(d) return d.finish() def integrity(root,expected): @@ -318,11 +251,11 @@ def main(source_override=None): consumed_manifest=sha((root/'MANIFEST.json').read_bytes()) source_binding={**source_views.BINDING,'consumed_manifest_sha256':consumed_manifest,'consumed_manifest_members':count,'consumed_total_paths':count+1,'source_binding_configuration_sha256':sha((BASE/'joint259_system_docs_source_binding.json').read_bytes())} files={};reports={} - for kind,name in [("functional","functional_architecture.pdf"),("logical","logical_wiring.pdf"),("combined","complete_system.pdf")]: + for kind,name in [("functional","functional_architecture.pdf")]: one,report=render(kind,model,refs);two,_=render(kind,model,refs) if one!=two:raise ValueError("Nondeterministic "+kind) files[name]=one.decode("ascii");reports[name]=report - index={"schema":"selected-construction-connections/1","source_manifest_sha256":model["source_manifest_sha256"],"level":"functional blocks with exact parametric wiring contracts","complete_individual_operation_inventory":False,"blocks":model["blocks"],"block_edges":model["edges"],"operation_schema":{"local_fields":["op","a","b","c","f","z"],"global_fields":["op","operand_a","operand_b","coefficient_or_frame","frame_or_rank","category_or_boundary","stage","complement"],"opcodes":{"MOVE":0,"ADD":1,"COPY":2,"ERASE":3,"IDLE":4,"BRIDGE":5,"COMPLETE":6,"EXCHANGE":7},"local_source_ids":[0,1759],"local_target_ids":[1760,3519],"local_helper_ids":[3520,20106],"local_work_id":20107},"parametric_domains":{"stages":5,"replicas":40,"ports":1760,"helper_roles":16587,"helper_assignments":3317400,"cover_classes":"symbolic finite GL cover; compiler theorem supplies enumeration"},"state_versions":{"native":False,"derived_ssa_extraction":"Separate JOINT259_CONNECTION_EXTRACT.py generates complete local value/frame producer-consumer inventory; this overview index is not that trace."},"unexpanded":["all-size weighted compiler internals","full GL-cover and common-ancestor charts","restored-row and routing primitive internals","prime-supply theorem","recovery theorem","complex symbolic and analytic theorems"],"coverage_limits":["E-series IDs are block dependencies, not scalar/COPY events.","Global numerical operation counts do not prove complete per-operation extraction.","Parametric address formulas are anchored to BankPlan; no fabricated gate-level internals."]} + index={"schema":"selected-functional-architecture/1","source_manifest_sha256":model["source_manifest_sha256"],"level":"functional architecture block dependencies","complete_individual_operation_inventory":False,"blocks":model["blocks"],"block_edges":model["edges"],"unexpanded":["all-size weighted compiler internals","full GL-cover and common-ancestor charts","restored-row and routing primitive internals","prime-supply theorem","recovery theorem","complex symbolic and analytic theorems"],"coverage_limits":["Block dependencies describe architecture and compiler/proof flow, not individual physical-operation wires.","The visual views and reference indexes do not expand inherited theorem internals."]} files["connection_index.json"]=stable(index) index['source_manifest_sha256']=consumed_manifest index['scientific_archive_manifest_sha256']=model['source_manifest_sha256'] diff --git a/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_incremental.py b/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_incremental.py index 6eca2a0ec4..2f699974d7 100644 --- a/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_incremental.py +++ b/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_incremental.py @@ -37,7 +37,7 @@ SCHEMA = "joint259-vector-page-cache/1" BASE_DOC = renderer.Doc BASE_RENDER = renderer.render -KINDS = {"functional": "functional_architecture", "logical": "logical_wiring", "combined": "complete_system"} +KINDS = {"functional": "functional_architecture"} def canonical(value): @@ -161,6 +161,8 @@ def finish(self): def plan(kind, model, refs): + if kind not in KINDS: + raise ValueError("Unsupported architecture output kind") """Uses the authoritative renderer; no duplicated page-dispatch logic.""" previous = renderer.Doc renderer.Doc = PlanningDoc @@ -321,6 +323,8 @@ def __init__(self, model, cache=None, extra_dependencies=None, svg=False): self.svg_version = svg_version() if svg else None def render(self, kind, model, refs): + if kind not in KINDS: + raise ValueError("Unsupported architecture output kind") start = time.perf_counter() pages, report = plan(kind, model, refs) planning_seconds = time.perf_counter() - start diff --git a/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_incremental_README.md b/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_incremental_README.md index 22f3b9527a..bb563a820b 100644 --- a/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_incremental_README.md +++ b/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_incremental_README.md @@ -1,101 +1,36 @@ -# Incremental vector-page builds +# Functional architecture build and page cache -This is a documentation cache for the selected hybrid construction. It does not -cache or substitute for scientific verification. The authoritative source-tree -integrity check still runs before and after the documentation build. +The retained incremental renderer builds only functional_architecture.pdf +and summary-functional.svg. It does not regenerate logical or combined output +families. The runtime and model dependencies are retained together with the +functional-only cache/navigation test runner. -## One command: PDF and SVG +## Build -From `processor_architectures`, with the pinned Python requirements installed: + python -m pip install -r joint259_system_docs_requirements.txt + python -B joint259_system_docs_incremental.py --source /path/to/construction --output /new/output --cache /path/to/page-cache.json --svg -```sh -python -B joint259_system_docs_incremental.py \ - --source pr259_interval_compatibility_20261010/hybrid_package \ - --cache joint259-page-cache.json \ - --output joint259-docs-new \ - --svg -``` +The output and cache must be outside the immutable scientific package. Omit +--svg to build without Poppler. Linked per-page functional SVGs are local build +outputs and are excluded from the public allowlist. --clean ignores the cache. -Choose a **new output directory** each time. Reuse the same cache file. Remove -`--svg` for a Python-only PDF build. SVG requires Poppler's `pdftocairo` on PATH; -the exact converter version is recorded. Graphviz is not used. The command -creates the same document/index families as the ordinary builder, plus linked -per-page SVG files and `incremental_receipt.json`. +Page drawing plans, renderer/configuration/font/source dependencies and PDF +hashes determine reuse. Navigation is rebuilt even when appearance is reused. +A missing or damaged cache causes rebuilding; it never bypasses source pins. +The cache is local acceleration state, not an authenticated proof receipt. -`--clean` ignores the saved cache. `--emit-json` emits `{files, cache, -measurements}` without filesystem writes, for environments with managed write -tools. An explicit `--cache` can still be read in this mode. The ordinary builder -remains available as an independent full-render reference. +## Focused verification -## What is actually incremental + python -B joint259_system_docs_incremental_test.py --source /path/to/construction --raster-dpi 40 -1. Execute the original document functions with a recording canvas. This is - lightweight layout and dependency planning; it does not paint PDF pages. -2. Hash each page's actual drawing commands, including text, geometry, colors, - widths and page-number text. This is a precise projection of the model fields - that affect that page. Unused model metadata does not repaint unrelated pages. -3. Bind that page hash to renderer and imported renderer code, cache code, - configuration, source manifest, font bytes, pinned requirements file and - installed package versions. -4. Check cached entry schema, keys, content digest and single-page structure. - Repaint only missing, changed or damaged entries. Retain old entries so an undo - can reuse the original pages. -5. Assemble the current ordered pages; rebuild every bookmark, outline and - internal/external link from the current plan. Deduplicate repeated font - resources. Regenerate all indexes and receipts from current inputs. +The fresh functional-only report covers 51 pages. It checks cold/warm/clean +byte equality, decoded drawing streams, page text, internal navigation, full +raster equality at the recorded resolution, controlled block and requirement +changes, dependency invalidation, damaged-cache repair, source-pin rejection, +JSON cache round trips and vector SVGs with resolved links. The old L04-only +case is removed because that output family is no longer present. -Navigation is intentionally not part of a page's paint key. A link-target-only -edit reuses the page appearance and rebuilds the correct link. Added/deleted -pages can repaint later pages because their visible page numbers change. -Renderer/font/configuration/source-pin/dependency changes conservatively -invalidate all page paintings. Model changes repaint only affected appearances. - -SVGs are self-contained vector exports of the same one-page PDFs, with current -clickable link overlays. Their cache also depends on the converter version. -Text is exported as vector glyph outlines. No raster images are introduced. - -This implementation is single-process: its short-lived renderer substitution -is not thread-safe. Run independent CLI processes rather than concurrent calls -to `Engine.render` inside one Python process. The cache is trusted local build -state, with accidental-corruption/staleness checks, not an authenticated store -against someone who can replace both an entry and its hashes. - -## Reproducibility contract - -A clean build through the incremental command and a warm/changed incremental -build produce byte-identical final PDFs for identical inputs. Their page content -streams, extracted text, link rectangles/targets and rasterized appearance are -also compared against the original monolithic renderer. The original renderer's -PDF object/resource layout differs, so its whole-file bytes are not expected to -match the assembled output. - -Cache reuse means only that the visual page bytes match the recorded build key. -It does not imply human visual approval or scientific correctness. A full model -digest and auxiliary hierarchy digest remain in the receipt even when no page -painting changes. `QA.json` retains the ordinary builder's stated scope. - -## Tests and measured timing - -```sh -python -B joint259_system_docs_incremental_test.py --source /path/to/verified/construction --raster-dpi 40 -``` - -Tests run in memory and print JSON. They do not edit the selected source package -or write generated files. Poppler's `pdftoppm` is required for raster equality; -`--raster-dpi 0` skips those checks, and `--skip-svg` skips SVG checks. - -The suite checks all three document families, byte-identical cold/warm/clean -results, exact decoded drawing-stream/text/link agreement with the original, -and every page's raster pixels at the stated resolution. Controlled edits cover -block behavior, visible names, summary text, requirements, source-index hashes, -diagram wiring, index formulas, catalog add/delete/ID rename, index-only edits, -navigation-only edits, stale receipts/content, wrong source pins and undo. -Dependency invalidation uses changed-digest overrides in memory rather than -modifying immutable source files. Changed variants compare to a fresh clean -build and check the first repainted page's pixels. SVG checks parse every output, -verify internal targets, count preserved external links and reject raster images. - -The JSON reports actual cold, warm and changed timings. These are local single -runs, not a statistical performance guarantee. Final assembly, validation and -source hashing still run, so speedup depends on workload and filesystem speed. -Human layout review remains separate from automated pixel equality. +The retained independent review files clearly identify their original +three-family review as historical. The fresh narrowed-build test report is +separate evidence and does not reuse the historical 161-page PASS claim. +Neither build nor documentation tests replay the scientific construction. diff --git a/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_incremental_test.py b/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_incremental_test.py index bf8e1d7ab7..8dfdc0715c 100644 --- a/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_incremental_test.py +++ b/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_incremental_test.py @@ -60,6 +60,19 @@ def run(source, dpi=40, svg=True): if dpi: version = subprocess.run(["pdftoppm", "-v"], stdout=subprocess.PIPE, stderr=subprocess.PIPE, check=True) report["raster_renderer"] = (version.stdout + version.stderr).decode("utf8").strip() + rejected = [] + for kind in ("logical", "combined"): + for label, call in (("renderer", lambda: r.render(kind, model, refs)), + ("planning", lambda: inc.plan(kind, model, refs)), + ("cache engine", lambda: inc.Engine(model).render(kind, model, refs))): + try: + call() + except ValueError as error: + assert "Unsupported architecture output kind" in str(error) + else: + raise AssertionError(("Rejected output family recreated", kind, label)) + rejected.append({"kind": kind, "entry_point": label}) + report["unsupported_output_kinds_rejected"] = rejected cache, baseline = {}, {} for kind in inc.KINDS: cold = inc.Engine(model, cache) @@ -90,14 +103,14 @@ def run(source, dpi=40, svg=True): "clean_warm_byte_identical": True, "original_decoded_streams_text_links_identical": True, "all_pages_raster_identical": bool(dpi)} - base_raw, base_details = baseline["combined"] + base_raw, base_details = baseline["functional"] def compare(label, changed_model, expected=None, changed_refs=None): current_refs = changed_refs if changed_refs is not None else r.source_index(source, changed_model) incremental = inc.Engine(changed_model, cache) - actual, details = incremental.render("combined", changed_model, current_refs) + actual, details = incremental.render("functional", changed_model, current_refs) clean = inc.Engine(changed_model) - expected_raw, _ = clean.render("combined", changed_model, current_refs) + expected_raw, _ = clean.render("functional", changed_model, current_refs) assert actual == expected_raw, label assert pdf_structure(actual) == pdf_structure(expected_raw), label event = incremental.events[-1] @@ -145,15 +158,6 @@ def wrapped(self, a, b, *args, **kwargs): with patched(inc.PlanningDoc, "arrow", change_wire): compare("diagram wiring coordinate", model, ["FVIEW1"]) - def change_formula(old): - def wrapped(self, x, y, text, *args, **kwargs): - if self.pages[-1]["id"] == "L04" and "helper family=" in str(text): - text = str(text).replace("helper family=", "helper family=1+") - return old(self, x, y, text, *args, **kwargs) - return wrapped - with patched(inc.PlanningDoc, "text", change_formula): - compare("index formula drawing", model, ["L04"]) - def change_target(old): def wrapped(self, contents, destinationname, *args, **kwargs): if destinationname == "B_F01": @@ -196,11 +200,11 @@ def finish_checks(report, source, model, refs, cache, base_raw, base_details, so # Controlled dependency digests avoid writing scientific inputs. for dependency in ("renderer_code", "font_bytes", "requirements_pin", "source_manifest", "configuration"): engine = inc.Engine(model, cache, extra_dependencies={dependency: "controlled different digest"}) - raw, details = engine.render("combined", model, refs) + raw, details = engine.render("functional", model, refs) assert len(engine.events[-1]["rendered_pages"]) == len(details["pages"]) assert raw == base_raw report["invalidation"].append({"dependency": dependency, "rendered_page_count": len(details["pages"])}) - pages, _ = inc.plan("combined", model, refs) + pages, _ = inc.plan("functional", model, refs) engine = inc.Engine(model, cache) plan_hash = inc.digest(inc.canonical(pages[0]["paint"])) first_key = inc.digest(inc.canonical([engine.dependency_hash, plan_hash])) @@ -210,7 +214,7 @@ def finish_checks(report, source, model, refs, cache, base_raw, base_details, so damaged = dict(cache) damaged[first_key] = dict(cache[first_key], **{field: value}) repair = inc.Engine(model, damaged) - raw, _ = repair.render("combined", model, refs) + raw, _ = repair.render("functional", model, refs) assert raw == base_raw assert repair.events[-1]["rendered_pages"] == ["CONTENTS"] report["stale_cache"].append({"damaged_field": field, "rebuilt": ["CONTENTS"], "clean_equality": True}) @@ -230,9 +234,9 @@ def finish_checks(report, source, model, refs, cache, base_raw, base_details, so report["all_clean_warm_artifacts_identical_after_cache_json_roundtrip"] = sorted(warm_files) if svg: exporter = inc.Engine(model, cache, svg=True) - exporter.render("combined", model, refs) + exporter.render("functional", model, refs) first = dict(exporter.svg_files) - exporter.render("combined", model, refs) + exporter.render("functional", model, refs) assert first == exporter.svg_files all_links, external_links = 0, 0 for name, value in first.items(): diff --git a/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_incremental_test_report.json b/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_incremental_test_report.json index 4d44fbe4ab..ec428e59a5 100644 --- a/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_incremental_test_report.json +++ b/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_incremental_test_report.json @@ -1,56 +1,30 @@ { "all_clean_warm_artifacts_identical_after_cache_json_roundtrip": [ "QA.json", - "complete_system.pdf", "connection_index.json", "diagram_model.json", "functional_architecture.pdf", "hierarchy_edges.json", "hierarchy_reconciliation.json", "incremental_receipt.json", - "logical_wiring.pdf", "requirement_traceability.json", "scientific_reproduction.json", + "source_binding.json", "source_index.json", - "summary-functional.svg", - "summary-logical.svg" + "summary-functional.svg" ], "baseline": { - "combined": { - "all_pages_raster_identical": true, - "clean_warm_byte_identical": true, - "cold_seconds": 0.5600937299896032, - "links": 861, - "original_decoded_streams_text_links_identical": true, - "original_seconds": 0.6714610400085803, - "pages": 56, - "sha256": "96fa78e11f50e3dc8e141783561b84178e41018500a22c63ca3d092db20d6b97", - "warm_rendered_pages": 0, - "warm_seconds": 0.3751406679948559 - }, "functional": { "all_pages_raster_identical": true, "clean_warm_byte_identical": true, - "cold_seconds": 0.5176007359987125, + "cold_seconds": 0.40844337502494454, "links": 843, "original_decoded_streams_text_links_identical": true, - "original_seconds": 0.5857771930022864, + "original_seconds": 0.5043624169193208, "pages": 51, - "sha256": "cfc7b280cb4fe4f57cc3a9e7675d8bb66e676f7025cda14ca480c5077d362130", + "sha256": "21cce9f08282a13775f6282f0bc9802c6ca6449f9c899bac75d26ca91842f556", "warm_rendered_pages": 0, - "warm_seconds": 0.3438484889920801 - }, - "logical": { - "all_pages_raster_identical": true, - "clean_warm_byte_identical": true, - "cold_seconds": 0.559185995007283, - "links": 836, - "original_decoded_streams_text_links_identical": true, - "original_seconds": 0.6914163559995359, - "pages": 54, - "sha256": "041e9c2a4d98ec1dc477eb93856c321743280f2b249acfce01850654fa087f3b", - "warm_rendered_pages": 0, - "warm_seconds": 0.4088810050016036 + "warm_seconds": 0.24827145808376372 } }, "dependencies": { @@ -63,13 +37,15 @@ }, "extra": {}, "files": { - "cache_implementation": "da984b83df1136cf4313e064be5289760b90db3081370aa93b6263ea75046d87", + "cache_implementation": "d8b68721b990d470f2df1a9a71631eddc177a8fdd13712f7f7ef45c157031e9b", "font_Vera.ttf": "c4c45690b345435b2cba52ecabe275f05e49b389b39fe68ad03afbb551288d3d", "font_VeraBd.ttf": "cc037385e4d55bfde89b13e03091ee93bf40c0c52ddd391ff031ab276f13b8e9", - "renderer": "65f07a75ffc10d51424f6762d05a196203ba40ded8020e1962cccf4ca94f4b00", + "renderer": "b95275e4aeb973e54ff48772b89f5694cff53d410e83b2ef3146a08ee727600e", "renderer_module_hierarchy_views": "defdda0f0434bd6ec7200e6c2863916e52425445729d381af751dfc791a07353", - "renderer_module_previews": "0fb682db3b5ba43f1592c3512786adfa635228d9b15d3cff5388a003cfd8b136", - "requirements": "a9dbb802817bb330332628dc8c98fac5178600766e0837e9cd042438e159d9c3" + "renderer_module_previews": "13673f01cce4e69531e6f1436d1d15f0808fe73c4b26af8abfd2a6eff5909671", + "renderer_module_source_views": "b87a69833347df7f56d93c83b185fb3be3c616df22c860555385f33ea485be2c", + "requirements": "a9dbb802817bb330332628dc8c98fac5178600766e0837e9cd042438e159d9c3", + "source_binding": "53acbfc4c9cb93404f951789e866339a315ae84d6218a32932638a6ecc6d961c" }, "packages": { "Pillow": "12.3.0", @@ -79,8 +55,8 @@ }, "python_version": [ 3, - 12, - 14 + 14, + 2 ], "schema": "joint259-vector-page-cache/1", "source_manifest_sha256": "9f6d8637b9a119cfe4566a02ab2d704f23c502e5e4357b40c28ef85a3fd4de89" @@ -88,23 +64,23 @@ "invalidation": [ { "dependency": "renderer_code", - "rendered_page_count": 56 + "rendered_page_count": 51 }, { "dependency": "font_bytes", - "rendered_page_count": 56 + "rendered_page_count": 51 }, { "dependency": "requirements_pin", - "rendered_page_count": 56 + "rendered_page_count": 51 }, { "dependency": "source_manifest", - "rendered_page_count": 56 + "rendered_page_count": 51 }, { "dependency": "configuration", - "rendered_page_count": 56 + "rendered_page_count": 51 } ], "limitations": [ @@ -116,113 +92,102 @@ { "byte_identical_to_clean": true, "case": "block behavior", - "clean_seconds": 0.5635528090060689, - "incremental_seconds": 0.3734269369888352, + "clean_seconds": 0.39549933292437345, + "incremental_seconds": 0.26607916702050716, "navigation_valid": true, "rendered_pages": [ "CATALOG" ], - "reused_page_count": 55 + "reused_page_count": 50 }, { "byte_identical_to_clean": true, "case": "block diagram summary", - "clean_seconds": 0.5511729440040654, - "incremental_seconds": 0.36243802501121536, + "clean_seconds": 0.39507204201072454, + "incremental_seconds": 0.2620136250043288, "navigation_valid": true, "rendered_pages": [ "FVIEW1" ], - "reused_page_count": 55 + "reused_page_count": 50 }, { "byte_identical_to_clean": true, "case": "block display rename", - "clean_seconds": 0.5877571169985458, - "incremental_seconds": 0.41119030700065196, + "clean_seconds": 0.40301445801742375, + "incremental_seconds": 0.261219208012335, "navigation_valid": true, "rendered_pages": [ "FVIEW1", "CATALOG" ], - "reused_page_count": 54 + "reused_page_count": 49 }, { "byte_identical_to_clean": true, "case": "requirement wording", - "clean_seconds": 0.5977035130053991, - "incremental_seconds": 0.43282983200333547, + "clean_seconds": 0.38324508303776383, + "incremental_seconds": 0.27595291601028293, "navigation_valid": true, "rendered_pages": [ "REQUIREMENTS" ], - "reused_page_count": 55 + "reused_page_count": 50 }, { "byte_identical_to_clean": true, "case": "index-only edge metadata", - "clean_seconds": 0.5835827160044573, - "incremental_seconds": 0.4690355409984477, + "clean_seconds": 0.39162383298389614, + "incremental_seconds": 0.26421816693618894, "navigation_valid": true, "rendered_pages": [], - "reused_page_count": 56 + "reused_page_count": 51 }, { "byte_identical_to_clean": true, "case": "source traceability hash projection", - "clean_seconds": 0.649373046006076, - "incremental_seconds": 0.4185768780007493, + "clean_seconds": 0.4246859160484746, + "incremental_seconds": 0.2594103330047801, "navigation_valid": true, "rendered_pages": [ "SOURCES" ], - "reused_page_count": 55 + "reused_page_count": 50 }, { "byte_identical_to_clean": true, "case": "diagram wiring coordinate", - "clean_seconds": 0.7039676040003542, - "incremental_seconds": 0.3911313610005891, + "clean_seconds": 0.42925504106096923, + "incremental_seconds": 0.2691116670612246, "navigation_valid": true, "rendered_pages": [ "FVIEW1" ], - "reused_page_count": 55 - }, - { - "byte_identical_to_clean": true, - "case": "index formula drawing", - "clean_seconds": 0.5819066320109414, - "incremental_seconds": 0.3941960130032385, - "navigation_valid": true, - "rendered_pages": [ - "L04" - ], - "reused_page_count": 55 + "reused_page_count": 50 }, { "byte_identical_to_clean": true, "case": "navigation-only internal target", - "clean_seconds": 0.5959960889886133, - "incremental_seconds": 0.38811475900001824, + "clean_seconds": 0.42008591699413955, + "incremental_seconds": 0.28413387504406273, "navigation_valid": true, "rendered_pages": [], - "reused_page_count": 56 + "reused_page_count": 51 }, { "byte_identical_to_clean": true, "case": "navigation-only external URL", - "clean_seconds": 0.5740871589950984, - "incremental_seconds": 0.3903254070028197, + "clean_seconds": 0.4079161250265315, + "incremental_seconds": 0.2490752920275554, "navigation_valid": true, "rendered_pages": [], - "reused_page_count": 56 + "reused_page_count": 51 }, { "byte_identical_to_clean": true, "case": "add catalog blocks and page", - "clean_seconds": 0.6297522839886369, - "incremental_seconds": 0.5380030819942476, + "clean_seconds": 0.38571954204235226, + "incremental_seconds": 0.35571429098490626, "navigation_valid": true, "rendered_pages": [ "CONTENTS", @@ -264,33 +229,33 @@ "SCOPE", "BUILD" ], - "reused_page_count": 19 + "reused_page_count": 14 }, { "byte_identical_to_clean": true, "case": "stable block ID rename", - "clean_seconds": 0.5770753729884746, - "incremental_seconds": 0.4044409670023015, + "clean_seconds": 0.40007641597185284, + "incremental_seconds": 0.2577053749701008, "navigation_valid": true, "rendered_pages": [ "CATALOG22" ], - "reused_page_count": 56 + "reused_page_count": 51 }, { "byte_identical_to_clean": true, "case": "delete added blocks and undo all edits", - "clean_seconds": 0.5497836649883538, - "incremental_seconds": 0.37009097800182644, + "clean_seconds": 0.38923045899719, + "incremental_seconds": 0.24704549997113645, "navigation_valid": true, "rendered_pages": [], - "reused_page_count": 56 + "reused_page_count": 51 } ], "raster_dpi": 40, - "raster_renderer": "pdftoppm version 26.05.0\nCopyright 2005-2026 The Poppler Developers - http://poppler.freedesktop.org\nCopyright 1996-2011, 2022 Glyph & Cog, LLC", + "raster_renderer": "pdftoppm version 26.02.0\nCopyright 2005-2026 The Poppler Developers - http://poppler.freedesktop.org\nCopyright 1996-2011, 2022 Glyph & Cog, LLC", "scope": "Documentation and cache tests only; no scientific replay.", - "source_files": 143, + "source_files": 136, "stale_cache": [ { "clean_equality": true, @@ -331,14 +296,40 @@ "status": "PASS", "svg": { "converter": { - "executable_sha256": "fae8b2fcb657cd4243be875978db1f5c0f5cfad6ef5b4e5d4b6f524867567e0e", - "version": "pdftocairo version 25.03.0\nCopyright 2005-2025 The Poppler Developers - http://poppler.freedesktop.org\nCopyright 1996-2011, 2022 Glyph & Cog, LLC" + "executable_sha256": "95a779ec46131bb296cccef9526e6d6a73fd6c11df3b119531e767f0f00ee734", + "version": "pdftocairo version 26.02.0\nCopyright 2005-2026 The Poppler Developers - http://poppler.freedesktop.org\nCopyright 1996-2011, 2022 Glyph & Cog, LLC" }, "embedded_raster_images": 0, "external_links": 87, - "internal_links": 774, - "pages": 56, + "internal_links": 756, + "pages": 51, "warm_identical": true }, + "unsupported_output_kinds_rejected": [ + { + "entry_point": "renderer", + "kind": "logical" + }, + { + "entry_point": "planning", + "kind": "logical" + }, + { + "entry_point": "cache engine", + "kind": "logical" + }, + { + "entry_point": "renderer", + "kind": "combined" + }, + { + "entry_point": "planning", + "kind": "combined" + }, + { + "entry_point": "cache engine", + "kind": "combined" + } + ], "wrong_scientific_pin_rejected": true } diff --git a/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_independent_review.json b/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_independent_review.json index 4f70c4435d..5a2fe129a3 100644 --- a/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_independent_review.json +++ b/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_independent_review.json @@ -1,145 +1,188 @@ { - "schema": "joint259-independent-documentation-review/1", - "reviewed_at_utc": "2026-10-10T03:40:00Z", - "status": "PASS_CORE_DOCUMENTATION_WITH_EXPLICIT_RELEASE_GATES", - "source_manifest_sha256": "9f6d8637b9a119cfe4566a02ab2d704f23c502e5e4357b40c28ef85a3fd4de89", - "final_raw_sha256": "acf510b1377a6bd96eea50577de1aa049382499335fa7e5cac9b0300ecb377c7", - "source_file_count": 143, - "source_pins": { - "joint259_system_docs_build.py": "65f07a75ffc10d51424f6762d05a196203ba40ded8020e1962cccf4ca94f4b00", - "joint259_system_docs_model.json": "e1071a2081cc1605539f19a1368d3337e51d42eaf4fce04fd9a3e16765585bd7", - "joint259_system_docs_hierarchy.json": "5254b3b9c8c29d29e482e8b5ad2ec0469c1541b3c09ac817eff86f66e3a3ab4c", - "joint259_system_docs_hierarchy_edges.json": "53a1d2d2e37e3d30c15d174993a1115e0ea793d9bda88fd7c8169b6c8b90ae1a", - "joint259_system_docs_hierarchy_views.py": "defdda0f0434bd6ec7200e6c2863916e52425445729d381af751dfc791a07353", - "joint259_system_docs_previews.py": "c56d7888582da9c617f87926c481242900bdb3e92080003b30e751a6d014d361", - "joint259_system_docs_evidence.json": "7e88f2e7bd1989ac4455586ae4fe23d270d9e8eb3f04b8205d5153150c429ee3", - "joint259_system_docs_incremental.py": "da984b83df1136cf4313e064be5289760b90db3081370aa93b6263ea75046d87", - "joint259_system_docs_incremental_test.py": "4ceebf7006cddf9ee44b902946fc1ed5143d26aa167fcd363172180c590ebfbe", - "joint259_system_docs_requirements.txt": "a9dbb802817bb330332628dc8c98fac5178600766e0837e9cd042438e159d9c3" - }, - "generated_artifacts": { - "QA.json": "577ec51964d297071a033e9ccb353ef6875b61ecb073e15a91ca4fdd4996a861", - "complete_system.pdf": "96fa78e11f50e3dc8e141783561b84178e41018500a22c63ca3d092db20d6b97", - "connection_index.json": "457155f7b99134a2d0bee9406ded9a7cdbc29becd60f0b51ad9d0532bb4f2b74", - "diagram_model.json": "6238e4a76508ee536410cca104ca24491224039f24fba49a35a33de26e3249b3", - "functional_architecture.pdf": "cfc7b280cb4fe4f57cc3a9e7675d8bb66e676f7025cda14ca480c5077d362130", - "hierarchy_edges.json": "67245af1a5fa49e41e1da97cb91852440462554bad24bc747b8cd606eb9589cc", - "hierarchy_reconciliation.json": "1c5c41d6375440ffc3074e39fbca92a785b7b335fc8a09afa4312395904ba8ec", - "logical_wiring.pdf": "041e9c2a4d98ec1dc477eb93856c321743280f2b249acfce01850654fa087f3b", - "requirement_traceability.json": "bb30053247fbe438bd0efb43d48821b35b27d866ba1bd3698c02f0dd38ea3f4e", - "scientific_reproduction.json": "7e88f2e7bd1989ac4455586ae4fe23d270d9e8eb3f04b8205d5153150c429ee3", - "source_index.json": "5d0586fb1359fb9cbdfe4aa3da4f72fea51e6721657b3ae093dca99aa59dc6b8", - "summary-functional.svg": "478e620e928e23b78d5387de9570abe652380d7b2138fc3330564ba8f861bade", - "summary-logical.svg": "7cec439648a3b4f185048566fb3fb301f8f7d9cf35a5b08dcedd13d93f7a050b", - "incremental_receipt.json": "acd0f2e8a36874777fa56f2c9a3fd0a8ef4ef070910bf39af84bf743959ad228" - }, - "pdf_page_counts": { - "complete_system.pdf": 56, - "functional_architecture.pdf": 51, - "logical_wiring.pdf": 54 - }, - "preview_renderer": "Inkscape 1.4 (e7c3feb100, 2024-10-09)", - "monolithic_reference_pdfs": { - "functional_architecture.pdf": "dd5338ba91d67d2dc131d2ad9c2f1bf4adc9f91c054e8c0440d406c6e46f0cfd", - "logical_wiring.pdf": "5766f898a2896f9272e0ba7e7308e0d9a95da54ae1f22eded60744d5c1c8b161", - "complete_system.pdf": "4c05708ec93836af2e84cc5ef767df9537157bf572cf2086805190ffe1283124" + "current_functional_cleanup": { + "all_pages_raster_equal_at_dpi": 40, + "damaged_cache_controls": 5, + "dependency_controls": 5, + "fresh_local_test_status": "PASS", + "functional_pages": 51, + "independent_basis": "Exact 18-static/12-generated keep/remove list provided by the cloud builder and independent closure audit", + "mutations": 12, + "scope": "Build and dependency cleanup only; no new visual completeness or scientific claim", + "unsupported_kind_entry_points_rejected": [ + { + "entry_point": "renderer", + "kind": "logical" + }, + { + "entry_point": "planning", + "kind": "logical" + }, + { + "entry_point": "cache engine", + "kind": "logical" + }, + { + "entry_point": "renderer", + "kind": "combined" + }, + { + "entry_point": "planning", + "kind": "combined" + }, + { + "entry_point": "cache engine", + "kind": "combined" + } + ] }, - "visual_review": { - "status": "PASS", - "method": "Viewed all 56 unique combined-document pages at 1120x790 pixels and both document-family covers; inspected both SVG summaries with Inkscape. Automated text-bound/intersection scan covered all 161 generated pages.", - "checks": [ - "Readable text and hierarchy", - "No out-of-page text or material text overlap", - "No clipped diagram nodes or unreadable connector crossings", - "Clear current-versus-inherited scope", - "Consistent headers, footers and navigation" - ], - "pdf_visual_renderer": "PyMuPDF; 1 PDF point per output pixel", - "pixel_equivalence_renderer": "pdftoppm 26.05.0; independent cache suite at 40 dpi", - "preview_svg_hashes": { + "current_test_report": "joint259_system_docs_incremental_test_report.json", + "historical_only": true, + "historical_review": { + "cache_review": { + "checks": [ + "Cold/warm/clean byte equality", + "161 baseline pages have exact original decoded streams, text, link targets and raster pixels", + "14 artifacts survive JSON cache roundtrip unchanged", + "Navigation-only internal/external changes reuse all 56 page paintings with correct rebuilt links", + "Five dependency invalidation classes", + "Damaged cache entries repaired", + "Wrong scientific manifest rejected", + "Undo and catalog add/delete/rename", + "56 linked SVG pages: 774 internal links, 87 external links, zero raster images" + ], + "command": "python -B joint259_system_docs_incremental_test.py --raster-dpi 40", + "post_suite_change": "Only the functional preview heading was shortened to Transform stages. Re-rendered and visually checked; a fresh final incremental build confirms unchanged PDF hashes.", + "status": "PASS_INDEPENDENT_FULL_SUITE", + "trust_boundary": "Trusted local cache with accidental-corruption checks, not an authenticated adversarial content store." + }, + "final_raw_sha256": "acf510b1377a6bd96eea50577de1aa049382499335fa7e5cac9b0300ecb377c7", + "generated_artifacts": { + "QA.json": "577ec51964d297071a033e9ccb353ef6875b61ecb073e15a91ca4fdd4996a861", + "complete_system.pdf": "96fa78e11f50e3dc8e141783561b84178e41018500a22c63ca3d092db20d6b97", + "connection_index.json": "457155f7b99134a2d0bee9406ded9a7cdbc29becd60f0b51ad9d0532bb4f2b74", + "diagram_model.json": "6238e4a76508ee536410cca104ca24491224039f24fba49a35a33de26e3249b3", + "functional_architecture.pdf": "cfc7b280cb4fe4f57cc3a9e7675d8bb66e676f7025cda14ca480c5077d362130", + "hierarchy_edges.json": "67245af1a5fa49e41e1da97cb91852440462554bad24bc747b8cd606eb9589cc", + "hierarchy_reconciliation.json": "1c5c41d6375440ffc3074e39fbca92a785b7b335fc8a09afa4312395904ba8ec", + "incremental_receipt.json": "acd0f2e8a36874777fa56f2c9a3fd0a8ef4ef070910bf39af84bf743959ad228", + "logical_wiring.pdf": "041e9c2a4d98ec1dc477eb93856c321743280f2b249acfce01850654fa087f3b", + "requirement_traceability.json": "bb30053247fbe438bd0efb43d48821b35b27d866ba1bd3698c02f0dd38ea3f4e", + "scientific_reproduction.json": "7e88f2e7bd1989ac4455586ae4fe23d270d9e8eb3f04b8205d5153150c429ee3", + "source_index.json": "5d0586fb1359fb9cbdfe4aa3da4f72fea51e6721657b3ae093dca99aa59dc6b8", "summary-functional.svg": "478e620e928e23b78d5387de9570abe652380d7b2138fc3330564ba8f861bade", "summary-logical.svg": "7cec439648a3b4f185048566fb3fb301f8f7d9cf35a5b08dcedd13d93f7a050b" - } - }, - "source_review": { - "status": "PASS", - "current_blocks": 21, - "current_typed_dependencies": 53, - "original_blocks": 87, - "original_typed_edges": 53, - "original_documentary_edges": 75, - "all_declared_inputs_bound_except_named_external_package": true, - "historical_source_file_hashes_checked": 30, - "unique_historical_external_urls_verified": 5, - "corrected_findings": [ - "Local ERASE retains center rank 22 in its sixth field.", - "Bank occurrence indexing is local to each residual-rank family; segment/divmod mapping is explicit.", - "Missing source/registry/path/proof-port dependencies were added; invalid E01 input corrected.", - "Complex rate and signed-prefix evidence dependencies were added.", - "1,422 is the newly installed cohort-plus-interval entrance rank, not all package entrances.", - "All original typed/documentary edges retained with explicit replacement/contract classifications.", - "Original requirements and exact historical-source links are exposed per hierarchy block.", - "Input digit and spectral preview indices are distinct; preview heading overflow corrected.", - "Mac all-eight fresh evidence replaces the pending status without changing the tested source manifest." + }, + "monolithic_reference_pdfs": { + "complete_system.pdf": "4c05708ec93836af2e84cc5ef767df9537157bf572cf2086805190ffe1283124", + "functional_architecture.pdf": "dd5338ba91d67d2dc131d2ad9c2f1bf4adc9f91c054e8c0440d406c6e46f0cfd", + "logical_wiring.pdf": "5766f898a2896f9272e0ba7e7308e0d9a95da54ae1f22eded60744d5c1c8b161" + }, + "operation_extractor_review": { + "boundary": "Syntactic route-key injectivity is not a new matrix/mod-prime nonaliasing proof.", + "exact_global_stage_comparisons": 5, + "immutable_copy_lifetimes": 24, + "independent_scan_events": 859771, + "producer_consumer_links": 3439036, + "remaining": [ + "Review portable public-source input binding.", + "Decode and test complete persisted event inventory and shard-tamper controls." + ], + "semantic_controls_passed": 11, + "status": "PARTIAL_PASS_PORTABILITY_AND_SAVED_INVENTORY_PENDING", + "syntactic_full_address_namespaces": 200 + }, + "pdf_page_counts": { + "complete_system.pdf": 56, + "functional_architecture.pdf": 51, + "logical_wiring.pdf": 54 + }, + "preview_renderer": "Inkscape 1.4 (e7c3feb100, 2024-10-09)", + "release_gates": [ + "Persist the generated final artifacts and verify their hashes; the older 24/27-page draft files are not approved deliverables.", + "Complete portable extractor and saved-inventory acceptance.", + "Bind the eventual cleaned public source manifest and exact PR/commit links separately from the tested 143-file manifest; review changed pages before documentation publication." ], - "claims_excluded": [ - "Frontier or strongest construction", - "Global optimality", - "Complete arbitrary-size compiler", - "Individual-operation completeness of the functional edge graph", - "An all-eight-fresh cloud admission" - ] - }, - "cache_review": { - "status": "PASS_INDEPENDENT_FULL_SUITE", - "command": "python -B joint259_system_docs_incremental_test.py --raster-dpi 40", - "checks": [ - "Cold/warm/clean byte equality", - "161 baseline pages have exact original decoded streams, text, link targets and raster pixels", - "14 artifacts survive JSON cache roundtrip unchanged", - "Navigation-only internal/external changes reuse all 56 page paintings with correct rebuilt links", - "Five dependency invalidation classes", - "Damaged cache entries repaired", - "Wrong scientific manifest rejected", - "Undo and catalog add/delete/rename", - "56 linked SVG pages: 774 internal links, 87 external links, zero raster images" - ], - "post_suite_change": "Only the functional preview heading was shortened to Transform stages. Re-rendered and visually checked; a fresh final incremental build confirms unchanged PDF hashes.", - "trust_boundary": "Trusted local cache with accidental-corruption checks, not an authenticated adversarial content store." - }, - "scientific_evidence_review": { - "status": "CHECKED_DOCUMENTARY_BINDING_NOT_A_NEW_SCIENTIFIC_REPLAY", - "original_mac_receipt_sha256": "327b8b0d5b7b27bc3f25e17222168262671364a3a698e4915a249bed863a8b06", - "certificate_sha256": "7eb58ec449c932b7092481746390c776365f302a742836cddef5643c0351802b", - "all_eight_fresh_stages": true, - "unchanged_tested_source_files": 143, - "kappa_exact": "1777613869061/2500000000000000", - "independent_certificate_checks": [ - "47 strict rational constraints positive", - "7 rational margins positive", - "Both moment upper bounds below one", - "Next bit-grid lower bound above one", - "Literal histogram sums 19786600 children and 103869400 rank mass; deficit 176000", - "No private local-path markers in certificate" - ] - }, - "operation_extractor_review": { - "status": "PARTIAL_PASS_PORTABILITY_AND_SAVED_INVENTORY_PENDING", - "independent_scan_events": 859771, - "producer_consumer_links": 3439036, - "immutable_copy_lifetimes": 24, - "exact_global_stage_comparisons": 5, - "syntactic_full_address_namespaces": 200, - "semantic_controls_passed": 11, - "boundary": "Syntactic route-key injectivity is not a new matrix/mod-prime nonaliasing proof.", - "remaining": [ - "Review portable public-source input binding.", - "Decode and test complete persisted event inventory and shard-tamper controls." - ] + "reviewed_at_utc": "2026-10-10T03:40:00Z", + "schema": "joint259-independent-documentation-review/1", + "scientific_evidence_review": { + "all_eight_fresh_stages": true, + "certificate_sha256": "7eb58ec449c932b7092481746390c776365f302a742836cddef5643c0351802b", + "independent_certificate_checks": [ + "47 strict rational constraints positive", + "7 rational margins positive", + "Both moment upper bounds below one", + "Next bit-grid lower bound above one", + "Literal histogram sums 19786600 children and 103869400 rank mass; deficit 176000", + "No private local-path markers in certificate" + ], + "kappa_exact": "1777613869061/2500000000000000", + "original_mac_receipt_sha256": "327b8b0d5b7b27bc3f25e17222168262671364a3a698e4915a249bed863a8b06", + "status": "CHECKED_DOCUMENTARY_BINDING_NOT_A_NEW_SCIENTIFIC_REPLAY", + "unchanged_tested_source_files": 143 + }, + "source_file_count": 143, + "source_manifest_sha256": "9f6d8637b9a119cfe4566a02ab2d704f23c502e5e4357b40c28ef85a3fd4de89", + "source_pins": { + "joint259_system_docs_build.py": "65f07a75ffc10d51424f6762d05a196203ba40ded8020e1962cccf4ca94f4b00", + "joint259_system_docs_evidence.json": "7e88f2e7bd1989ac4455586ae4fe23d270d9e8eb3f04b8205d5153150c429ee3", + "joint259_system_docs_hierarchy.json": "5254b3b9c8c29d29e482e8b5ad2ec0469c1541b3c09ac817eff86f66e3a3ab4c", + "joint259_system_docs_hierarchy_edges.json": "53a1d2d2e37e3d30c15d174993a1115e0ea793d9bda88fd7c8169b6c8b90ae1a", + "joint259_system_docs_hierarchy_views.py": "defdda0f0434bd6ec7200e6c2863916e52425445729d381af751dfc791a07353", + "joint259_system_docs_incremental.py": "da984b83df1136cf4313e064be5289760b90db3081370aa93b6263ea75046d87", + "joint259_system_docs_incremental_test.py": "4ceebf7006cddf9ee44b902946fc1ed5143d26aa167fcd363172180c590ebfbe", + "joint259_system_docs_model.json": "e1071a2081cc1605539f19a1368d3337e51d42eaf4fce04fd9a3e16765585bd7", + "joint259_system_docs_previews.py": "c56d7888582da9c617f87926c481242900bdb3e92080003b30e751a6d014d361", + "joint259_system_docs_requirements.txt": "a9dbb802817bb330332628dc8c98fac5178600766e0837e9cd042438e159d9c3" + }, + "source_review": { + "all_declared_inputs_bound_except_named_external_package": true, + "claims_excluded": [ + "Frontier or strongest construction", + "Global optimality", + "Complete arbitrary-size compiler", + "Individual-operation completeness of the functional edge graph", + "An all-eight-fresh cloud admission" + ], + "corrected_findings": [ + "Local ERASE retains center rank 22 in its sixth field.", + "Bank occurrence indexing is local to each residual-rank family; segment/divmod mapping is explicit.", + "Missing source/registry/path/proof-port dependencies were added; invalid E01 input corrected.", + "Complex rate and signed-prefix evidence dependencies were added.", + "1,422 is the newly installed cohort-plus-interval entrance rank, not all package entrances.", + "All original typed/documentary edges retained with explicit replacement/contract classifications.", + "Original requirements and exact historical-source links are exposed per hierarchy block.", + "Input digit and spectral preview indices are distinct; preview heading overflow corrected.", + "Mac all-eight fresh evidence replaces the pending status without changing the tested source manifest." + ], + "current_blocks": 21, + "current_typed_dependencies": 53, + "historical_source_file_hashes_checked": 30, + "original_blocks": 87, + "original_documentary_edges": 75, + "original_typed_edges": 53, + "status": "PASS", + "unique_historical_external_urls_verified": 5 + }, + "status": "PASS_CORE_DOCUMENTATION_WITH_EXPLICIT_RELEASE_GATES", + "visual_review": { + "checks": [ + "Readable text and hierarchy", + "No out-of-page text or material text overlap", + "No clipped diagram nodes or unreadable connector crossings", + "Clear current-versus-inherited scope", + "Consistent headers, footers and navigation" + ], + "method": "Viewed all 56 unique combined-document pages at 1120x790 pixels and both document-family covers; inspected both SVG summaries with Inkscape. Automated text-bound/intersection scan covered all 161 generated pages.", + "pdf_visual_renderer": "PyMuPDF; 1 PDF point per output pixel", + "pixel_equivalence_renderer": "pdftoppm 26.05.0; independent cache suite at 40 dpi", + "preview_svg_hashes": { + "summary-functional.svg": "478e620e928e23b78d5387de9570abe652380d7b2138fc3330564ba8f861bade", + "summary-logical.svg": "7cec439648a3b4f185048566fb3fb301f8f7d9cf35a5b08dcedd13d93f7a050b" + }, + "status": "PASS" + } }, - "release_gates": [ - "Persist the generated final artifacts and verify their hashes; the older 24/27-page draft files are not approved deliverables.", - "Complete portable extractor and saved-inventory acceptance.", - "Bind the eventual cleaned public source manifest and exact PR/commit links separately from the tested 143-file manifest; review changed pages before documentation publication." - ] + "historical_scope": "Original three-family documentation review, including 161 pages; not current narrowed-build evidence", + "schema": "functional-only-historical-review-and-current-evidence/1", + "status": "HISTORICAL_INDEPENDENT_REVIEW_RETAINED" } diff --git a/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_independent_review_addendum.json b/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_independent_review_addendum.json index 9d834d2cd8..d0824378d3 100644 --- a/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_independent_review_addendum.json +++ b/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_independent_review_addendum.json @@ -1,202 +1,244 @@ { - "schema": "joint259-independent-documentation-review-addendum/1", - "reviewed_at_utc": "2026-10-10T04:02:00Z", - "status": "PASS_PUBLIC_BOUND_DOCUMENTATION_AND_PORTABLE_COMPACT_EXTRACTOR", - "supersedes_release_gates_in": "joint259_system_docs_independent_review.json", - "original_review_sha256": "bf008f65bdd51251d8a1b8ec91c1e059fc5148a0a853f8eb75cc83aad3daf214", - "scientific_archive_manifest_sha256": "9f6d8637b9a119cfe4566a02ab2d704f23c502e5e4357b40c28ef85a3fd4de89", - "public_manifest_sha256": "0af10dcca505cbd913cf1b9220a08b6a62687650ace4e3d1efd093e828e3990e", - "public_closure_review": { - "paths": 137, - "manifest_members": 136, - "retained_numerical_pins": 117, - "unchanged_retained_python_files": 39, - "existing_document_edits": 8, - "removed_paths": 10, - "new_non_manifest_paths": 3, - "independently_checked_manifest": true, - "expected_certificate_exact_match_to_verified_mac_evidence": true, - "certificate_sha256": "7eb58ec449c932b7092481746390c776365f302a742836cddef5643c0351802b", - "private_paths_found": false, - "scope": "Documentation-only public extraction reuses the earlier all-eight-stage numerical execution evidence; no second numerical replay is claimed.", - "attribution_scope": "Reviewed selected-source boundaries and attribution scope, not a fresh independent verification of every historical contributor statement.", - "contextual_inherited_link": "Byte-exact proof/primary/UPSTREAM-README.md retains its historical relative paper.pdf link; HERITAGE.md provides the manuscript URL. This does not enter executable source closure." - }, - "public_builder_sha256": "f8adac6fcfdc0db576db834cdcb1e9a1d0c878eec7426f8c6bce26a92fbf3ef3", - "source_pins": { - "joint259_system_docs_build.py": "5c55497e08aecf4398d5f57518fd80bce865ee0ace6a8557b67554a974fcac81", - "joint259_system_docs_evidence.json": "7e88f2e7bd1989ac4455586ae4fe23d270d9e8eb3f04b8205d5153150c429ee3", - "joint259_system_docs_hierarchy.json": "5254b3b9c8c29d29e482e8b5ad2ec0469c1541b3c09ac817eff86f66e3a3ab4c", - "joint259_system_docs_hierarchy_edges.json": "53a1d2d2e37e3d30c15d174993a1115e0ea793d9bda88fd7c8169b6c8b90ae1a", - "joint259_system_docs_hierarchy_views.py": "defdda0f0434bd6ec7200e6c2863916e52425445729d381af751dfc791a07353", - "joint259_system_docs_incremental.py": "6f58d535d1bcbae03bc0ad55d13d9712e6b8fede7a30ed208d48dc373fb2e0c0", - "joint259_system_docs_incremental_test.py": "ab4f241173bd4adb569a3b85cdbe204cb4976048eb0f0ad634444e03dfee7fb7", - "joint259_system_docs_model.json": "e1071a2081cc1605539f19a1368d3337e51d42eaf4fce04fd9a3e16765585bd7", - "joint259_system_docs_previews.py": "c56d7888582da9c617f87926c481242900bdb3e92080003b30e751a6d014d361", - "joint259_system_docs_requirements.txt": "a9dbb802817bb330332628dc8c98fac5178600766e0837e9cd042438e159d9c3", - "joint259_system_docs_source_binding.json": "53acbfc4c9cb93404f951789e866339a315ae84d6218a32932638a6ecc6d961c", - "joint259_system_docs_sources.py": "b87a69833347df7f56d93c83b185fb3be3c616df22c860555385f33ea485be2c" - }, - "public_generated_artifact_sha256": { - "QA.json": "a643d0d62c1df25136aa9ea68aa75cf1369da02569f450ad319101bbfc3216b5", - "complete_system.pdf": "aff51810f707914258e675d58533db1081dca7f2ea5a43d48ff3232c06f6b157", - "connection_index.json": "f06a73754168e8208377f92fd986e00dd1e533609de81d3c8d556c069f3ceee9", - "diagram_model.json": "6238e4a76508ee536410cca104ca24491224039f24fba49a35a33de26e3249b3", - "functional_architecture.pdf": "1907edaf42049afe95c5de86e581feef299fade60f37e346cebfccd2392de38f", - "hierarchy_edges.json": "67245af1a5fa49e41e1da97cb91852440462554bad24bc747b8cd606eb9589cc", - "hierarchy_reconciliation.json": "1c5c41d6375440ffc3074e39fbca92a785b7b335fc8a09afa4312395904ba8ec", - "incremental_receipt.json": "2b07ce60ea76b06207bdc5dcd2468451fb988e657dc5f2357a124408de5976ae", - "logical_wiring.pdf": "60d2833a8a5102ac072a5260d89c1139e89a13beb468cd6d24ff9a00a376826c", - "requirement_traceability.json": "bb30053247fbe438bd0efb43d48821b35b27d866ba1bd3698c02f0dd38ea3f4e", - "scientific_reproduction.json": "7e88f2e7bd1989ac4455586ae4fe23d270d9e8eb3f04b8205d5153150c429ee3", - "source_binding.json": "239c881aa348e078dc013ac6c8c7c26478ce7dcd1cf80f7c8015171e6106ee12", - "source_index.json": "c5a1d01d20529458312806c6271e8d0f9f83dbe6b7083799239b80beb3a0645d", - "summary-functional.svg": "478e620e928e23b78d5387de9570abe652380d7b2138fc3330564ba8f861bade", - "summary-logical.svg": "7cec439648a3b4f185048566fb3fb301f8f7d9cf35a5b08dcedd13d93f7a050b" - }, - "public_pdf_pages": { - "functional_architecture.pdf": 51, - "logical_wiring.pdf": 54, - "complete_system.pdf": 56 - }, - "visual_review": { - "prior_full_review": "All56 combined pages and distinct family covers were visually inspected as recorded in the original review.", - "targeted_public_review_pages": [ - 1, - 49, - 50, - 51, - 52, - 53, - 54, - 56 - ], - "scale": "1120x790 pixels, one PDF point per pixel, normal reading size", - "renderer": "PyMuPDF", - "observations": "Public source hashes/line anchors, science-archive footer and public package/ZIP build instructions are legible with no clipping or overlaps. Main wiring and hierarchy semantics unchanged.", - "preview_final_hashes": { - "summary-functional.svg": "478e620e928e23b78d5387de9570abe652380d7b2138fc3330564ba8f861bade", - "summary-logical.svg": "7cec439648a3b4f185048566fb3fb301f8f7d9cf35a5b08dcedd13d93f7a050b" - }, - "preview_review": "Final two previews inspected using Inkscape1.4; corrected heading and index domains remain unchanged." - }, - "adapter_controls": { - "positive": [ - "Original143-member source directory", - "Public136-member in-memory source mapping", - "Public ZIP parsed from actual ZIP bytes through an in-memory file adapter" - ], - "negative_controls": 17, - "direct_constructor_additional_controls": 2, - "rejected": [ - "Noncanonical ./MANIFEST.json alias", - "Repeated slash", - "Empty/dot/absolute/traversal/backslash keys", - "ZIP duplicate or alias", - "ZIP symlink", - "Unpinned ZIP sibling", - "Missing/extra/changed source file", - "Unknown manifest" - ], - "fixed_defect": "Canonical path aliases were initially accepted through MemoryPath normalization; from_mapping, ZIP parsing and direct MemoryPath integrity now reject them.", - "zip_test_boundary": "ZIP parser was exercised with a file-like memory adapter, not a persisted disk ZIP or Mac CLI invocation." - }, - "incremental_tests": { - "exact_file_dual_source_run": "PASS", - "source_forms": [ + "current_functional_cleanup": { + "all_pages_raster_equal_at_dpi": 40, + "damaged_cache_controls": 5, + "dependency_controls": 5, + "fresh_local_test_status": "PASS", + "functional_pages": 51, + "independent_basis": "Exact 18-static/12-generated keep/remove list provided by the cloud builder and independent closure audit", + "mutations": 12, + "scope": "Build and dependency cleanup only; no new visual completeness or scientific claim", + "unsupported_kind_entry_points_rejected": [ + { + "entry_point": "renderer", + "kind": "logical" + }, + { + "entry_point": "planning", + "kind": "logical" + }, + { + "entry_point": "cache engine", + "kind": "logical" + }, + { + "entry_point": "renderer", + "kind": "combined" + }, { - "form": "public mapping", - "manifest_members": 136, - "status": "PASS" + "entry_point": "planning", + "kind": "combined" }, { - "form": "original scientific directory", - "manifest_members": 143, - "status": "PASS" + "entry_point": "cache engine", + "kind": "combined" } - ], - "pages_per_source": 161, - "raster_dpi": 40, - "raster_renderer": "pdftoppm26.05.0", - "baseline": "All original decoded content streams, text, link targets and raster pages equal incremental output.", - "artifact_roundtrip_count": 15, - "artifact_roundtrip": "Cold, warm, clean and cache-JSON roundtrip outputs are byte-identical.", - "mutations": 13, - "dependency_invalidation_classes": 5, - "damaged_cache_field_controls": 5, - "navigation_only_internal_and_external_edits": "Zero repaint; clean final byte and navigation equivalence.", - "svg": { - "pages": 56, - "internal_links": 774, - "external_links": 87, - "embedded_raster_images": 0, - "converter": "pdftocairo25.03.0" - }, - "wrong_scientific_pin_rejected": true, - "corrected_test_defect": "Wrong-manifest rejection worked; the test had a stale expected error string. Corrected persisted test rerun passed.", - "science_variant_pdf_hashes": { - "combined": "fb6817fff9066fb5d2580e9c600b32f0048cc89c7054bcd8ed8040a434e95edf", - "functional": "3f4a15e2e4896f07179baa6cef9afbbbc5de198e4fbda62645bd60f6b84abb6d", - "logical": "36fa1c982dff0570d8e33116b521545f68095378afe04f788823489728f84acd" - }, - "limitations": [ - "Pixel equality is at the recorded resolution; human layout review is separate.", - "The original renderer has a different PDF object layout; decoded drawing streams, text, link targets and pixels are compared.", - "Dependency invalidation uses in-memory changed-digest overrides, not edits to pinned source files." ] }, - "extractor": { - "source_pins": { - "JOINT259_CONNECTION_BANK_MAP.json": "b1e7c23fca46abed975a12bd8183abe35d326eef8998b394240a7768fe380a73", - "JOINT259_CONNECTION_EXTRACT.py": "3a11aa56173dd9a63ce75270f85223c3ead1af2b292bc3466aa64b4ee0a81ab2", - "JOINT259_CONNECTION_MANIFEST.json": "01d769cccebaff9fafda56d61d9b32b608453e450b60c31afc0634211127cb10", - "JOINT259_CONNECTION_README.md": "82d271b4b725dc91e16ac3cedd9014f90162de4f66fc26df77eb14406083d831", - "JOINT259_CONNECTION_SCHEMA.json": "4acaa8ba60c9745bc96ed4c565ee6bebb90a55cc259e818d2e0e4f2b8ed43406", - "JOINT259_CONNECTION_SUMMARY.json": "f4982f114a280cd1ab713fb0052895d237647fff63612b16bc0a7ca08445006d", - "JOINT259_CONNECTION_TESTS.py": "58538508e9c40e92b404ce14783f9e61232b3c13fc853b3693ca2da14ecbc6c7", - "JOINT259_CONNECTION_VALIDATION.json": "f7bee6e69ef49b5b0fb1d9d9990a1729ef3678b6a280e2f083e29ed98dcbbbce" + "current_test_report": "joint259_system_docs_incremental_test_report.json", + "historical_only": true, + "historical_review": { + "adapter_controls": { + "direct_constructor_additional_controls": 2, + "fixed_defect": "Canonical path aliases were initially accepted through MemoryPath normalization; from_mapping, ZIP parsing and direct MemoryPath integrity now reject them.", + "negative_controls": 17, + "positive": [ + "Original143-member source directory", + "Public136-member in-memory source mapping", + "Public ZIP parsed from actual ZIP bytes through an in-memory file adapter" + ], + "rejected": [ + "Noncanonical ./MANIFEST.json alias", + "Repeated slash", + "Empty/dot/absolute/traversal/backslash keys", + "ZIP duplicate or alias", + "ZIP symlink", + "Unpinned ZIP sibling", + "Missing/extra/changed source file", + "Unknown manifest" + ], + "zip_test_boundary": "ZIP parser was exercised with a file-like memory adapter, not a persisted disk ZIP or Mac CLI invocation." }, - "independent_final_tests": 16, - "independent_public_scan_status": "PASS", - "local_operations": 859771, - "operation_counts": { - "ADD": 760383, - "MOVE": 99340, - "COPY": 24, - "ERASE": 24 + "approval_boundary": "No unresolved semantic, visual, cache or extractor-portability defect found in the pinned reviewed generation. This is a critical documentation/code review, not new scientific theorem admission, a new Mac replay, publication, or a current-frontier claim.", + "extractor": { + "address_sha256": "50f5ce7c36ebece906d6fa8594076e405f763873ec472f3dda6ad6d86f92b342", + "complete_public_jsonl_writer_readback": { + "gzip_buffer_bytes_at_level1": 22334452, + "metadata_first": true, + "raw_and_link_hashes_match": true, + "rows": 859771, + "status": "PASS", + "validation_last": true + }, + "decompressed_raw_sha256": "acf510b1377a6bd96eea50577de1aa049382499335fa7e5cac9b0300ecb377c7", + "delivery": "Compact reproducible generator/schema/map/summary/test evidence. Complete inventory generated on demand; no persisted complete dataset is claimed. Partial EVENTS_*.b64 shards excluded.", + "exact_original_lowerer_streams": 5, + "full_scan_writer_reviewed_code_sha256": "8115e44678e227aafa22fc75f1752906b2c71f0cc210f13618d91aa0db2e23ea", + "full_syntactic_address_keys": 4021600, + "full_syntactic_address_namespaces": 200, + "immutable_copied_source_lifetimes": 24, + "independent_final_tests": 16, + "independent_public_scan_status": "PASS", + "later_change_scope": "Only CLI output-path guard and its two tests were added after full public scan/writer. Final16-test suite passed; scan, schema, saved summary and full parametric map rechecked against final code.", + "local_operations": 859771, + "metadata_validation": "Every saved summary scan field, full JSON-normalized parametric bank map and schema matches fresh final-code output.", + "operation_counts": { + "ADD": 760383, + "COPY": 24, + "ERASE": 24, + "MOVE": 99340 + }, + "output_guard": "Reject existing output and outputs inside directory source package; exclusive-create mode prevents overwriting. A new external destination is admitted without writing during review.", + "packed_link_sha256": "14d13b5b4e851a66c20af1850d77a71fe21cbe3fda35c72000709f767275222e", + "portability": "Configurable admitted source directory/ZIP and verifier OUTPUT/hybrid. Pin raw decompressed bytes and independently hardcoded canonical initial/entrance/physical invariants; runtime/formatting/recompression variation accepted, invariant alterations rejected.", + "rows_per_lowered_stream": 859795, + "scatter_reads_per_lifetime": 220, + "scope": "Exact finite selected local six-field IR def-use and callable stage/replica address interfaces. Syntactic route keys do not independently prove rational/mod-q nonaliasing. Recursive child interiors, symbolic cover enumeration and inherited all-size theorem primitives remain unexpanded.", + "source_pins": { + "JOINT259_CONNECTION_BANK_MAP.json": "b1e7c23fca46abed975a12bd8183abe35d326eef8998b394240a7768fe380a73", + "JOINT259_CONNECTION_EXTRACT.py": "3a11aa56173dd9a63ce75270f85223c3ead1af2b292bc3466aa64b4ee0a81ab2", + "JOINT259_CONNECTION_MANIFEST.json": "01d769cccebaff9fafda56d61d9b32b608453e450b60c31afc0634211127cb10", + "JOINT259_CONNECTION_README.md": "82d271b4b725dc91e16ac3cedd9014f90162de4f66fc26df77eb14406083d831", + "JOINT259_CONNECTION_SCHEMA.json": "4acaa8ba60c9745bc96ed4c565ee6bebb90a55cc259e818d2e0e4f2b8ed43406", + "JOINT259_CONNECTION_SUMMARY.json": "f4982f114a280cd1ab713fb0052895d237647fff63612b16bc0a7ca08445006d", + "JOINT259_CONNECTION_TESTS.py": "58538508e9c40e92b404ce14783f9e61232b3c13fc853b3693ca2da14ecbc6c7", + "JOINT259_CONNECTION_VALIDATION.json": "f7bee6e69ef49b5b0fb1d9d9990a1729ef3678b6a280e2f083e29ed98dcbbbce" + }, + "supplier_replay_performed": false, + "typed_value_frame_read_links": 3439036 }, - "typed_value_frame_read_links": 3439036, - "immutable_copied_source_lifetimes": 24, - "scatter_reads_per_lifetime": 220, - "exact_original_lowerer_streams": 5, - "rows_per_lowered_stream": 859795, - "full_syntactic_address_namespaces": 200, - "full_syntactic_address_keys": 4021600, - "address_sha256": "50f5ce7c36ebece906d6fa8594076e405f763873ec472f3dda6ad6d86f92b342", - "decompressed_raw_sha256": "acf510b1377a6bd96eea50577de1aa049382499335fa7e5cac9b0300ecb377c7", - "packed_link_sha256": "14d13b5b4e851a66c20af1850d77a71fe21cbe3fda35c72000709f767275222e", - "complete_public_jsonl_writer_readback": { - "status": "PASS", - "rows": 859771, - "metadata_first": true, - "validation_last": true, - "raw_and_link_hashes_match": true, - "gzip_buffer_bytes_at_level1": 22334452 + "incremental_tests": { + "artifact_roundtrip": "Cold, warm, clean and cache-JSON roundtrip outputs are byte-identical.", + "artifact_roundtrip_count": 15, + "baseline": "All original decoded content streams, text, link targets and raster pages equal incremental output.", + "corrected_test_defect": "Wrong-manifest rejection worked; the test had a stale expected error string. Corrected persisted test rerun passed.", + "damaged_cache_field_controls": 5, + "dependency_invalidation_classes": 5, + "exact_file_dual_source_run": "PASS", + "limitations": [ + "Pixel equality is at the recorded resolution; human layout review is separate.", + "The original renderer has a different PDF object layout; decoded drawing streams, text, link targets and pixels are compared.", + "Dependency invalidation uses in-memory changed-digest overrides, not edits to pinned source files." + ], + "mutations": 13, + "navigation_only_internal_and_external_edits": "Zero repaint; clean final byte and navigation equivalence.", + "pages_per_source": 161, + "raster_dpi": 40, + "raster_renderer": "pdftoppm26.05.0", + "science_variant_pdf_hashes": { + "combined": "fb6817fff9066fb5d2580e9c600b32f0048cc89c7054bcd8ed8040a434e95edf", + "functional": "3f4a15e2e4896f07179baa6cef9afbbbc5de198e4fbda62645bd60f6b84abb6d", + "logical": "36fa1c982dff0570d8e33116b521545f68095378afe04f788823489728f84acd" + }, + "source_forms": [ + { + "form": "public mapping", + "manifest_members": 136, + "status": "PASS" + }, + { + "form": "original scientific directory", + "manifest_members": 143, + "status": "PASS" + } + ], + "svg": { + "converter": "pdftocairo25.03.0", + "embedded_raster_images": 0, + "external_links": 87, + "internal_links": 774, + "pages": 56 + }, + "wrong_scientific_pin_rejected": true }, - "full_scan_writer_reviewed_code_sha256": "8115e44678e227aafa22fc75f1752906b2c71f0cc210f13618d91aa0db2e23ea", - "later_change_scope": "Only CLI output-path guard and its two tests were added after full public scan/writer. Final16-test suite passed; scan, schema, saved summary and full parametric map rechecked against final code.", - "output_guard": "Reject existing output and outputs inside directory source package; exclusive-create mode prevents overwriting. A new external destination is admitted without writing during review.", - "metadata_validation": "Every saved summary scan field, full JSON-normalized parametric bank map and schema matches fresh final-code output.", - "portability": "Configurable admitted source directory/ZIP and verifier OUTPUT/hybrid. Pin raw decompressed bytes and independently hardcoded canonical initial/entrance/physical invariants; runtime/formatting/recompression variation accepted, invariant alterations rejected.", - "delivery": "Compact reproducible generator/schema/map/summary/test evidence. Complete inventory generated on demand; no persisted complete dataset is claimed. Partial EVENTS_*.b64 shards excluded.", - "scope": "Exact finite selected local six-field IR def-use and callable stage/replica address interfaces. Syntactic route keys do not independently prove rational/mod-q nonaliasing. Recursive child interiors, symbolic cover enumeration and inherited all-size theorem primitives remain unexpanded.", - "supplier_replay_performed": false + "original_review_sha256": "bf008f65bdd51251d8a1b8ec91c1e059fc5148a0a853f8eb75cc83aad3daf214", + "public_builder_sha256": "f8adac6fcfdc0db576db834cdcb1e9a1d0c878eec7426f8c6bce26a92fbf3ef3", + "public_closure_review": { + "attribution_scope": "Reviewed selected-source boundaries and attribution scope, not a fresh independent verification of every historical contributor statement.", + "certificate_sha256": "7eb58ec449c932b7092481746390c776365f302a742836cddef5643c0351802b", + "contextual_inherited_link": "Byte-exact proof/primary/UPSTREAM-README.md retains its historical relative paper.pdf link; HERITAGE.md provides the manuscript URL. This does not enter executable source closure.", + "existing_document_edits": 8, + "expected_certificate_exact_match_to_verified_mac_evidence": true, + "independently_checked_manifest": true, + "manifest_members": 136, + "new_non_manifest_paths": 3, + "paths": 137, + "private_paths_found": false, + "removed_paths": 10, + "retained_numerical_pins": 117, + "scope": "Documentation-only public extraction reuses the earlier all-eight-stage numerical execution evidence; no second numerical replay is claimed.", + "unchanged_retained_python_files": 39 + }, + "public_generated_artifact_sha256": { + "QA.json": "a643d0d62c1df25136aa9ea68aa75cf1369da02569f450ad319101bbfc3216b5", + "complete_system.pdf": "aff51810f707914258e675d58533db1081dca7f2ea5a43d48ff3232c06f6b157", + "connection_index.json": "f06a73754168e8208377f92fd986e00dd1e533609de81d3c8d556c069f3ceee9", + "diagram_model.json": "6238e4a76508ee536410cca104ca24491224039f24fba49a35a33de26e3249b3", + "functional_architecture.pdf": "1907edaf42049afe95c5de86e581feef299fade60f37e346cebfccd2392de38f", + "hierarchy_edges.json": "67245af1a5fa49e41e1da97cb91852440462554bad24bc747b8cd606eb9589cc", + "hierarchy_reconciliation.json": "1c5c41d6375440ffc3074e39fbca92a785b7b335fc8a09afa4312395904ba8ec", + "incremental_receipt.json": "2b07ce60ea76b06207bdc5dcd2468451fb988e657dc5f2357a124408de5976ae", + "logical_wiring.pdf": "60d2833a8a5102ac072a5260d89c1139e89a13beb468cd6d24ff9a00a376826c", + "requirement_traceability.json": "bb30053247fbe438bd0efb43d48821b35b27d866ba1bd3698c02f0dd38ea3f4e", + "scientific_reproduction.json": "7e88f2e7bd1989ac4455586ae4fe23d270d9e8eb3f04b8205d5153150c429ee3", + "source_binding.json": "239c881aa348e078dc013ac6c8c7c26478ce7dcd1cf80f7c8015171e6106ee12", + "source_index.json": "c5a1d01d20529458312806c6271e8d0f9f83dbe6b7083799239b80beb3a0645d", + "summary-functional.svg": "478e620e928e23b78d5387de9570abe652380d7b2138fc3330564ba8f861bade", + "summary-logical.svg": "7cec439648a3b4f185048566fb3fb301f8f7d9cf35a5b08dcedd13d93f7a050b" + }, + "public_manifest_sha256": "0af10dcca505cbd913cf1b9220a08b6a62687650ace4e3d1efd093e828e3990e", + "public_pdf_pages": { + "complete_system.pdf": 56, + "functional_architecture.pdf": 51, + "logical_wiring.pdf": 54 + }, + "remaining_delivery_checks": [ + "Sole authorized Mac worker must materialize final PDFs from the public tree and confirm the reviewed PDF hashes, or explain and review platform differences.", + "Bind actual construction PR number and verified public source links before publishing documentation; recheck affected title/navigation after that metadata change.", + "Exclude stale first-draft PDFs and all partial trace shards from final delivery." + ], + "reviewed_at_utc": "2026-10-10T04:02:00Z", + "schema": "joint259-independent-documentation-review-addendum/1", + "scientific_archive_manifest_sha256": "9f6d8637b9a119cfe4566a02ab2d704f23c502e5e4357b40c28ef85a3fd4de89", + "source_pins": { + "joint259_system_docs_build.py": "5c55497e08aecf4398d5f57518fd80bce865ee0ace6a8557b67554a974fcac81", + "joint259_system_docs_evidence.json": "7e88f2e7bd1989ac4455586ae4fe23d270d9e8eb3f04b8205d5153150c429ee3", + "joint259_system_docs_hierarchy.json": "5254b3b9c8c29d29e482e8b5ad2ec0469c1541b3c09ac817eff86f66e3a3ab4c", + "joint259_system_docs_hierarchy_edges.json": "53a1d2d2e37e3d30c15d174993a1115e0ea793d9bda88fd7c8169b6c8b90ae1a", + "joint259_system_docs_hierarchy_views.py": "defdda0f0434bd6ec7200e6c2863916e52425445729d381af751dfc791a07353", + "joint259_system_docs_incremental.py": "6f58d535d1bcbae03bc0ad55d13d9712e6b8fede7a30ed208d48dc373fb2e0c0", + "joint259_system_docs_incremental_test.py": "ab4f241173bd4adb569a3b85cdbe204cb4976048eb0f0ad634444e03dfee7fb7", + "joint259_system_docs_model.json": "e1071a2081cc1605539f19a1368d3337e51d42eaf4fce04fd9a3e16765585bd7", + "joint259_system_docs_previews.py": "c56d7888582da9c617f87926c481242900bdb3e92080003b30e751a6d014d361", + "joint259_system_docs_requirements.txt": "a9dbb802817bb330332628dc8c98fac5178600766e0837e9cd042438e159d9c3", + "joint259_system_docs_source_binding.json": "53acbfc4c9cb93404f951789e866339a315ae84d6218a32932638a6ecc6d961c", + "joint259_system_docs_sources.py": "b87a69833347df7f56d93c83b185fb3be3c616df22c860555385f33ea485be2c" + }, + "status": "PASS_PUBLIC_BOUND_DOCUMENTATION_AND_PORTABLE_COMPACT_EXTRACTOR", + "supersedes_release_gates_in": "joint259_system_docs_independent_review.json", + "visual_review": { + "observations": "Public source hashes/line anchors, science-archive footer and public package/ZIP build instructions are legible with no clipping or overlaps. Main wiring and hierarchy semantics unchanged.", + "preview_final_hashes": { + "summary-functional.svg": "478e620e928e23b78d5387de9570abe652380d7b2138fc3330564ba8f861bade", + "summary-logical.svg": "7cec439648a3b4f185048566fb3fb301f8f7d9cf35a5b08dcedd13d93f7a050b" + }, + "preview_review": "Final two previews inspected using Inkscape1.4; corrected heading and index domains remain unchanged.", + "prior_full_review": "All56 combined pages and distinct family covers were visually inspected as recorded in the original review.", + "renderer": "PyMuPDF", + "scale": "1120x790 pixels, one PDF point per pixel, normal reading size", + "targeted_public_review_pages": [ + 1, + 49, + 50, + 51, + 52, + 53, + 54, + 56 + ] + } }, - "remaining_delivery_checks": [ - "Sole authorized Mac worker must materialize final PDFs from the public tree and confirm the reviewed PDF hashes, or explain and review platform differences.", - "Bind actual construction PR number and verified public source links before publishing documentation; recheck affected title/navigation after that metadata change.", - "Exclude stale first-draft PDFs and all partial trace shards from final delivery." - ], - "approval_boundary": "No unresolved semantic, visual, cache or extractor-portability defect found in the pinned reviewed generation. This is a critical documentation/code review, not new scientific theorem admission, a new Mac replay, publication, or a current-frontier claim." + "historical_scope": "Original three-family documentation review, including 161 pages; not current narrowed-build evidence", + "schema": "functional-only-historical-review-and-current-evidence/1", + "status": "HISTORICAL_INDEPENDENT_REVIEW_RETAINED" } - diff --git a/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_model.json b/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_model.json index 4b4fa787a7..a88934b522 100644 --- a/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_model.json +++ b/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_model.json @@ -1,6 +1,6 @@ { "schema": "selected-construction-architecture/1", - "title": "[Info Docs] Logical and Functional Diagrams, Explanations, and Build Tools for PR #277", + "title": "[Info Docs] Architecture Reference and Workflow Diagrams for PR #277", "source_manifest_sha256": "9f6d8637b9a119cfe4566a02ab2d704f23c502e5e4357b40c28ef85a3fd4de89", "final_raw_sha256": "acf510b1377a6bd96eea50577de1aa049382499335fa7e5cac9b0300ecb377c7", "blocks": [ diff --git a/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_previews.py b/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_previews.py index e03cfd1904..6a9da5d9a8 100644 --- a/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_previews.py +++ b/docs/multicut-delayed-inverse-checkpoint/joint259_system_docs_previews.py @@ -1,8 +1,8 @@ -"""Compact PR previews, readable as two separate images at GitHub width.""" +"""Functional architecture overview preview.""" from html import escape -def preview(model,logical=False): +def preview(model): bg="#F7FAFB";ink="#142D3A";blue="#176B8B";teal="#147D77";muted="#526873" - title="Logical wiring: indexed, source-bound connections"if logical else"Functional architecture: exact product with two suppliers" + title="Functional architecture: exact product with two suppliers" parts=[f'', '', '', @@ -14,33 +14,21 @@ def box(x,y,w,h,title,lines,color=blue): for i,line in enumerate(lines):parts.append(f'{escape(line)}') def arrow(x1,y1,x2,y2,dashed=False): parts.append(f'') - if logical: - box(34,119,250,134,"Typed operand bus",["U,V -> digits -> tensors","operand a in [0,2)","digit index j in [0,N)"]) - box(329,119,250,134,"Transforms",["source spectra[a,k]","k in declared R order","bit + complex calls"]) - box(624,119,250,134,"Product / inverse",["match equal index k","opposite transform","restore scale/layout"]) - box(919,119,247,134,"Exact result",["error < 1/2","integer coefficients","carry -> product UV"]) - for a,b in[(284,329),(579,624),(874,919)]:arrow(a,186,b,186) - box(34,313,350,145,"Local event template",["OP[e]: src/dst + frame","value/frame versions + uses","859,771 exact local records"],teal) - box(426,313,350,145,"Indexed physical map",["stage s in [0,5)","replica r in [0,40)","address = (family, route)"],teal) - box(818,313,348,145,"Closed proof ports",["all 8 scientific stages","COPY lifetime + bank checks","unexpanded theorem boundary"],teal) - arrow(384,384,426,384);arrow(776,384,818,384) - parts.append('Compact parametric specification, not a flattened million-wire circuit. Exact formulas and exceptions are in the full PDF.') - else: - box(34,119,250,134,"Represent operands",["read U,V and sizes","radix / scale / pad","A0-A3"]) - box(329,119,250,134,"Transform stages",["two source transforms","matching products","A4-A6"]) - box(624,119,250,134,"Exact recovery",["undo scales/layout","bounded error -> round","A7-A8"]) - box(919,119,247,134,"Emit exact product",["carry propagation","serialize UV","A9"]) - for a,b in[(284,329),(579,624),(874,919)]:arrow(a,186,b,186) - box(34,313,350,145,"Selected bit supplier",["513 cohorts + 7 intervals","25 final retimings, once","literal 40-replica banks"],teal) - box(426,313,350,145,"Pinned complex supplier",["exact labels and phases","copied centers / live climbs","finite precision and rows"],teal) - box(818,313,348,145,"Recursion and evidence",["all 87 original roles mapped","complete finite price","inherited assumptions explicit"],teal) - arrow(210,313,410,253,True);arrow(600,313,490,253,True) - parts.append('Solid arrows: runtime data interfaces. Dashed arrows: supplier support. This is a conditional mathematical construction.') + box(34,119,250,134,"Represent operands",["read U,V and sizes","radix / scale / pad","A0-A3"]) + box(329,119,250,134,"Transform stages",["two source transforms","matching products","A4-A6"]) + box(624,119,250,134,"Exact recovery",["undo scales/layout","bounded error -> round","A7-A8"]) + box(919,119,247,134,"Emit exact product",["carry propagation","serialize UV","A9"]) + for a,b in[(284,329),(579,624),(874,919)]:arrow(a,186,b,186) + box(34,313,350,145,"Selected bit supplier",["513 cohorts + 7 intervals","25 final retimings, once","literal 40-replica banks"],teal) + box(426,313,350,145,"Pinned complex supplier",["exact labels and phases","copied centers / live climbs","finite precision and rows"],teal) + box(818,313,348,145,"Recursion and evidence",["all 87 original roles mapped","complete finite price","inherited assumptions explicit"],teal) + arrow(210,313,410,253,True);arrow(600,313,490,253,True) + parts.append('Solid arrows: runtime data interfaces. Dashed arrows: supplier support. This is a conditional mathematical construction.') parts.append('Source snapshot: 9f6d8637... | Readable overview; full explanations, typed ports, requirements and proofs are linked below.') svg="\n".join(parts)+"\n" styles={"title":'font-size="28" font-weight="700"',"label":'font-size="20" font-weight="700"',"body":'font-size="17"',"note":'font-size="16" fill="#526873"'} for cls,attributes in styles.items(): svg=svg.replace('class="'+cls+'"','font-family="DejaVu Sans" '+attributes) return svg -def files(model):return {"summary-functional.svg":preview(model),"summary-logical.svg":preview(model,True)} +def files(model):return {"summary-functional.svg":preview(model)} From 8ddcabe87b874c0cb6d7ece0bd58a6f7d969bd3e Mon Sep 17 00:00:00 2001 From: hcg890 <53488436+hcg890@users.noreply.github.com> Date: Fri, 9 Oct 2026 21:39:44 -0700 Subject: [PATCH 4/4] Clarify final functional architecture publication allowlist --- docs/multicut-delayed-inverse-checkpoint/README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/multicut-delayed-inverse-checkpoint/README.md b/docs/multicut-delayed-inverse-checkpoint/README.md index 321230a0eb..61d71cbb68 100644 --- a/docs/multicut-delayed-inverse-checkpoint/README.md +++ b/docs/multicut-delayed-inverse-checkpoint/README.md @@ -28,9 +28,11 @@ Python only. Graphviz is not used. Reuse a --cache path for later builds, or use --clean to ignore the cache. The default build emits only the functional PDF family and functional summary. -It also emits local source, requirement and dependency indexes. The minimal -public output set is functional_architecture.pdf, summary-functional.svg, -QA.json and incremental_receipt.json. EXPECTED_ARTIFACTS.json pins their hashes. +It also emits local source, requirement and dependency indexes. The public output set contains the functional PDF and summary, QA/runtime +receipts, and generated architecture-dependency, source, requirement, model, +hierarchy and scientific-reproduction indexes: exactly 12 generated artifacts +with 18 static build/support files. EXPECTED_ARTIFACTS.json pins eleven hashes; +the incremental runtime receipt is intentionally environment-specific. The page cache is local build state and is not a proof receipt. The retained Python modules and JSON models form the dependency closure for