From bfcd468acb71993da343ed8d05c421964762cdbc Mon Sep 17 00:00:00 2001 From: RuoyuZhou Date: Sat, 10 Oct 2026 05:41:16 +0200 Subject: [PATCH] refactor: express ROB scenarios as immutable table data --- examples/rob/GENERATED.json | 48 +- examples/rob/GENERATED.md | 34 +- examples/rob/README.md | 66 +- examples/rob/bench.py | 6521 ++--------------------------------- 4 files changed, 439 insertions(+), 6230 deletions(-) diff --git a/examples/rob/GENERATED.json b/examples/rob/GENERATED.json index 907c924fb..8045d683f 100644 --- a/examples/rob/GENERATED.json +++ b/examples/rob/GENERATED.json @@ -8,34 +8,42 @@ "verification": { "schema": "pycircuit-example-verification-v1", "inputs": { - "source/CMakeLists.txt": "bdf6da10262f36ec1cc8b3a619ef5a621eae92fd5c238a4377a8eb85ec1c75bd", + "source/CMakeLists.txt": "1ac9bb73b49a2f91cde400f5db5de1a766f56319cbf12b8f3adcdfa0a4e582a9", + "source/bench.py": "01e1362535eaf880082320e78da248659dbb29ce56f5d97b3532e72a61696779", "source/config.json": "2c83cf4c931dcd103a18a690763d485d39012eaac121873450c7ae77e107d553", "source/driver.cpp": "a08929bd3d35d5b8b8cee0cca0474f7b7e3fea44b5243eaf6ff3d9d53c89f4f4", - "source/rob.py": "991299146e58e4524aca994407329f9d5694018dc308217913bc733453f3ca90", + "source/rob.py": "491249616faced717bfade8f0c6e5571137b438253c2b3d1007bd605228f8597", "source/rtl_tb.sv": "101f44d39ae6e8a9c54116fd5593922e8446bb4897b7709fe79c3872cc87d9ef", "build/cpp/generated.json": "9d01f8957254e98d05a69d454f19fab81ad71f5dc5379c096db847d7fa0b3505", "build/cpp/CMakeLists.txt": "1db0f0c970f621609b544570e574967a1ac55bbff5d13b250b1eb4b85799af5d", - "build/cpp/pycircuit_support.hpp": "c387b1a7648b21d00bd03ed585b72c4ec9a6a919f018031bd83b6100beeb72d8", + "build/cpp/pycircuit_support.hpp": "3ed08950a512504205afcef6cc8e8214aa9004e492fafd992954460b177ef8ac", "build/cpp/pycircuit_system.hpp": "564394b9cb5ea502ec266791359bbac134faeb1ec146a4e092c9c1b58a3c0ca6", "build/cpp/sources/example_rob/rob.cpp": "72b7a1765b622891070ab2f4f1899614151be25f3ba5b70a9a966a94aa5819c2", - "build/cpp/sources/example_rob/rob.hpp": "c2b676d505d1fce7bed422ca770cb81af9a68ee2a070033deb5ddb71474f11d5", - "build/cpp/sources/example_rob/rob.source-map.json": "c090b2dc7b43cc689b5169256b4a9f0e6f725259e942c9f73fb3eeadc2488e48", + "build/cpp/sources/example_rob/rob.hpp": "47801aa53244fac53a4acb34e80dfa68336237b782d8e7e5bbb6897cb1d0d1f5", + "build/cpp/sources/example_rob/rob.source-map.json": "d91fa4ab46ed22a35ba5fcbb7728e4f9baef47ac74b49bc4590285eede56233d", "build/verilog/generated.json": "756133cfcdc19a507b6a08ebe81dc3d13d91d52c130631d31ef4425a24bc4e2e", "build/verilog/CMakeLists.txt": "b1f5b58e6077421aef0233d1f7a57e074c707ff5099616ff680d112082a6efda", "build/verilog/design_top.sv": "5fcc26cde2e95d8b14b4e7e2a92f11aed1efd08b79dac0c29e2bef632bed1587", - "build/verilog/sources/example_rob/rob.source-map.json": "2034c0b9e5df0177577bb0cc3ea5e1c54bb107381a02f2b5dc2a4d6df724ca02", - "build/verilog/sources/example_rob/rob.v": "a9d2aa7e83fba7dc866142cc55a8509d1ff87ce554f4f60ef1b0244539b5b2e0", - "build/rob.ac": "ec146d2ce8cd147670ec80b1c55ac1ea7c9ccef06266d0f53d1df96843cb4312", - "runtime-rtl/byte_mem.v": "33bd9f73dd7cd17f3531cfd8c321762c214ad5df23b5376add212dadd38c47c2", - "runtime-rtl/dff.v": "e4f604bd03b9f1651ddbcd71e9ebb1cd8af45018caeab341728b35c14ec0f553", - "runtime-rtl/dffe.v": "9ae323530b72d152d10628de94923eaefa411b29e13c647de21bed8b0d73833b", - "runtime-rtl/fifo.v": "2dc4086ad3085bd67504caaac0565a3e676f87ce5411cc019fe8ef3a3bc43b23", - "runtime-rtl/sync_mem.v": "207b0fe22f029828ac90b50d2ce0aabbb01763231cd153883f31b581d03d68b7", - "runtime-rtl/sync_mem_dp.v": "44672a092661f3c218f71534d0d656a2d7d0bfdb03bc6b7a3394e2f13eea86d4", - "runner": "e6f0d2a6294b07f42c8f19b5fc59f9a85ee3dc62b88623450cbc42c3c93294ee" + "build/verilog/sources/example_rob/rob.source-map.json": "d80e684840534cfa97d9214d49a9e451af8af53ed4e5dae25e52fcdf0a9c8029", + "build/verilog/sources/example_rob/rob.v": "b84d6390abfedaf4e04928ba4fafef96cf4fa4c309692201104de956d3a43a36", + "build/rob.ac": "dddbc2775e1342737e84be1cf680cc148bb50b87be10b3da580d531b47d82f39", + "build/units/.rob.pycircuit-publication/owner.json": "bfc340a1edf11b0c53f1a5ac6c32fdd7e40199e5e17ae6069eecfbf7bdb47165", + "build/units/rob/rob.ac": "151edc6192888d3d02e1e0b072f7e6808d3e97afd147f6f33225cca591e54f05", + "build/units/rob/rob.d": "2246fd42ad88583bcaa98d29e149130db212a18a390ada4f3b7f8aa6a04b6e85", + "build/units/rob/rob.interface.ac": "2fff13584826c6b5c6574803b993555648238506f1ddc9e07bcbbd4bc06ee02a", + "build/units/rob/unit.json": "f833dd4d92854fd44bbe806bcca00ef558f1f0f1ce5b72e2c9b4774416d39e2a", + "runtime-rtl/byte_mem.v": "dfc3f0fa362196fcfaa7bd771d4f85f26acade0e1dfeb0bc00a24d4161987cd2", + "runtime-rtl/dff.v": "325fb9039af507df3c94a26515dfcd8bb73f3812c1264df7b72bfe1af918bbb8", + "runtime-rtl/dffe.v": "1fc0bdac0c411ea87c00fc93127ebfba8ca12684a8fecee012a23362e0f8b89c", + "runtime-rtl/fifo.v": "8b2f0796fdd7c0f4aee3f20bd52226ccb532c827c8618afd9fbef99e2713f97f", + "runtime-rtl/sync_mem.v": "75731fcc0df8a01891e53589e75debc4cda9ec384262937047f21b11de7d7637", + "runtime-rtl/sync_mem_dp.v": "16ad11aa53d5f60291136b82a47bef9e21b312cd46ee8b8dfb338bb01c6bc3cc", + "runner": "01f2acb91732f9b09b05cd3752184d649f038f6642fdfdd586866eafaac480de" }, - "execution_sha256": "9140852e30dd8151d884b237ca780d551a951e93bbf7ad65279485305c12c09f", + "execution_sha256": "0efd04ea2c5806785290017b50a2c416b5d94dce7ab3c39946c2eeffff5e468e", "work_samples": 569, + "native_check_records": 0, + "native_check_sha256": "01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b", "workers": [ 1, 2 @@ -47,17 +55,17 @@ { "path": "rob.ac", "line": 15, - "sha256": "ec146d2ce8cd147670ec80b1c55ac1ea7c9ccef06266d0f53d1df96843cb4312" + "sha256": "dddbc2775e1342737e84be1cf680cc148bb50b87be10b3da580d531b47d82f39" }, { "path": "cpp/sources/example_rob/rob.hpp", - "line": 49, - "sha256": "c2b676d505d1fce7bed422ca770cb81af9a68ee2a070033deb5ddb71474f11d5" + "line": 51, + "sha256": "47801aa53244fac53a4acb34e80dfa68336237b782d8e7e5bbb6897cb1d0d1f5" }, { "path": "verilog/sources/example_rob/rob.v", "line": 1, - "sha256": "a9d2aa7e83fba7dc866142cc55a8509d1ff87ce554f4f60ef1b0244539b5b2e0" + "sha256": "b84d6390abfedaf4e04928ba4fafef96cf4fa4c309692201104de956d3a43a36" } ] } diff --git a/examples/rob/GENERATED.md b/examples/rob/GENERATED.md index 3320c9c35..0d22d8aa2 100644 --- a/examples/rob/GENERATED.md +++ b/examples/rob/GENERATED.md @@ -4,7 +4,7 @@ These excerpts come from the public compiler's actual output after a successful native worker-1/worker-2 and RTL oracle run. They are reading samples, not a second implementation or standalone replacement for the complete generated files. -Verified WORK trace rows: **569**. Final artifact SHA-256: `ec146d2ce8cd147670ec80b1c55ac1ea7c9ccef06266d0f53d1df96843cb4312`. +Verified WORK trace rows: **569**. Final artifact SHA-256: `dddbc2775e1342737e84be1cf680cc148bb50b87be10b3da580d531b47d82f39`. Trace rows may be sparse checkpoints or summaries; see the example README for the number of checked epochs. @@ -25,33 +25,34 @@ python3 tools/example_catalog.py generated --example rob \ `rob.ac`, from line 15: ```mlir - "ac.module"() <{function_type = (!ac.bits<<{kind = "literal", location = {column = 26 : i64, end_column = 31 : i64, end_line = 64 : i64, line = 64 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "args"}, {kind = "field", name = "args"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "annotation"}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<1>}}>>, !ac.bits<<{kind = "literal", location = {column = 47 : i64, end_column = 52 : i64, end_line = 64 : i64, line = 64 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "args"}, {kind = "field", name = "args"}, {kind = "index", value = 1 : i64}, {kind = "field", name = "annotation"}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<8>}}>>, !ac.bits<<{kind = "literal", location = {column = 26 : i64, end_column = 31 : i64, end_line = 65 : i64, line = 65 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "args"}, {kind = "field", name = "args"}, {kind = "index", value = 2 : i64}, {kind = "field", name = "annotation"}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<1>}}>>, !ac.bits<<{kind = "literal", location = {column = 49 : i64, end_column = 54 : i64, end_line = 65 : i64, line = 65 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "args"}, {kind = "field", name = "args"}, {kind = "index", value = 3 : i64}, {kind = "field", name = "annotation"}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<2>}}>>, !ac.bits<<{kind = "literal", location = {column = 30 : i64, end_column = 35 : i64, end_line = 66 : i64, line = 66 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "args"}, {kind = "field", name = "args"}, {kind = "index", value = 4 : i64}, {kind = "field", name = "annotation"}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<8>}}>>, !ac.bits<<{kind = "literal", location = {column = 53 : i64, end_column = 59 : i64, end_line = 66 : i64, line = 66 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "args"}, {kind = "field", name = "args"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "annotation"}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<16>}}>>, !ac.bits<<{kind = "literal", location = {column = 24 : i64, end_column = 29 : i64, end_line = 67 : i64, line = 67 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "args"}, {kind = "field", name = "args"}, {kind = "index", value = 6 : i64}, {kind = "field", name = "annotation"}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<1>}}>>, !ac.bits<<{kind = "literal", location = {column = 38 : i64, end_column = 43 : i64, end_line = 67 : i64, line = 67 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "args"}, {kind = "field", name = "args"}, {kind = "index", value = 7 : i64}, {kind = "field", name = "annotation"}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<1>}}>>, !ac.bits<<{kind = "literal", location = {column = 1 : i64, end_column = 35 : i64, end_line = 75 : i64, line = 64 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<1>}}>>, !ac.bits<<{kind = "literal", location = {column = 1 : i64, end_column = 35 : i64, end_line = 75 : i64, line = 64 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<1>}}>>) -> !ac.struct<"example_rob.rob.RobResult">, input_names = ["allocate", "allocate_tag", "complete", "complete_index", "complete_tag", "complete_value", "retire", "flush", "pyc_clk", "pyc_rst"], output_names = ["result"], parameters = [], source_owner = {package = "example_rob", path = "rob.py"}, sym_name = "example_rob.rob.RobStorage", type_parameters = []}> ({ - ^bb0(%arg0: !ac.bits<<{kind = "literal", location = {column = 26 : i64, end_column = 31 : i64, end_line = 64 : i64, line = 64 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "args"}, {kind = "field", name = "args"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "annotation"}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<1>}}>> loc("rob.py":64:1), %arg1: !ac.bits<<{kind = "literal", location = {column = 47 : i64, end_column = 52 : i64, end_line = 64 : i64, line = 64 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "args"}, {kind = "field", name = "args"}, {kind = "index", value = 1 : i64}, {kind = "field", name = "annotation"}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<8>}}>> loc("rob.py":64:1), %arg2: !ac.bits<<{kind = "literal", location = {column = 26 : i64, end_column = 31 : i64, end_line = 65 : i64, line = 65 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "args"}, {kind = "field", name = "args"}, {kind = "index", value = 2 : i64}, {kind = "field", name = "annotation"}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<1>}}>> loc("rob.py":64:1), %arg3: !ac.bits<<{kind = "literal", location = {column = 49 : i64, end_column = 54 : i64, end_line = 65 : i64, line = 65 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "args"}, {kind = "field", name = "args"}, {kind = "index", value = 3 : i64}, {kind = "field", name = "annotation"}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<2>}}>> loc("rob.py":64:1), %arg4: !ac.bits<<{kind = "literal", location = {column = 30 : i64, end_column = 35 : i64, end_line = 66 : i64, line = 66 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "args"}, {kind = "field", name = "args"}, {kind = "index", value = 4 : i64}, {kind = "field", name = "annotation"}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<8>}}>> loc("rob.py":64:1), %arg5: !ac.bits<<{kind = "literal", location = {column = 53 : i64, end_column = 59 : i64, end_line = 66 : i64, line = 66 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "args"}, {kind = "field", name = "args"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "annotation"}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<16>}}>> loc("rob.py":64:1), %arg6: !ac.bits<<{kind = "literal", location = {column = 24 : i64, end_column = 29 : i64, end_line = 67 : i64, line = 67 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "args"}, {kind = "field", name = "args"}, {kind = "index", value = 6 : i64}, {kind = "field", name = "annotation"}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<1>}}>> loc("rob.py":64:1), %arg7: !ac.bits<<{kind = "literal", location = {column = 38 : i64, end_column = 43 : i64, end_line = 67 : i64, line = 67 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "args"}, {kind = "field", name = "args"}, {kind = "index", value = 7 : i64}, {kind = "field", name = "annotation"}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<1>}}>> loc("rob.py":64:1), %arg8: !ac.bits<<{kind = "literal", location = {column = 1 : i64, end_column = 35 : i64, end_line = 75 : i64, line = 64 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<1>}}>> loc("rob.py":64:1), %arg9: !ac.bits<<{kind = "literal", location = {column = 1 : i64, end_column = 35 : i64, end_line = 75 : i64, line = 64 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<1>}}>> loc("rob.py":64:1)): - %0 = "ac.bits.constant"() <{value = #ac.static_expr<{kind = "literal", location = {column = 39 : i64, end_column = 40 : i64, end_line = 69 : i64, line = 69 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "value"}, {kind = "field", name = "keywords"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "value"}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<0>}}>}> : () -> !ac.bits<<{kind = "literal", location = {column = 12 : i64, end_column = 17 : i64, end_line = 8 : i64, line = 8 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 2 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "annotation"}], definition = @example_rob.rob.Entry}}, value = {kind = "integer", value = #ac.math_int<1>}}>> loc(#loc4) - %1 = "ac.bits.constant"() <{value = #ac.static_expr<{kind = "literal", location = {column = 39 : i64, end_column = 40 : i64, end_line = 69 : i64, line = 69 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "value"}, {kind = "field", name = "keywords"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "value"}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<0>}}>}> : () -> !ac.bits<<{kind = "literal", location = {column = 11 : i64, end_column = 16 : i64, end_line = 9 : i64, line = 9 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 2 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 1 : i64}, {kind = "field", name = "annotation"}], definition = @example_rob.rob.Entry}}, value = {kind = "integer", value = #ac.math_int<1>}}>> loc(#loc4) - %2 = "ac.bits.constant"() <{value = #ac.static_expr<{kind = "literal", location = {column = 39 : i64, end_column = 40 : i64, end_line = 69 : i64, line = 69 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "value"}, {kind = "field", name = "keywords"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "value"}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<0>}}>}> : () -> !ac.bits<<{kind = "literal", location = {column = 10 : i64, end_column = 15 : i64, end_line = 10 : i64, line = 10 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 2 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 2 : i64}, {kind = "field", name = "annotation"}], definition = @example_rob.rob.Entry}}, value = {kind = "integer", value = #ac.math_int<8>}}>> loc(#loc4) - %3 = "ac.bits.constant"() <{value = #ac.static_expr<{kind = "literal", location = {column = 39 : i64, end_column = 40 : i64, end_line = 69 : i64, line = 69 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "value"}, {kind = "field", name = "keywords"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "value"}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<0>}}>}> : () -> !ac.bits<<{kind = "literal", location = {column = 12 : i64, end_column = 18 : i64, end_line = 11 : i64, line = 11 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 2 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 3 : i64}, {kind = "field", name = "annotation"}], definition = @example_rob.rob.Entry}}, value = {kind = "integer", value = #ac.math_int<16>}}>> loc(#loc4) + "ac.module"() <{function_type = (!ac.bits<<{kind = "literal", location = {column = 15 : i64, end_column = 20 : i64, end_line = 77 : i64, line = 77 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "args"}, {kind = "field", name = "args"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "annotation"}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<1>}}>>, !ac.bits<<{kind = "literal", location = {column = 19 : i64, end_column = 24 : i64, end_line = 78 : i64, line = 78 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "args"}, {kind = "field", name = "args"}, {kind = "index", value = 1 : i64}, {kind = "field", name = "annotation"}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<8>}}>>, !ac.bits<<{kind = "literal", location = {column = 15 : i64, end_column = 20 : i64, end_line = 79 : i64, line = 79 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "args"}, {kind = "field", name = "args"}, {kind = "index", value = 2 : i64}, {kind = "field", name = "annotation"}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<1>}}>>, !ac.bits<<{kind = "literal", location = {column = 21 : i64, end_column = 26 : i64, end_line = 80 : i64, line = 80 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "args"}, {kind = "field", name = "args"}, {kind = "index", value = 3 : i64}, {kind = "field", name = "annotation"}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<2>}}>>, !ac.bits<<{kind = "literal", location = {column = 19 : i64, end_column = 24 : i64, end_line = 81 : i64, line = 81 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "args"}, {kind = "field", name = "args"}, {kind = "index", value = 4 : i64}, {kind = "field", name = "annotation"}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<8>}}>>, !ac.bits<<{kind = "literal", location = {column = 21 : i64, end_column = 27 : i64, end_line = 82 : i64, line = 82 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "args"}, {kind = "field", name = "args"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "annotation"}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<16>}}>>, !ac.bits<<{kind = "literal", location = {column = 13 : i64, end_column = 18 : i64, end_line = 83 : i64, line = 83 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "args"}, {kind = "field", name = "args"}, {kind = "index", value = 6 : i64}, {kind = "field", name = "annotation"}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<1>}}>>, !ac.bits<<{kind = "literal", location = {column = 12 : i64, end_column = 17 : i64, end_line = 84 : i64, line = 84 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "args"}, {kind = "field", name = "args"}, {kind = "index", value = 7 : i64}, {kind = "field", name = "annotation"}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<1>}}>>, !ac.bits<<{kind = "literal", location = {column = 1 : i64, end_column = 6 : i64, end_line = 104 : i64, line = 76 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<1>}}>>, !ac.bits<<{kind = "literal", location = {column = 1 : i64, end_column = 6 : i64, end_line = 104 : i64, line = 76 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<1>}}>>) -> !ac.struct<"example_rob.rob.RobResult">, input_names = ["allocate", "allocate_tag", "complete", "complete_index", "complete_tag", "complete_value", "retire", "flush", "pyc_clk", "pyc_rst"], output_names = ["result"], parameters = [], source_owner = {package = "example_rob", path = "rob.py"}, sym_name = "example_rob.rob.RobStorage", type_parameters = []}> ({ + ^bb0(%arg0: !ac.bits<<{kind = "literal", location = {column = 15 : i64, end_column = 20 : i64, end_line = 77 : i64, line = 77 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "args"}, {kind = "field", name = "args"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "annotation"}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<1>}}>> loc("rob.py":76:1), %arg1: !ac.bits<<{kind = "literal", location = {column = 19 : i64, end_column = 24 : i64, end_line = 78 : i64, line = 78 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "args"}, {kind = "field", name = "args"}, {kind = "index", value = 1 : i64}, {kind = "field", name = "annotation"}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<8>}}>> loc("rob.py":76:1), %arg2: !ac.bits<<{kind = "literal", location = {column = 15 : i64, end_column = 20 : i64, end_line = 79 : i64, line = 79 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "args"}, {kind = "field", name = "args"}, {kind = "index", value = 2 : i64}, {kind = "field", name = "annotation"}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<1>}}>> loc("rob.py":76:1), %arg3: !ac.bits<<{kind = "literal", location = {column = 21 : i64, end_column = 26 : i64, end_line = 80 : i64, line = 80 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "args"}, {kind = "field", name = "args"}, {kind = "index", value = 3 : i64}, {kind = "field", name = "annotation"}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<2>}}>> loc("rob.py":76:1), %arg4: !ac.bits<<{kind = "literal", location = {column = 19 : i64, end_column = 24 : i64, end_line = 81 : i64, line = 81 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "args"}, {kind = "field", name = "args"}, {kind = "index", value = 4 : i64}, {kind = "field", name = "annotation"}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<8>}}>> loc("rob.py":76:1), %arg5: !ac.bits<<{kind = "literal", location = {column = 21 : i64, end_column = 27 : i64, end_line = 82 : i64, line = 82 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "args"}, {kind = "field", name = "args"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "annotation"}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<16>}}>> loc("rob.py":76:1), %arg6: !ac.bits<<{kind = "literal", location = {column = 13 : i64, end_column = 18 : i64, end_line = 83 : i64, line = 83 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "args"}, {kind = "field", name = "args"}, {kind = "index", value = 6 : i64}, {kind = "field", name = "annotation"}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<1>}}>> loc("rob.py":76:1), %arg7: !ac.bits<<{kind = "literal", location = {column = 12 : i64, end_column = 17 : i64, end_line = 84 : i64, line = 84 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "args"}, {kind = "field", name = "args"}, {kind = "index", value = 7 : i64}, {kind = "field", name = "annotation"}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<1>}}>> loc("rob.py":76:1), %arg8: !ac.bits<<{kind = "literal", location = {column = 1 : i64, end_column = 6 : i64, end_line = 104 : i64, line = 76 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<1>}}>> loc("rob.py":76:1), %arg9: !ac.bits<<{kind = "literal", location = {column = 1 : i64, end_column = 6 : i64, end_line = 104 : i64, line = 76 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<1>}}>> loc("rob.py":76:1)): + %0 = "ac.bits.constant"() <{value = #ac.static_expr<{kind = "literal", location = {column = 39 : i64, end_column = 40 : i64, end_line = 87 : i64, line = 87 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "value"}, {kind = "field", name = "keywords"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "value"}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<0>}}>}> : () -> !ac.bits<<{kind = "literal", location = {column = 12 : i64, end_column = 17 : i64, end_line = 8 : i64, line = 8 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 2 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "annotation"}], definition = @example_rob.rob.Entry}}, value = {kind = "integer", value = #ac.math_int<1>}}>> loc(#loc4) + %1 = "ac.bits.constant"() <{value = #ac.static_expr<{kind = "literal", location = {column = 39 : i64, end_column = 40 : i64, end_line = 87 : i64, line = 87 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "value"}, {kind = "field", name = "keywords"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "value"}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<0>}}>}> : () -> !ac.bits<<{kind = "literal", location = {column = 11 : i64, end_column = 16 : i64, end_line = 9 : i64, line = 9 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 2 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 1 : i64}, {kind = "field", name = "annotation"}], definition = @example_rob.rob.Entry}}, value = {kind = "integer", value = #ac.math_int<1>}}>> loc(#loc4) + %2 = "ac.bits.constant"() <{value = #ac.static_expr<{kind = "literal", location = {column = 39 : i64, end_column = 40 : i64, end_line = 87 : i64, line = 87 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "value"}, {kind = "field", name = "keywords"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "value"}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<0>}}>}> : () -> !ac.bits<<{kind = "literal", location = {column = 10 : i64, end_column = 15 : i64, end_line = 10 : i64, line = 10 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 2 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 2 : i64}, {kind = "field", name = "annotation"}], definition = @example_rob.rob.Entry}}, value = {kind = "integer", value = #ac.math_int<8>}}>> loc(#loc4) + %3 = "ac.bits.constant"() <{value = #ac.static_expr<{kind = "literal", location = {column = 39 : i64, end_column = 40 : i64, end_line = 87 : i64, line = 87 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "value"}, {kind = "field", name = "keywords"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "value"}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<0>}}>}> : () -> !ac.bits<<{kind = "literal", location = {column = 12 : i64, end_column = 18 : i64, end_line = 11 : i64, line = 11 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 2 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 3 : i64}, {kind = "field", name = "annotation"}], definition = @example_rob.rob.Entry}}, value = {kind = "integer", value = #ac.math_int<16>}}>> loc(#loc4) %4 = ac.struct.create(%0, %1, %2, %3) : (!ac.bits<<{kind = "literal", location = {column = 12 : i64, end_column = 17 : i64, end_line = 8 : i64, line = 8 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 2 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "annotation"}], definition = @example_rob.rob.Entry}}, value = {kind = "integer", value = #ac.math_int<1>}}>>, !ac.bits<<{kind = "literal", location = {column = 11 : i64, end_column = 16 : i64, end_line = 9 : i64, line = 9 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 2 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 1 : i64}, {kind = "field", name = "annotation"}], definition = @example_rob.rob.Entry}}, value = {kind = "integer", value = #ac.math_int<1>}}>>, !ac.bits<<{kind = "literal", location = {column = 10 : i64, end_column = 15 : i64, end_line = 10 : i64, line = 10 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 2 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 2 : i64}, {kind = "field", name = "annotation"}], definition = @example_rob.rob.Entry}}, value = {kind = "integer", value = #ac.math_int<8>}}>>, !ac.bits<<{kind = "literal", location = {column = 12 : i64, end_column = 18 : i64, end_line = 11 : i64, line = 11 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 2 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 3 : i64}, {kind = "field", name = "annotation"}], definition = @example_rob.rob.Entry}}, value = {kind = "integer", value = #ac.math_int<16>}}>>) -> !ac.struct<"example_rob.rob.Entry"> loc(#loc4) - %5 = "ac.table.splat"(%4) <{shape = [#ac.static_expr<{kind = "literal", location = {column = 24 : i64, end_column = 25 : i64, end_line = 69 : i64, line = 69 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "value"}, {kind = "field", name = "func"}, {kind = "field", name = "slice"}, {kind = "field", name = "elts"}, {kind = "index", value = 0 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<4>}}>]}> : (!ac.struct<"example_rob.rob.Entry">) -> !ac.table<[#ac.static_expr<{kind = "literal", location = {column = 24 : i64, end_column = 25 : i64, end_line = 69 : i64, line = 69 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "value"}, {kind = "field", name = "func"}, {kind = "field", name = "slice"}, {kind = "field", name = "elts"}, {kind = "index", value = 0 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<4>}}>], !ac.struct<"example_rob.rob.Entry">> loc(#loc4) - %6 = "ac.collection"(%24, %25, %26, %23#1, %5) <{callee = @pycircuit.__builtins__.dffe, instance_name = "entries", occurrence = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}], definition = @example_rob.rob.RobStorage}}, parameters = [], shape = [#ac.static_expr<{kind = "literal", location = {column = 24 : i64, end_column = 25 : i64, end_line = 69 : i64, line = 69 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "value"}, {kind = "field", name = "func"}, {kind = "field", name = "slice"}, {kind = "field", name = "elts"}, {kind = "index", value = 0 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<4>}}>], type_arguments = [!ac.struct<"example_rob.rob.Entry">]}> : (!ac.table<[#ac.static_expr<{kind = "literal", location = {column = 24 : i64, end_column = 25 : i64, end_line = 69 : i64, line = 69 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "value"}, {kind = "field", name = "func"}, {kind = "field", name = "slice"}, {kind = "field", name = "elts"}, {kind = "index", value = 0 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<4>}}>], !ac.bits<<{kind = "literal", location = {column = 1 : i64, end_column = 35 : i64, end_line = 75 : i64, line = 64 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<1>}}>>>, !ac.table<[#ac.static_expr<{kind = "literal", location = {column = 24 : i64, end_column = 25 : i64, end_line = 69 : i64, line = 69 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "value"}, {kind = "field", name = "func"}, {kind = "field", name = "slice"}, {kind = "field", name = "elts"}, {kind = "index", value = 0 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<4>}}>], !ac.bits<<{kind = "literal", location = {column = 1 : i64, end_column = 35 : i64, end_line = 75 : i64, line = 64 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<1>}}>>>, !ac.table<[#ac.static_expr<{kind = "literal", location = {column = 24 : i64, end_column = 25 : i64, end_line = 69 : i64, line = 69 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "value"}, {kind = "field", name = "func"}, {kind = "field", name = "slice"}, {kind = "field", name = "elts"}, {kind = "index", value = 0 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<4>}}>], !ac.bits<<{kind = "literal", location = {column = 5 : i64, end_column = 41 : i64, end_line = 69 : i64, line = 69 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<1>}}>>>, !ac.table<[#ac.static_expr<{kind = "literal", location = {column = 24 : i64, end_column = 25 : i64, end_line = 69 : i64, line = 69 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "value"}, {kind = "field", name = "func"}, {kind = "field", name = "slice"}, {kind = "field", name = "elts"}, {kind = "index", value = 0 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<4>}}>], !ac.struct<"example_rob.rob.Entry">>, !ac.table<[#ac.static_expr<{kind = "literal", location = {column = 24 : i64, end_column = 25 : i64, end_line = 69 : i64, line = 69 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "value"}, {kind = "field", name = "func"}, {kind = "field", name = "slice"}, {kind = "field", name = "elts"}, {kind = "index", value = 0 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<4>}}>], !ac.struct<"example_rob.rob.Entry">>) -> !ac.table<[#ac.static_expr<{kind = "literal", location = {column = 24 : i64, end_column = 25 : i64, end_line = 69 : i64, line = 69 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "value"}, {kind = "field", name = "func"}, {kind = "field", name = "slice"}, {kind = "field", name = "elts"}, {kind = "index", value = 0 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<4>}}>], !ac.struct<"example_rob.rob.Entry">> loc(#loc5) - %7 = "ac.bits.constant"() <{value = #ac.static_expr<{kind = "literal", location = {column = 5 : i64, end_column = 41 : i64, end_line = 69 : i64, line = 69 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<0>}}>}> : () -> !ac.bits<<{kind = "literal", location = {column = 5 : i64, end_column = 41 : i64, end_line = 69 : i64, line = 69 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<1>}}>> loc(#loc5) - %8 = "ac.table.splat"(%arg8) <{shape = [#ac.static_expr<{kind = "literal", location = {column = 24 : i64, end_column = 25 : i64, end_line = 69 : i64, line = 69 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "value"}, {kind = "field", name = "func"}, {kind = "field", name = "slice"}, {kind = "field", name = "elts"}, {kind = "index", value = 0 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<4>}}>]}> : (!ac.bits<<{kind = "literal", location = {column = 1 : i64, end_column = 35 : i64, end_line = 75 : i64, line = 64 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<1>}}>>) -> !ac.table<[#ac.static_expr<{kind = "literal", location = {column = 24 : i64, end_column = 25 : i64, end_line = 69 : i64, line = 69 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "value"}, {kind = "field", name = "func"}, {kind = "field", name = "slice"}, {kind = "field", name = "elts"}, {kind = "index", value = 0 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<4>}}>], !ac.bits<<{kind = "literal", location = {column = 1 : i64, end_column = 35 : i64, end_line = 75 : i64, line = 64 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<1>}}>>> loc(#loc5) - %9 = "ac.table.splat"(%arg9) <{shape = [#ac.static_expr<{kind = "literal", location = {column = 24 : i64, end_column = 25 : i64, end_line = 69 : i64, line = 69 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "value"}, {kind = "field", name = "func"}, {kind = "field", name = "slice"}, {kind = "field", name = "elts"}, {kind = "index", value = 0 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<4>}}>]}> : (!ac.bits<<{kind = "literal", location = {column = 1 : i64, end_column = 35 : i64, end_line = 75 : i64, line = 64 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<1>}}>>) -> !ac.table<[#ac.static_expr<{kind = "literal", location = {column = 24 : i64, end_column = 25 : i64, end_line = 69 : i64, line = 69 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "value"}, {kind = "field", name = "func"}, {kind = "field", name = "slice"}, {kind = "field", name = "elts"}, {kind = "index", value = 0 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<4>}}>], !ac.bits<<{kind = "literal", location = {column = 1 : i64, end_column = 35 : i64, end_line = 75 : i64, line = 64 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<1>}}>>> loc(#loc5) - %10 = "ac.table.splat"(%7) <{shape = [#ac.static_expr<{kind = "literal", location = {column = 24 : i64, end_column = 25 : i64, end_line = 69 : i64, line = 69 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "value"}, {kind = "field", name = "func"}, {kind = "field", name = "slice"}, {kind = "field", name = "elts"}, {kind = "index", value = 0 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<4>}}>]}> : (!ac.bits<<{kind = "literal", location = {column = 5 : i64, end_column = 41 : i64, end_line = 69 : i64, line = 69 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<1>}}>>) -> !ac.table<[#ac.static_expr<{kind = "literal", location = {column = 24 : i64, end_column = 25 : i64, end_line = 69 : i64, line = 69 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "value"}, {kind = "field", name = "func"}, {kind = "field", name = "slice"}, {kind = "field", name = "elts"}, {kind = "index", value = 0 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<4>}}>], !ac.bits<<{kind = "literal", location = {column = 5 : i64, end_column = 41 : i64, end_line = 69 : i64, line = 69 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<1>}}>>> loc(#loc5) - %11 = "ac.bits.constant"() <{value = #ac.static_expr<{kind = "literal", location = {column = 19 : i64, end_column = 20 : i64, end_line = 70 : i64, line = 70 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 1 : i64}, {kind = "field", name = "value"}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<0>}}>}> : () -> !ac.bits<<{kind = "literal", location = {column = 11 : i64, end_column = 16 : i64, end_line = 70 : i64, line = 70 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 1 : i64}, {kind = "field", name = "annotation"}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<2>}}>> loc(#loc6) + %5 = "ac.table.splat"(%4) <{shape = [#ac.static_expr<{kind = "literal", location = {column = 24 : i64, end_column = 25 : i64, end_line = 87 : i64, line = 87 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "value"}, {kind = "field", name = "func"}, {kind = "field", name = "slice"}, {kind = "field", name = "elts"}, {kind = "index", value = 0 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<4>}}>]}> : (!ac.struct<"example_rob.rob.Entry">) -> !ac.table<[#ac.static_expr<{kind = "literal", location = {column = 24 : i64, end_column = 25 : i64, end_line = 87 : i64, line = 87 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "value"}, {kind = "field", name = "func"}, {kind = "field", name = "slice"}, {kind = "field", name = "elts"}, {kind = "index", value = 0 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<4>}}>], !ac.struct<"example_rob.rob.Entry">> loc(#loc4) + %6 = "ac.collection"(%24, %25, %26, %23#1, %5) <{callee = @pycircuit.__builtins__.dffe, instance_name = "entries", occurrence = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}], definition = @example_rob.rob.RobStorage}}, parameters = [], shape = [#ac.static_expr<{kind = "literal", location = {column = 24 : i64, end_column = 25 : i64, end_line = 87 : i64, line = 87 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "value"}, {kind = "field", name = "func"}, {kind = "field", name = "slice"}, {kind = "field", name = "elts"}, {kind = "index", value = 0 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<4>}}>], type_arguments = [!ac.struct<"example_rob.rob.Entry">]}> : (!ac.table<[#ac.static_expr<{kind = "literal", location = {column = 24 : i64, end_column = 25 : i64, end_line = 87 : i64, line = 87 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "value"}, {kind = "field", name = "func"}, {kind = "field", name = "slice"}, {kind = "field", name = "elts"}, {kind = "index", value = 0 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<4>}}>], !ac.bits<<{kind = "literal", location = {column = 1 : i64, end_column = 6 : i64, end_line = 104 : i64, line = 76 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<1>}}>>>, !ac.table<[#ac.static_expr<{kind = "literal", location = {column = 24 : i64, end_column = 25 : i64, end_line = 87 : i64, line = 87 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "value"}, {kind = "field", name = "func"}, {kind = "field", name = "slice"}, {kind = "field", name = "elts"}, {kind = "index", value = 0 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<4>}}>], !ac.bits<<{kind = "literal", location = {column = 1 : i64, end_column = 6 : i64, end_line = 104 : i64, line = 76 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<1>}}>>>, !ac.table<[#ac.static_expr<{kind = "literal", location = {column = 24 : i64, end_column = 25 : i64, end_line = 87 : i64, line = 87 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "value"}, {kind = "field", name = "func"}, {kind = "field", name = "slice"}, {kind = "field", name = "elts"}, {kind = "index", value = 0 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<4>}}>], !ac.bits<<{kind = "literal", location = {column = 5 : i64, end_column = 41 : i64, end_line = 87 : i64, line = 87 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<1>}}>>>, !ac.table<[#ac.static_expr<{kind = "literal", location = {column = 24 : i64, end_column = 25 : i64, end_line = 87 : i64, line = 87 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "value"}, {kind = "field", name = "func"}, {kind = "field", name = "slice"}, {kind = "field", name = "elts"}, {kind = "index", value = 0 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<4>}}>], !ac.struct<"example_rob.rob.Entry">>, !ac.table<[#ac.static_expr<{kind = "literal", location = {column = 24 : i64, end_column = 25 : i64, end_line = 87 : i64, line = 87 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "value"}, {kind = "field", name = "func"}, {kind = "field", name = "slice"}, {kind = "field", name = "elts"}, {kind = "index", value = 0 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<4>}}>], !ac.struct<"example_rob.rob.Entry">>) -> !ac.table<[#ac.static_expr<{kind = "literal", location = {column = 24 : i64, end_column = 25 : i64, end_line = 87 : i64, line = 87 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "value"}, {kind = "field", name = "func"}, {kind = "field", name = "slice"}, {kind = "field", name = "elts"}, {kind = "index", value = 0 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<4>}}>], !ac.struct<"example_rob.rob.Entry">> loc(#loc5) + %7 = "ac.bits.constant"() <{value = #ac.static_expr<{kind = "literal", location = {column = 5 : i64, end_column = 41 : i64, end_line = 87 : i64, line = 87 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<0>}}>}> : () -> !ac.bits<<{kind = "literal", location = {column = 5 : i64, end_column = 41 : i64, end_line = 87 : i64, line = 87 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<1>}}>> loc(#loc5) + %8 = "ac.table.splat"(%arg8) <{shape = [#ac.static_expr<{kind = "literal", location = {column = 24 : i64, end_column = 25 : i64, end_line = 87 : i64, line = 87 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "value"}, {kind = "field", name = "func"}, {kind = "field", name = "slice"}, {kind = "field", name = "elts"}, {kind = "index", value = 0 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<4>}}>]}> : (!ac.bits<<{kind = "literal", location = {column = 1 : i64, end_column = 6 : i64, end_line = 104 : i64, line = 76 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<1>}}>>) -> !ac.table<[#ac.static_expr<{kind = "literal", location = {column = 24 : i64, end_column = 25 : i64, end_line = 87 : i64, line = 87 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "value"}, {kind = "field", name = "func"}, {kind = "field", name = "slice"}, {kind = "field", name = "elts"}, {kind = "index", value = 0 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<4>}}>], !ac.bits<<{kind = "literal", location = {column = 1 : i64, end_column = 6 : i64, end_line = 104 : i64, line = 76 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<1>}}>>> loc(#loc5) + %9 = "ac.table.splat"(%arg9) <{shape = [#ac.static_expr<{kind = "literal", location = {column = 24 : i64, end_column = 25 : i64, end_line = 87 : i64, line = 87 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "value"}, {kind = "field", name = "func"}, {kind = "field", name = "slice"}, {kind = "field", name = "elts"}, {kind = "index", value = 0 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<4>}}>]}> : (!ac.bits<<{kind = "literal", location = {column = 1 : i64, end_column = 6 : i64, end_line = 104 : i64, line = 76 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<1>}}>>) -> !ac.table<[#ac.static_expr<{kind = "literal", location = {column = 24 : i64, end_column = 25 : i64, end_line = 87 : i64, line = 87 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "value"}, {kind = "field", name = "func"}, {kind = "field", name = "slice"}, {kind = "field", name = "elts"}, {kind = "index", value = 0 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<4>}}>], !ac.bits<<{kind = "literal", location = {column = 1 : i64, end_column = 6 : i64, end_line = 104 : i64, line = 76 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<1>}}>>> loc(#loc5) + %10 = "ac.table.splat"(%7) <{shape = [#ac.static_expr<{kind = "literal", location = {column = 24 : i64, end_column = 25 : i64, end_line = 87 : i64, line = 87 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "value"}, {kind = "field", name = "func"}, {kind = "field", name = "slice"}, {kind = "field", name = "elts"}, {kind = "index", value = 0 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<4>}}>]}> : (!ac.bits<<{kind = "literal", location = {column = 5 : i64, end_column = 41 : i64, end_line = 87 : i64, line = 87 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<1>}}>>) -> !ac.table<[#ac.static_expr<{kind = "literal", location = {column = 24 : i64, end_column = 25 : i64, end_line = 87 : i64, line = 87 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}, {kind = "field", name = "value"}, {kind = "field", name = "func"}, {kind = "field", name = "slice"}, {kind = "field", name = "elts"}, {kind = "index", value = 0 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<4>}}>], !ac.bits<<{kind = "literal", location = {column = 5 : i64, end_column = 41 : i64, end_line = 87 : i64, line = 87 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 0 : i64}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<1>}}>>> loc(#loc5) + %11 = "ac.bits.constant"() <{value = #ac.static_expr<{kind = "literal", location = {column = 19 : i64, end_column = 20 : i64, end_line = 88 : i64, line = 88 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 1 : i64}, {kind = "field", name = "value"}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<0>}}>}> : () -> !ac.bits<<{kind = "literal", location = {column = 11 : i64, end_column = 16 : i64, end_line = 88 : i64, line = 88 : i64, path = "rob.py"}, origin = {expansion = [], site = {ast_path = [{kind = "field", name = "body"}, {kind = "index", value = 5 : i64}, {kind = "field", name = "body"}, {kind = "index", value = 1 : i64}, {kind = "field", name = "annotation"}], definition = @example_rob.rob.RobStorage}}, value = {kind = "integer", value = #ac.math_int<2>}}>> loc(#loc6) ``` ## Source-owned C++ Work -`cpp/sources/example_rob/rob.hpp`, from line 49: +`cpp/sources/example_rob/rob.hpp`, from line 51: ```cpp void Work() { + __pyc_clear_check_snapshots(); try { gfsim::wire> pyc_value_0; gfsim::wire, (pyc_count * (1))>> pyc_value_1; gfsim::wire, (pyc_count * (1))>> pyc_value_2; - for (std::size_t pyc_lane = 0; pyc_lane < pyc_count; ++pyc_lane) pyc_value_2.element(pyc_lane) = gfsim::wire>::fromPacked(gfsim::FourState>::width>::known(gfsim::Bits>::width>{0ULL})); + for (std::size_t pyc_lane = 0; pyc_lane < (pyc_count * (1)); ++pyc_lane) pyc_value_2.element(pyc_lane) = gfsim::wire>::fromPacked(gfsim::FourState>::width>::known(gfsim::Bits>::width>{0ULL})); gfsim::wire, (pyc_count * (1))>> pyc_value_3; gfsim::wire, (pyc_count * (1))>> pyc_value_4; gfsim::wire, (pyc_count * (1))>> pyc_value_5; @@ -59,7 +60,6 @@ python3 tools/example_catalog.py generated --example rob \ gfsim::wire, (pyc_count * (1))>> pyc_value_7; gfsim::wire, (pyc_count * (1))>> pyc_value_8; gfsim::wire, (pyc_count * (1))>> pyc_value_9; - gfsim::wire, (pyc_count * (1))>> pyc_value_10; ``` ## Source-owned Verilog diff --git a/examples/rob/README.md b/examples/rob/README.md index b73231c84..9ce2e3855 100644 --- a/examples/rob/README.md +++ b/examples/rob/README.md @@ -63,13 +63,71 @@ backend with the public `pycircuit compile`, `link`, and `emit` flow. Run `--target verilog`. Each managed cycle uses the same stimulus in its low/high sampling pair and advances fixture state on the generated edge. -All 284 original transactions, including the complete 256-event deterministic -random stream, run for 284 cycles. Every acceptance, index, retired payload and -occupancy is checked against fixed vectors derived independently from the -retained C++ scoreboard. The authored flush input retains its original meaning. +The bench stores 284 immutable `Scenario` rows in one typed Table. Each +70-bit row contains the eight original inputs and seven expected output fields; +zero-valued fields use existing implicit-zero Struct initialization. Literal +rows retain all original transactions, including the complete 256-event +deterministic random stream. The author extracted these values from the frozen +original bench's syntax tree without importing or executing design code; that +extraction is separate from the independent preservation check. + +The phase remains `bits[64]`, initialized to zero and incremented by the original +rule. The full phase selects its corresponding row below 284 and row 283 +thereafter. The final row asserts flush and zeroes every other input and +expectation, preserving the original sustained-flush tail from phase 283 through +2**64-1. Phase arithmetic still wraps to zero. Selection does not narrow or +saturate phase, and fixture wrap introduces no new DUT reset. + +The eight direct `Rob` input projections retain their original order. Seven +assertions keep their messages and `phase < 284` guard with an empty else, while +seven logs remain unconditional. Registration still calls `check_and_advance()` +then `advance(phase)`. The complete managed run remains 284 cycles and checks +acceptance, indices, retired payloads and occupancy against the retained fixed +expectations. The authored flush input retains its original meaning. The original `driver.cpp`, `rtl_tb.sv`, `config.json`, and independent oracle models remain unchanged. Known held-level and physical-reset scenarios remain with those module-boundary drivers. Where present, their four-state and failure/discard matrices remain separate coverage. This regular-clock system does not claim complete equivalence to those physical scenarios. + +## Verification and measured costs + +The current standalone module and system tests pass 2/2. The module retains its +569-sample independent oracle and failed-Work, refused-sampling, discard and +retry probes. The system completes all 284 cycles / 568 sampling epochs, with +seven source-check definitions and 3,976 observations matching across native +workers 1/2 and Verilator. Full original and rewritten system observations also +match. See the current [verified module excerpts and receipt](GENERATED.md). + +An independent source check compares all 4,260 input/expected field values and +284 intervals over the complete known u64 domain. It proves the sustained-flush +tail and unchanged wrap, and rejects 21 mutated candidates. The finite run does +not execute 64-bit rollover; source-domain proof and runtime history provide +separate evidence. Injected X/Z phase values are outside this known-phase proof. + +The bench shrinks from 6,228 lines / 258,859 bytes to 371 lines / 39,366 bytes. +These measurements use the same machine, installed compiler and LLVM 22 C++ +toolchain with `-O0`. Build and emission entries are single observations from +sequential original and rewritten pipelines. Runtime entries are medians of +three additional paired warm runs, alternating order, with all 284 cycles. +They describe this example on this machine, not a cross-platform guarantee. + +| Phase | Original conditional expressions | Scenario table | +| --- | ---: | ---: | +| Compile bench | 6.62 s | 1.45 s | +| Link system | 6.48 s | 2.67 s | +| Emit C++ | 6.14 s | 2.68 s | +| Build C++ simulator | 2.46 s | 1.74 s | +| Run C++, one worker (warm median) | 1.111 s | 0.641 s | +| Emit Verilog | 5.05 s | 1.94 s | +| Build Verilog simulator | 2.22 s | 1.51 s | +| Run Verilog (warm median) | 0.036 s | 0.036 s | + +The observed native runtime median decreases by about 42%; Verilog runtime is +approximately unchanged. Final IR falls from 28,198,342 to 11,074,159 bytes. +Generated C++ files total 5,513,081 → 3,691,898 bytes; generated Verilog files +total 1,173,696 → 646,451 bytes. Both backends consume the same final IR. +Complete source-import and transformed artifacts are retained locally and +reproduce the published units byte-for-byte. No compiler API, DUT storage, +scenario count, cycle limit or timeout changes are needed by this rewrite. diff --git a/examples/rob/bench.py b/examples/rob/bench.py index a4830aabc..8943d488b 100644 --- a/examples/rob/bench.py +++ b/examples/rob/bench.py @@ -1,7 +1,31 @@ """Regular-clock rob scenario; original physical-control oracles remain.""" from example_rob.rob import Rob -from pycircuit import bits, log, rule, system +from pycircuit import bits, log, rule, struct, system, table, u1, u2, u3, u8, u16 + + +@struct +class Scenario: + allocate: u1 + allocate_tag: u8 + complete: u1 + complete_index: u2 + complete_tag: u8 + complete_value: u16 + retire: u1 + flush: u1 + expected_allocate_accepted: u1 + expected_allocated_index: u2 + expected_complete_accepted: u1 + expected_retire_accepted: u1 + expected_retired_tag: u8 + expected_retired_value: u16 + expected_count: u3 + + +@struct +class Scenarios: + rows: table[284, Scenario] @rule @@ -12,6210 +36,329 @@ def advance(phase): @system def ExerciseRob(): # noqa: N802 phase: bits[64] = 0 - allocate = ( - ( - ( - ( - ( - ( - ( - ((phase[:1] & 0) | 0) - if phase < 1 - else ((phase[:1] & 0) | 1) - ) - if phase < 6 - else ( - ((phase[:1] & 0) | 0) - if phase < 10 - else ((phase[:1] & 0) | 1) - ) - ) - if phase < 12 - else ( - ( - ((phase[:1] & 0) | 0) - if phase < 15 - else ((phase[:1] & 0) | 1) - ) - if phase < 17 - else ( - ((phase[:1] & 0) | 0) - if phase < 21 - else ((phase[:1] & 0) | 1) - ) - ) - ) - if phase < 24 - else ( - ( - ( - ((phase[:1] & 0) | 0) - if phase < 27 - else ((phase[:1] & 0) | 1) - ) - if phase < 29 - else ( - ((phase[:1] & 0) | 0) - if phase < 30 - else ((phase[:1] & 0) | 1) - ) - ) - if phase < 31 - else ( - ( - ((phase[:1] & 0) | 0) - if phase < 32 - else ((phase[:1] & 0) | 1) - ) - if phase < 33 - else ( - ((phase[:1] & 0) | 0) - if phase < 34 - else ( - ((phase[:1] & 0) | 1) - if phase < 35 - else ((phase[:1] & 0) | 0) - ) - ) - ) - ) - ) - if phase < 37 - else ( - ( - ( - ( - ((phase[:1] & 0) | 1) - if phase < 38 - else ((phase[:1] & 0) | 0) - ) - if phase < 40 - else ( - ((phase[:1] & 0) | 1) - if phase < 42 - else ((phase[:1] & 0) | 0) - ) - ) - if phase < 45 - else ( - ( - ((phase[:1] & 0) | 1) - if phase < 46 - else ((phase[:1] & 0) | 0) - ) - if phase < 47 - else ( - ((phase[:1] & 0) | 1) - if phase < 48 - else ((phase[:1] & 0) | 0) - ) - ) - ) - if phase < 50 - else ( - ( - ( - ((phase[:1] & 0) | 1) - if phase < 57 - else ((phase[:1] & 0) | 0) - ) - if phase < 60 - else ( - ((phase[:1] & 0) | 1) - if phase < 61 - else ((phase[:1] & 0) | 0) - ) - ) - if phase < 62 - else ( - ( - ((phase[:1] & 0) | 1) - if phase < 63 - else ((phase[:1] & 0) | 0) - ) - if phase < 64 - else ( - ((phase[:1] & 0) | 1) - if phase < 65 - else ( - ((phase[:1] & 0) | 0) - if phase < 66 - else ((phase[:1] & 0) | 1) - ) - ) - ) - ) - ) - ) - if phase < 69 - else ( - ( - ( - ( - ( - ((phase[:1] & 0) | 0) - if phase < 70 - else ((phase[:1] & 0) | 1) - ) - if phase < 72 - else ( - ((phase[:1] & 0) | 0) - if phase < 73 - else ((phase[:1] & 0) | 1) - ) - ) - if phase < 74 - else ( - ( - ((phase[:1] & 0) | 0) - if phase < 77 - else ((phase[:1] & 0) | 1) - ) - if phase < 78 - else ( - ((phase[:1] & 0) | 0) - if phase < 80 - else ((phase[:1] & 0) | 1) - ) - ) - ) - if phase < 81 - else ( - ( - ( - ((phase[:1] & 0) | 0) - if phase < 82 - else ((phase[:1] & 0) | 1) - ) - if phase < 83 - else ( - ((phase[:1] & 0) | 0) - if phase < 85 - else ((phase[:1] & 0) | 1) - ) - ) - if phase < 87 - else ( - ( - ((phase[:1] & 0) | 0) - if phase < 89 - else ((phase[:1] & 0) | 1) - ) - if phase < 90 - else ( - ((phase[:1] & 0) | 0) - if phase < 95 - else ( - ((phase[:1] & 0) | 1) - if phase < 98 - else ((phase[:1] & 0) | 0) - ) - ) - ) - ) - ) - if phase < 99 - else ( - ( - ( - ( - ((phase[:1] & 0) | 1) - if phase < 100 - else ((phase[:1] & 0) | 0) - ) - if phase < 102 - else ( - ((phase[:1] & 0) | 1) - if phase < 103 - else ((phase[:1] & 0) | 0) - ) - ) - if phase < 106 - else ( - ( - ((phase[:1] & 0) | 1) - if phase < 110 - else ((phase[:1] & 0) | 0) - ) - if phase < 114 - else ( - ((phase[:1] & 0) | 1) - if phase < 116 - else ((phase[:1] & 0) | 0) - ) - ) - ) - if phase < 119 - else ( - ( - ( - ((phase[:1] & 0) | 1) - if phase < 120 - else ((phase[:1] & 0) | 0) - ) - if phase < 122 - else ( - ((phase[:1] & 0) | 1) - if phase < 123 - else ((phase[:1] & 0) | 0) - ) - ) - if phase < 124 - else ( - ( - ((phase[:1] & 0) | 1) - if phase < 126 - else ((phase[:1] & 0) | 0) - ) - if phase < 130 - else ( - ((phase[:1] & 0) | 1) - if phase < 131 - else ( - ((phase[:1] & 0) | 0) - if phase < 132 - else ((phase[:1] & 0) | 1) - ) - ) - ) - ) - ) - ) - ) - if phase < 133 - else ( - ( - ( - ( - ( - ( - ((phase[:1] & 0) | 0) - if phase < 135 - else ((phase[:1] & 0) | 1) - ) - if phase < 136 - else ( - ((phase[:1] & 0) | 0) - if phase < 137 - else ((phase[:1] & 0) | 1) - ) - ) - if phase < 138 - else ( - ( - ((phase[:1] & 0) | 0) - if phase < 143 - else ((phase[:1] & 0) | 1) - ) - if phase < 144 - else ( - ((phase[:1] & 0) | 0) - if phase < 146 - else ((phase[:1] & 0) | 1) - ) - ) - ) - if phase < 150 - else ( - ( - ( - ((phase[:1] & 0) | 0) - if phase < 151 - else ((phase[:1] & 0) | 1) - ) - if phase < 152 - else ( - ((phase[:1] & 0) | 0) - if phase < 154 - else ((phase[:1] & 0) | 1) - ) - ) - if phase < 160 - else ( - ( - ((phase[:1] & 0) | 0) - if phase < 162 - else ((phase[:1] & 0) | 1) - ) - if phase < 165 - else ( - ((phase[:1] & 0) | 0) - if phase < 167 - else ( - ((phase[:1] & 0) | 1) - if phase < 170 - else ((phase[:1] & 0) | 0) - ) - ) - ) - ) - ) - if phase < 172 - else ( - ( - ( - ( - ((phase[:1] & 0) | 1) - if phase < 173 - else ((phase[:1] & 0) | 0) - ) - if phase < 174 - else ( - ((phase[:1] & 0) | 1) - if phase < 177 - else ((phase[:1] & 0) | 0) - ) - ) - if phase < 178 - else ( - ( - ((phase[:1] & 0) | 1) - if phase < 179 - else ((phase[:1] & 0) | 0) - ) - if phase < 183 - else ( - ((phase[:1] & 0) | 1) - if phase < 184 - else ((phase[:1] & 0) | 0) - ) - ) - ) - if phase < 186 - else ( - ( - ( - ((phase[:1] & 0) | 1) - if phase < 192 - else ((phase[:1] & 0) | 0) - ) - if phase < 195 - else ( - ((phase[:1] & 0) | 1) - if phase < 202 - else ((phase[:1] & 0) | 0) - ) - ) - if phase < 203 - else ( - ( - ((phase[:1] & 0) | 1) - if phase < 205 - else ((phase[:1] & 0) | 0) - ) - if phase < 207 - else ( - ((phase[:1] & 0) | 1) - if phase < 208 - else ( - ((phase[:1] & 0) | 0) - if phase < 209 - else ((phase[:1] & 0) | 1) - ) - ) - ) - ) - ) - ) - if phase < 211 - else ( - ( - ( - ( - ( - ((phase[:1] & 0) | 0) - if phase < 217 - else ((phase[:1] & 0) | 1) - ) - if phase < 221 - else ( - ((phase[:1] & 0) | 0) - if phase < 222 - else ((phase[:1] & 0) | 1) - ) - ) - if phase < 229 - else ( - ( - ((phase[:1] & 0) | 0) - if phase < 231 - else ((phase[:1] & 0) | 1) - ) - if phase < 232 - else ( - ((phase[:1] & 0) | 0) - if phase < 233 - else ((phase[:1] & 0) | 1) - ) - ) - ) - if phase < 235 - else ( - ( - ( - ((phase[:1] & 0) | 0) - if phase < 237 - else ((phase[:1] & 0) | 1) - ) - if phase < 238 - else ( - ((phase[:1] & 0) | 0) - if phase < 239 - else ((phase[:1] & 0) | 1) - ) - ) - if phase < 243 - else ( - ( - ((phase[:1] & 0) | 0) - if phase < 244 - else ((phase[:1] & 0) | 1) - ) - if phase < 246 - else ( - ((phase[:1] & 0) | 0) - if phase < 247 - else ( - ((phase[:1] & 0) | 1) - if phase < 248 - else ((phase[:1] & 0) | 0) - ) - ) - ) - ) - ) - if phase < 252 - else ( - ( - ( - ( - ((phase[:1] & 0) | 1) - if phase < 254 - else ((phase[:1] & 0) | 0) - ) - if phase < 256 - else ( - ((phase[:1] & 0) | 1) - if phase < 257 - else ((phase[:1] & 0) | 0) - ) - ) - if phase < 259 - else ( - ( - ((phase[:1] & 0) | 1) - if phase < 260 - else ((phase[:1] & 0) | 0) - ) - if phase < 263 - else ( - ((phase[:1] & 0) | 1) - if phase < 264 - else ( - ((phase[:1] & 0) | 0) - if phase < 267 - else ((phase[:1] & 0) | 1) - ) - ) - ) - ) - if phase < 268 - else ( - ( - ( - ((phase[:1] & 0) | 0) - if phase < 269 - else ((phase[:1] & 0) | 1) - ) - if phase < 270 - else ( - ((phase[:1] & 0) | 0) - if phase < 271 - else ((phase[:1] & 0) | 1) - ) - ) - if phase < 272 - else ( - ( - ((phase[:1] & 0) | 0) - if phase < 277 - else ((phase[:1] & 0) | 1) - ) - if phase < 279 - else ( - ((phase[:1] & 0) | 0) - if phase < 280 - else ( - ((phase[:1] & 0) | 1) - if phase < 283 - else ((phase[:1] & 0) | 0) - ) - ) - ) - ) - ) - ) - ) - ) - allocate_tag = ( - ( - ( - ( - ( - ( - ( - ( - ((phase[:8] & 0) | 0) - if phase < 1 - else ((phase[:8] & 0) | 11) - ) - if phase < 2 - else ( - ((phase[:8] & 0) | 12) - if phase < 3 - else ((phase[:8] & 0) | 13) - ) - ) - if phase < 4 - else ( - ( - ((phase[:8] & 0) | 14) - if phase < 5 - else ((phase[:8] & 0) | 15) - ) - if phase < 6 - else ( - ((phase[:8] & 0) | 0) - if phase < 10 - else ((phase[:8] & 0) | 15) - ) - ) - ) - if phase < 11 - else ( - ( - ( - ((phase[:8] & 0) | 16) - if phase < 12 - else ((phase[:8] & 0) | 0) - ) - if phase < 15 - else ( - ((phase[:8] & 0) | 17) - if phase < 16 - else ((phase[:8] & 0) | 18) - ) - ) - if phase < 17 - else ( - ( - ((phase[:8] & 0) | 0) - if phase < 21 - else ((phase[:8] & 0) | 21) - ) - if phase < 22 - else ( - ((phase[:8] & 0) | 22) - if phase < 23 - else ( - ((phase[:8] & 0) | 31) - if phase < 24 - else ((phase[:8] & 0) | 0) - ) - ) - ) - ) - ) - if phase < 27 - else ( - ( - ( - ( - ((phase[:8] & 0) | 199) - if phase < 28 - else ((phase[:8] & 0) | 12) - ) - if phase < 29 - else ( - ((phase[:8] & 0) | 225) - if phase < 30 - else ((phase[:8] & 0) | 246) - ) - ) - if phase < 31 - else ( - ( - ((phase[:8] & 0) | 2) - if phase < 32 - else ((phase[:8] & 0) | 69) - ) - if phase < 33 - else ( - ((phase[:8] & 0) | 110) - if phase < 34 - else ((phase[:8] & 0) | 1) - ) - ) - ) - if phase < 35 - else ( - ( - ( - ((phase[:8] & 0) | 63) - if phase < 36 - else ((phase[:8] & 0) | 17) - ) - if phase < 37 - else ( - ((phase[:8] & 0) | 39) - if phase < 38 - else ((phase[:8] & 0) | 165) - ) - ) - if phase < 39 - else ( - ( - ((phase[:8] & 0) | 25) - if phase < 40 - else ((phase[:8] & 0) | 92) - ) - if phase < 41 - else ( - ((phase[:8] & 0) | 76) - if phase < 42 - else ( - ((phase[:8] & 0) | 94) - if phase < 43 - else ((phase[:8] & 0) | 179) - ) - ) - ) - ) - ) - ) - if phase < 44 - else ( - ( - ( - ( - ( - ((phase[:8] & 0) | 120) - if phase < 45 - else ((phase[:8] & 0) | 215) - ) - if phase < 46 - else ( - ((phase[:8] & 0) | 146) - if phase < 47 - else ((phase[:8] & 0) | 133) - ) - ) - if phase < 48 - else ( - ( - ((phase[:8] & 0) | 67) - if phase < 49 - else ((phase[:8] & 0) | 184) - ) - if phase < 50 - else ( - ((phase[:8] & 0) | 35) - if phase < 51 - else ((phase[:8] & 0) | 71) - ) - ) - ) - if phase < 52 - else ( - ( - ( - ((phase[:8] & 0) | 165) - if phase < 53 - else ((phase[:8] & 0) | 19) - ) - if phase < 54 - else ( - ((phase[:8] & 0) | 119) - if phase < 55 - else ((phase[:8] & 0) | 93) - ) - ) - if phase < 56 - else ( - ( - ((phase[:8] & 0) | 5) - if phase < 57 - else ((phase[:8] & 0) | 211) - ) - if phase < 58 - else ( - ((phase[:8] & 0) | 24) - if phase < 59 - else ( - ((phase[:8] & 0) | 81) - if phase < 60 - else ((phase[:8] & 0) | 252) - ) - ) - ) - ) - ) - if phase < 61 - else ( - ( - ( - ( - ((phase[:8] & 0) | 127) - if phase < 62 - else ((phase[:8] & 0) | 75) - ) - if phase < 63 - else ( - ((phase[:8] & 0) | 6) - if phase < 64 - else ((phase[:8] & 0) | 209) - ) - ) - if phase < 65 - else ( - ( - ((phase[:8] & 0) | 74) - if phase < 66 - else ((phase[:8] & 0) | 206) - ) - if phase < 67 - else ( - ((phase[:8] & 0) | 9) - if phase < 68 - else ((phase[:8] & 0) | 19) - ) - ) - ) - if phase < 69 - else ( - ( - ( - ((phase[:8] & 0) | 0) - if phase < 70 - else ((phase[:8] & 0) | 44) - ) - if phase < 71 - else ( - ((phase[:8] & 0) | 138) - if phase < 72 - else ((phase[:8] & 0) | 69) - ) - ) - if phase < 73 - else ( - ( - ((phase[:8] & 0) | 51) - if phase < 74 - else ((phase[:8] & 0) | 19) - ) - if phase < 75 - else ( - ((phase[:8] & 0) | 122) - if phase < 76 - else ( - ((phase[:8] & 0) | 168) - if phase < 77 - else ((phase[:8] & 0) | 82) - ) - ) - ) - ) - ) - ) - ) - if phase < 78 - else ( - ( - ( - ( - ( - ( - ((phase[:8] & 0) | 179) - if phase < 79 - else ((phase[:8] & 0) | 232) - ) - if phase < 80 - else ( - ((phase[:8] & 0) | 52) - if phase < 81 - else ((phase[:8] & 0) | 210) - ) - ) - if phase < 82 - else ( - ( - ((phase[:8] & 0) | 80) - if phase < 83 - else ((phase[:8] & 0) | 28) - ) - if phase < 84 - else ( - ((phase[:8] & 0) | 213) - if phase < 85 - else ((phase[:8] & 0) | 208) - ) - ) - ) - if phase < 86 - else ( - ( - ( - ((phase[:8] & 0) | 11) - if phase < 87 - else ((phase[:8] & 0) | 104) - ) - if phase < 88 - else ( - ((phase[:8] & 0) | 2) - if phase < 89 - else ((phase[:8] & 0) | 244) - ) - ) - if phase < 90 - else ( - ( - ((phase[:8] & 0) | 109) - if phase < 91 - else ((phase[:8] & 0) | 189) - ) - if phase < 92 - else ( - ((phase[:8] & 0) | 180) - if phase < 93 - else ( - ((phase[:8] & 0) | 101) - if phase < 94 - else ((phase[:8] & 0) | 106) - ) - ) - ) - ) - ) - if phase < 95 - else ( - ( - ( - ( - ((phase[:8] & 0) | 221) - if phase < 96 - else ((phase[:8] & 0) | 14) - ) - if phase < 97 - else ( - ((phase[:8] & 0) | 77) - if phase < 98 - else ((phase[:8] & 0) | 109) - ) - ) - if phase < 99 - else ( - ( - ((phase[:8] & 0) | 116) - if phase < 100 - else ((phase[:8] & 0) | 91) - ) - if phase < 101 - else ( - ((phase[:8] & 0) | 248) - if phase < 102 - else ((phase[:8] & 0) | 39) - ) - ) - ) - if phase < 103 - else ( - ( - ( - ((phase[:8] & 0) | 165) - if phase < 104 - else ((phase[:8] & 0) | 178) - ) - if phase < 105 - else ( - ((phase[:8] & 0) | 138) - if phase < 106 - else ((phase[:8] & 0) | 22) - ) - ) - if phase < 107 - else ( - ( - ((phase[:8] & 0) | 140) - if phase < 108 - else ((phase[:8] & 0) | 105) - ) - if phase < 109 - else ( - ((phase[:8] & 0) | 213) - if phase < 110 - else ( - ((phase[:8] & 0) | 88) - if phase < 111 - else ((phase[:8] & 0) | 52) - ) - ) - ) - ) - ) - ) - if phase < 112 - else ( - ( - ( - ( - ( - ((phase[:8] & 0) | 139) - if phase < 113 - else ((phase[:8] & 0) | 153) - ) - if phase < 114 - else ( - ((phase[:8] & 0) | 249) - if phase < 115 - else ((phase[:8] & 0) | 239) - ) - ) - if phase < 116 - else ( - ( - ((phase[:8] & 0) | 134) - if phase < 117 - else ((phase[:8] & 0) | 132) - ) - if phase < 118 - else ( - ((phase[:8] & 0) | 198) - if phase < 119 - else ((phase[:8] & 0) | 23) - ) - ) - ) - if phase < 120 - else ( - ( - ( - ((phase[:8] & 0) | 11) - if phase < 121 - else ((phase[:8] & 0) | 45) - ) - if phase < 122 - else ( - ((phase[:8] & 0) | 115) - if phase < 123 - else ((phase[:8] & 0) | 108) - ) - ) - if phase < 124 - else ( - ( - ((phase[:8] & 0) | 16) - if phase < 125 - else ((phase[:8] & 0) | 84) - ) - if phase < 126 - else ( - ((phase[:8] & 0) | 24) - if phase < 127 - else ( - ((phase[:8] & 0) | 152) - if phase < 128 - else ((phase[:8] & 0) | 66) - ) - ) - ) - ) - ) - if phase < 129 - else ( - ( - ( - ( - ((phase[:8] & 0) | 147) - if phase < 130 - else ((phase[:8] & 0) | 125) - ) - if phase < 131 - else ( - ((phase[:8] & 0) | 47) - if phase < 132 - else ((phase[:8] & 0) | 253) - ) - ) - if phase < 133 - else ( - ( - ((phase[:8] & 0) | 193) - if phase < 134 - else ((phase[:8] & 0) | 86) - ) - if phase < 135 - else ( - ((phase[:8] & 0) | 144) - if phase < 136 - else ( - ((phase[:8] & 0) | 212) - if phase < 137 - else ((phase[:8] & 0) | 24) - ) - ) - ) - ) - if phase < 138 - else ( - ( - ( - ((phase[:8] & 0) | 252) - if phase < 139 - else ((phase[:8] & 0) | 75) - ) - if phase < 140 - else ( - ((phase[:8] & 0) | 14) - if phase < 141 - else ((phase[:8] & 0) | 172) - ) - ) - if phase < 142 - else ( - ( - ((phase[:8] & 0) | 150) - if phase < 143 - else ((phase[:8] & 0) | 137) - ) - if phase < 144 - else ( - ((phase[:8] & 0) | 29) - if phase < 145 - else ( - ((phase[:8] & 0) | 31) - if phase < 146 - else ((phase[:8] & 0) | 154) - ) - ) - ) - ) - ) - ) - ) - ) - if phase < 147 - else ( - ( - ( - ( - ( - ( - ( - ((phase[:8] & 0) | 18) - if phase < 148 - else ((phase[:8] & 0) | 56) - ) - if phase < 149 - else ( - ((phase[:8] & 0) | 212) - if phase < 150 - else ((phase[:8] & 0) | 153) - ) - ) - if phase < 151 - else ( - ( - ((phase[:8] & 0) | 227) - if phase < 152 - else ((phase[:8] & 0) | 75) - ) - if phase < 153 - else ( - ((phase[:8] & 0) | 15) - if phase < 154 - else ((phase[:8] & 0) | 36) - ) - ) - ) - if phase < 155 - else ( - ( - ( - ((phase[:8] & 0) | 70) - if phase < 156 - else ((phase[:8] & 0) | 170) - ) - if phase < 157 - else ( - ((phase[:8] & 0) | 239) - if phase < 158 - else ((phase[:8] & 0) | 212) - ) - ) - if phase < 159 - else ( - ( - ((phase[:8] & 0) | 5) - if phase < 160 - else ((phase[:8] & 0) | 104) - ) - if phase < 161 - else ( - ((phase[:8] & 0) | 150) - if phase < 162 - else ( - ((phase[:8] & 0) | 100) - if phase < 163 - else ((phase[:8] & 0) | 97) - ) - ) - ) - ) - ) - if phase < 164 - else ( - ( - ( - ( - ((phase[:8] & 0) | 207) - if phase < 165 - else ((phase[:8] & 0) | 44) - ) - if phase < 166 - else ( - ((phase[:8] & 0) | 248) - if phase < 167 - else ((phase[:8] & 0) | 224) - ) - ) - if phase < 168 - else ( - ( - ((phase[:8] & 0) | 15) - if phase < 169 - else ((phase[:8] & 0) | 80) - ) - if phase < 170 - else ( - ((phase[:8] & 0) | 101) - if phase < 171 - else ((phase[:8] & 0) | 187) - ) - ) - ) - if phase < 172 - else ( - ( - ( - ((phase[:8] & 0) | 226) - if phase < 173 - else ((phase[:8] & 0) | 128) - ) - if phase < 174 - else ( - ((phase[:8] & 0) | 246) - if phase < 175 - else ((phase[:8] & 0) | 25) - ) - ) - if phase < 176 - else ( - ( - ((phase[:8] & 0) | 42) - if phase < 177 - else ((phase[:8] & 0) | 171) - ) - if phase < 178 - else ( - ((phase[:8] & 0) | 243) - if phase < 179 - else ( - ((phase[:8] & 0) | 177) - if phase < 180 - else ((phase[:8] & 0) | 157) - ) - ) - ) - ) - ) - ) - if phase < 181 - else ( - ( - ( - ( - ( - ((phase[:8] & 0) | 202) - if phase < 182 - else ((phase[:8] & 0) | 180) - ) - if phase < 183 - else ( - ((phase[:8] & 0) | 211) - if phase < 184 - else ((phase[:8] & 0) | 253) - ) - ) - if phase < 185 - else ( - ( - ((phase[:8] & 0) | 203) - if phase < 186 - else ((phase[:8] & 0) | 68) - ) - if phase < 187 - else ( - ((phase[:8] & 0) | 141) - if phase < 188 - else ((phase[:8] & 0) | 210) - ) - ) - ) - if phase < 189 - else ( - ( - ( - ((phase[:8] & 0) | 178) - if phase < 190 - else ((phase[:8] & 0) | 67) - ) - if phase < 191 - else ( - ((phase[:8] & 0) | 14) - if phase < 192 - else ((phase[:8] & 0) | 145) - ) - ) - if phase < 193 - else ( - ( - ((phase[:8] & 0) | 129) - if phase < 194 - else ((phase[:8] & 0) | 208) - ) - if phase < 195 - else ( - ((phase[:8] & 0) | 70) - if phase < 196 - else ( - ((phase[:8] & 0) | 243) - if phase < 197 - else ((phase[:8] & 0) | 88) - ) - ) - ) - ) - ) - if phase < 198 - else ( - ( - ( - ( - ((phase[:8] & 0) | 120) - if phase < 199 - else ((phase[:8] & 0) | 25) - ) - if phase < 200 - else ( - ((phase[:8] & 0) | 87) - if phase < 201 - else ((phase[:8] & 0) | 126) - ) - ) - if phase < 202 - else ( - ( - ((phase[:8] & 0) | 104) - if phase < 203 - else ((phase[:8] & 0) | 190) - ) - if phase < 204 - else ( - ((phase[:8] & 0) | 253) - if phase < 205 - else ((phase[:8] & 0) | 87) - ) - ) - ) - if phase < 206 - else ( - ( - ( - ((phase[:8] & 0) | 80) - if phase < 207 - else ((phase[:8] & 0) | 170) - ) - if phase < 208 - else ( - ((phase[:8] & 0) | 164) - if phase < 209 - else ((phase[:8] & 0) | 230) - ) - ) - if phase < 210 - else ( - ( - ((phase[:8] & 0) | 31) - if phase < 211 - else ((phase[:8] & 0) | 100) - ) - if phase < 212 - else ( - ((phase[:8] & 0) | 237) - if phase < 213 - else ( - ((phase[:8] & 0) | 145) - if phase < 214 - else ((phase[:8] & 0) | 37) - ) - ) - ) - ) - ) - ) - ) - if phase < 215 - else ( - ( - ( - ( - ( - ( - ((phase[:8] & 0) | 210) - if phase < 216 - else ((phase[:8] & 0) | 92) - ) - if phase < 217 - else ( - ((phase[:8] & 0) | 119) - if phase < 218 - else ((phase[:8] & 0) | 84) - ) - ) - if phase < 219 - else ( - ( - ((phase[:8] & 0) | 29) - if phase < 220 - else ((phase[:8] & 0) | 99) - ) - if phase < 221 - else ( - ((phase[:8] & 0) | 104) - if phase < 222 - else ((phase[:8] & 0) | 144) - ) - ) - ) - if phase < 223 - else ( - ( - ( - ((phase[:8] & 0) | 210) - if phase < 224 - else ((phase[:8] & 0) | 140) - ) - if phase < 225 - else ( - ((phase[:8] & 0) | 220) - if phase < 226 - else ((phase[:8] & 0) | 148) - ) - ) - if phase < 227 - else ( - ( - ((phase[:8] & 0) | 235) - if phase < 228 - else ((phase[:8] & 0) | 250) - ) - if phase < 229 - else ( - ((phase[:8] & 0) | 183) - if phase < 230 - else ( - ((phase[:8] & 0) | 227) - if phase < 231 - else ((phase[:8] & 0) | 95) - ) - ) - ) - ) - ) - if phase < 232 - else ( - ( - ( - ( - ((phase[:8] & 0) | 35) - if phase < 233 - else ((phase[:8] & 0) | 151) - ) - if phase < 234 - else ( - ((phase[:8] & 0) | 215) - if phase < 235 - else ((phase[:8] & 0) | 83) - ) - ) - if phase < 236 - else ( - ( - ((phase[:8] & 0) | 64) - if phase < 237 - else ((phase[:8] & 0) | 238) - ) - if phase < 238 - else ( - ((phase[:8] & 0) | 153) - if phase < 239 - else ((phase[:8] & 0) | 74) - ) - ) - ) - if phase < 240 - else ( - ( - ( - ((phase[:8] & 0) | 90) - if phase < 241 - else ((phase[:8] & 0) | 239) - ) - if phase < 242 - else ( - ((phase[:8] & 0) | 20) - if phase < 243 - else ((phase[:8] & 0) | 234) - ) - ) - if phase < 244 - else ( - ( - ((phase[:8] & 0) | 17) - if phase < 245 - else ((phase[:8] & 0) | 210) - ) - if phase < 246 - else ( - ((phase[:8] & 0) | 182) - if phase < 247 - else ( - ((phase[:8] & 0) | 18) - if phase < 248 - else ((phase[:8] & 0) | 17) - ) - ) - ) - ) - ) - ) - if phase < 249 - else ( - ( - ( - ( - ( - ((phase[:8] & 0) | 254) - if phase < 250 - else ((phase[:8] & 0) | 169) - ) - if phase < 251 - else ( - ((phase[:8] & 0) | 92) - if phase < 252 - else ((phase[:8] & 0) | 76) - ) - ) - if phase < 253 - else ( - ( - ((phase[:8] & 0) | 1) - if phase < 254 - else ((phase[:8] & 0) | 154) - ) - if phase < 255 - else ( - ((phase[:8] & 0) | 107) - if phase < 256 - else ((phase[:8] & 0) | 249) - ) - ) - ) - if phase < 257 - else ( - ( - ( - ((phase[:8] & 0) | 207) - if phase < 258 - else ((phase[:8] & 0) | 220) - ) - if phase < 259 - else ( - ((phase[:8] & 0) | 177) - if phase < 260 - else ((phase[:8] & 0) | 164) - ) - ) - if phase < 261 - else ( - ( - ((phase[:8] & 0) | 100) - if phase < 262 - else ((phase[:8] & 0) | 34) - ) - if phase < 263 - else ( - ((phase[:8] & 0) | 217) - if phase < 264 - else ( - ((phase[:8] & 0) | 183) - if phase < 265 - else ((phase[:8] & 0) | 232) - ) - ) - ) - ) - ) - if phase < 266 - else ( - ( - ( - ( - ((phase[:8] & 0) | 104) - if phase < 267 - else ((phase[:8] & 0) | 191) - ) - if phase < 268 - else ( - ((phase[:8] & 0) | 181) - if phase < 269 - else ((phase[:8] & 0) | 185) - ) - ) - if phase < 270 - else ( - ( - ((phase[:8] & 0) | 231) - if phase < 271 - else ((phase[:8] & 0) | 237) - ) - if phase < 272 - else ( - ((phase[:8] & 0) | 129) - if phase < 273 - else ( - ((phase[:8] & 0) | 73) - if phase < 274 - else ((phase[:8] & 0) | 229) - ) - ) - ) - ) - if phase < 275 - else ( - ( - ( - ((phase[:8] & 0) | 199) - if phase < 276 - else ((phase[:8] & 0) | 20) - ) - if phase < 277 - else ( - ((phase[:8] & 0) | 205) - if phase < 278 - else ((phase[:8] & 0) | 0) - ) - ) - if phase < 279 - else ( - ( - ((phase[:8] & 0) | 145) - if phase < 280 - else ((phase[:8] & 0) | 140) - ) - if phase < 281 - else ( - ((phase[:8] & 0) | 27) - if phase < 282 - else ( - ((phase[:8] & 0) | 7) - if phase < 283 - else ((phase[:8] & 0) | 0) - ) - ) - ) - ) - ) - ) - ) - ) - ) - complete = ( - ( - ( - ( - ( - ( - ( - ((phase[:1] & 0) | 1) - if phase < 1 - else ((phase[:1] & 0) | 0) - ) - if phase < 6 - else ( - ((phase[:1] & 0) | 1) - if phase < 8 - else ((phase[:1] & 0) | 0) - ) - ) - if phase < 9 - else ( - ( - ((phase[:1] & 0) | 1) - if phase < 10 - else ((phase[:1] & 0) | 0) - ) - if phase < 11 - else ( - ((phase[:1] & 0) | 1) - if phase < 14 - else ( - ((phase[:1] & 0) | 0) - if phase < 15 - else ((phase[:1] & 0) | 1) - ) - ) - ) - ) - if phase < 21 - else ( - ( - ( - ((phase[:1] & 0) | 0) - if phase < 22 - else ((phase[:1] & 0) | 1) - ) - if phase < 23 - else ( - ((phase[:1] & 0) | 0) - if phase < 24 - else ((phase[:1] & 0) | 1) - ) - ) - if phase < 26 - else ( - ( - ((phase[:1] & 0) | 0) - if phase < 27 - else ((phase[:1] & 0) | 1) - ) - if phase < 28 - else ( - ((phase[:1] & 0) | 0) - if phase < 32 - else ( - ((phase[:1] & 0) | 1) - if phase < 33 - else ((phase[:1] & 0) | 0) - ) - ) - ) - ) - ) - if phase < 34 - else ( - ( - ( - ( - ((phase[:1] & 0) | 1) - if phase < 41 - else ((phase[:1] & 0) | 0) - ) - if phase < 42 - else ( - ((phase[:1] & 0) | 1) - if phase < 43 - else ((phase[:1] & 0) | 0) - ) - ) - if phase < 44 - else ( - ( - ((phase[:1] & 0) | 1) - if phase < 46 - else ((phase[:1] & 0) | 0) - ) - if phase < 47 - else ( - ((phase[:1] & 0) | 1) - if phase < 51 - else ( - ((phase[:1] & 0) | 0) - if phase < 54 - else ((phase[:1] & 0) | 1) - ) - ) - ) - ) - if phase < 55 - else ( - ( - ( - ((phase[:1] & 0) | 0) - if phase < 59 - else ((phase[:1] & 0) | 1) - ) - if phase < 62 - else ( - ((phase[:1] & 0) | 0) - if phase < 64 - else ((phase[:1] & 0) | 1) - ) - ) - if phase < 65 - else ( - ( - ((phase[:1] & 0) | 0) - if phase < 66 - else ((phase[:1] & 0) | 1) - ) - if phase < 69 - else ( - ((phase[:1] & 0) | 0) - if phase < 73 - else ( - ((phase[:1] & 0) | 1) - if phase < 75 - else ((phase[:1] & 0) | 0) - ) - ) - ) - ) - ) - ) - if phase < 76 - else ( - ( - ( - ( - ( - ((phase[:1] & 0) | 1) - if phase < 77 - else ((phase[:1] & 0) | 0) - ) - if phase < 78 - else ( - ((phase[:1] & 0) | 1) - if phase < 79 - else ((phase[:1] & 0) | 0) - ) - ) - if phase < 80 - else ( - ( - ((phase[:1] & 0) | 1) - if phase < 84 - else ((phase[:1] & 0) | 0) - ) - if phase < 85 - else ( - ((phase[:1] & 0) | 1) - if phase < 89 - else ( - ((phase[:1] & 0) | 0) - if phase < 90 - else ((phase[:1] & 0) | 1) - ) - ) - ) - ) - if phase < 92 - else ( - ( - ( - ((phase[:1] & 0) | 0) - if phase < 93 - else ((phase[:1] & 0) | 1) - ) - if phase < 94 - else ( - ((phase[:1] & 0) | 0) - if phase < 95 - else ((phase[:1] & 0) | 1) - ) - ) - if phase < 97 - else ( - ( - ((phase[:1] & 0) | 0) - if phase < 98 - else ((phase[:1] & 0) | 1) - ) - if phase < 100 - else ( - ((phase[:1] & 0) | 0) - if phase < 104 - else ( - ((phase[:1] & 0) | 1) - if phase < 108 - else ((phase[:1] & 0) | 0) - ) - ) - ) - ) - ) - if phase < 110 - else ( - ( - ( - ( - ((phase[:1] & 0) | 1) - if phase < 111 - else ((phase[:1] & 0) | 0) - ) - if phase < 112 - else ( - ((phase[:1] & 0) | 1) - if phase < 116 - else ((phase[:1] & 0) | 0) - ) - ) - if phase < 119 - else ( - ( - ((phase[:1] & 0) | 1) - if phase < 120 - else ((phase[:1] & 0) | 0) - ) - if phase < 122 - else ( - ((phase[:1] & 0) | 1) - if phase < 124 - else ( - ((phase[:1] & 0) | 0) - if phase < 125 - else ((phase[:1] & 0) | 1) - ) - ) - ) - ) - if phase < 126 - else ( - ( - ( - ((phase[:1] & 0) | 0) - if phase < 127 - else ((phase[:1] & 0) | 1) - ) - if phase < 128 - else ( - ((phase[:1] & 0) | 0) - if phase < 130 - else ((phase[:1] & 0) | 1) - ) - ) - if phase < 132 - else ( - ( - ((phase[:1] & 0) | 0) - if phase < 133 - else ((phase[:1] & 0) | 1) - ) - if phase < 137 - else ( - ((phase[:1] & 0) | 0) - if phase < 139 - else ( - ((phase[:1] & 0) | 1) - if phase < 141 - else ((phase[:1] & 0) | 0) - ) - ) - ) - ) - ) - ) - ) - if phase < 143 - else ( - ( - ( - ( - ( - ( - ((phase[:1] & 0) | 1) - if phase < 145 - else ((phase[:1] & 0) | 0) - ) - if phase < 149 - else ( - ((phase[:1] & 0) | 1) - if phase < 152 - else ((phase[:1] & 0) | 0) - ) - ) - if phase < 156 - else ( - ( - ((phase[:1] & 0) | 1) - if phase < 158 - else ((phase[:1] & 0) | 0) - ) - if phase < 160 - else ( - ((phase[:1] & 0) | 1) - if phase < 165 - else ( - ((phase[:1] & 0) | 0) - if phase < 166 - else ((phase[:1] & 0) | 1) - ) - ) - ) - ) - if phase < 169 - else ( - ( - ( - ((phase[:1] & 0) | 0) - if phase < 170 - else ((phase[:1] & 0) | 1) - ) - if phase < 171 - else ( - ((phase[:1] & 0) | 0) - if phase < 172 - else ((phase[:1] & 0) | 1) - ) - ) - if phase < 175 - else ( - ( - ((phase[:1] & 0) | 0) - if phase < 179 - else ((phase[:1] & 0) | 1) - ) - if phase < 180 - else ( - ((phase[:1] & 0) | 0) - if phase < 181 - else ( - ((phase[:1] & 0) | 1) - if phase < 182 - else ((phase[:1] & 0) | 0) - ) - ) - ) - ) - ) - if phase < 183 - else ( - ( - ( - ( - ((phase[:1] & 0) | 1) - if phase < 184 - else ((phase[:1] & 0) | 0) - ) - if phase < 185 - else ( - ((phase[:1] & 0) | 1) - if phase < 186 - else ((phase[:1] & 0) | 0) - ) - ) - if phase < 188 - else ( - ( - ((phase[:1] & 0) | 1) - if phase < 191 - else ((phase[:1] & 0) | 0) - ) - if phase < 192 - else ( - ((phase[:1] & 0) | 1) - if phase < 195 - else ( - ((phase[:1] & 0) | 0) - if phase < 196 - else ((phase[:1] & 0) | 1) - ) - ) - ) - ) - if phase < 197 - else ( - ( - ( - ((phase[:1] & 0) | 0) - if phase < 198 - else ((phase[:1] & 0) | 1) - ) - if phase < 200 - else ( - ((phase[:1] & 0) | 0) - if phase < 203 - else ((phase[:1] & 0) | 1) - ) - ) - if phase < 204 - else ( - ( - ((phase[:1] & 0) | 0) - if phase < 205 - else ((phase[:1] & 0) | 1) - ) - if phase < 211 - else ( - ((phase[:1] & 0) | 0) - if phase < 213 - else ( - ((phase[:1] & 0) | 1) - if phase < 214 - else ((phase[:1] & 0) | 0) - ) - ) - ) - ) - ) - ) - if phase < 215 - else ( - ( - ( - ( - ( - ((phase[:1] & 0) | 1) - if phase < 216 - else ((phase[:1] & 0) | 0) - ) - if phase < 218 - else ( - ((phase[:1] & 0) | 1) - if phase < 219 - else ((phase[:1] & 0) | 0) - ) - ) - if phase < 223 - else ( - ( - ((phase[:1] & 0) | 1) - if phase < 225 - else ((phase[:1] & 0) | 0) - ) - if phase < 228 - else ( - ((phase[:1] & 0) | 1) - if phase < 229 - else ( - ((phase[:1] & 0) | 0) - if phase < 230 - else ((phase[:1] & 0) | 1) - ) - ) - ) - ) - if phase < 232 - else ( - ( - ( - ((phase[:1] & 0) | 0) - if phase < 235 - else ((phase[:1] & 0) | 1) - ) - if phase < 238 - else ( - ((phase[:1] & 0) | 0) - if phase < 240 - else ((phase[:1] & 0) | 1) - ) - ) - if phase < 245 - else ( - ( - ((phase[:1] & 0) | 0) - if phase < 247 - else ((phase[:1] & 0) | 1) - ) - if phase < 251 - else ( - ((phase[:1] & 0) | 0) - if phase < 255 - else ( - ((phase[:1] & 0) | 1) - if phase < 256 - else ((phase[:1] & 0) | 0) - ) - ) - ) - ) - ) - if phase < 257 - else ( - ( - ( - ( - ((phase[:1] & 0) | 1) - if phase < 258 - else ((phase[:1] & 0) | 0) - ) - if phase < 260 - else ( - ((phase[:1] & 0) | 1) - if phase < 263 - else ((phase[:1] & 0) | 0) - ) - ) - if phase < 266 - else ( - ( - ((phase[:1] & 0) | 1) - if phase < 267 - else ((phase[:1] & 0) | 0) - ) - if phase < 268 - else ( - ((phase[:1] & 0) | 1) - if phase < 269 - else ( - ((phase[:1] & 0) | 0) - if phase < 271 - else ((phase[:1] & 0) | 1) - ) - ) - ) - ) - if phase < 272 - else ( - ( - ( - ((phase[:1] & 0) | 0) - if phase < 273 - else ((phase[:1] & 0) | 1) - ) - if phase < 274 - else ( - ((phase[:1] & 0) | 0) - if phase < 277 - else ((phase[:1] & 0) | 1) - ) - ) - if phase < 278 - else ( - ( - ((phase[:1] & 0) | 0) - if phase < 279 - else ((phase[:1] & 0) | 1) - ) - if phase < 281 - else ( - ((phase[:1] & 0) | 0) - if phase < 282 - else ( - ((phase[:1] & 0) | 1) - if phase < 283 - else ((phase[:1] & 0) | 0) - ) - ) - ) - ) - ) - ) - ) - ) - complete_index = ( - ( - ( - ( - ( - ( - ( - ((phase[:2] & 0) | 0) - if phase < 7 - else ( - ((phase[:2] & 0) | 2) - if phase < 8 - else ((phase[:2] & 0) | 0) - ) - ) - if phase < 11 - else ( - ((phase[:2] & 0) | 1) - if phase < 13 - else ( - ((phase[:2] & 0) | 0) - if phase < 15 - else ((phase[:2] & 0) | 3) - ) - ) - ) - if phase < 16 - else ( - ( - ((phase[:2] & 0) | 0) - if phase < 17 - else ( - ((phase[:2] & 0) | 1) - if phase < 18 - else ((phase[:2] & 0) | 2) - ) - ) - if phase < 19 - else ( - ( - ((phase[:2] & 0) | 3) - if phase < 21 - else ((phase[:2] & 0) | 0) - ) - if phase < 27 - else ( - ((phase[:2] & 0) | 3) - if phase < 28 - else ((phase[:2] & 0) | 2) - ) - ) - ) - ) - if phase < 30 - else ( - ( - ( - ((phase[:2] & 0) | 3) - if phase < 32 - else ( - ((phase[:2] & 0) | 1) - if phase < 33 - else ((phase[:2] & 0) | 3) - ) - ) - if phase < 34 - else ( - ((phase[:2] & 0) | 1) - if phase < 35 - else ( - ((phase[:2] & 0) | 0) - if phase < 36 - else ((phase[:2] & 0) | 3) - ) - ) - ) - if phase < 39 - else ( - ( - ((phase[:2] & 0) | 2) - if phase < 40 - else ( - ((phase[:2] & 0) | 3) - if phase < 41 - else ((phase[:2] & 0) | 2) - ) - ) - if phase < 43 - else ( - ( - ((phase[:2] & 0) | 3) - if phase < 44 - else ((phase[:2] & 0) | 1) - ) - if phase < 46 - else ( - ((phase[:2] & 0) | 3) - if phase < 47 - else ((phase[:2] & 0) | 2) - ) - ) - ) - ) - ) - if phase < 48 - else ( - ( - ( - ( - ((phase[:2] & 0) | 0) - if phase < 50 - else ( - ((phase[:2] & 0) | 3) - if phase < 51 - else ((phase[:2] & 0) | 2) - ) - ) - if phase < 52 - else ( - ((phase[:2] & 0) | 3) - if phase < 53 - else ( - ((phase[:2] & 0) | 2) - if phase < 54 - else ((phase[:2] & 0) | 0) - ) - ) - ) - if phase < 56 - else ( - ( - ((phase[:2] & 0) | 2) - if phase < 57 - else ( - ((phase[:2] & 0) | 1) - if phase < 58 - else ((phase[:2] & 0) | 3) - ) - ) - if phase < 59 - else ( - ( - ((phase[:2] & 0) | 2) - if phase < 60 - else ((phase[:2] & 0) | 1) - ) - if phase < 63 - else ( - ((phase[:2] & 0) | 3) - if phase < 64 - else ((phase[:2] & 0) | 1) - ) - ) - ) - ) - if phase < 66 - else ( - ( - ( - ((phase[:2] & 0) | 2) - if phase < 67 - else ( - ((phase[:2] & 0) | 3) - if phase < 68 - else ((phase[:2] & 0) | 0) - ) - ) - if phase < 69 - else ( - ((phase[:2] & 0) | 2) - if phase < 70 - else ( - ((phase[:2] & 0) | 3) - if phase < 71 - else ((phase[:2] & 0) | 2) - ) - ) - ) - if phase < 72 - else ( - ( - ((phase[:2] & 0) | 0) - if phase < 73 - else ( - ((phase[:2] & 0) | 1) - if phase < 74 - else ((phase[:2] & 0) | 3) - ) - ) - if phase < 75 - else ( - ( - ((phase[:2] & 0) | 1) - if phase < 76 - else ((phase[:2] & 0) | 2) - ) - if phase < 77 - else ( - ((phase[:2] & 0) | 0) - if phase < 78 - else ((phase[:2] & 0) | 2) - ) - ) - ) - ) - ) - ) - if phase < 79 - else ( - ( - ( - ( - ( - ((phase[:2] & 0) | 3) - if phase < 80 - else ( - ((phase[:2] & 0) | 1) - if phase < 82 - else ((phase[:2] & 0) | 3) - ) - ) - if phase < 83 - else ( - ((phase[:2] & 0) | 2) - if phase < 85 - else ( - ((phase[:2] & 0) | 1) - if phase < 87 - else ((phase[:2] & 0) | 0) - ) - ) - ) - if phase < 88 - else ( - ( - ((phase[:2] & 0) | 2) - if phase < 89 - else ( - ((phase[:2] & 0) | 0) - if phase < 90 - else ((phase[:2] & 0) | 2) - ) - ) - if phase < 91 - else ( - ( - ((phase[:2] & 0) | 3) - if phase < 92 - else ((phase[:2] & 0) | 2) - ) - if phase < 93 - else ( - ((phase[:2] & 0) | 0) - if phase < 94 - else ((phase[:2] & 0) | 3) - ) - ) - ) - ) - if phase < 95 - else ( - ( - ( - ((phase[:2] & 0) | 0) - if phase < 96 - else ( - ((phase[:2] & 0) | 1) - if phase < 98 - else ((phase[:2] & 0) | 3) - ) - ) - if phase < 99 - else ( - ((phase[:2] & 0) | 2) - if phase < 100 - else ( - ((phase[:2] & 0) | 0) - if phase < 102 - else ((phase[:2] & 0) | 2) - ) - ) - ) - if phase < 104 - else ( - ( - ((phase[:2] & 0) | 1) - if phase < 105 - else ( - ((phase[:2] & 0) | 3) - if phase < 106 - else ((phase[:2] & 0) | 0) - ) - ) - if phase < 108 - else ( - ( - ((phase[:2] & 0) | 2) - if phase < 110 - else ((phase[:2] & 0) | 3) - ) - if phase < 111 - else ( - ((phase[:2] & 0) | 2) - if phase < 112 - else ((phase[:2] & 0) | 3) - ) - ) - ) - ) - ) - if phase < 113 - else ( - ( - ( - ( - ((phase[:2] & 0) | 1) - if phase < 114 - else ( - ((phase[:2] & 0) | 0) - if phase < 115 - else ((phase[:2] & 0) | 3) - ) - ) - if phase < 117 - else ( - ((phase[:2] & 0) | 1) - if phase < 118 - else ( - ((phase[:2] & 0) | 3) - if phase < 122 - else ((phase[:2] & 0) | 2) - ) - ) - ) - if phase < 123 - else ( - ( - ((phase[:2] & 0) | 3) - if phase < 124 - else ( - ((phase[:2] & 0) | 0) - if phase < 125 - else ((phase[:2] & 0) | 1) - ) - ) - if phase < 126 - else ( - ( - ((phase[:2] & 0) | 2) - if phase < 128 - else ((phase[:2] & 0) | 1) - ) - if phase < 129 - else ( - ((phase[:2] & 0) | 0) - if phase < 130 - else ((phase[:2] & 0) | 1) - ) - ) - ) - ) - if phase < 131 - else ( - ( - ( - ((phase[:2] & 0) | 3) - if phase < 132 - else ( - ((phase[:2] & 0) | 0) - if phase < 133 - else ((phase[:2] & 0) | 1) - ) - ) - if phase < 134 - else ( - ( - ((phase[:2] & 0) | 2) - if phase < 135 - else ((phase[:2] & 0) | 0) - ) - if phase < 137 - else ( - ((phase[:2] & 0) | 3) - if phase < 138 - else ((phase[:2] & 0) | 2) - ) - ) - ) - if phase < 139 - else ( - ( - ((phase[:2] & 0) | 3) - if phase < 140 - else ( - ((phase[:2] & 0) | 2) - if phase < 141 - else ((phase[:2] & 0) | 1) - ) - ) - if phase < 142 - else ( - ( - ((phase[:2] & 0) | 3) - if phase < 143 - else ((phase[:2] & 0) | 0) - ) - if phase < 145 - else ( - ((phase[:2] & 0) | 2) - if phase < 146 - else ((phase[:2] & 0) | 1) - ) - ) - ) - ) - ) - ) - ) - if phase < 147 - else ( - ( - ( - ( - ( - ( - ((phase[:2] & 0) | 2) - if phase < 149 - else ( - ((phase[:2] & 0) | 0) - if phase < 150 - else ((phase[:2] & 0) | 2) - ) - ) - if phase < 151 - else ( - ((phase[:2] & 0) | 0) - if phase < 152 - else ( - ((phase[:2] & 0) | 2) - if phase < 153 - else ((phase[:2] & 0) | 1) - ) - ) - ) - if phase < 154 - else ( - ( - ((phase[:2] & 0) | 0) - if phase < 155 - else ( - ((phase[:2] & 0) | 2) - if phase < 156 - else ((phase[:2] & 0) | 1) - ) - ) - if phase < 158 - else ( - ( - ((phase[:2] & 0) | 0) - if phase < 159 - else ((phase[:2] & 0) | 2) - ) - if phase < 160 - else ( - ((phase[:2] & 0) | 0) - if phase < 161 - else ((phase[:2] & 0) | 1) - ) - ) - ) - ) - if phase < 162 - else ( - ( - ( - ((phase[:2] & 0) | 2) - if phase < 163 - else ( - ((phase[:2] & 0) | 3) - if phase < 164 - else ((phase[:2] & 0) | 1) - ) - ) - if phase < 165 - else ( - ((phase[:2] & 0) | 0) - if phase < 166 - else ( - ((phase[:2] & 0) | 3) - if phase < 168 - else ((phase[:2] & 0) | 0) - ) - ) - ) - if phase < 169 - else ( - ( - ((phase[:2] & 0) | 2) - if phase < 170 - else ( - ((phase[:2] & 0) | 3) - if phase < 171 - else ((phase[:2] & 0) | 0) - ) - ) - if phase < 172 - else ( - ( - ((phase[:2] & 0) | 3) - if phase < 175 - else ((phase[:2] & 0) | 2) - ) - if phase < 176 - else ( - ((phase[:2] & 0) | 0) - if phase < 177 - else ((phase[:2] & 0) | 3) - ) - ) - ) - ) - ) - if phase < 178 - else ( - ( - ( - ( - ((phase[:2] & 0) | 2) - if phase < 179 - else ( - ((phase[:2] & 0) | 0) - if phase < 181 - else ((phase[:2] & 0) | 1) - ) - ) - if phase < 182 - else ( - ((phase[:2] & 0) | 2) - if phase < 183 - else ( - ((phase[:2] & 0) | 0) - if phase < 184 - else ((phase[:2] & 0) | 2) - ) - ) - ) - if phase < 186 - else ( - ( - ((phase[:2] & 0) | 0) - if phase < 187 - else ( - ((phase[:2] & 0) | 2) - if phase < 188 - else ((phase[:2] & 0) | 1) - ) - ) - if phase < 189 - else ( - ( - ((phase[:2] & 0) | 2) - if phase < 190 - else ((phase[:2] & 0) | 1) - ) - if phase < 191 - else ( - ((phase[:2] & 0) | 3) - if phase < 192 - else ((phase[:2] & 0) | 0) - ) - ) - ) - ) - if phase < 193 - else ( - ( - ( - ((phase[:2] & 0) | 2) - if phase < 196 - else ( - ((phase[:2] & 0) | 0) - if phase < 197 - else ((phase[:2] & 0) | 1) - ) - ) - if phase < 199 - else ( - ( - ((phase[:2] & 0) | 0) - if phase < 200 - else ((phase[:2] & 0) | 1) - ) - if phase < 201 - else ( - ((phase[:2] & 0) | 0) - if phase < 206 - else ((phase[:2] & 0) | 1) - ) - ) - ) - if phase < 207 - else ( - ( - ((phase[:2] & 0) | 0) - if phase < 208 - else ( - ((phase[:2] & 0) | 1) - if phase < 209 - else ((phase[:2] & 0) | 0) - ) - ) - if phase < 210 - else ( - ( - ((phase[:2] & 0) | 2) - if phase < 212 - else ((phase[:2] & 0) | 3) - ) - if phase < 213 - else ( - ((phase[:2] & 0) | 0) - if phase < 215 - else ((phase[:2] & 0) | 3) - ) - ) - ) - ) - ) - ) - if phase < 216 - else ( - ( - ( - ( - ( - ((phase[:2] & 0) | 0) - if phase < 217 - else ( - ((phase[:2] & 0) | 3) - if phase < 218 - else ((phase[:2] & 0) | 2) - ) - ) - if phase < 219 - else ( - ((phase[:2] & 0) | 0) - if phase < 220 - else ( - ((phase[:2] & 0) | 2) - if phase < 221 - else ((phase[:2] & 0) | 3) - ) - ) - ) - if phase < 222 - else ( - ( - ((phase[:2] & 0) | 0) - if phase < 224 - else ( - ((phase[:2] & 0) | 3) - if phase < 225 - else ((phase[:2] & 0) | 0) - ) - ) - if phase < 229 - else ( - ( - ((phase[:2] & 0) | 3) - if phase < 230 - else ((phase[:2] & 0) | 0) - ) - if phase < 231 - else ( - ((phase[:2] & 0) | 2) - if phase < 232 - else ((phase[:2] & 0) | 3) - ) - ) - ) - ) - if phase < 233 - else ( - ( - ( - ((phase[:2] & 0) | 2) - if phase < 234 - else ( - ((phase[:2] & 0) | 1) - if phase < 235 - else ((phase[:2] & 0) | 0) - ) - ) - if phase < 237 - else ( - ((phase[:2] & 0) | 3) - if phase < 239 - else ( - ((phase[:2] & 0) | 0) - if phase < 240 - else ((phase[:2] & 0) | 1) - ) - ) - ) - if phase < 242 - else ( - ( - ((phase[:2] & 0) | 0) - if phase < 243 - else ( - ((phase[:2] & 0) | 1) - if phase < 244 - else ((phase[:2] & 0) | 2) - ) - ) - if phase < 246 - else ( - ( - ((phase[:2] & 0) | 3) - if phase < 247 - else ((phase[:2] & 0) | 0) - ) - if phase < 248 - else ( - ((phase[:2] & 0) | 2) - if phase < 249 - else ((phase[:2] & 0) | 3) - ) - ) - ) - ) - ) - if phase < 250 - else ( - ( - ( - ( - ((phase[:2] & 0) | 0) - if phase < 251 - else ( - ((phase[:2] & 0) | 2) - if phase < 252 - else ((phase[:2] & 0) | 0) - ) - ) - if phase < 255 - else ( - ((phase[:2] & 0) | 3) - if phase < 256 - else ( - ((phase[:2] & 0) | 2) - if phase < 257 - else ((phase[:2] & 0) | 0) - ) - ) - ) - if phase < 258 - else ( - ( - ((phase[:2] & 0) | 1) - if phase < 259 - else ( - ((phase[:2] & 0) | 2) - if phase < 260 - else ((phase[:2] & 0) | 3) - ) - ) - if phase < 261 - else ( - ( - ((phase[:2] & 0) | 1) - if phase < 262 - else ((phase[:2] & 0) | 3) - ) - if phase < 263 - else ( - ((phase[:2] & 0) | 2) - if phase < 264 - else ((phase[:2] & 0) | 3) - ) - ) - ) - ) - if phase < 265 - else ( - ( - ( - ((phase[:2] & 0) | 2) - if phase < 266 - else ( - ((phase[:2] & 0) | 1) - if phase < 269 - else ((phase[:2] & 0) | 3) - ) - ) - if phase < 271 - else ( - ( - ((phase[:2] & 0) | 2) - if phase < 272 - else ((phase[:2] & 0) | 3) - ) - if phase < 273 - else ( - ((phase[:2] & 0) | 2) - if phase < 274 - else ((phase[:2] & 0) | 3) - ) - ) - ) - if phase < 276 - else ( - ( - ((phase[:2] & 0) | 0) - if phase < 278 - else ( - ((phase[:2] & 0) | 1) - if phase < 279 - else ((phase[:2] & 0) | 0) - ) - ) - if phase < 280 - else ( - ( - ((phase[:2] & 0) | 3) - if phase < 281 - else ((phase[:2] & 0) | 1) - ) - if phase < 282 - else ( - ((phase[:2] & 0) | 3) - if phase < 283 - else ((phase[:2] & 0) | 0) - ) - ) - ) - ) - ) - ) - ) - ) - complete_tag = ( - ( - ( - ( - ( - ( - ( - ( - ((phase[:8] & 0) | 0) - if phase < 6 - else ((phase[:8] & 0) | 99) - ) - if phase < 7 - else ( - ((phase[:8] & 0) | 13) - if phase < 8 - else ((phase[:8] & 0) | 0) - ) - ) - if phase < 9 - else ( - ( - ((phase[:8] & 0) | 11) - if phase < 10 - else ((phase[:8] & 0) | 0) - ) - if phase < 11 - else ( - ((phase[:8] & 0) | 12) - if phase < 13 - else ((phase[:8] & 0) | 15) - ) - ) - ) - if phase < 14 - else ( - ( - ( - ((phase[:8] & 0) | 0) - if phase < 15 - else ((phase[:8] & 0) | 14) - ) - if phase < 16 - else ( - ((phase[:8] & 0) | 15) - if phase < 17 - else ((phase[:8] & 0) | 16) - ) - ) - if phase < 18 - else ( - ( - ((phase[:8] & 0) | 17) - if phase < 19 - else ((phase[:8] & 0) | 18) - ) - if phase < 21 - else ( - ((phase[:8] & 0) | 0) - if phase < 22 - else ( - ((phase[:8] & 0) | 21) - if phase < 23 - else ((phase[:8] & 0) | 0) - ) - ) - ) - ) - ) - if phase < 24 - else ( - ( - ( - ( - ((phase[:8] & 0) | 21) - if phase < 25 - else ((phase[:8] & 0) | 31) - ) - if phase < 26 - else ( - ((phase[:8] & 0) | 0) - if phase < 27 - else ((phase[:8] & 0) | 174) - ) - ) - if phase < 28 - else ( - ( - ((phase[:8] & 0) | 224) - if phase < 29 - else ((phase[:8] & 0) | 15) - ) - if phase < 30 - else ( - ((phase[:8] & 0) | 112) - if phase < 31 - else ((phase[:8] & 0) | 206) - ) - ) - ) - if phase < 32 - else ( - ( - ( - ((phase[:8] & 0) | 107) - if phase < 33 - else ((phase[:8] & 0) | 38) - ) - if phase < 34 - else ( - ((phase[:8] & 0) | 8) - if phase < 35 - else ((phase[:8] & 0) | 113) - ) - ) - if phase < 36 - else ( - ( - ((phase[:8] & 0) | 187) - if phase < 37 - else ((phase[:8] & 0) | 222) - ) - if phase < 38 - else ( - ((phase[:8] & 0) | 94) - if phase < 39 - else ( - ((phase[:8] & 0) | 203) - if phase < 40 - else ((phase[:8] & 0) | 174) - ) - ) - ) - ) - ) - ) - if phase < 41 - else ( - ( - ( - ( - ( - ((phase[:8] & 0) | 146) - if phase < 42 - else ((phase[:8] & 0) | 224) - ) - if phase < 43 - else ( - ((phase[:8] & 0) | 138) - if phase < 44 - else ((phase[:8] & 0) | 90) - ) - ) - if phase < 45 - else ( - ( - ((phase[:8] & 0) | 23) - if phase < 46 - else ((phase[:8] & 0) | 16) - ) - if phase < 47 - else ( - ((phase[:8] & 0) | 164) - if phase < 48 - else ((phase[:8] & 0) | 111) - ) - ) - ) - if phase < 49 - else ( - ( - ( - ((phase[:8] & 0) | 45) - if phase < 50 - else ((phase[:8] & 0) | 69) - ) - if phase < 51 - else ( - ((phase[:8] & 0) | 183) - if phase < 52 - else ((phase[:8] & 0) | 71) - ) - ) - if phase < 53 - else ( - ( - ((phase[:8] & 0) | 224) - if phase < 54 - else ((phase[:8] & 0) | 52) - ) - if phase < 55 - else ( - ((phase[:8] & 0) | 72) - if phase < 56 - else ( - ((phase[:8] & 0) | 248) - if phase < 57 - else ((phase[:8] & 0) | 55) - ) - ) - ) - ) - ) - if phase < 58 - else ( - ( - ( - ( - ((phase[:8] & 0) | 126) - if phase < 59 - else ((phase[:8] & 0) | 215) - ) - if phase < 60 - else ( - ((phase[:8] & 0) | 189) - if phase < 61 - else ((phase[:8] & 0) | 67) - ) - ) - if phase < 62 - else ( - ( - ((phase[:8] & 0) | 89) - if phase < 63 - else ((phase[:8] & 0) | 78) - ) - if phase < 64 - else ( - ((phase[:8] & 0) | 107) - if phase < 65 - else ( - ((phase[:8] & 0) | 167) - if phase < 66 - else ((phase[:8] & 0) | 2) - ) - ) - ) - ) - if phase < 67 - else ( - ( - ( - ((phase[:8] & 0) | 242) - if phase < 68 - else ((phase[:8] & 0) | 237) - ) - if phase < 69 - else ( - ((phase[:8] & 0) | 121) - if phase < 70 - else ((phase[:8] & 0) | 41) - ) - ) - if phase < 71 - else ( - ( - ((phase[:8] & 0) | 188) - if phase < 72 - else ((phase[:8] & 0) | 143) - ) - if phase < 73 - else ( - ((phase[:8] & 0) | 205) - if phase < 74 - else ( - ((phase[:8] & 0) | 201) - if phase < 75 - else ((phase[:8] & 0) | 43) - ) - ) - ) - ) - ) - ) - ) - if phase < 76 - else ( - ( - ( - ( - ( - ( - ((phase[:8] & 0) | 206) - if phase < 77 - else ((phase[:8] & 0) | 39) - ) - if phase < 78 - else ( - ((phase[:8] & 0) | 147) - if phase < 79 - else ((phase[:8] & 0) | 119) - ) - ) - if phase < 80 - else ( - ( - ((phase[:8] & 0) | 184) - if phase < 81 - else ((phase[:8] & 0) | 115) - ) - if phase < 82 - else ( - ((phase[:8] & 0) | 85) - if phase < 83 - else ((phase[:8] & 0) | 22) - ) - ) - ) - if phase < 84 - else ( - ( - ( - ((phase[:8] & 0) | 36) - if phase < 85 - else ((phase[:8] & 0) | 111) - ) - if phase < 86 - else ( - ((phase[:8] & 0) | 79) - if phase < 87 - else ((phase[:8] & 0) | 94) - ) - ) - if phase < 88 - else ( - ( - ((phase[:8] & 0) | 85) - if phase < 89 - else ((phase[:8] & 0) | 208) - ) - if phase < 90 - else ( - ((phase[:8] & 0) | 131) - if phase < 91 - else ( - ((phase[:8] & 0) | 44) - if phase < 93 - else ((phase[:8] & 0) | 7) - ) - ) - ) - ) - ) - if phase < 94 - else ( - ( - ( - ( - ((phase[:8] & 0) | 30) - if phase < 95 - else ((phase[:8] & 0) | 160) - ) - if phase < 96 - else ( - ((phase[:8] & 0) | 16) - if phase < 97 - else ((phase[:8] & 0) | 90) - ) - ) - if phase < 98 - else ( - ( - ((phase[:8] & 0) | 33) - if phase < 99 - else ((phase[:8] & 0) | 216) - ) - if phase < 100 - else ( - ((phase[:8] & 0) | 187) - if phase < 101 - else ((phase[:8] & 0) | 228) - ) - ) - ) - if phase < 102 - else ( - ( - ( - ((phase[:8] & 0) | 175) - if phase < 103 - else ((phase[:8] & 0) | 5) - ) - if phase < 104 - else ( - ((phase[:8] & 0) | 42) - if phase < 105 - else ((phase[:8] & 0) | 126) - ) - ) - if phase < 106 - else ( - ( - ((phase[:8] & 0) | 91) - if phase < 107 - else ((phase[:8] & 0) | 170) - ) - if phase < 108 - else ( - ((phase[:8] & 0) | 168) - if phase < 109 - else ( - ((phase[:8] & 0) | 171) - if phase < 110 - else ((phase[:8] & 0) | 209) - ) - ) - ) - ) - ) - ) - if phase < 111 - else ( - ( - ( - ( - ( - ((phase[:8] & 0) | 92) - if phase < 112 - else ((phase[:8] & 0) | 101) - ) - if phase < 113 - else ( - ((phase[:8] & 0) | 23) - if phase < 114 - else ((phase[:8] & 0) | 75) - ) - ) - if phase < 115 - else ( - ( - ((phase[:8] & 0) | 78) - if phase < 116 - else ((phase[:8] & 0) | 67) - ) - if phase < 117 - else ( - ((phase[:8] & 0) | 155) - if phase < 118 - else ((phase[:8] & 0) | 60) - ) - ) - ) - if phase < 119 - else ( - ( - ( - ((phase[:8] & 0) | 15) - if phase < 120 - else ((phase[:8] & 0) | 55) - ) - if phase < 121 - else ( - ((phase[:8] & 0) | 93) - if phase < 122 - else ((phase[:8] & 0) | 59) - ) - ) - if phase < 123 - else ( - ( - ((phase[:8] & 0) | 3) - if phase < 124 - else ((phase[:8] & 0) | 76) - ) - if phase < 125 - else ( - ((phase[:8] & 0) | 198) - if phase < 126 - else ( - ((phase[:8] & 0) | 136) - if phase < 127 - else ((phase[:8] & 0) | 32) - ) - ) - ) - ) - ) - if phase < 128 - else ( - ( - ( - ( - ((phase[:8] & 0) | 134) - if phase < 129 - else ((phase[:8] & 0) | 220) - ) - if phase < 130 - else ( - ((phase[:8] & 0) | 118) - if phase < 131 - else ((phase[:8] & 0) | 142) - ) - ) - if phase < 132 - else ( - ( - ((phase[:8] & 0) | 140) - if phase < 133 - else ((phase[:8] & 0) | 240) - ) - if phase < 134 - else ( - ((phase[:8] & 0) | 222) - if phase < 135 - else ( - ((phase[:8] & 0) | 114) - if phase < 136 - else ((phase[:8] & 0) | 48) - ) - ) - ) - ) - if phase < 137 - else ( - ( - ( - ((phase[:8] & 0) | 107) - if phase < 138 - else ((phase[:8] & 0) | 59) - ) - if phase < 139 - else ( - ((phase[:8] & 0) | 60) - if phase < 140 - else ((phase[:8] & 0) | 116) - ) - ) - if phase < 141 - else ( - ( - ((phase[:8] & 0) | 18) - if phase < 142 - else ((phase[:8] & 0) | 149) - ) - if phase < 143 - else ( - ((phase[:8] & 0) | 144) - if phase < 144 - else ( - ((phase[:8] & 0) | 244) - if phase < 145 - else ((phase[:8] & 0) | 223) - ) - ) - ) - ) - ) - ) - ) - ) - if phase < 146 - else ( - ( - ( - ( - ( - ( - ( - ((phase[:8] & 0) | 123) - if phase < 147 - else ((phase[:8] & 0) | 21) - ) - if phase < 148 - else ( - ((phase[:8] & 0) | 65) - if phase < 149 - else ((phase[:8] & 0) | 222) - ) - ) - if phase < 150 - else ( - ( - ((phase[:8] & 0) | 2) - if phase < 151 - else ((phase[:8] & 0) | 73) - ) - if phase < 152 - else ( - ((phase[:8] & 0) | 197) - if phase < 153 - else ((phase[:8] & 0) | 189) - ) - ) - ) - if phase < 154 - else ( - ( - ( - ((phase[:8] & 0) | 55) - if phase < 155 - else ((phase[:8] & 0) | 148) - ) - if phase < 156 - else ( - ((phase[:8] & 0) | 241) - if phase < 157 - else ((phase[:8] & 0) | 139) - ) - ) - if phase < 158 - else ( - ( - ((phase[:8] & 0) | 197) - if phase < 159 - else ((phase[:8] & 0) | 99) - ) - if phase < 160 - else ( - ((phase[:8] & 0) | 24) - if phase < 161 - else ( - ((phase[:8] & 0) | 2) - if phase < 162 - else ((phase[:8] & 0) | 144) - ) - ) - ) - ) - ) - if phase < 163 - else ( - ( - ( - ( - ((phase[:8] & 0) | 36) - if phase < 164 - else ((phase[:8] & 0) | 38) - ) - if phase < 165 - else ( - ((phase[:8] & 0) | 9) - if phase < 166 - else ((phase[:8] & 0) | 55) - ) - ) - if phase < 167 - else ( - ( - ((phase[:8] & 0) | 98) - if phase < 168 - else ((phase[:8] & 0) | 85) - ) - if phase < 169 - else ( - ((phase[:8] & 0) | 16) - if phase < 170 - else ((phase[:8] & 0) | 234) - ) - ) - ) - if phase < 171 - else ( - ( - ( - ((phase[:8] & 0) | 236) - if phase < 172 - else ((phase[:8] & 0) | 69) - ) - if phase < 173 - else ( - ((phase[:8] & 0) | 76) - if phase < 174 - else ((phase[:8] & 0) | 42) - ) - ) - if phase < 175 - else ( - ( - ((phase[:8] & 0) | 77) - if phase < 176 - else ((phase[:8] & 0) | 116) - ) - if phase < 177 - else ( - ((phase[:8] & 0) | 118) - if phase < 178 - else ( - ((phase[:8] & 0) | 110) - if phase < 179 - else ((phase[:8] & 0) | 228) - ) - ) - ) - ) - ) - ) - if phase < 180 - else ( - ( - ( - ( - ( - ((phase[:8] & 0) | 80) - if phase < 181 - else ((phase[:8] & 0) | 119) - ) - if phase < 182 - else ( - ((phase[:8] & 0) | 158) - if phase < 183 - else ((phase[:8] & 0) | 226) - ) - ) - if phase < 184 - else ( - ( - ((phase[:8] & 0) | 72) - if phase < 185 - else ((phase[:8] & 0) | 92) - ) - if phase < 186 - else ( - ((phase[:8] & 0) | 204) - if phase < 187 - else ((phase[:8] & 0) | 80) - ) - ) - ) - if phase < 188 - else ( - ( - ( - ((phase[:8] & 0) | 71) - if phase < 189 - else ((phase[:8] & 0) | 58) - ) - if phase < 190 - else ( - ((phase[:8] & 0) | 77) - if phase < 191 - else ((phase[:8] & 0) | 129) - ) - ) - if phase < 192 - else ( - ( - ((phase[:8] & 0) | 131) - if phase < 193 - else ((phase[:8] & 0) | 128) - ) - if phase < 194 - else ( - ((phase[:8] & 0) | 148) - if phase < 195 - else ( - ((phase[:8] & 0) | 122) - if phase < 196 - else ((phase[:8] & 0) | 21) - ) - ) - ) - ) - ) - if phase < 197 - else ( - ( - ( - ( - ((phase[:8] & 0) | 223) - if phase < 198 - else ((phase[:8] & 0) | 114) - ) - if phase < 199 - else ( - ((phase[:8] & 0) | 124) - if phase < 200 - else ((phase[:8] & 0) | 200) - ) - ) - if phase < 201 - else ( - ( - ((phase[:8] & 0) | 53) - if phase < 202 - else ((phase[:8] & 0) | 143) - ) - if phase < 203 - else ( - ((phase[:8] & 0) | 104) - if phase < 204 - else ( - ((phase[:8] & 0) | 53) - if phase < 205 - else ((phase[:8] & 0) | 122) - ) - ) - ) - ) - if phase < 206 - else ( - ( - ( - ((phase[:8] & 0) | 137) - if phase < 207 - else ((phase[:8] & 0) | 253) - ) - if phase < 208 - else ( - ((phase[:8] & 0) | 222) - if phase < 209 - else ((phase[:8] & 0) | 12) - ) - ) - if phase < 210 - else ( - ( - ((phase[:8] & 0) | 203) - if phase < 211 - else ((phase[:8] & 0) | 231) - ) - if phase < 212 - else ( - ((phase[:8] & 0) | 100) - if phase < 213 - else ( - ((phase[:8] & 0) | 121) - if phase < 214 - else ((phase[:8] & 0) | 244) - ) - ) - ) - ) - ) - ) - ) - if phase < 215 - else ( - ( - ( - ( - ( - ( - ((phase[:8] & 0) | 217) - if phase < 216 - else ((phase[:8] & 0) | 22) - ) - if phase < 217 - else ( - ((phase[:8] & 0) | 220) - if phase < 218 - else ((phase[:8] & 0) | 155) - ) - ) - if phase < 219 - else ( - ( - ((phase[:8] & 0) | 154) - if phase < 220 - else ((phase[:8] & 0) | 55) - ) - if phase < 221 - else ( - ((phase[:8] & 0) | 2) - if phase < 222 - else ((phase[:8] & 0) | 104) - ) - ) - ) - if phase < 223 - else ( - ( - ( - ((phase[:8] & 0) | 255) - if phase < 224 - else ((phase[:8] & 0) | 141) - ) - if phase < 225 - else ( - ((phase[:8] & 0) | 149) - if phase < 226 - else ((phase[:8] & 0) | 49) - ) - ) - if phase < 227 - else ( - ( - ((phase[:8] & 0) | 155) - if phase < 228 - else ((phase[:8] & 0) | 82) - ) - if phase < 229 - else ( - ((phase[:8] & 0) | 193) - if phase < 230 - else ( - ((phase[:8] & 0) | 181) - if phase < 231 - else ((phase[:8] & 0) | 169) - ) - ) - ) - ) - ) - if phase < 232 - else ( - ( - ( - ( - ((phase[:8] & 0) | 136) - if phase < 233 - else ((phase[:8] & 0) | 144) - ) - if phase < 234 - else ( - ((phase[:8] & 0) | 68) - if phase < 235 - else ((phase[:8] & 0) | 104) - ) - ) - if phase < 236 - else ( - ( - ((phase[:8] & 0) | 11) - if phase < 237 - else ((phase[:8] & 0) | 122) - ) - if phase < 238 - else ( - ((phase[:8] & 0) | 76) - if phase < 239 - else ((phase[:8] & 0) | 24) - ) - ) - ) - if phase < 240 - else ( - ( - ( - ((phase[:8] & 0) | 205) - if phase < 241 - else ((phase[:8] & 0) | 176) - ) - if phase < 242 - else ( - ((phase[:8] & 0) | 75) - if phase < 243 - else ((phase[:8] & 0) | 175) - ) - ) - if phase < 244 - else ( - ( - ((phase[:8] & 0) | 146) - if phase < 245 - else ((phase[:8] & 0) | 2) - ) - if phase < 246 - else ( - ((phase[:8] & 0) | 50) - if phase < 247 - else ( - ((phase[:8] & 0) | 29) - if phase < 248 - else ((phase[:8] & 0) | 58) - ) - ) - ) - ) - ) - ) - if phase < 249 - else ( - ( - ( - ( - ( - ((phase[:8] & 0) | 34) - if phase < 250 - else ((phase[:8] & 0) | 216) - ) - if phase < 251 - else ( - ((phase[:8] & 0) | 97) - if phase < 252 - else ((phase[:8] & 0) | 184) - ) - ) - if phase < 253 - else ( - ( - ((phase[:8] & 0) | 45) - if phase < 254 - else ((phase[:8] & 0) | 99) - ) - if phase < 255 - else ( - ((phase[:8] & 0) | 139) - if phase < 256 - else ((phase[:8] & 0) | 56) - ) - ) - ) - if phase < 257 - else ( - ( - ( - ((phase[:8] & 0) | 235) - if phase < 258 - else ((phase[:8] & 0) | 188) - ) - if phase < 259 - else ( - ((phase[:8] & 0) | 126) - if phase < 260 - else ((phase[:8] & 0) | 189) - ) - ) - if phase < 261 - else ( - ( - ((phase[:8] & 0) | 55) - if phase < 262 - else ((phase[:8] & 0) | 138) - ) - if phase < 263 - else ( - ((phase[:8] & 0) | 55) - if phase < 264 - else ( - ((phase[:8] & 0) | 85) - if phase < 265 - else ((phase[:8] & 0) | 171) - ) - ) - ) - ) - ) - if phase < 266 - else ( - ( - ( - ( - ((phase[:8] & 0) | 34) - if phase < 267 - else ((phase[:8] & 0) | 245) - ) - if phase < 268 - else ( - ((phase[:8] & 0) | 237) - if phase < 269 - else ((phase[:8] & 0) | 185) - ) - ) - if phase < 270 - else ( - ( - ((phase[:8] & 0) | 204) - if phase < 271 - else ((phase[:8] & 0) | 194) - ) - if phase < 272 - else ( - ((phase[:8] & 0) | 150) - if phase < 273 - else ( - ((phase[:8] & 0) | 4) - if phase < 274 - else ((phase[:8] & 0) | 138) - ) - ) - ) - ) - if phase < 275 - else ( - ( - ( - ((phase[:8] & 0) | 0) - if phase < 276 - else ((phase[:8] & 0) | 209) - ) - if phase < 277 - else ( - ((phase[:8] & 0) | 162) - if phase < 278 - else ((phase[:8] & 0) | 149) - ) - ) - if phase < 279 - else ( - ( - ((phase[:8] & 0) | 113) - if phase < 280 - else ((phase[:8] & 0) | 39) - ) - if phase < 281 - else ( - ((phase[:8] & 0) | 56) - if phase < 282 - else ( - ((phase[:8] & 0) | 207) - if phase < 283 - else ((phase[:8] & 0) | 0) - ) - ) - ) - ) - ) - ) - ) - ) - ) - complete_value = ( - ( - ( - ( - ( - ( - ( - ( - ((phase[:16] & 0) | 7) - if phase < 1 - else ((phase[:16] & 0) | 0) - ) - if phase < 6 - else ( - ((phase[:16] & 0) | 999) - if phase < 7 - else ((phase[:16] & 0) | 4915) - ) - ) - if phase < 8 - else ( - ( - ((phase[:16] & 0) | 0) - if phase < 9 - else ((phase[:16] & 0) | 4369) - ) - if phase < 10 - else ( - ((phase[:16] & 0) | 0) - if phase < 11 - else ((phase[:16] & 0) | 4642) - ) - ) - ) - if phase < 12 - else ( - ( - ( - ((phase[:16] & 0) | 65535) - if phase < 13 - else ((phase[:16] & 0) | 5461) - ) - if phase < 14 - else ( - ((phase[:16] & 0) | 0) - if phase < 15 - else ((phase[:16] & 0) | 5188) - ) - ) - if phase < 16 - else ( - ( - ((phase[:16] & 0) | 5461) - if phase < 17 - else ((phase[:16] & 0) | 5734) - ) - if phase < 18 - else ( - ((phase[:16] & 0) | 6007) - if phase < 19 - else ( - ((phase[:16] & 0) | 6280) - if phase < 20 - else ((phase[:16] & 0) | 9) - ) - ) - ) - ) - ) - if phase < 21 - else ( - ( - ( - ( - ((phase[:16] & 0) | 0) - if phase < 22 - else ((phase[:16] & 0) | 21) - ) - if phase < 23 - else ( - ((phase[:16] & 0) | 0) - if phase < 24 - else ((phase[:16] & 0) | 21) - ) - ) - if phase < 25 - else ( - ( - ((phase[:16] & 0) | 12593) - if phase < 26 - else ((phase[:16] & 0) | 0) - ) - if phase < 27 - else ( - ((phase[:16] & 0) | 44743) - if phase < 28 - else ( - ((phase[:16] & 0) | 57356) - if phase < 29 - else ((phase[:16] & 0) | 4065) - ) - ) - ) - ) - if phase < 30 - else ( - ( - ( - ((phase[:16] & 0) | 28918) - if phase < 31 - else ((phase[:16] & 0) | 52738) - ) - if phase < 32 - else ( - ((phase[:16] & 0) | 27461) - if phase < 33 - else ((phase[:16] & 0) | 9838) - ) - ) - if phase < 34 - else ( - ( - ((phase[:16] & 0) | 2049) - if phase < 35 - else ((phase[:16] & 0) | 28991) - ) - if phase < 36 - else ( - ((phase[:16] & 0) | 47889) - if phase < 37 - else ( - ((phase[:16] & 0) | 56871) - if phase < 38 - else ((phase[:16] & 0) | 24229) - ) - ) - ) - ) - ) - ) - if phase < 39 - else ( - ( - ( - ( - ( - ((phase[:16] & 0) | 51993) - if phase < 40 - else ((phase[:16] & 0) | 44636) - ) - if phase < 41 - else ( - ((phase[:16] & 0) | 37452) - if phase < 42 - else ((phase[:16] & 0) | 57438) - ) - ) - if phase < 43 - else ( - ( - ((phase[:16] & 0) | 35507) - if phase < 44 - else ((phase[:16] & 0) | 23160) - ) - if phase < 45 - else ( - ((phase[:16] & 0) | 6103) - if phase < 46 - else ((phase[:16] & 0) | 4242) - ) - ) - ) - if phase < 47 - else ( - ( - ( - ((phase[:16] & 0) | 42117) - if phase < 48 - else ((phase[:16] & 0) | 28483) - ) - if phase < 49 - else ( - ((phase[:16] & 0) | 11704) - if phase < 50 - else ((phase[:16] & 0) | 17699) - ) - ) - if phase < 51 - else ( - ( - ((phase[:16] & 0) | 46919) - if phase < 52 - else ((phase[:16] & 0) | 18341) - ) - if phase < 53 - else ( - ((phase[:16] & 0) | 57363) - if phase < 54 - else ( - ((phase[:16] & 0) | 13431) - if phase < 55 - else ((phase[:16] & 0) | 18525) - ) - ) - ) - ) - ) - if phase < 56 - else ( - ( - ( - ( - ((phase[:16] & 0) | 63493) - if phase < 57 - else ((phase[:16] & 0) | 14291) - ) - if phase < 58 - else ( - ((phase[:16] & 0) | 32280) - if phase < 59 - else ((phase[:16] & 0) | 55121) - ) - ) - if phase < 60 - else ( - ( - ((phase[:16] & 0) | 48636) - if phase < 61 - else ((phase[:16] & 0) | 17279) - ) - if phase < 62 - else ( - ((phase[:16] & 0) | 22859) - if phase < 63 - else ( - ((phase[:16] & 0) | 19974) - if phase < 64 - else ((phase[:16] & 0) | 27601) - ) - ) - ) - ) - if phase < 65 - else ( - ( - ( - ((phase[:16] & 0) | 42826) - if phase < 66 - else ((phase[:16] & 0) | 718) - ) - if phase < 67 - else ( - ((phase[:16] & 0) | 61961) - if phase < 68 - else ((phase[:16] & 0) | 60691) - ) - ) - if phase < 69 - else ( - ( - ((phase[:16] & 0) | 30976) - if phase < 70 - else ((phase[:16] & 0) | 10540) - ) - if phase < 71 - else ( - ((phase[:16] & 0) | 48266) - if phase < 72 - else ( - ((phase[:16] & 0) | 36677) - if phase < 73 - else ((phase[:16] & 0) | 52531) - ) - ) - ) - ) - ) - ) - ) - if phase < 74 - else ( - ( - ( - ( - ( - ( - ((phase[:16] & 0) | 51475) - if phase < 75 - else ((phase[:16] & 0) | 11130) - ) - if phase < 76 - else ( - ((phase[:16] & 0) | 52904) - if phase < 77 - else ((phase[:16] & 0) | 10066) - ) - ) - if phase < 78 - else ( - ( - ((phase[:16] & 0) | 37811) - if phase < 79 - else ((phase[:16] & 0) | 30696) - ) - if phase < 80 - else ( - ((phase[:16] & 0) | 47156) - if phase < 81 - else ((phase[:16] & 0) | 29650) - ) - ) - ) - if phase < 82 - else ( - ( - ( - ((phase[:16] & 0) | 21840) - if phase < 83 - else ((phase[:16] & 0) | 5660) - ) - if phase < 84 - else ( - ((phase[:16] & 0) | 9429) - if phase < 85 - else ((phase[:16] & 0) | 28624) - ) - ) - if phase < 86 - else ( - ( - ((phase[:16] & 0) | 20235) - if phase < 87 - else ((phase[:16] & 0) | 24168) - ) - if phase < 88 - else ( - ((phase[:16] & 0) | 21762) - if phase < 89 - else ( - ((phase[:16] & 0) | 53492) - if phase < 90 - else ((phase[:16] & 0) | 33645) - ) - ) - ) - ) - ) - if phase < 91 - else ( - ( - ( - ( - ((phase[:16] & 0) | 11453) - if phase < 92 - else ((phase[:16] & 0) | 11444) - ) - if phase < 93 - else ( - ((phase[:16] & 0) | 1893) - if phase < 94 - else ((phase[:16] & 0) | 7786) - ) - ) - if phase < 95 - else ( - ( - ((phase[:16] & 0) | 41181) - if phase < 96 - else ((phase[:16] & 0) | 4110) - ) - if phase < 97 - else ( - ((phase[:16] & 0) | 23117) - if phase < 98 - else ( - ((phase[:16] & 0) | 8557) - if phase < 99 - else ((phase[:16] & 0) | 55412) - ) - ) - ) - ) - if phase < 100 - else ( - ( - ( - ((phase[:16] & 0) | 47963) - if phase < 101 - else ((phase[:16] & 0) | 58616) - ) - if phase < 102 - else ( - ((phase[:16] & 0) | 44839) - if phase < 103 - else ((phase[:16] & 0) | 1445) - ) - ) - if phase < 104 - else ( - ( - ((phase[:16] & 0) | 10930) - if phase < 105 - else ((phase[:16] & 0) | 32394) - ) - if phase < 106 - else ( - ((phase[:16] & 0) | 23318) - if phase < 107 - else ( - ((phase[:16] & 0) | 43660) - if phase < 108 - else ((phase[:16] & 0) | 43113) - ) - ) - ) - ) - ) - ) - if phase < 109 - else ( - ( - ( - ( - ( - ((phase[:16] & 0) | 43989) - if phase < 110 - else ((phase[:16] & 0) | 53592) - ) - if phase < 111 - else ( - ((phase[:16] & 0) | 23604) - if phase < 112 - else ((phase[:16] & 0) | 25995) - ) - ) - if phase < 113 - else ( - ( - ((phase[:16] & 0) | 6041) - if phase < 114 - else ((phase[:16] & 0) | 19449) - ) - if phase < 115 - else ( - ((phase[:16] & 0) | 20207) - if phase < 116 - else ((phase[:16] & 0) | 17286) - ) - ) - ) - if phase < 117 - else ( - ( - ( - ((phase[:16] & 0) | 39812) - if phase < 118 - else ((phase[:16] & 0) | 15558) - ) - if phase < 119 - else ( - ((phase[:16] & 0) | 3863) - if phase < 120 - else ((phase[:16] & 0) | 14091) - ) - ) - if phase < 121 - else ( - ( - ((phase[:16] & 0) | 23853) - if phase < 122 - else ((phase[:16] & 0) | 15219) - ) - if phase < 123 - else ( - ((phase[:16] & 0) | 876) - if phase < 124 - else ( - ((phase[:16] & 0) | 19472) - if phase < 125 - else ((phase[:16] & 0) | 50772) - ) - ) - ) - ) - ) - if phase < 126 - else ( - ( - ( - ( - ((phase[:16] & 0) | 34840) - if phase < 127 - else ((phase[:16] & 0) | 8344) - ) - if phase < 128 - else ( - ((phase[:16] & 0) | 34370) - if phase < 129 - else ((phase[:16] & 0) | 56467) - ) - ) - if phase < 130 - else ( - ( - ((phase[:16] & 0) | 30333) - if phase < 131 - else ((phase[:16] & 0) | 36399) - ) - if phase < 132 - else ( - ((phase[:16] & 0) | 36093) - if phase < 133 - else ( - ((phase[:16] & 0) | 61633) - if phase < 134 - else ((phase[:16] & 0) | 56918) - ) - ) - ) - ) - if phase < 135 - else ( - ( - ( - ((phase[:16] & 0) | 29328) - if phase < 136 - else ((phase[:16] & 0) | 12500) - ) - if phase < 137 - else ( - ((phase[:16] & 0) | 27416) - if phase < 138 - else ((phase[:16] & 0) | 15356) - ) - ) - if phase < 139 - else ( - ( - ((phase[:16] & 0) | 15435) - if phase < 140 - else ((phase[:16] & 0) | 29710) - ) - if phase < 141 - else ( - ((phase[:16] & 0) | 4780) - if phase < 142 - else ( - ((phase[:16] & 0) | 38294) - if phase < 143 - else ((phase[:16] & 0) | 37001) - ) - ) - ) - ) - ) - ) - ) - ) - if phase < 144 - else ( - ( - ( - ( - ( - ( - ( - ((phase[:16] & 0) | 62493) - if phase < 145 - else ((phase[:16] & 0) | 57119) - ) - if phase < 146 - else ( - ((phase[:16] & 0) | 31642) - if phase < 147 - else ((phase[:16] & 0) | 5394) - ) - ) - if phase < 148 - else ( - ( - ((phase[:16] & 0) | 16696) - if phase < 149 - else ((phase[:16] & 0) | 57044) - ) - if phase < 150 - else ( - ((phase[:16] & 0) | 665) - if phase < 151 - else ((phase[:16] & 0) | 18915) - ) - ) - ) - if phase < 152 - else ( - ( - ( - ((phase[:16] & 0) | 50507) - if phase < 153 - else ((phase[:16] & 0) | 48399) - ) - if phase < 154 - else ( - ((phase[:16] & 0) | 14116) - if phase < 155 - else ((phase[:16] & 0) | 37958) - ) - ) - if phase < 156 - else ( - ( - ((phase[:16] & 0) | 61866) - if phase < 157 - else ((phase[:16] & 0) | 35823) - ) - if phase < 158 - else ( - ((phase[:16] & 0) | 50644) - if phase < 159 - else ( - ((phase[:16] & 0) | 25349) - if phase < 160 - else ((phase[:16] & 0) | 6248) - ) - ) - ) - ) - ) - if phase < 161 - else ( - ( - ( - ( - ((phase[:16] & 0) | 662) - if phase < 162 - else ((phase[:16] & 0) | 36964) - ) - if phase < 163 - else ( - ((phase[:16] & 0) | 9313) - if phase < 164 - else ((phase[:16] & 0) | 9935) - ) - ) - if phase < 165 - else ( - ( - ((phase[:16] & 0) | 2348) - if phase < 166 - else ((phase[:16] & 0) | 14328) - ) - if phase < 167 - else ( - ((phase[:16] & 0) | 25312) - if phase < 168 - else ( - ((phase[:16] & 0) | 21775) - if phase < 169 - else ((phase[:16] & 0) | 4176) - ) - ) - ) - ) - if phase < 170 - else ( - ( - ( - ((phase[:16] & 0) | 60005) - if phase < 171 - else ((phase[:16] & 0) | 60603) - ) - if phase < 172 - else ( - ((phase[:16] & 0) | 17890) - if phase < 173 - else ((phase[:16] & 0) | 19584) - ) - ) - if phase < 174 - else ( - ( - ((phase[:16] & 0) | 10998) - if phase < 175 - else ((phase[:16] & 0) | 19737) - ) - if phase < 176 - else ( - ((phase[:16] & 0) | 29738) - if phase < 177 - else ( - ((phase[:16] & 0) | 30379) - if phase < 178 - else ((phase[:16] & 0) | 28403) - ) - ) - ) - ) - ) - ) - if phase < 179 - else ( - ( - ( - ( - ( - ((phase[:16] & 0) | 58545) - if phase < 180 - else ((phase[:16] & 0) | 20637) - ) - if phase < 181 - else ( - ((phase[:16] & 0) | 30666) - if phase < 182 - else ((phase[:16] & 0) | 40628) - ) - ) - if phase < 183 - else ( - ( - ((phase[:16] & 0) | 58067) - if phase < 184 - else ((phase[:16] & 0) | 18685) - ) - if phase < 185 - else ( - ((phase[:16] & 0) | 23755) - if phase < 186 - else ((phase[:16] & 0) | 52292) - ) - ) - ) - if phase < 187 - else ( - ( - ( - ((phase[:16] & 0) | 20621) - if phase < 188 - else ((phase[:16] & 0) | 18386) - ) - if phase < 189 - else ( - ((phase[:16] & 0) | 15026) - if phase < 190 - else ((phase[:16] & 0) | 19779) - ) - ) - if phase < 191 - else ( - ( - ((phase[:16] & 0) | 33038) - if phase < 192 - else ((phase[:16] & 0) | 33681) - ) - if phase < 193 - else ( - ((phase[:16] & 0) | 32897) - if phase < 194 - else ( - ((phase[:16] & 0) | 38096) - if phase < 195 - else ((phase[:16] & 0) | 31302) - ) - ) - ) - ) - ) - if phase < 196 - else ( - ( - ( - ( - ((phase[:16] & 0) | 5619) - if phase < 197 - else ((phase[:16] & 0) | 57176) - ) - if phase < 198 - else ( - ((phase[:16] & 0) | 29304) - if phase < 199 - else ((phase[:16] & 0) | 31769) - ) - ) - if phase < 200 - else ( - ( - ((phase[:16] & 0) | 51287) - if phase < 201 - else ((phase[:16] & 0) | 13694) - ) - if phase < 202 - else ( - ((phase[:16] & 0) | 36712) - if phase < 203 - else ( - ((phase[:16] & 0) | 26814) - if phase < 204 - else ((phase[:16] & 0) | 13821) - ) - ) - ) - ) - if phase < 205 - else ( - ( - ( - ((phase[:16] & 0) | 31319) - if phase < 206 - else ((phase[:16] & 0) | 35152) - ) - if phase < 207 - else ( - ((phase[:16] & 0) | 64938) - if phase < 208 - else ((phase[:16] & 0) | 56996) - ) - ) - if phase < 209 - else ( - ( - ((phase[:16] & 0) | 3302) - if phase < 210 - else ((phase[:16] & 0) | 51999) - ) - if phase < 211 - else ( - ((phase[:16] & 0) | 59236) - if phase < 212 - else ( - ((phase[:16] & 0) | 25837) - if phase < 213 - else ((phase[:16] & 0) | 31121) - ) - ) - ) - ) - ) - ) - ) - if phase < 214 - else ( - ( - ( - ( - ( - ( - ((phase[:16] & 0) | 62501) - if phase < 215 - else ((phase[:16] & 0) | 55762) - ) - if phase < 216 - else ( - ((phase[:16] & 0) | 5724) - if phase < 217 - else ((phase[:16] & 0) | 56439) - ) - ) - if phase < 218 - else ( - ( - ((phase[:16] & 0) | 39764) - if phase < 219 - else ((phase[:16] & 0) | 39453) - ) - if phase < 220 - else ( - ((phase[:16] & 0) | 14179) - if phase < 221 - else ((phase[:16] & 0) | 616) - ) - ) - ) - if phase < 222 - else ( - ( - ( - ((phase[:16] & 0) | 26768) - if phase < 223 - else ((phase[:16] & 0) | 65490) - ) - if phase < 224 - else ( - ((phase[:16] & 0) | 36236) - if phase < 225 - else ((phase[:16] & 0) | 38364) - ) - ) - if phase < 226 - else ( - ( - ((phase[:16] & 0) | 12692) - if phase < 227 - else ((phase[:16] & 0) | 39915) - ) - if phase < 228 - else ( - ((phase[:16] & 0) | 21242) - if phase < 229 - else ( - ((phase[:16] & 0) | 49591) - if phase < 230 - else ((phase[:16] & 0) | 46563) - ) - ) - ) - ) - ) - if phase < 231 - else ( - ( - ( - ( - ((phase[:16] & 0) | 43359) - if phase < 232 - else ((phase[:16] & 0) | 34851) - ) - if phase < 233 - else ( - ((phase[:16] & 0) | 37015) - if phase < 234 - else ((phase[:16] & 0) | 17623) - ) - ) - if phase < 235 - else ( - ( - ((phase[:16] & 0) | 26707) - if phase < 236 - else ((phase[:16] & 0) | 2880) - ) - if phase < 237 - else ( - ((phase[:16] & 0) | 31470) - if phase < 238 - else ( - ((phase[:16] & 0) | 19609) - if phase < 239 - else ((phase[:16] & 0) | 6218) - ) - ) - ) - ) - if phase < 240 - else ( - ( - ( - ((phase[:16] & 0) | 52570) - if phase < 241 - else ((phase[:16] & 0) | 45295) - ) - if phase < 242 - else ( - ((phase[:16] & 0) | 19220) - if phase < 243 - else ((phase[:16] & 0) | 45034) - ) - ) - if phase < 244 - else ( - ( - ((phase[:16] & 0) | 37393) - if phase < 245 - else ((phase[:16] & 0) | 722) - ) - if phase < 246 - else ( - ((phase[:16] & 0) | 12982) - if phase < 247 - else ( - ((phase[:16] & 0) | 7442) - if phase < 248 - else ((phase[:16] & 0) | 14865) - ) - ) - ) - ) - ) - ) - if phase < 249 - else ( - ( - ( - ( - ( - ((phase[:16] & 0) | 8958) - if phase < 250 - else ((phase[:16] & 0) | 55465) - ) - if phase < 251 - else ( - ((phase[:16] & 0) | 24924) - if phase < 252 - else ((phase[:16] & 0) | 47180) - ) - ) - if phase < 253 - else ( - ( - ((phase[:16] & 0) | 11521) - if phase < 254 - else ((phase[:16] & 0) | 25498) - ) - if phase < 255 - else ( - ((phase[:16] & 0) | 35691) - if phase < 256 - else ((phase[:16] & 0) | 14585) - ) - ) - ) - if phase < 257 - else ( - ( - ( - ((phase[:16] & 0) | 60367) - if phase < 258 - else ((phase[:16] & 0) | 48348) - ) - if phase < 259 - else ( - ((phase[:16] & 0) | 32433) - if phase < 260 - else ((phase[:16] & 0) | 48548) - ) - ) - if phase < 261 - else ( - ( - ((phase[:16] & 0) | 14180) - if phase < 262 - else ((phase[:16] & 0) | 35362) - ) - if phase < 263 - else ( - ((phase[:16] & 0) | 14297) - if phase < 264 - else ( - ((phase[:16] & 0) | 21943) - if phase < 265 - else ((phase[:16] & 0) | 44008) - ) - ) - ) - ) - ) - if phase < 266 - else ( - ( - ( - ( - ((phase[:16] & 0) | 8808) - if phase < 267 - else ((phase[:16] & 0) | 62911) - ) - if phase < 268 - else ( - ((phase[:16] & 0) | 60853) - if phase < 269 - else ((phase[:16] & 0) | 47545) - ) - ) - if phase < 270 - else ( - ( - ((phase[:16] & 0) | 52455) - if phase < 271 - else ((phase[:16] & 0) | 49901) - ) - if phase < 272 - else ( - ((phase[:16] & 0) | 38529) - if phase < 273 - else ( - ((phase[:16] & 0) | 1097) - if phase < 274 - else ((phase[:16] & 0) | 35557) - ) - ) - ) - ) - if phase < 275 - else ( - ( - ( - ((phase[:16] & 0) | 199) - if phase < 276 - else ((phase[:16] & 0) | 53524) - ) - if phase < 277 - else ( - ((phase[:16] & 0) | 41677) - if phase < 278 - else ((phase[:16] & 0) | 38144) - ) - ) - if phase < 279 - else ( - ( - ((phase[:16] & 0) | 29073) - if phase < 280 - else ((phase[:16] & 0) | 10124) - ) - if phase < 281 - else ( - ((phase[:16] & 0) | 14363) - if phase < 282 - else ( - ((phase[:16] & 0) | 52999) - if phase < 283 - else ((phase[:16] & 0) | 0) - ) - ) - ) - ) - ) - ) - ) - ) - ) - retire = ( - ( - ( - ( - ( - ( - ( - ((phase[:1] & 0) | 1) - if phase < 1 - else ((phase[:1] & 0) | 0) - ) - if phase < 8 - else ( - ((phase[:1] & 0) | 1) - if phase < 10 - else ((phase[:1] & 0) | 0) - ) - ) - if phase < 11 - else ( - ( - ((phase[:1] & 0) | 1) - if phase < 12 - else ((phase[:1] & 0) | 0) - ) - if phase < 13 - else ( - ((phase[:1] & 0) | 1) - if phase < 21 - else ((phase[:1] & 0) | 0) - ) - ) - ) - if phase < 22 - else ( - ( - ( - ((phase[:1] & 0) | 1) - if phase < 23 - else ((phase[:1] & 0) | 0) - ) - if phase < 24 - else ( - ((phase[:1] & 0) | 1) - if phase < 26 - else ((phase[:1] & 0) | 0) - ) - ) - if phase < 27 - else ( - ( - ((phase[:1] & 0) | 1) - if phase < 29 - else ((phase[:1] & 0) | 0) - ) - if phase < 30 - else ( - ((phase[:1] & 0) | 1) - if phase < 31 - else ( - ((phase[:1] & 0) | 0) - if phase < 34 - else ((phase[:1] & 0) | 1) - ) - ) - ) - ) - ) - if phase < 35 - else ( - ( - ( - ( - ((phase[:1] & 0) | 0) - if phase < 38 - else ((phase[:1] & 0) | 1) - ) - if phase < 39 - else ( - ((phase[:1] & 0) | 0) - if phase < 40 - else ((phase[:1] & 0) | 1) - ) - ) - if phase < 41 - else ( - ( - ((phase[:1] & 0) | 0) - if phase < 43 - else ((phase[:1] & 0) | 1) - ) - if phase < 44 - else ( - ((phase[:1] & 0) | 0) - if phase < 46 - else ( - ((phase[:1] & 0) | 1) - if phase < 50 - else ((phase[:1] & 0) | 0) - ) - ) - ) - ) - if phase < 51 - else ( - ( - ( - ((phase[:1] & 0) | 1) - if phase < 53 - else ((phase[:1] & 0) | 0) - ) - if phase < 56 - else ( - ((phase[:1] & 0) | 1) - if phase < 59 - else ((phase[:1] & 0) | 0) - ) - ) - if phase < 60 - else ( - ( - ((phase[:1] & 0) | 1) - if phase < 61 - else ((phase[:1] & 0) | 0) - ) - if phase < 62 - else ( - ((phase[:1] & 0) | 1) - if phase < 63 - else ( - ((phase[:1] & 0) | 0) - if phase < 66 - else ((phase[:1] & 0) | 1) - ) - ) - ) - ) - ) - ) - if phase < 70 - else ( - ( - ( - ( - ( - ((phase[:1] & 0) | 0) - if phase < 71 - else ((phase[:1] & 0) | 1) - ) - if phase < 72 - else ( - ((phase[:1] & 0) | 0) - if phase < 73 - else ((phase[:1] & 0) | 1) - ) - ) - if phase < 74 - else ( - ( - ((phase[:1] & 0) | 0) - if phase < 75 - else ((phase[:1] & 0) | 1) - ) - if phase < 76 - else ( - ((phase[:1] & 0) | 0) - if phase < 78 - else ((phase[:1] & 0) | 1) - ) - ) - ) - if phase < 79 - else ( - ( - ( - ((phase[:1] & 0) | 0) - if phase < 80 - else ((phase[:1] & 0) | 1) - ) - if phase < 81 - else ( - ((phase[:1] & 0) | 0) - if phase < 82 - else ((phase[:1] & 0) | 1) - ) - ) - if phase < 86 - else ( - ( - ((phase[:1] & 0) | 0) - if phase < 87 - else ((phase[:1] & 0) | 1) - ) - if phase < 91 - else ( - ((phase[:1] & 0) | 0) - if phase < 93 - else ( - ((phase[:1] & 0) | 1) - if phase < 94 - else ((phase[:1] & 0) | 0) - ) - ) - ) - ) - ) - if phase < 98 - else ( - ( - ( - ( - ((phase[:1] & 0) | 1) - if phase < 102 - else ((phase[:1] & 0) | 0) - ) - if phase < 104 - else ( - ((phase[:1] & 0) | 1) - if phase < 105 - else ((phase[:1] & 0) | 0) - ) - ) - if phase < 106 - else ( - ( - ((phase[:1] & 0) | 1) - if phase < 108 - else ((phase[:1] & 0) | 0) - ) - if phase < 114 - else ( - ((phase[:1] & 0) | 1) - if phase < 115 - else ( - ((phase[:1] & 0) | 0) - if phase < 116 - else ((phase[:1] & 0) | 1) - ) - ) - ) - ) - if phase < 119 - else ( - ( - ( - ((phase[:1] & 0) | 0) - if phase < 120 - else ((phase[:1] & 0) | 1) - ) - if phase < 122 - else ( - ((phase[:1] & 0) | 0) - if phase < 128 - else ((phase[:1] & 0) | 1) - ) - ) - if phase < 130 - else ( - ( - ((phase[:1] & 0) | 0) - if phase < 132 - else ((phase[:1] & 0) | 1) - ) - if phase < 133 - else ( - ((phase[:1] & 0) | 0) - if phase < 136 - else ( - ((phase[:1] & 0) | 1) - if phase < 137 - else ((phase[:1] & 0) | 0) - ) - ) - ) - ) - ) - ) - ) - if phase < 138 - else ( - ( - ( - ( - ( - ( - ((phase[:1] & 0) | 1) - if phase < 139 - else ((phase[:1] & 0) | 0) - ) - if phase < 141 - else ( - ((phase[:1] & 0) | 1) - if phase < 144 - else ((phase[:1] & 0) | 0) - ) - ) - if phase < 146 - else ( - ( - ((phase[:1] & 0) | 1) - if phase < 147 - else ((phase[:1] & 0) | 0) - ) - if phase < 151 - else ( - ((phase[:1] & 0) | 1) - if phase < 152 - else ((phase[:1] & 0) | 0) - ) - ) - ) - if phase < 153 - else ( - ( - ( - ((phase[:1] & 0) | 1) - if phase < 155 - else ((phase[:1] & 0) | 0) - ) - if phase < 157 - else ( - ((phase[:1] & 0) | 1) - if phase < 158 - else ((phase[:1] & 0) | 0) - ) - ) - if phase < 167 - else ( - ( - ((phase[:1] & 0) | 1) - if phase < 168 - else ((phase[:1] & 0) | 0) - ) - if phase < 169 - else ( - ((phase[:1] & 0) | 1) - if phase < 175 - else ( - ((phase[:1] & 0) | 0) - if phase < 176 - else ((phase[:1] & 0) | 1) - ) - ) - ) - ) - ) - if phase < 177 - else ( - ( - ( - ( - ((phase[:1] & 0) | 0) - if phase < 181 - else ((phase[:1] & 0) | 1) - ) - if phase < 182 - else ( - ((phase[:1] & 0) | 0) - if phase < 185 - else ((phase[:1] & 0) | 1) - ) - ) - if phase < 186 - else ( - ( - ((phase[:1] & 0) | 0) - if phase < 188 - else ((phase[:1] & 0) | 1) - ) - if phase < 190 - else ( - ((phase[:1] & 0) | 0) - if phase < 191 - else ( - ((phase[:1] & 0) | 1) - if phase < 193 - else ((phase[:1] & 0) | 0) - ) - ) - ) - ) - if phase < 194 - else ( - ( - ( - ((phase[:1] & 0) | 1) - if phase < 196 - else ((phase[:1] & 0) | 0) - ) - if phase < 197 - else ( - ((phase[:1] & 0) | 1) - if phase < 199 - else ((phase[:1] & 0) | 0) - ) - ) - if phase < 201 - else ( - ( - ((phase[:1] & 0) | 1) - if phase < 202 - else ((phase[:1] & 0) | 0) - ) - if phase < 204 - else ( - ((phase[:1] & 0) | 1) - if phase < 208 - else ( - ((phase[:1] & 0) | 0) - if phase < 211 - else ((phase[:1] & 0) | 1) - ) - ) - ) - ) - ) - ) - if phase < 212 - else ( - ( - ( - ( - ( - ((phase[:1] & 0) | 0) - if phase < 218 - else ((phase[:1] & 0) | 1) - ) - if phase < 220 - else ( - ((phase[:1] & 0) | 0) - if phase < 223 - else ((phase[:1] & 0) | 1) - ) - ) - if phase < 224 - else ( - ( - ((phase[:1] & 0) | 0) - if phase < 227 - else ((phase[:1] & 0) | 1) - ) - if phase < 228 - else ( - ((phase[:1] & 0) | 0) - if phase < 230 - else ((phase[:1] & 0) | 1) - ) - ) - ) - if phase < 233 - else ( - ( - ( - ((phase[:1] & 0) | 0) - if phase < 234 - else ((phase[:1] & 0) | 1) - ) - if phase < 235 - else ( - ((phase[:1] & 0) | 0) - if phase < 238 - else ((phase[:1] & 0) | 1) - ) - ) - if phase < 239 - else ( - ( - ((phase[:1] & 0) | 0) - if phase < 244 - else ((phase[:1] & 0) | 1) - ) - if phase < 245 - else ( - ((phase[:1] & 0) | 0) - if phase < 247 - else ( - ((phase[:1] & 0) | 1) - if phase < 250 - else ((phase[:1] & 0) | 0) - ) - ) - ) - ) - ) - if phase < 251 - else ( - ( - ( - ( - ((phase[:1] & 0) | 1) - if phase < 252 - else ((phase[:1] & 0) | 0) - ) - if phase < 253 - else ( - ((phase[:1] & 0) | 1) - if phase < 255 - else ((phase[:1] & 0) | 0) - ) - ) - if phase < 256 - else ( - ( - ((phase[:1] & 0) | 1) - if phase < 259 - else ((phase[:1] & 0) | 0) - ) - if phase < 261 - else ( - ((phase[:1] & 0) | 1) - if phase < 262 - else ( - ((phase[:1] & 0) | 0) - if phase < 265 - else ((phase[:1] & 0) | 1) - ) - ) - ) - ) - if phase < 266 - else ( - ( - ( - ((phase[:1] & 0) | 0) - if phase < 267 - else ((phase[:1] & 0) | 1) - ) - if phase < 271 - else ( - ((phase[:1] & 0) | 0) - if phase < 272 - else ((phase[:1] & 0) | 1) - ) - ) - if phase < 273 - else ( - ( - ((phase[:1] & 0) | 0) - if phase < 274 - else ((phase[:1] & 0) | 1) - ) - if phase < 275 - else ( - ((phase[:1] & 0) | 0) - if phase < 276 - else ( - ((phase[:1] & 0) | 1) - if phase < 281 - else ((phase[:1] & 0) | 0) - ) - ) - ) - ) - ) - ) - ) - ) - flush = ( - ( - (((phase[:1] & 0) | 0) if phase < 22 else ((phase[:1] & 0) | 1)) - if phase < 23 - else (((phase[:1] & 0) | 0) if phase < 26 else ((phase[:1] & 0) | 1)) - ) - if phase < 27 - else ( - (((phase[:1] & 0) | 0) if phase < 72 else ((phase[:1] & 0) | 1)) - if phase < 73 - else (((phase[:1] & 0) | 0) if phase < 283 else ((phase[:1] & 0) | 1)) + # fmt: off + scenarios = Scenarios( + rows=( + Scenario(complete=1, complete_value=7, retire=1), + Scenario(allocate=1, allocate_tag=11, expected_allocate_accepted=1, expected_count=1), + Scenario(allocate=1, allocate_tag=12, expected_allocate_accepted=1, expected_allocated_index=1, expected_count=2), + Scenario(allocate=1, allocate_tag=13, expected_allocate_accepted=1, expected_allocated_index=2, expected_count=3), + Scenario(allocate=1, allocate_tag=14, expected_allocate_accepted=1, expected_allocated_index=3, expected_count=4), + Scenario(allocate=1, allocate_tag=15, expected_count=4), + Scenario(complete=1, complete_tag=99, complete_value=999, expected_count=4), + Scenario(complete=1, complete_index=2, complete_tag=13, complete_value=4915, expected_complete_accepted=1, expected_count=4), + Scenario(retire=1, expected_count=4), + Scenario(complete=1, complete_tag=11, complete_value=4369, retire=1, expected_complete_accepted=1, expected_retire_accepted=1, expected_retired_tag=11, expected_retired_value=4369, expected_count=3), + Scenario(allocate=1, allocate_tag=15, expected_allocate_accepted=1, expected_count=4), + Scenario(allocate=1, allocate_tag=16, complete=1, complete_index=1, complete_tag=12, complete_value=4642, retire=1, expected_allocate_accepted=1, expected_allocated_index=1, expected_complete_accepted=1, expected_retire_accepted=1, expected_retired_tag=12, expected_retired_value=4642, expected_count=4), + Scenario(complete=1, complete_index=1, complete_tag=12, complete_value=65535, expected_count=4), + Scenario(complete=1, complete_tag=15, complete_value=5461, retire=1, expected_complete_accepted=1, expected_retire_accepted=1, expected_retired_tag=13, expected_retired_value=4915, expected_count=3), + Scenario(retire=1, expected_count=3), + Scenario(allocate=1, allocate_tag=17, complete=1, complete_index=3, complete_tag=14, complete_value=5188, retire=1, expected_allocate_accepted=1, expected_allocated_index=2, expected_complete_accepted=1, expected_retire_accepted=1, expected_retired_tag=14, expected_retired_value=5188, expected_count=3), + Scenario(allocate=1, allocate_tag=18, complete=1, complete_tag=15, complete_value=5461, retire=1, expected_allocate_accepted=1, expected_allocated_index=3, expected_complete_accepted=1, expected_retire_accepted=1, expected_retired_tag=15, expected_retired_value=5461, expected_count=3), + Scenario(complete=1, complete_index=1, complete_tag=16, complete_value=5734, retire=1, expected_complete_accepted=1, expected_retire_accepted=1, expected_retired_tag=16, expected_retired_value=5734, expected_count=2), + Scenario(complete=1, complete_index=2, complete_tag=17, complete_value=6007, retire=1, expected_complete_accepted=1, expected_retire_accepted=1, expected_retired_tag=17, expected_retired_value=6007, expected_count=1), + Scenario(complete=1, complete_index=3, complete_tag=18, complete_value=6280, retire=1, expected_complete_accepted=1, expected_retire_accepted=1, expected_retired_tag=18, expected_retired_value=6280), + Scenario(complete=1, complete_index=3, complete_tag=18, complete_value=9, retire=1), + Scenario(allocate=1, allocate_tag=21, expected_allocate_accepted=1, expected_count=1), + Scenario(allocate=1, allocate_tag=22, complete=1, complete_tag=21, complete_value=21, retire=1, flush=1), + Scenario(allocate=1, allocate_tag=31, expected_allocate_accepted=1, expected_count=1), + Scenario(complete=1, complete_tag=21, complete_value=21, retire=1, expected_count=1), + Scenario(complete=1, complete_tag=31, complete_value=12593, retire=1, expected_complete_accepted=1, expected_retire_accepted=1, expected_retired_tag=31, expected_retired_value=12593), + Scenario(flush=1), + Scenario(allocate=1, allocate_tag=199, complete=1, complete_index=3, complete_tag=174, complete_value=44743, retire=1, expected_allocate_accepted=1, expected_count=1), + Scenario(allocate=1, allocate_tag=12, complete_index=2, complete_tag=224, complete_value=57356, retire=1, expected_allocate_accepted=1, expected_allocated_index=1, expected_count=2), + Scenario(allocate_tag=225, complete_index=2, complete_tag=15, complete_value=4065, expected_count=2), + Scenario(allocate=1, allocate_tag=246, complete_index=3, complete_tag=112, complete_value=28918, retire=1, expected_allocate_accepted=1, expected_allocated_index=2, expected_count=3), + Scenario(allocate_tag=2, complete_index=3, complete_tag=206, complete_value=52738, expected_count=3), + Scenario(allocate=1, allocate_tag=69, complete=1, complete_index=1, complete_tag=107, complete_value=27461, expected_allocate_accepted=1, expected_allocated_index=3, expected_count=4), + Scenario(allocate_tag=110, complete_index=3, complete_tag=38, complete_value=9838, expected_count=4), + Scenario(allocate=1, allocate_tag=1, complete=1, complete_index=1, complete_tag=8, complete_value=2049, retire=1, expected_count=4), + Scenario(allocate_tag=63, complete=1, complete_tag=113, complete_value=28991, expected_count=4), + Scenario(allocate_tag=17, complete=1, complete_index=3, complete_tag=187, complete_value=47889, expected_count=4), + Scenario(allocate=1, allocate_tag=39, complete=1, complete_index=3, complete_tag=222, complete_value=56871, expected_count=4), + Scenario(allocate_tag=165, complete=1, complete_index=3, complete_tag=94, complete_value=24229, retire=1, expected_count=4), + Scenario(allocate_tag=25, complete=1, complete_index=2, complete_tag=203, complete_value=51993, expected_count=4), + Scenario(allocate=1, allocate_tag=92, complete=1, complete_index=3, complete_tag=174, complete_value=44636, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=76, complete_index=2, complete_tag=146, complete_value=37452, expected_count=4), + Scenario(allocate_tag=94, complete=1, complete_index=2, complete_tag=224, complete_value=57438, expected_count=4), + Scenario(allocate_tag=179, complete_index=3, complete_tag=138, complete_value=35507, retire=1, expected_count=4), + Scenario(allocate_tag=120, complete=1, complete_index=1, complete_tag=90, complete_value=23160, expected_count=4), + Scenario(allocate=1, allocate_tag=215, complete=1, complete_index=1, complete_tag=23, complete_value=6103, expected_count=4), + Scenario(allocate_tag=146, complete_index=3, complete_tag=16, complete_value=4242, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=133, complete=1, complete_index=2, complete_tag=164, complete_value=42117, retire=1, expected_count=4), + Scenario(allocate_tag=67, complete=1, complete_tag=111, complete_value=28483, retire=1, expected_count=4), + Scenario(allocate_tag=184, complete=1, complete_tag=45, complete_value=11704, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=35, complete=1, complete_index=3, complete_tag=69, complete_value=17699, expected_complete_accepted=1, expected_count=4), + Scenario(allocate=1, allocate_tag=71, complete_index=2, complete_tag=183, complete_value=46919, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=165, complete_index=3, complete_tag=71, complete_value=18341, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=19, complete_index=2, complete_tag=224, complete_value=57363, expected_count=4), + Scenario(allocate=1, allocate_tag=119, complete=1, complete_tag=52, complete_value=13431, expected_count=4), + Scenario(allocate=1, allocate_tag=93, complete_tag=72, complete_value=18525, expected_count=4), + Scenario(allocate=1, allocate_tag=5, complete_index=2, complete_tag=248, complete_value=63493, retire=1, expected_count=4), + Scenario(allocate_tag=211, complete_index=1, complete_tag=55, complete_value=14291, retire=1, expected_count=4), + Scenario(allocate_tag=24, complete_index=3, complete_tag=126, complete_value=32280, retire=1, expected_count=4), + Scenario(allocate_tag=81, complete=1, complete_index=2, complete_tag=215, complete_value=55121, expected_count=4), + Scenario(allocate=1, allocate_tag=252, complete=1, complete_index=1, complete_tag=189, complete_value=48636, retire=1, expected_count=4), + Scenario(allocate_tag=127, complete=1, complete_index=1, complete_tag=67, complete_value=17279, expected_count=4), + Scenario(allocate=1, allocate_tag=75, complete_index=1, complete_tag=89, complete_value=22859, retire=1, expected_count=4), + Scenario(allocate_tag=6, complete_index=3, complete_tag=78, complete_value=19974, expected_count=4), + Scenario(allocate=1, allocate_tag=209, complete=1, complete_index=1, complete_tag=107, complete_value=27601, expected_count=4), + Scenario(allocate_tag=74, complete_index=1, complete_tag=167, complete_value=42826, expected_count=4), + Scenario(allocate=1, allocate_tag=206, complete=1, complete_index=2, complete_tag=2, complete_value=718, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=9, complete=1, complete_index=3, complete_tag=242, complete_value=61961, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=19, complete=1, complete_tag=237, complete_value=60691, retire=1, expected_count=4), + Scenario(complete_index=2, complete_tag=121, complete_value=30976, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=44, complete_index=3, complete_tag=41, complete_value=10540, expected_count=4), + Scenario(allocate=1, allocate_tag=138, complete_index=2, complete_tag=188, complete_value=48266, retire=1, expected_count=4), + Scenario(allocate_tag=69, complete_tag=143, complete_value=36677, flush=1), + Scenario(allocate=1, allocate_tag=51, complete=1, complete_index=1, complete_tag=205, complete_value=52531, retire=1, expected_allocate_accepted=1, expected_count=1), + Scenario(allocate_tag=19, complete=1, complete_index=3, complete_tag=201, complete_value=51475, expected_count=1), + Scenario(allocate_tag=122, complete_index=1, complete_tag=43, complete_value=11130, retire=1, expected_count=1), + Scenario(allocate_tag=168, complete=1, complete_index=2, complete_tag=206, complete_value=52904, expected_count=1), + Scenario(allocate=1, allocate_tag=82, complete_tag=39, complete_value=10066, expected_allocate_accepted=1, expected_allocated_index=1, expected_count=2), + Scenario(allocate_tag=179, complete=1, complete_index=2, complete_tag=147, complete_value=37811, retire=1, expected_count=2), + Scenario(allocate_tag=232, complete_index=3, complete_tag=119, complete_value=30696, expected_count=2), + Scenario(allocate=1, allocate_tag=52, complete=1, complete_index=1, complete_tag=184, complete_value=47156, retire=1, expected_allocate_accepted=1, expected_allocated_index=2, expected_count=3), + Scenario(allocate_tag=210, complete=1, complete_index=1, complete_tag=115, complete_value=29650, expected_count=3), + Scenario(allocate=1, allocate_tag=80, complete=1, complete_index=3, complete_tag=85, complete_value=21840, retire=1, expected_allocate_accepted=1, expected_allocated_index=3, expected_count=4), + Scenario(allocate_tag=28, complete=1, complete_index=2, complete_tag=22, complete_value=5660, retire=1, expected_count=4), + Scenario(allocate_tag=213, complete_index=2, complete_tag=36, complete_value=9429, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=208, complete=1, complete_index=1, complete_tag=111, complete_value=28624, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=11, complete=1, complete_index=1, complete_tag=79, complete_value=20235, expected_count=4), + Scenario(allocate_tag=104, complete=1, complete_tag=94, complete_value=24168, retire=1, expected_count=4), + Scenario(allocate_tag=2, complete=1, complete_index=2, complete_tag=85, complete_value=21762, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=244, complete_tag=208, complete_value=53492, retire=1, expected_count=4), + Scenario(allocate_tag=109, complete=1, complete_index=2, complete_tag=131, complete_value=33645, retire=1, expected_count=4), + Scenario(allocate_tag=189, complete=1, complete_index=3, complete_tag=44, complete_value=11453, expected_count=4), + Scenario(allocate_tag=180, complete_index=2, complete_tag=44, complete_value=11444, expected_count=4), + Scenario(allocate_tag=101, complete=1, complete_tag=7, complete_value=1893, retire=1, expected_count=4), + Scenario(allocate_tag=106, complete_index=3, complete_tag=30, complete_value=7786, expected_count=4), + Scenario(allocate=1, allocate_tag=221, complete=1, complete_tag=160, complete_value=41181, expected_count=4), + Scenario(allocate=1, allocate_tag=14, complete=1, complete_index=1, complete_tag=16, complete_value=4110, expected_count=4), + Scenario(allocate=1, allocate_tag=77, complete_index=1, complete_tag=90, complete_value=23117, expected_count=4), + Scenario(allocate_tag=109, complete=1, complete_index=3, complete_tag=33, complete_value=8557, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=116, complete=1, complete_index=2, complete_tag=216, complete_value=55412, retire=1, expected_count=4), + Scenario(allocate_tag=91, complete_tag=187, complete_value=47963, retire=1, expected_count=4), + Scenario(allocate_tag=248, complete_tag=228, complete_value=58616, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=39, complete_index=2, complete_tag=175, complete_value=44839, expected_count=4), + Scenario(allocate_tag=165, complete_index=2, complete_tag=5, complete_value=1445, expected_count=4), + Scenario(allocate_tag=178, complete=1, complete_index=1, complete_tag=42, complete_value=10930, retire=1, expected_count=4), + Scenario(allocate_tag=138, complete=1, complete_index=3, complete_tag=126, complete_value=32394, expected_count=4), + Scenario(allocate=1, allocate_tag=22, complete=1, complete_tag=91, complete_value=23318, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=140, complete=1, complete_tag=170, complete_value=43660, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=105, complete_index=2, complete_tag=168, complete_value=43113, expected_count=4), + Scenario(allocate=1, allocate_tag=213, complete_index=2, complete_tag=171, complete_value=43989, expected_count=4), + Scenario(allocate_tag=88, complete=1, complete_index=3, complete_tag=209, complete_value=53592, expected_count=4), + Scenario(allocate_tag=52, complete_index=2, complete_tag=92, complete_value=23604, expected_count=4), + Scenario(allocate_tag=139, complete=1, complete_index=3, complete_tag=101, complete_value=25995, expected_count=4), + Scenario(allocate_tag=153, complete=1, complete_index=1, complete_tag=23, complete_value=6041, expected_count=4), + Scenario(allocate=1, allocate_tag=249, complete=1, complete_tag=75, complete_value=19449, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=239, complete=1, complete_index=3, complete_tag=78, complete_value=20207, expected_count=4), + Scenario(allocate_tag=134, complete_index=3, complete_tag=67, complete_value=17286, retire=1, expected_count=4), + Scenario(allocate_tag=132, complete_index=1, complete_tag=155, complete_value=39812, retire=1, expected_count=4), + Scenario(allocate_tag=198, complete_index=3, complete_tag=60, complete_value=15558, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=23, complete=1, complete_index=3, complete_tag=15, complete_value=3863, expected_count=4), + Scenario(allocate_tag=11, complete_index=3, complete_tag=55, complete_value=14091, retire=1, expected_count=4), + Scenario(allocate_tag=45, complete_index=3, complete_tag=93, complete_value=23853, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=115, complete=1, complete_index=2, complete_tag=59, complete_value=15219, expected_count=4), + Scenario(allocate_tag=108, complete=1, complete_index=3, complete_tag=3, complete_value=876, expected_count=4), + Scenario(allocate=1, allocate_tag=16, complete_tag=76, complete_value=19472, expected_count=4), + Scenario(allocate=1, allocate_tag=84, complete=1, complete_index=1, complete_tag=198, complete_value=50772, expected_count=4), + Scenario(allocate_tag=24, complete_index=2, complete_tag=136, complete_value=34840, expected_count=4), + Scenario(allocate_tag=152, complete=1, complete_index=2, complete_tag=32, complete_value=8344, expected_count=4), + Scenario(allocate_tag=66, complete_index=1, complete_tag=134, complete_value=34370, retire=1, expected_count=4), + Scenario(allocate_tag=147, complete_tag=220, complete_value=56467, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=125, complete=1, complete_index=1, complete_tag=118, complete_value=30333, expected_count=4), + Scenario(allocate_tag=47, complete=1, complete_index=3, complete_tag=142, complete_value=36399, expected_count=4), + Scenario(allocate=1, allocate_tag=253, complete_tag=140, complete_value=36093, retire=1, expected_count=4), + Scenario(allocate_tag=193, complete=1, complete_index=1, complete_tag=240, complete_value=61633, expected_count=4), + Scenario(allocate_tag=86, complete=1, complete_index=2, complete_tag=222, complete_value=56918, expected_count=4), + Scenario(allocate=1, allocate_tag=144, complete=1, complete_tag=114, complete_value=29328, expected_count=4), + Scenario(allocate_tag=212, complete=1, complete_tag=48, complete_value=12500, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=24, complete_index=3, complete_tag=107, complete_value=27416, expected_count=4), + Scenario(allocate_tag=252, complete_index=2, complete_tag=59, complete_value=15356, retire=1, expected_count=4), + Scenario(allocate_tag=75, complete=1, complete_index=3, complete_tag=60, complete_value=15435, expected_count=4), + Scenario(allocate_tag=14, complete=1, complete_index=2, complete_tag=116, complete_value=29710, expected_count=4), + Scenario(allocate_tag=172, complete_index=1, complete_tag=18, complete_value=4780, retire=1, expected_count=4), + Scenario(allocate_tag=150, complete_index=3, complete_tag=149, complete_value=38294, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=137, complete=1, complete_tag=144, complete_value=37001, retire=1, expected_count=4), + Scenario(allocate_tag=29, complete=1, complete_tag=244, complete_value=62493, expected_count=4), + Scenario(allocate_tag=31, complete_index=2, complete_tag=223, complete_value=57119, expected_count=4), + Scenario(allocate=1, allocate_tag=154, complete_index=1, complete_tag=123, complete_value=31642, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=18, complete_index=2, complete_tag=21, complete_value=5394, expected_count=4), + Scenario(allocate=1, allocate_tag=56, complete_index=2, complete_tag=65, complete_value=16696, expected_count=4), + Scenario(allocate=1, allocate_tag=212, complete=1, complete_tag=222, complete_value=57044, expected_count=4), + Scenario(allocate_tag=153, complete=1, complete_index=2, complete_tag=2, complete_value=665, expected_count=4), + Scenario(allocate=1, allocate_tag=227, complete=1, complete_tag=73, complete_value=18915, retire=1, expected_count=4), + Scenario(allocate_tag=75, complete_index=2, complete_tag=197, complete_value=50507, expected_count=4), + Scenario(allocate_tag=15, complete_index=1, complete_tag=189, complete_value=48399, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=36, complete_tag=55, complete_value=14116, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=70, complete_index=2, complete_tag=148, complete_value=37958, expected_count=4), + Scenario(allocate=1, allocate_tag=170, complete=1, complete_index=1, complete_tag=241, complete_value=61866, expected_count=4), + Scenario(allocate=1, allocate_tag=239, complete=1, complete_index=1, complete_tag=139, complete_value=35823, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=212, complete_tag=197, complete_value=50644, expected_count=4), + Scenario(allocate=1, allocate_tag=5, complete_index=2, complete_tag=99, complete_value=25349, expected_count=4), + Scenario(allocate_tag=104, complete=1, complete_tag=24, complete_value=6248, expected_count=4), + Scenario(allocate_tag=150, complete=1, complete_index=1, complete_tag=2, complete_value=662, expected_count=4), + Scenario(allocate=1, allocate_tag=100, complete=1, complete_index=2, complete_tag=144, complete_value=36964, expected_count=4), + Scenario(allocate=1, allocate_tag=97, complete=1, complete_index=3, complete_tag=36, complete_value=9313, expected_count=4), + Scenario(allocate=1, allocate_tag=207, complete=1, complete_index=1, complete_tag=38, complete_value=9935, expected_count=4), + Scenario(allocate_tag=44, complete_tag=9, complete_value=2348, expected_count=4), + Scenario(allocate_tag=248, complete=1, complete_index=3, complete_tag=55, complete_value=14328, expected_count=4), + Scenario(allocate=1, allocate_tag=224, complete=1, complete_index=3, complete_tag=98, complete_value=25312, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=15, complete=1, complete_tag=85, complete_value=21775, expected_count=4), + Scenario(allocate=1, allocate_tag=80, complete_index=2, complete_tag=16, complete_value=4176, retire=1, expected_count=4), + Scenario(allocate_tag=101, complete=1, complete_index=3, complete_tag=234, complete_value=60005, retire=1, expected_count=4), + Scenario(allocate_tag=187, complete_tag=236, complete_value=60603, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=226, complete=1, complete_index=3, complete_tag=69, complete_value=17890, retire=1, expected_count=4), + Scenario(allocate_tag=128, complete=1, complete_index=3, complete_tag=76, complete_value=19584, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=246, complete=1, complete_index=3, complete_tag=42, complete_value=10998, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=25, complete_index=2, complete_tag=77, complete_value=19737, expected_count=4), + Scenario(allocate=1, allocate_tag=42, complete_tag=116, complete_value=29738, retire=1, expected_count=4), + Scenario(allocate_tag=171, complete_index=3, complete_tag=118, complete_value=30379, expected_count=4), + Scenario(allocate=1, allocate_tag=243, complete_index=2, complete_tag=110, complete_value=28403, expected_count=4), + Scenario(allocate_tag=177, complete=1, complete_tag=228, complete_value=58545, expected_count=4), + Scenario(allocate_tag=157, complete_tag=80, complete_value=20637, expected_count=4), + Scenario(allocate_tag=202, complete=1, complete_index=1, complete_tag=119, complete_value=30666, retire=1, expected_count=4), + Scenario(allocate_tag=180, complete_index=2, complete_tag=158, complete_value=40628, expected_count=4), + Scenario(allocate=1, allocate_tag=211, complete=1, complete_tag=226, complete_value=58067, expected_count=4), + Scenario(allocate_tag=253, complete_index=2, complete_tag=72, complete_value=18685, expected_count=4), + Scenario(allocate_tag=203, complete=1, complete_index=2, complete_tag=92, complete_value=23755, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=68, complete_tag=204, complete_value=52292, expected_count=4), + Scenario(allocate=1, allocate_tag=141, complete_index=2, complete_tag=80, complete_value=20621, expected_count=4), + Scenario(allocate=1, allocate_tag=210, complete=1, complete_index=1, complete_tag=71, complete_value=18386, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=178, complete=1, complete_index=2, complete_tag=58, complete_value=15026, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=67, complete=1, complete_index=1, complete_tag=77, complete_value=19779, expected_count=4), + Scenario(allocate=1, allocate_tag=14, complete_index=3, complete_tag=129, complete_value=33038, retire=1, expected_count=4), + Scenario(allocate_tag=145, complete=1, complete_tag=131, complete_value=33681, retire=1, expected_count=4), + Scenario(allocate_tag=129, complete=1, complete_index=2, complete_tag=128, complete_value=32897, expected_count=4), + Scenario(allocate_tag=208, complete=1, complete_index=2, complete_tag=148, complete_value=38096, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=70, complete_index=2, complete_tag=122, complete_value=31302, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=243, complete=1, complete_tag=21, complete_value=5619, expected_count=4), + Scenario(allocate=1, allocate_tag=88, complete_index=1, complete_tag=223, complete_value=57176, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=120, complete=1, complete_index=1, complete_tag=114, complete_value=29304, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=25, complete=1, complete_tag=124, complete_value=31769, expected_count=4), + Scenario(allocate=1, allocate_tag=87, complete_index=1, complete_tag=200, complete_value=51287, expected_count=4), + Scenario(allocate=1, allocate_tag=126, complete_tag=53, complete_value=13694, retire=1, expected_count=4), + Scenario(allocate_tag=104, complete_tag=143, complete_value=36712, expected_count=4), + Scenario(allocate=1, allocate_tag=190, complete=1, complete_tag=104, complete_value=26814, expected_count=4), + Scenario(allocate=1, allocate_tag=253, complete_tag=53, complete_value=13821, retire=1, expected_count=4), + Scenario(allocate_tag=87, complete=1, complete_tag=122, complete_value=31319, retire=1, expected_count=4), + Scenario(allocate_tag=80, complete=1, complete_index=1, complete_tag=137, complete_value=35152, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=170, complete=1, complete_tag=253, complete_value=64938, retire=1, expected_count=4), + Scenario(allocate_tag=164, complete=1, complete_index=1, complete_tag=222, complete_value=56996, expected_count=4), + Scenario(allocate=1, allocate_tag=230, complete=1, complete_tag=12, complete_value=3302, expected_count=4), + Scenario(allocate=1, allocate_tag=31, complete=1, complete_index=2, complete_tag=203, complete_value=51999, expected_count=4), + Scenario(allocate_tag=100, complete_index=2, complete_tag=231, complete_value=59236, retire=1, expected_count=4), + Scenario(allocate_tag=237, complete_index=3, complete_tag=100, complete_value=25837, expected_count=4), + Scenario(allocate_tag=145, complete=1, complete_tag=121, complete_value=31121, expected_count=4), + Scenario(allocate_tag=37, complete_tag=244, complete_value=62501, expected_count=4), + Scenario(allocate_tag=210, complete=1, complete_index=3, complete_tag=217, complete_value=55762, expected_count=4), + Scenario(allocate_tag=92, complete_tag=22, complete_value=5724, expected_count=4), + Scenario(allocate=1, allocate_tag=119, complete_index=3, complete_tag=220, complete_value=56439, expected_count=4), + Scenario(allocate=1, allocate_tag=84, complete=1, complete_index=2, complete_tag=155, complete_value=39764, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=29, complete_tag=154, complete_value=39453, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=99, complete_index=2, complete_tag=55, complete_value=14179, expected_count=4), + Scenario(allocate_tag=104, complete_index=3, complete_tag=2, complete_value=616, expected_count=4), + Scenario(allocate=1, allocate_tag=144, complete_tag=104, complete_value=26768, expected_count=4), + Scenario(allocate=1, allocate_tag=210, complete=1, complete_tag=255, complete_value=65490, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=140, complete=1, complete_index=3, complete_tag=141, complete_value=36236, expected_count=4), + Scenario(allocate=1, allocate_tag=220, complete_tag=149, complete_value=38364, expected_count=4), + Scenario(allocate=1, allocate_tag=148, complete_tag=49, complete_value=12692, expected_count=4), + Scenario(allocate=1, allocate_tag=235, complete_tag=155, complete_value=39915, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=250, complete=1, complete_tag=82, complete_value=21242, expected_count=4), + Scenario(allocate_tag=183, complete_index=3, complete_tag=193, complete_value=49591, expected_count=4), + Scenario(allocate_tag=227, complete=1, complete_tag=181, complete_value=46563, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=95, complete=1, complete_index=2, complete_tag=169, complete_value=43359, retire=1, expected_count=4), + Scenario(allocate_tag=35, complete_index=3, complete_tag=136, complete_value=34851, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=151, complete_index=2, complete_tag=144, complete_value=37015, expected_count=4), + Scenario(allocate=1, allocate_tag=215, complete_index=1, complete_tag=68, complete_value=17623, retire=1, expected_count=4), + Scenario(allocate_tag=83, complete=1, complete_tag=104, complete_value=26707, expected_count=4), + Scenario(allocate_tag=64, complete=1, complete_tag=11, complete_value=2880, expected_count=4), + Scenario(allocate=1, allocate_tag=238, complete=1, complete_index=3, complete_tag=122, complete_value=31470, expected_count=4), + Scenario(allocate_tag=153, complete_index=3, complete_tag=76, complete_value=19609, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=74, complete_tag=24, complete_value=6218, expected_count=4), + Scenario(allocate=1, allocate_tag=90, complete=1, complete_index=1, complete_tag=205, complete_value=52570, expected_count=4), + Scenario(allocate=1, allocate_tag=239, complete=1, complete_index=1, complete_tag=176, complete_value=45295, expected_count=4), + Scenario(allocate=1, allocate_tag=20, complete=1, complete_tag=75, complete_value=19220, expected_count=4), + Scenario(allocate_tag=234, complete=1, complete_index=1, complete_tag=175, complete_value=45034, expected_count=4), + Scenario(allocate=1, allocate_tag=17, complete=1, complete_index=2, complete_tag=146, complete_value=37393, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=210, complete_index=2, complete_tag=2, complete_value=722, expected_count=4), + Scenario(allocate_tag=182, complete_index=3, complete_tag=50, complete_value=12982, expected_count=4), + Scenario(allocate=1, allocate_tag=18, complete=1, complete_tag=29, complete_value=7442, retire=1, expected_count=4), + Scenario(allocate_tag=17, complete=1, complete_index=2, complete_tag=58, complete_value=14865, retire=1, expected_count=4), + Scenario(allocate_tag=254, complete=1, complete_index=3, complete_tag=34, complete_value=8958, retire=1, expected_count=4), + Scenario(allocate_tag=169, complete=1, complete_tag=216, complete_value=55465, expected_count=4), + Scenario(allocate_tag=92, complete_index=2, complete_tag=97, complete_value=24924, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=76, complete_tag=184, complete_value=47180, expected_count=4), + Scenario(allocate=1, allocate_tag=1, complete_tag=45, complete_value=11521, retire=1, expected_count=4), + Scenario(allocate_tag=154, complete_tag=99, complete_value=25498, retire=1, expected_count=4), + Scenario(allocate_tag=107, complete=1, complete_index=3, complete_tag=139, complete_value=35691, expected_count=4), + Scenario(allocate=1, allocate_tag=249, complete_index=2, complete_tag=56, complete_value=14585, retire=1, expected_count=4), + Scenario(allocate_tag=207, complete=1, complete_tag=235, complete_value=60367, retire=1, expected_count=4), + Scenario(allocate_tag=220, complete_index=1, complete_tag=188, complete_value=48348, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=177, complete_index=2, complete_tag=126, complete_value=32433, expected_count=4), + Scenario(allocate_tag=164, complete=1, complete_index=3, complete_tag=189, complete_value=48548, expected_count=4), + Scenario(allocate_tag=100, complete=1, complete_index=1, complete_tag=55, complete_value=14180, retire=1, expected_count=4), + Scenario(allocate_tag=34, complete=1, complete_index=3, complete_tag=138, complete_value=35362, expected_count=4), + Scenario(allocate=1, allocate_tag=217, complete_index=2, complete_tag=55, complete_value=14297, expected_count=4), + Scenario(allocate_tag=183, complete_index=3, complete_tag=85, complete_value=21943, expected_count=4), + Scenario(allocate_tag=232, complete_index=2, complete_tag=171, complete_value=44008, retire=1, expected_count=4), + Scenario(allocate_tag=104, complete=1, complete_index=1, complete_tag=34, complete_value=8808, expected_count=4), + Scenario(allocate=1, allocate_tag=191, complete_index=1, complete_tag=245, complete_value=62911, retire=1, expected_count=4), + Scenario(allocate_tag=181, complete=1, complete_index=1, complete_tag=237, complete_value=60853, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=185, complete_index=3, complete_tag=185, complete_value=47545, retire=1, expected_count=4), + Scenario(allocate_tag=231, complete_index=3, complete_tag=204, complete_value=52455, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=237, complete=1, complete_index=2, complete_tag=194, complete_value=49901, expected_count=4), + Scenario(allocate_tag=129, complete_index=3, complete_tag=150, complete_value=38529, retire=1, expected_count=4), + Scenario(allocate_tag=73, complete=1, complete_index=2, complete_tag=4, complete_value=1097, expected_count=4), + Scenario(allocate_tag=229, complete_index=3, complete_tag=138, complete_value=35557, retire=1, expected_count=4), + Scenario(allocate_tag=199, complete_index=3, complete_value=199, expected_count=4), + Scenario(allocate_tag=20, complete_tag=209, complete_value=53524, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=205, complete=1, complete_tag=162, complete_value=41677, retire=1, expected_count=4), + Scenario(allocate=1, complete_index=1, complete_tag=149, complete_value=38144, retire=1, expected_count=4), + Scenario(allocate_tag=145, complete=1, complete_tag=113, complete_value=29073, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=140, complete=1, complete_index=3, complete_tag=39, complete_value=10124, retire=1, expected_count=4), + Scenario(allocate=1, allocate_tag=27, complete_index=1, complete_tag=56, complete_value=14363, expected_count=4), + Scenario(allocate=1, allocate_tag=7, complete=1, complete_index=3, complete_tag=207, complete_value=52999, expected_count=4), + Scenario(flush=1), ) ) + # fmt: on + position = phase if phase < 284 else 283 + scenario = scenarios.rows[position] dut = Rob( - allocate, - allocate_tag, - complete, - complete_index, - complete_tag, - complete_value, - retire, - flush, - ) - - expected_allocate_accepted = ( - ( - ( - ( - ((phase[:1] & 0) | 0) - if phase < 1 - else (((phase[:1] & 0) | 1) if phase < 5 else ((phase[:1] & 0) | 0)) - ) - if phase < 10 - else ( - ((phase[:1] & 0) | 1) - if phase < 12 - else ( - ((phase[:1] & 0) | 0) if phase < 15 else ((phase[:1] & 0) | 1) - ) - ) - ) - if phase < 17 - else ( - ( - ((phase[:1] & 0) | 0) - if phase < 21 - else ( - ((phase[:1] & 0) | 1) if phase < 22 else ((phase[:1] & 0) | 0) - ) - ) - if phase < 23 - else ( - ((phase[:1] & 0) | 1) - if phase < 24 - else ( - ((phase[:1] & 0) | 0) if phase < 27 else ((phase[:1] & 0) | 1) - ) - ) - ) - ) - if phase < 29 - else ( - ( - ( - ((phase[:1] & 0) | 0) - if phase < 30 - else ( - ((phase[:1] & 0) | 1) if phase < 31 else ((phase[:1] & 0) | 0) - ) - ) - if phase < 32 - else ( - ((phase[:1] & 0) | 1) - if phase < 33 - else ( - ((phase[:1] & 0) | 0) if phase < 73 else ((phase[:1] & 0) | 1) - ) - ) - ) - if phase < 74 - else ( - ( - ((phase[:1] & 0) | 0) - if phase < 77 - else ( - ((phase[:1] & 0) | 1) if phase < 78 else ((phase[:1] & 0) | 0) - ) - ) - if phase < 80 - else ( - (((phase[:1] & 0) | 1) if phase < 81 else ((phase[:1] & 0) | 0)) - if phase < 82 - else ( - ((phase[:1] & 0) | 1) if phase < 83 else ((phase[:1] & 0) | 0) - ) - ) - ) - ) - ) - expected_allocated_index = ( - ( - ( - (((phase[:2] & 0) | 0) if phase < 2 else ((phase[:2] & 0) | 1)) - if phase < 3 - else ( - ((phase[:2] & 0) | 2) - if phase < 4 - else (((phase[:2] & 0) | 3) if phase < 5 else ((phase[:2] & 0) | 0)) - ) - ) - if phase < 11 - else ( - ( - ((phase[:2] & 0) | 1) - if phase < 12 - else ( - ((phase[:2] & 0) | 0) if phase < 15 else ((phase[:2] & 0) | 2) - ) - ) - if phase < 16 - else ( - ((phase[:2] & 0) | 3) - if phase < 17 - else ( - ((phase[:2] & 0) | 0) if phase < 28 else ((phase[:2] & 0) | 1) - ) - ) - ) - ) - if phase < 29 - else ( - ( - (((phase[:2] & 0) | 0) if phase < 30 else ((phase[:2] & 0) | 2)) - if phase < 31 - else ( - ((phase[:2] & 0) | 0) - if phase < 32 - else ( - ((phase[:2] & 0) | 3) if phase < 33 else ((phase[:2] & 0) | 0) - ) - ) - ) - if phase < 77 - else ( - ( - ((phase[:2] & 0) | 1) - if phase < 78 - else ( - ((phase[:2] & 0) | 0) if phase < 80 else ((phase[:2] & 0) | 2) - ) - ) - if phase < 81 - else ( - ((phase[:2] & 0) | 0) - if phase < 82 - else ( - ((phase[:2] & 0) | 3) if phase < 83 else ((phase[:2] & 0) | 0) - ) - ) - ) - ) - ) - expected_complete_accepted = ( - ( - ( - ((phase[:1] & 0) | 0) - if phase < 7 - else (((phase[:1] & 0) | 1) if phase < 8 else ((phase[:1] & 0) | 0)) - ) - if phase < 9 - else ( - (((phase[:1] & 0) | 1) if phase < 10 else ((phase[:1] & 0) | 0)) - if phase < 11 - else (((phase[:1] & 0) | 1) if phase < 12 else ((phase[:1] & 0) | 0)) - ) - ) - if phase < 13 - else ( - ( - (((phase[:1] & 0) | 1) if phase < 14 else ((phase[:1] & 0) | 0)) - if phase < 15 - else (((phase[:1] & 0) | 1) if phase < 20 else ((phase[:1] & 0) | 0)) - ) - if phase < 25 - else ( - (((phase[:1] & 0) | 1) if phase < 26 else ((phase[:1] & 0) | 0)) - if phase < 50 - else (((phase[:1] & 0) | 1) if phase < 51 else ((phase[:1] & 0) | 0)) - ) - ) - ) - expected_retire_accepted = ( - ( - (((phase[:1] & 0) | 0) if phase < 9 else ((phase[:1] & 0) | 1)) - if phase < 10 - else ( - ((phase[:1] & 0) | 0) - if phase < 11 - else (((phase[:1] & 0) | 1) if phase < 12 else ((phase[:1] & 0) | 0)) - ) - ) - if phase < 13 - else ( - ( - ((phase[:1] & 0) | 1) - if phase < 14 - else (((phase[:1] & 0) | 0) if phase < 15 else ((phase[:1] & 0) | 1)) - ) - if phase < 20 - else ( - ((phase[:1] & 0) | 0) - if phase < 25 - else (((phase[:1] & 0) | 1) if phase < 26 else ((phase[:1] & 0) | 0)) - ) - ) - ) - expected_retired_tag = ( - ( - ( - ((phase[:8] & 0) | 0) - if phase < 9 - else (((phase[:8] & 0) | 11) if phase < 10 else ((phase[:8] & 0) | 0)) - ) - if phase < 11 - else ( - (((phase[:8] & 0) | 12) if phase < 12 else ((phase[:8] & 0) | 0)) - if phase < 13 - else (((phase[:8] & 0) | 13) if phase < 14 else ((phase[:8] & 0) | 0)) - ) - ) - if phase < 15 - else ( - ( - (((phase[:8] & 0) | 14) if phase < 16 else ((phase[:8] & 0) | 15)) - if phase < 17 - else (((phase[:8] & 0) | 16) if phase < 18 else ((phase[:8] & 0) | 17)) - ) - if phase < 19 - else ( - (((phase[:8] & 0) | 18) if phase < 20 else ((phase[:8] & 0) | 0)) - if phase < 25 - else (((phase[:8] & 0) | 31) if phase < 26 else ((phase[:8] & 0) | 0)) - ) - ) - ) - expected_retired_value = ( - ( - ( - ((phase[:16] & 0) | 0) - if phase < 9 - else ( - ((phase[:16] & 0) | 4369) if phase < 10 else ((phase[:16] & 0) | 0) - ) - ) - if phase < 11 - else ( - (((phase[:16] & 0) | 4642) if phase < 12 else ((phase[:16] & 0) | 0)) - if phase < 13 - else ( - ((phase[:16] & 0) | 4915) if phase < 14 else ((phase[:16] & 0) | 0) - ) - ) - ) - if phase < 15 - else ( - ( - (((phase[:16] & 0) | 5188) if phase < 16 else ((phase[:16] & 0) | 5461)) - if phase < 17 - else ( - ((phase[:16] & 0) | 5734) - if phase < 18 - else ((phase[:16] & 0) | 6007) - ) - ) - if phase < 19 - else ( - (((phase[:16] & 0) | 6280) if phase < 20 else ((phase[:16] & 0) | 0)) - if phase < 25 - else ( - ((phase[:16] & 0) | 12593) if phase < 26 else ((phase[:16] & 0) | 0) - ) - ) - ) - ) - expected_count = ( - ( - ( - ( - ((phase[:3] & 0) | 0) - if phase < 1 - else (((phase[:3] & 0) | 1) if phase < 2 else ((phase[:3] & 0) | 2)) - ) - if phase < 3 - else ( - ((phase[:3] & 0) | 3) - if phase < 4 - else (((phase[:3] & 0) | 4) if phase < 9 else ((phase[:3] & 0) | 3)) - ) - ) - if phase < 10 - else ( - ( - ((phase[:3] & 0) | 4) - if phase < 13 - else ( - ((phase[:3] & 0) | 3) if phase < 17 else ((phase[:3] & 0) | 2) - ) - ) - if phase < 18 - else ( - ((phase[:3] & 0) | 1) - if phase < 19 - else ( - ((phase[:3] & 0) | 0) if phase < 21 else ((phase[:3] & 0) | 1) - ) - ) - ) - ) - if phase < 22 - else ( - ( - ( - ((phase[:3] & 0) | 0) - if phase < 23 - else ( - ((phase[:3] & 0) | 1) if phase < 25 else ((phase[:3] & 0) | 0) - ) - ) - if phase < 27 - else ( - ((phase[:3] & 0) | 1) - if phase < 28 - else ( - ((phase[:3] & 0) | 2) if phase < 30 else ((phase[:3] & 0) | 3) - ) - ) - ) - if phase < 32 - else ( - ( - ((phase[:3] & 0) | 4) - if phase < 72 - else ( - ((phase[:3] & 0) | 0) if phase < 73 else ((phase[:3] & 0) | 1) - ) - ) - if phase < 77 - else ( - (((phase[:3] & 0) | 2) if phase < 80 else ((phase[:3] & 0) | 3)) - if phase < 82 - else ( - ((phase[:3] & 0) | 4) if phase < 283 else ((phase[:3] & 0) | 0) - ) - ) - ) - ) + scenario.allocate, + scenario.allocate_tag, + scenario.complete, + scenario.complete_index, + scenario.complete_tag, + scenario.complete_value, + scenario.retire, + scenario.flush, ) @rule def check_and_advance(): if phase < 284: assert ( - dut.allocate_accepted == expected_allocate_accepted + dut.allocate_accepted == scenario.expected_allocate_accepted ), "rob: allocate_accepted" assert ( - dut.allocated_index == expected_allocated_index + dut.allocated_index == scenario.expected_allocated_index ), "rob: allocated_index" assert ( - dut.complete_accepted == expected_complete_accepted + dut.complete_accepted == scenario.expected_complete_accepted ), "rob: complete_accepted" assert ( - dut.retire_accepted == expected_retire_accepted + dut.retire_accepted == scenario.expected_retire_accepted ), "rob: retire_accepted" - assert dut.retired_tag == expected_retired_tag, "rob: retired_tag" - assert dut.retired_value == expected_retired_value, "rob: retired_value" - assert dut.count == expected_count, "rob: count" - + assert dut.retired_tag == scenario.expected_retired_tag, "rob: retired_tag" + assert ( + dut.retired_value == scenario.expected_retired_value + ), "rob: retired_value" + assert dut.count == scenario.expected_count, "rob: count" log("info", "rob.allocate_accepted", dut.allocate_accepted) log("info", "rob.allocated_index", dut.allocated_index) log("info", "rob.complete_accepted", dut.complete_accepted)