diff --git a/docs/ci-verification.md b/docs/ci-verification.md index 63ba3e9aa8..52b62d0481 100644 --- a/docs/ci-verification.md +++ b/docs/ci-verification.md @@ -1,8 +1,25 @@ # CI verification -## Current selected-family replay: #6030 +## Current selected-family replay: #7000 with #7001 The [selected record](../certificates/selected-result.json) binds conditional +κ = 0.00363005817 to the [application review](research/pr-intake-evidence/pr7000-application/PROOF-REVIEW.md), +[validation receipts](research/pr-intake-evidence/pr7000-application/VALIDATION.json), +and [explicit source closure](../certificates/frontier7000-source.json). +`make frontier7000-verify` follows that exact-source selected replay. The review +reuses eleven authenticated preceding executions and records seven fresh serial +application, scalar and complete native-catalogue executions. The earlier +monolithic timeout is retained separately and is not completed coverage. +Consult the receipts for exact commands, source heads and limits. + +The five inherited framework assumptions remain. No complete uniform word, +literal multiplier execution, independent human proof or formal-kernel proof +is asserted. Routine research submissions do not need to rerun this +selected-family replay. The sections below preserve historical checkpoints. + +## Historical selected-family replay: #6030 + +The [historical checkpoint](../certificates/checkpoints/frontier6030.json) binds conditional κ = 0.003125804 to the [proof review](research/pr-intake-evidence/pr6030-audit/PROOF-REVIEW.md), [validation receipts](research/pr-intake-evidence/pr6030-audit/VALIDATION.json), and [explicit source closure](../certificates/frontier6030-source.json). diff --git a/research/historical-selected-replay-gap/README.md b/research/historical-selected-replay-gap/README.md index 55d8cc3b49..36d9a873ca 100644 --- a/research/historical-selected-replay-gap/README.md +++ b/research/historical-selected-replay-gap/README.md @@ -69,7 +69,11 @@ python3 -B scripts/research_package.py --package research/historical-selected-re The direct command prints `PASS_HISTORICAL_SELECTED_REPLAY_GAP`. A registered replay prints `PASS_REGISTERED_RESEARCH_PACKAGE`. Both require Git history -containing the two inspected commits. +containing the two inspected commits and the source and manifest objects at +`2485805a6d47f36ea83ddde6327d453ac82d44dc`. The verifier uses a temporary +sparse checkout of that commit, checks the declared source digests there, and +uses its planner and manifest inventory. The recorded rejections and selection +therefore remain reproducible after later changes to the live Makefile or CI guide. ## Open next questions diff --git a/research/historical-selected-replay-gap/SOURCES.json b/research/historical-selected-replay-gap/SOURCES.json index c1010eec95..62bb8b3950 100644 --- a/research/historical-selected-replay-gap/SOURCES.json +++ b/research/historical-selected-replay-gap/SOURCES.json @@ -4,13 +4,13 @@ "files": [ { "path": "Makefile", - "usage": "input", + "usage": "provenance", "git_blob": "0d683a06b9e7ee162496108ce9a7c5d2ee94fccf", "sha256": "4f2d4f2dcd15139ec82658a975f85ed300897385f85799218539f4c8d60567da" }, { "path": "certificates/partial-swap-network.json", - "usage": "input", + "usage": "provenance", "git_blob": "eccafa830c16170c36faf93045ddf1f638f7bcd4", "sha256": "4c0b9d37e1034b2076e30a70f8e514416298c462d9ee98bc87fe6556b14df786" }, @@ -22,7 +22,7 @@ }, { "path": "docs/ci-verification.md", - "usage": "input", + "usage": "provenance", "git_blob": "63ba3e9aa8bdc5e942b56e34244b92b16f854085", "sha256": "c7d3027e9ad8bcbff68f07aa9576b30fb2f3c76c44d876d40c7fdbf4a3e2228a" }, @@ -34,163 +34,163 @@ }, { "path": "research/clifford-state-performance/SOURCE.json", - "usage": "input", + "usage": "provenance", "git_blob": "6f98a0061a5104dfab82c9e806f819b41811f684", "sha256": "396d0f08df24952248140d5c65c51b8c902ef1c580892ff7ea182890530f67ee" }, { "path": "research/community-batch1047-audit/CONTENT-COVERAGE.json", - "usage": "input", + "usage": "provenance", "git_blob": "5e0f92af463ec12c5e1dcc3effd44081a88af647", "sha256": "07a9daeaf2bda308a92e9a4684f13d5fc766c7772d74801fceb7f4599fdab226" }, { "path": "research/community-batch1099-audit/CONTENT-COVERAGE.json", - "usage": "input", + "usage": "provenance", "git_blob": "9e13266bf85e627f1b7dc225e9530ea69fd2c7f0", "sha256": "421e1211fb1897c45621dc6801c276e53f2e6f335583c9c9049e535f87c0a3b1" }, { "path": "research/community-batch932-audit/CONTENT-COVERAGE.json", - "usage": "input", + "usage": "provenance", "git_blob": "cc4d03eb59b9ab3f952735f7e88ff18c2d15d7af", "sha256": "184629cac91a5cfaca50330a88596008b824221433867dcf8117539c913c284a" }, { "path": "research/community-batch970-audit/CONTENT-COVERAGE.json", - "usage": "input", + "usage": "provenance", "git_blob": "8b9f4111badf7de5d97684799560b55110e9da79", "sha256": "23188ed920e38a54006cb883e181585620821c63bf7e8b5e05d32719417cc37e" }, { "path": "research/community-frontier741-audit/CONTENT-COVERAGE.json", - "usage": "input", + "usage": "provenance", "git_blob": "a5300d4e7a5381a3f443fc54c768ca6f0f236d68", "sha256": "3c820fb30e1b4d9bcfc6a7ab524375e5b2abd66b940af2c509146104f0bcd79c" }, { "path": "research/community-frontier890-audit/CONTENT-COVERAGE.json", - "usage": "input", + "usage": "provenance", "git_blob": "d7ff6d777b01d69b6ce84caf25d3b7e4a4d2f211", "sha256": "6b185a9902652f893f3ebd8ada92d2f11b6de6533a9a4d11718a8a4496101128" }, { "path": "research/community-hyperplane599-audit/SOURCE.json", - "usage": "input", + "usage": "provenance", "git_blob": "546f37d326d10a99910ae8f908e71ef768524d98", "sha256": "65099d764bfcc39bda5e4d9966783611b094c3522dbdd1435cd498d657a8ef8e" }, { "path": "research/community-k492-audit/SOURCE.json", - "usage": "input", + "usage": "provenance", "git_blob": "e538481e4cb16ed936d3195f2dfb5b5a9ca0a76b", "sha256": "2c0f4fa5bc150d05658af2e7c54c4d2c337dd52b7efd3d69530ae73bcbdf452a" }, { "path": "research/community-reconciliation92-audit/MANIFEST.json", - "usage": "input", + "usage": "provenance", "git_blob": "2a2e93685173d5f13cbb5abe740f5d90352e0228", "sha256": "5f501f3c118131e7d069f30ad77186eb2ad6961f9680a0ef105f4514ed41808a" }, { "path": "research/partial-swap-digest/baseline.py", - "usage": "input", + "usage": "provenance", "git_blob": "a2f0190704db83bd8ef48e46e723c49b925804fe", "sha256": "81e9af92cdf38243a540cdcff2062778e449467848d444da37a9553c12ca4c34" }, { "path": "research/r420-two-sided-basis/SOURCES.json", - "usage": "input", + "usage": "provenance", "git_blob": "5d718e11e62f4bcadecf1e02d6b61f87dbe190b0", "sha256": "d9810b0d139c5a1211fd2c1f0d142187cc1fca30026e1e7bc4f9ecfacf1596d1" }, { "path": "research/skip-clones/SOURCE.json", - "usage": "input", + "usage": "provenance", "git_blob": "8d1bb3b9c8189e35e5d8bfdfa632d7473e8be0d5", "sha256": "0b68e63e35a97ce6b0cdb6e291b88ebaa8f2dd4afb70b2498f10ee89428258dc" }, { "path": "research/split-skip/SOURCE.json", - "usage": "input", + "usage": "provenance", "git_blob": "2ab610b6ea2edd2865fda793ef2168b0c76afb4f", "sha256": "7c2b4646a3ecfef6f881da5c43e4bd0fa9a4d1b00548b8ab458d897e16735134" }, { "path": "scripts/historical-ci-inputs/Makefile", - "usage": "input", + "usage": "provenance", "git_blob": "aff68409021c9d401a6f8013b9dfd7dbcc30f2a8", "sha256": "ea8830dd79da493e2d75baf753d733ff7efbcf2b4794afe41fae0ac8f3055646" }, { "path": "scripts/historical-ci-inputs/ledger-batch932-run_isolated_tests.py", - "usage": "input", + "usage": "provenance", "git_blob": "65db599ab0b1dea0312c4ca048e0bd0f44c3736f", "sha256": "96ea543e6c707424afe247e77bd86c82152f90fc76a0773c4232145da5cdf8d1" }, { "path": "scripts/historical-ci-inputs/ledger-batch932-test_isolated_test_runner.py", - "usage": "input", + "usage": "provenance", "git_blob": "34820a8f24678f918f4d0e7a35380d8013fc3495", "sha256": "628391b6abfbc8674ceec1751867a4392f2cc0b5b66886243e139af86cf355ac" }, { "path": "scripts/historical-ci-inputs/ledger-batch970-verify_selected_result.py", - "usage": "input", + "usage": "provenance", "git_blob": "c755b76e0d44ba4917aa94440ebe54daefce5b2a", "sha256": "d7fd929726b326aeeaf0a3996475adec88eee9aac09ae0bebeeaa0bc1fc8f199" }, { "path": "scripts/historical-ci-inputs/ledger-frontier741-ci-verification.md", - "usage": "input", + "usage": "provenance", "git_blob": "7f3c012504187917a728b9fe87043f0fc8cd006a", "sha256": "a854022e0e1d5d4db4d60e586be3ea56005013ef14a1fc06d02bc06e8529c4b0" }, { "path": "scripts/historical-ci-inputs/partial-swap-context.json", - "usage": "input", + "usage": "provenance", "git_blob": "ad65114886bf34a4fd27e79f3be502389e689faa", "sha256": "833a9642f33aeab2ffea17ec9c6b82e0a953f90192b2c82e10bef21538dccba9" }, { "path": "scripts/historical-ci-inputs/partial-swap-network.json", - "usage": "input", + "usage": "provenance", "git_blob": "52075f2463f60af5e16571347f24274fce73a1ea", "sha256": "f3c4be597b2f2136da4ae2cc80c7454f63c90aa01f84e5b8131cee4dd55de815" }, { "path": "scripts/partial_swap/shared.py", - "usage": "input", + "usage": "provenance", "git_blob": "44a0e454c70f9c4b98e258b8443612e6a119904b", "sha256": "5a0646a50b9f3e8ea55168620a78e8853b0ab810517cefc8cfb8696aedee278a" }, { "path": "scripts/replay_historical_check.py", - "usage": "input", + "usage": "provenance", "git_blob": "1e92fff2782970ef71378f594f2350d245a4db26", "sha256": "5467619c78183d3adc82b0cb55af28e5c1a01fca2b0588677816244b53e2bafd" }, { "path": "scripts/research_package.py", - "usage": "input", + "usage": "provenance", "git_blob": "091b4c8f58bac9a9580d76025b887dc5c873d05f", "sha256": "e1256016e7f51827d04fa2179255989f639ae1d97afaa9c16265f85a0c6abd70" }, { "path": "scripts/run_isolated_tests.py", - "usage": "input", + "usage": "provenance", "git_blob": "a96ab35b315ce492e7fbbfd6c5ae211aa066b541", "sha256": "49eb56dd0fc0d8d8ffdb209970a7adf2176223580646f575d5c22e59543b381c" }, { "path": "scripts/verify_selected_result.py", - "usage": "input", + "usage": "provenance", "git_blob": "6882a4700e410dec569b51ae2eaf1a19cc019195", "sha256": "d6b305eac5b9bdb8172c469ad30a1655a60fa0aceac8b1bf610e1b73f51babd8" }, { "path": "tests/test_isolated_test_runner.py", - "usage": "input", + "usage": "provenance", "git_blob": "343b24abf6719b81805eba5a84c74e57634c8288", "sha256": "3a5470d0b139828b90e19bf9583ddeafcd69f8e34f2824664eb3a2958a52e34d" } diff --git a/research/historical-selected-replay-gap/VERIFY.json b/research/historical-selected-replay-gap/VERIFY.json index 98553e72ed..ab7efa3471 100644 --- a/research/historical-selected-replay-gap/VERIFY.json +++ b/research/historical-selected-replay-gap/VERIFY.json @@ -4,36 +4,7 @@ "python": "3.12", "requirements": [], "inputs": [ - "Makefile", - "certificates/partial-swap-network.json", - "docs/ci-verification.md", - "research/clifford-state-performance/SOURCE.json", - "research/community-batch1047-audit/CONTENT-COVERAGE.json", - "research/community-batch1099-audit/CONTENT-COVERAGE.json", - "research/community-batch932-audit/CONTENT-COVERAGE.json", - "research/community-batch970-audit/CONTENT-COVERAGE.json", - "research/community-frontier741-audit/CONTENT-COVERAGE.json", - "research/community-frontier890-audit/CONTENT-COVERAGE.json", - "research/community-hyperplane599-audit/SOURCE.json", - "research/community-k492-audit/SOURCE.json", - "research/community-reconciliation92-audit/MANIFEST.json", - "research/partial-swap-digest/baseline.py", - "research/r420-two-sided-basis/SOURCES.json", - "research/skip-clones/SOURCE.json", - "research/split-skip/SOURCE.json", - "scripts/historical-ci-inputs/Makefile", - "scripts/historical-ci-inputs/ledger-batch932-run_isolated_tests.py", - "scripts/historical-ci-inputs/ledger-batch932-test_isolated_test_runner.py", - "scripts/historical-ci-inputs/ledger-batch970-verify_selected_result.py", - "scripts/historical-ci-inputs/ledger-frontier741-ci-verification.md", - "scripts/historical-ci-inputs/partial-swap-context.json", - "scripts/historical-ci-inputs/partial-swap-network.json", - "scripts/partial_swap/shared.py", - "scripts/replay_historical_check.py", - "scripts/research_package.py", - "scripts/run_isolated_tests.py", - "scripts/verify_selected_result.py", - "tests/test_isolated_test_runner.py" + "scripts/research_package.py" ], "commands": [ { diff --git a/research/historical-selected-replay-gap/verify.py b/research/historical-selected-replay-gap/verify.py index 83b995941a..9d266c5a4e 100644 --- a/research/historical-selected-replay-gap/verify.py +++ b/research/historical-selected-replay-gap/verify.py @@ -6,8 +6,10 @@ """ import hashlib import importlib.util +import json import subprocess import sys +import tempfile from pathlib import Path ROOT = Path(__file__).resolve().parents[2] @@ -61,31 +63,47 @@ def require(ok, message): raise SystemExit(message) -def load_checker(): - path = ROOT / "scripts/replay_historical_check.py" - spec = importlib.util.spec_from_file_location("historical_selected_replay_gap_checker", path) +def load_module(path): + spec = importlib.util.spec_from_file_location(path.stem, path) module = importlib.util.module_from_spec(spec) spec.loader.exec_module(module) return module +def checkout_snapshot(snapshot, sources, runner, env): + paths = [runner.canonical_relative_path(row["path"]) for row in sources["files"]] + git = ["git", "-c", "maintenance.auto=false", "-c", "gc.auto=0", + "-c", "core.autocrlf=false"] + subprocess.run([*git, "clone", "--quiet", "--shared", "--no-tags", "--no-checkout", + "--", str(ROOT), str(snapshot)], cwd=ROOT, env=env, check=True) + subprocess.run([*git, "update-ref", "--no-deref", "HEAD", INSPECTED], + cwd=snapshot, env=env, check=True) + # The pinned planner reads omitted manifests from the sparse HEAD/index. + patterns = "".join(f"/{path.as_posix()}\n" for path in paths) + subprocess.run([*git, "sparse-checkout", "set", "--no-cone", "--stdin"], + cwd=snapshot, env=env, input=patterns.encode("utf-8"), check=True) + subprocess.run([*git, "read-tree", "-mu", "HEAD"], cwd=snapshot, env=env, check=True) + for path, row in zip(paths, sources["files"], strict=True): + require(hashlib.sha256((snapshot / path).read_bytes()).hexdigest() == row["sha256"], + "historical checkout source digest changed: " + path.as_posix()) + + def entries(checker): for name, config in checker.CONFIG.items(): for entry in [config, *config.get("additional_inputs", [])]: yield name, entry -def reject(checker, entry): +def reject(root, checker, entry): try: - checker.authenticated_input(ROOT, entry) + checker.authenticated_input(root, entry) except ValueError as exc: return str(exc) raise SystemExit("historical input was admitted: " + entry["path"]) -def main(): - require(not sys.flags.optimize, "assertions must stay enabled") - checker = load_checker() +def check_snapshot(root, env): + checker = load_module(root / "scripts/replay_historical_check.py") selected = [entry for name, entry in entries(checker) if name == "tooling-ledger" and entry["path"] == SELECTED_PATH] require(len(selected) == 1, "selected-result checker overlay is not unique") @@ -94,7 +112,7 @@ def main(): require(entry["accepted_live_sha256"] == [SELECTED_ACCEPTED], "accepted selected-checker successors changed") frozen = (checker.INPUTS / entry["input"]).read_bytes() - live = (ROOT / SELECTED_PATH).read_bytes() + live = (root / SELECTED_PATH).read_bytes() require(hashlib.sha256(frozen).hexdigest() == SELECTED_PIN, "frozen selected checker bytes changed") require(hashlib.sha256(live).hexdigest() == SELECTED_LIVE, "live selected checker digest changed") require(SELECTED_LIVE not in (SELECTED_PIN, SELECTED_ACCEPTED), "live checker was already admitted") @@ -102,7 +120,7 @@ def main(): # live successor, not a broken comparison. require(SELECTED_PIN in (SELECTED_PIN, *entry["accepted_live_sha256"]), "pin membership control failed") - require(reject(checker, entry) == REJECTIONS[SELECTED_PATH][1], + require(reject(root, checker, entry) == REJECTIONS[SELECTED_PATH][1], "selected checker rejection text changed") counts = {path: 0 for path in REJECTIONS} @@ -110,7 +128,7 @@ def main(): for _name, item in entries(checker): if item["path"] not in REJECTIONS: continue - message = reject(checker, item) + message = reject(root, checker, item) counts[item["path"]] += 1 messages.setdefault(item["path"], message) for path, (count, message) in REJECTIONS.items(): @@ -118,20 +136,31 @@ def main(): require(messages[path] == message, "rejection text changed for " + path) require(sum(counts.values()) == 19, "rejection total changed") ci = [item for _name, item in entries(checker) if item["path"] == CI_PATH] - require(len(ci) == 1 and hashlib.sha256((ROOT / CI_PATH).read_bytes()).hexdigest() == CI_LIVE, + require(len(ci) == 1 and hashlib.sha256((root / CI_PATH).read_bytes()).hexdigest() == CI_LIVE, "selected CI note digest changed") diff = subprocess.check_output( - ["git", "diff", "--name-only", PARENT, INSPECTED], cwd=ROOT, text=True) + ["git", "diff", "--name-only", PARENT, INSPECTED], cwd=root, env=env, text=True) changed = sorted(name for name in diff.splitlines() if name) require(changed == CHANGED, "inspected commit diff changed") - sys.path.insert(0, str(ROOT / "scripts")) - from research_package import plan_details - details = plan_details(ROOT, set(changed)) + planner = load_module(root / "scripts/research_package.py") + details = planner.plan_details(root, set(changed)) require([row["package"] for row in details] == PLAN_PACKAGES, "helper plan selection changed") matched = {name for row in details for names in row["causes"].values() for name in names} require(sorted(set(changed) - matched) == UNMATCHED, "unmatched plan paths changed") - require(plan_details(ROOT, set()) == [], "empty change set selected a package") + require(planner.plan_details(root, set()) == [], "empty change set selected a package") + + +def main(): + require(not sys.flags.optimize, "assertions must stay enabled") + sources = json.loads(Path(__file__).with_name("SOURCES.json").read_bytes()) + require(sources["base_commit"] == INSPECTED, "historical checkout base changed") + runner = load_module(ROOT / "scripts/research_package.py") + env = runner.git_source_env() + with tempfile.TemporaryDirectory(prefix="historical-selected-replay-") as temporary: + snapshot = Path(temporary) / "snapshot" + checkout_snapshot(snapshot, sources, runner, env) + check_snapshot(snapshot, env) print("PASS_HISTORICAL_SELECTED_REPLAY_GAP") print("selected_checker_live=" + SELECTED_LIVE) print("rejections=19 distinct_paths=7 plan_packages=9") diff --git a/research/p104-serial-temporal-support-bound/INPUTS.json b/research/p104-serial-temporal-support-bound/INPUTS.json new file mode 100644 index 0000000000..760311d06a --- /dev/null +++ b/research/p104-serial-temporal-support-bound/INPUTS.json @@ -0,0 +1,38 @@ +{ + "checks/charged_charts.py": { + "sha256": "6745163b953006ae1ee2627a8a375cb0711748a6c2b89eead7abb71f887ed280", + "source": "https://raw.githubusercontent.com/ToikY/integer-mult-bounds/16ea35caeeca1a166113ad21c76127f04889f6f5/research/p104-owned-move-transport-bound/checks/charged_charts.py" + }, + "checks/donor_intervals.py": { + "sha256": "307af640b97bcc31a13a4b139b418038bbce137686fd6ffed93e8865e44c65ce", + "source": "https://raw.githubusercontent.com/ToikY/integer-mult-bounds/16ea35caeeca1a166113ad21c76127f04889f6f5/research/p104-owned-move-transport-bound/checks/donor_intervals.py" + }, + "checks/owned.py": { + "sha256": "53da0a7b551b34f3baf633083a4362570ebe694a694e2d0b6226d01c08a6ab3b", + "source": "https://raw.githubusercontent.com/ToikY/integer-mult-bounds/16ea35caeeca1a166113ad21c76127f04889f6f5/research/p104-owned-move-transport-bound/checks/owned.py" + }, + "checks/side_rows.py": { + "sha256": "4ee7c51298e53d54e33b9ab4abc68d489078f0cf5032f52248f773df3f4294e9", + "source": "https://raw.githubusercontent.com/ToikY/integer-mult-bounds/16ea35caeeca1a166113ad21c76127f04889f6f5/research/p104-owned-move-transport-bound/checks/side_rows.py" + }, + "inputs/PEER-NOTICE.txt": { + "sha256": "fb25cd50d8e99fd749e4aa567a1a453b353d90bf74e2b20bd8395aae62d18100", + "source": "https://raw.githubusercontent.com/ToikY/integer-mult-bounds/16ea35caeeca1a166113ad21c76127f04889f6f5/research/p104-owned-move-transport-bound/inputs/PEER-NOTICE.txt" + }, + "inputs/caller/CALLER.json": { + "sha256": "255d89f38cd45e38e5770f559bc43dc217e989032359768cdc7e8cdfd64b47bc", + "source": "https://raw.githubusercontent.com/ToikY/integer-mult-bounds/16ea35caeeca1a166113ad21c76127f04889f6f5/research/p104-owned-move-transport-bound/inputs/caller/CALLER.json" + }, + "inputs/caller/interval_gate.py": { + "sha256": "60a743d13f668ef86db4b8215b4d5d04430a671ba6f1fe06d9c1c4c3dfe86da5", + "source": "https://raw.githubusercontent.com/ToikY/integer-mult-bounds/16ea35caeeca1a166113ad21c76127f04889f6f5/research/p104-owned-move-transport-bound/inputs/caller/interval_gate.py" + }, + "inputs/peer/research/p104-rank8-exit-funded-split/RESULT.json": { + "sha256": "59080d75e7281b1a8c1353930917fd15869ad747ff4200948898f78f11c14089", + "source": "https://raw.githubusercontent.com/ToikY/integer-mult-bounds/16ea35caeeca1a166113ad21c76127f04889f6f5/research/p104-owned-move-transport-bound/inputs/peer/research/p104-rank8-exit-funded-split/RESULT.json" + }, + "inputs/peer/research/p104-rank8-exit-funded-split/WORD.json.gz": { + "sha256": "c1caec11ca3ee264ef03018dd91037eac10c3e28950c4c525ee1b4bf5ee210e2", + "source": "https://raw.githubusercontent.com/ToikY/integer-mult-bounds/16ea35caeeca1a166113ad21c76127f04889f6f5/research/p104-owned-move-transport-bound/inputs/peer/research/p104-rank8-exit-funded-split/WORD.json.gz" + } +} diff --git a/research/p104-serial-temporal-support-bound/PROOF.md b/research/p104-serial-temporal-support-bound/PROOF.md new file mode 100644 index 0000000000..0908aa266e --- /dev/null +++ b/research/p104-serial-temporal-support-bound/PROOF.md @@ -0,0 +1,21 @@ +# Timed input support for serial MOVE fusion + +**NO VERIFIED GAIN.** Work on the exact #7161 native word and signed #7113 caller at \(C=0.0040075385047236\). The scope is disjoint contiguous same-owner blocks of rank-one ascents. Each selected block is replaced by one equal-volume child from the first source span to the last target span, with rank equal to block length. Retain the exact original normalized read increments in their old charts at their literal clocks, and retain the clocks and coframe endpoints of every other paid MOVE. Grant arbitrary linear coframed operations, free caching, and free restoration. The obstruction can apply even if every scalar contact is recomputed by a different owner. + +## Temporal support + +Index an independent input by its arbitrary complete field. For each span store the set of input fields on which a value in that span may depend. Seed the sets with the literal initial charts, retain all labels with equal span as aliases, and persist all learned dependencies indefinitely. Scalar ADD, COPY, SCALE, zero initialization and erasure cannot introduce a dependence from outside the span's current set. A MOVE with fixed source and target takes a linear map of a value in its source span, so at that clock union the source set into the target set. Grant any independent coordinate in the source even when the actual carrier has no copy of it. This is an induction on the old paid clocks. Monomial address and phase differences within an equal span are also granted free. + +Fix an original intermediate read between adjacent ascents \(a,b\) of its owner. A block crossing this gap consumes both \(a,b\). Any disjoint chosen block consumes neither. Remove the old paid edges \(a,b\); keep every other old paid edge, even when the actual fusion would have deleted it. Form all hypothetical same-owner fused arcs. Omit an occurrence if it contains exactly one of \(a,b\). Retain every other occurrence at all times, even when its actual move would be scheduled later, its original blocks overlap, or only one of several alternatives can run. Identical endpoint arcs remain if at least one occurrence remains. All possible legal new arcs are covered by this overgrant. They strictly ascend the span lattice. Close the dependency sets under the timeless arcs at initialization and after every old paid clock. A needed independent input absent immediately before the original read is impossible to supply in that chart under any fusion layout crossing the gap. The exact original read contribution is a nonzero rational multiple of its original normalized source row. Its support follows from the exact normalized replay. This proof is about preserving a live read contribution. Terminal cancellation, changing the prescribed read chart or clock, moving another paid clock, or replacing the native external input contract changes the question. + +## Exact scope, controls and price + +At role 738, cut 40529 in span 619, both the actual scalar replay and the paid calendar are authenticated. The broader temporal check misses 23 of the required input coordinates, including input 0, even with all permitted other arcs. Restoring the original paid MOVE supplies the required support as a predecessor control. The separate single-delivery pilot exhausts three alternative prior moves ending in that span. All miss coordinate 0 even with all their source-coframe rows, free scalar encoding and free cache. The original MOVE passes exact rational membership. + +There are 1,708 maximal rank-one ascent runs and 3,925 eligible contiguous blocks. The replay identifies 1,784 adjacent gaps with an interior literal read. It tests the first read of each queried gap. The 1,024-read cap is reached before the 600-second cap. It proves 353 gap obstructions and excludes 1,105 blocks. The other 671 tested read gaps admit optimistic coordinate support. This is a necessary condition only. The remaining 760 unvisited read gaps and all other unexcluded possibilities stay in the upper bound. There are 2,820 blocks without an exclusion by this test. The first pending gap is role 85, cut 40874, between old MOVEs 40873 and 45398. An independent single-coordinate reachability search checks witnesses for the first eight cases, and a separate exact price reconstruction checks the cap and segmentation. + +For a run split by certified barriers, every permitted block lies inside one remaining segment. For \(p=1-C\) in \((0,1)\), merging a segment of length \(L\) into one rank-\(L\) child has the largest possible credit \(L-L^p\), by subadditivity of \(x^p\). Grant this even if its contacts have no solution. Multiply the resulting credits by all 17 complex invocations and add them to the complete original target-minus-paid moment. The original gap is at least 140.51726295091428931243136. The new rigorous optimistic upper is approximately +70.73831217726558, down from +127.33653408096442. Exact endpoints are in the receipt. The positive upper leaves the wider family open. No particular block has passed all-width signed equality, costs or restoration. + +## Attribution + +Clear1nsight #7161 supplies the native word. Rohan Arun #7113 supplies the signed caller and interval source. #7165 supplies the exact invoice and normalized replay helpers, and #7166 the earlier rectangular direct-sum proof. [#7003](https://github.com/CrocSwap/integer-mult-bounds/pull/7003) uses literal contact slides, and [#5376](https://github.com/CrocSwap/integer-mult-bounds/pull/5376) treats fixed-contact two-hop retiming on an earlier word. Clear1nsight's same-head [carrier and final-basis investigations](https://github.com/CrocSwap/integer-mult-bounds/discussions/1166#discussioncomment-19537073) are closely related. Their public summary does not enumerate event pairs. Here the explicit proof overgrants timed chart-level dependencies from every disjoint serial fusion while requiring the original live read. Codex and subagents materially assisted the proof, implementation and independent replay. New work is Apache-2.0. diff --git a/research/p104-serial-temporal-support-bound/README.md b/research/p104-serial-temporal-support-bound/README.md new file mode 100644 index 0000000000..0f60783c1a --- /dev/null +++ b/research/p104-serial-temporal-support-bound/README.md @@ -0,0 +1,21 @@ +# Timed input support for serial MOVE fusion + +**NO VERIFIED GAIN.** The fixed-clock model for #7161 grants arbitrary coframed scalar work, unlimited cache, the old paid calendar, and optimistic availability of other serial fusions. Missing original input coordinates exclude every candidate spanning a certified read gap. At κ = 0.0040075385047236, the 1,024-gap cap removes 1,105 of 3,925 blocks. The remaining optimistic price is positive. [Proof](PROOF.md) · [Directed receipt](RECEIPTS.json) + +## Reproduction + +Use CPython 3.12 with assertions. From a clean checkout: + +~~~sh +python3.12 -B scripts/research_package.py --package research/p104-serial-temporal-support-bound +~~~ + +Regenerate the full temporal receipt with `python3.12 -I -B checks/temporal_barrier.py source7165` from the package directory. The registered check authenticates the path-keyed [bundled source inventory](INPUTS.json) and verifies all three exact stdout digests. + +## Open next questions + +Resume at role 85, read 40874. Preserve all pending blocks in the directed price upper until an exact exclusion applies. Any surviving layout must preserve the signed arbitrary-input read, ownership and restoration with the actual costs. Moving another paid clock and terminal-only repair are separate mechanisms. + +## Credit + +Clear1nsight #7161 supplied the native word. Rohan Arun #7113 supplied the signed caller and directed arithmetic. #7165 supplied the normalized replay and paid extractor. See [proof attribution](PROOF.md#attribution) for adjacent same-head work and earlier retiming. Codex and subagents materially assisted. New work is Apache-2.0. diff --git a/research/p104-serial-temporal-support-bound/RECEIPTS.json b/research/p104-serial-temporal-support-bound/RECEIPTS.json new file mode 100644 index 0000000000..cccfaf23c2 --- /dev/null +++ b/research/p104-serial-temporal-support-bound/RECEIPTS.json @@ -0,0 +1,41 @@ +{ + "stdout_sha256": { + "paid_delivery": "b9ff86e4b2e67f43256b97593c6374b2c4674895a2981aa54e9b41400e36b869", + "temporal_barriers": "2bdb08b0f9eff328eb4a9f223ea15c6c2bf09483ed11c7bf8ec852addfa83296", + "temporal_cap_one": "bca9a2148fe7689cab879392a86140df560daa300b71718a0358a1e5d750902a" + }, + "temporal_summary": { + "blocks_excluded": 1105, + "blocks_not_excluded": 2820, + "blocks_total": 3925, + "first_pending": [ + 114, + 2, + 85, + 40873, + 45398, + 40874, + 1089 + ], + "initial_moment": [ + "12733653408096441628380708267755577428101003226914941495123925087605198257979585433/100000000000000000000000000000000000000000000000000000000000000000000000000000000", + "795853338006027601773794266734723589256312701682183843445245317975324891126170341/6250000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "read_barriers_total": 1784, + "read_barriers_unvisited": 760, + "status": "CAP_PENDING", + "target": "10018846261809/2500000000000000", + "upper_moment": [ + "1768457804431639394906228546588430025225861278784860596980212990465902914633925103/25000000000000000000000000000000000000000000000000000000000000000000000000000000", + "1414766243545311515924982837270744020180689023027888477584170392372722331714954079/20000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "upper_run_histogram": { + "1": 855, + "2": 645, + "3": 408, + "4": 146, + "5": 6, + "6": 1 + } + } +} diff --git a/research/p104-serial-temporal-support-bound/SOURCES.json b/research/p104-serial-temporal-support-bound/SOURCES.json new file mode 100644 index 0000000000..5335fa97d9 --- /dev/null +++ b/research/p104-serial-temporal-support-bound/SOURCES.json @@ -0,0 +1,18 @@ +{ + "schema_version": 1, + "base_commit": "e54523517d0f03e58352e647c403a5af3e525a57", + "files": [ + { + "path": "certificates/selected-result.json", + "usage": "provenance", + "git_blob": "75d77b328ea02ded535e7f23aee5b1e55d0bb1a8", + "sha256": "154c3d30455d778fd3343b6b4851f0fa4665f0f7625b0adb3675e2bafbbf6bf1" + }, + { + "path": "docs/research/agent-task-catalog.json", + "usage": "provenance", + "git_blob": "3404fbdd5e7529a0674eef26114b5071e4586cec", + "sha256": "ead6cdc9d0af6d58e8a49744d8ec8c7c15e13d2ba93c276c434bcf9b51b93a81" + } + ] +} diff --git a/research/p104-serial-temporal-support-bound/TASK.json b/research/p104-serial-temporal-support-bound/TASK.json new file mode 100644 index 0000000000..14698abcb8 --- /dev/null +++ b/research/p104-serial-temporal-support-bound/TASK.json @@ -0,0 +1,94 @@ +{ + "actual_scope": "Timed input-coordinate support for disjoint contiguous same-owner rank-one MOVE blocks on exact #7161 and signed #7113.", + "ai_assistance": "OpenAI Codex and subagents materially assisted proof, implementation and independent verification.", + "author": "ToikY", + "base_commit": "e54523517d0f03e58352e647c403a5af3e525a57", + "bottleneck_link": "The unchanged paid target bill can improve only if the original live reads remain realizable after removing serial MOVE debits.", + "budget_minutes": 60, + "evidence": "One predecessor and three single-delivery exclusions. A 1,024-gap bounded screen certifies 353 missing-coordinate barriers and removes 1,105 blocks. Upper remains positive with unexcluded cases retained.", + "open_questions": [ + { + "blocked_by": "760 first reads remain unvisited and the scalar layout still needs exact phase, ownership and restore.", + "first_step": "Resume from role 85, first read 40874, and preserve every unvisited read and unexcluded block in the directed upper.", + "question": "Can the remaining positive price be realized by a true fixed-clock serial layout?", + "why_it_matters": "Only an exact signed and fully charged layout can turn the remaining optimistic price into a recurrence improvement." + } + ], + "original_card": { + "acceptance_gate": "Check live overlap and exact model/source binding first. Distinguish a chronological construction from a pooled optimum. State the applicable fixed-inventory ceiling and remaining headroom; changed words or interfaces require a new fully charged model. Do not launch a residual search without an explicit scope and time cap.", + "allowed_variations": [ + "One exact source head, helper/cut region or quantified proposition and changed hypothesis; check live handoffs first. Different seeds are not different scopes." + ], + "bottleneck_link": "Judge the actual current supplier contract and complete signed target/paid bill; frozen-profile ceilings require an applicability proof.", + "existing_checks": [ + { + "evidence": "research/staged-fourth-mixture-ceiling/README.md", + "remaining": "Independent scope/source check; any residual optimization is explicitly bounded and optional.", + "scope": "PR #4091: pooled optimum at one-third staging for pinned fixed words; not a chronological fill.", + "selected_record_sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129", + "source_commit": "a29bdd8f56cd18b805917775cdec09ff935eddc4", + "status": "author-checked" + }, + { + "evidence": "research/staged544-mixed-fourth-entry/README.md", + "remaining": "Complete admission remains separate; old residual-bin instructions must not be copied blindly.", + "scope": "PR #4088: later 1090-call literal fill improves the earlier 1080-call witness.", + "selected_record_sha256": "bb2eaa58647b353f88d0aec2eafb9d30df1be53589231b23e12ceef3e4bad129", + "source_commit": "72d7efc181edb21806a878f174847c96dd410ab0", + "status": "author-checked" + }, + { + "evidence": "docs/research/pr-intake-evidence/pr5599-completion/PROOF-REVIEW.md", + "remaining": "The next experiment must identify uncovered source-specific work. Successor archive intake does not transfer this admission.", + "scope": "Selected PR5599: complete helper-subspace construction and independent caller replay; five framework assumptions remain.", + "selected_record_sha256": "2a0220e866417774606e0f991e41b9c1d26b1f43b97857238cf478dbc7d330b5", + "source_commit": "09dd0965711ca7eeb169057a420abab1c9052137", + "status": "reviewed" + } + ], + "first_experiment": "Derive or authenticate a ceiling for the exact current paid/target inventory before searching. Old #1240/#4091 caps do not constrain #5599 automatically. Require an unclaimed domain, time cap and useful complete margin. Stop at the applicable ceiling; change the word or boundary instead of adding seeds.", + "first_step": { + "command": [ + "python3", + "-B", + "scripts/research_selected_baseline.py" + ], + "expected": "PASS_RESEARCH_BASELINE_BINDINGS_ONLY", + "inspect": "Read revision 8, the selected review and live exact-source handoffs. Then follow this card's bounded first_experiment.", + "scope": "Source-bound orientation only, not a supplier replay or theorem proof." + }, + "id": "selected-packing", + "methods": [ + "Construct and independently check one source-bound instance of the stated first experiment.", + "Seek an exact counterexample or target-specific complete-budget obstruction to that same proposed change." + ], + "overlap_terms": [ + "T16", + "owner exchange", + "packing", + "4091", + "4088", + "staged-fourth-mixture-ceiling", + "staged544-mixed-fourth-entry" + ], + "question": "Is there meaningful uncovered packing headroom for an exact current word and boundary contract?", + "scope_change_triggers": [ + "Changing source head, helper/cut domain, operation alphabet or caller boundary without recording the new scope.", + "Treating an archived proposal or local numerical pass as complete supplier admission." + ], + "starting_points": [ + "docs/research/current-priorities.md", + "docs/research/research-family-status.md", + "certificates/selected-result.json", + "docs/research/pr-intake-evidence/pr5599-completion/PROOF-REVIEW.md", + "docs/research/recursive-invoice-preflight.md" + ] + }, + "outcome": "negative-result", + "priority_revision": 8, + "schema_version": 1, + "scope_change_reason": "Ordinary coframe algebra is overgranted and any eligible disjoint fused arc is available at any time.", + "scope_status": "changed", + "stop_rule": "At most 1,024 exact first reads, 600 seconds, or a negative optimistic directed signed moment.", + "task_id": "selected-packing" +} diff --git a/research/p104-serial-temporal-support-bound/VERIFY.json b/research/p104-serial-temporal-support-bound/VERIFY.json new file mode 100644 index 0000000000..a1a6247db7 --- /dev/null +++ b/research/p104-serial-temporal-support-bound/VERIFY.json @@ -0,0 +1,31 @@ +{ + "commands": [ + { + "argv": [ + "{python}", + "-I", + "-B", + "{package}/verify.py" + ], + "checks": "Authenticate exact sources and regenerate the single-delivery, temporal cap and directed price receipts.", + "timeout_seconds": 180 + } + ], + "inputs": [ + "research/p104-serial-temporal-support-bound/INPUTS.json", + "research/p104-serial-temporal-support-bound/RECEIPTS.json", + "research/p104-serial-temporal-support-bound/source7165/checks/charged_charts.py", + "research/p104-serial-temporal-support-bound/source7165/checks/donor_intervals.py", + "research/p104-serial-temporal-support-bound/source7165/checks/owned.py", + "research/p104-serial-temporal-support-bound/source7165/checks/side_rows.py", + "research/p104-serial-temporal-support-bound/source7165/inputs/PEER-NOTICE.txt", + "research/p104-serial-temporal-support-bound/source7165/inputs/caller/CALLER.json", + "research/p104-serial-temporal-support-bound/source7165/inputs/caller/interval_gate.py", + "research/p104-serial-temporal-support-bound/source7165/inputs/peer/research/p104-rank8-exit-funded-split/RESULT.json", + "research/p104-serial-temporal-support-bound/source7165/inputs/peer/research/p104-rank8-exit-funded-split/WORD.json.gz" + ], + "python": "3.12", + "requirements": [], + "schema_version": 1, + "status": "ready" +} diff --git a/research/p104-serial-temporal-support-bound/checks/paid_delivery.py b/research/p104-serial-temporal-support-bound/checks/paid_delivery.py new file mode 100644 index 0000000000..2ac2cf0b62 --- /dev/null +++ b/research/p104-serial-temporal-support-bound/checks/paid_delivery.py @@ -0,0 +1,108 @@ +"""Necessary source span for one already-paid delivery to exact #7161 read 40529.""" +import argparse +from hashlib import sha256 +import importlib.util +import json +from pathlib import Path +from time import monotonic + +HEAD = '16ea35caeeca1a166113ad21c76127f04889f6f5' +PINS = { + 'checks/charged_charts.py': '6745163b953006ae1ee2627a8a375cb0711748a6c2b89eead7abb71f887ed280', + 'checks/owned.py': '53da0a7b551b34f3baf633083a4362570ebe694a694e2d0b6226d01c08a6ab3b', + 'checks/side_rows.py': '4ee7c51298e53d54e33b9ab4abc68d489078f0cf5032f52248f773df3f4294e9', + 'checks/donor_intervals.py': '307af640b97bcc31a13a4b139b418038bbce137686fd6ffed93e8865e44c65ce', +} +ROLE, OLD_MOVE, READ, TARGET_CHART = 738, 40528, 40529, 619 + + +def load(root, name): + path = root/name + assert sha256(path.read_bytes()).hexdigest() == PINS[name], name + spec = importlib.util.spec_from_file_location('delivery_' + path.stem, path) + mod = importlib.util.module_from_spec(spec) + spec.loader.exec_module(mod) + return mod + + +def run(package, cap, seconds): + started = monotonic() + + def deadline(): + if monotonic() - started >= seconds: + raise TimeoutError('paid delivery prepass') + + chart, owned, rank, donor = [load(package, name) for name in PINS] + chart.controls(rank) + donor.controls() + root = package/'inputs' + word, result, caller, gate = chart.read_sources( + root/'peer', root/'caller/CALLER.json', root/'caller/interval_gate.py', owned, 1) + assert word['program'][OLD_MOVE] == ['MOVE', ROLE, 252, TARGET_CHART, False] + assert word['program'][READ] == ['ADD', 112, ROLE, '-1/2', TARGET_CHART] + try: + spaces, moves, _, _ = owned.scan_word(word, deadline, 80000) + signed, invoice = owned.full_invoice(word, caller, result, moves) + candidates = [m for m in moves if m['event'] < READ + and spaces[m['target']] == spaces[TARGET_CHART]] + assert OLD_MOVE in [m['event'] for m in candidates] + assert any(m['role'] == 1354 and m['event'] == 38236 for m in candidates) + queries = {m['event']: spaces[m['source']] for m in candidates} + queries[READ] = spaces[TARGET_CHART] + live, snapshots = {}, {} + + def visit(cut, role, label, row): + if label is None or not row: + live.pop(role, None) + else: + live[role] = (label, row.copy()) + if cut in queries and cut != 0: + snapshots[cut] = {r: item for r,item in live.items() if spaces[item[0]] == queries[cut]} + + donor.replay(word, READ+1, visit, deadline) + assert snapshots.keys() == queries.keys() + except TimeoutError: + return dict(status='PREPASS_PENDING', first_pending='exact tape scan', head=owned.HEAD, + cap=cap, seconds=seconds, pins=owned.PINS | PINS) + target = snapshots[READ][ROLE][1] + assert target + cases, pending = [], None + for move in candidates: + event = move['event'] + if len(cases) >= cap or monotonic()-started >= seconds: + pending = dict(event=event, role=move['role']) + break + rows = [r for _,r in snapshots[event].values()] + basis = {} + for row in rows: + rank.insert(basis,rank.integral(row)) + before = len(basis) + needed = rank.insert(basis,rank.integral(target)) + missing = sorted(target.keys() - set().union(*(r.keys() for r in rows))) + assert not missing or needed + cases.append(dict(event=event, owner=move['role'], source=move['source'], target=move['target'], + pre_existing_paid_rank=move['rank'], rank_before=before, rank_after=len(basis), + missing_coordinates=missing, source_pool_size=len(rows), support=not needed, + predecessor_control=event == OLD_MOVE)) + old = next((c for c in cases if c['predecessor_control']), None) + if old is not None: + assert old['support'], old + possible = [c['event'] for c in cases if c['support'] and not c['predecessor_control']] + return dict(status='CAP_PENDING' if pending else 'EXHAUSTED', first_pending=pending, + head=owned.HEAD, dependency_head=HEAD, pins=owned.PINS | PINS, + cap=cap, seconds=seconds, seed=None, literal_read=READ, original_owner=ROLE, + target=str(owned.TARGET), exact_target_row={i:str(v) for i,v in target.items()}, + baseline_moment=gate.show(gate.moment(signed,owned.TARGET)), invoice=invoice, + cases=cases, alternatives_supported=possible, total_cases=len(candidates), + cases_unresolved=len(candidates)-len(cases), + favorable_model='One pre-existing paid MOVE ending in the exact read span. All baseline coframed source rows, arbitrary scalar mixing, caching, routing and restore free.') + + +if __name__ == '__main__': + p=argparse.ArgumentParser(description=__doc__) + p.add_argument('package',type=Path) + p.add_argument('--cap',type=int,default=1024) + p.add_argument('--seconds',type=int,default=720) + args=p.parse_args() + assert __debug__ and 0 < args.cap <= 1024 and 0 < args.seconds <= 720 + print(json.dumps(run(**vars(args)),indent=2,sort_keys=True)) diff --git a/research/p104-serial-temporal-support-bound/checks/temporal_barrier.py b/research/p104-serial-temporal-support-bound/checks/temporal_barrier.py new file mode 100644 index 0000000000..30b68564ef --- /dev/null +++ b/research/p104-serial-temporal-support-bound/checks/temporal_barrier.py @@ -0,0 +1,249 @@ +"""Temporal input-support obstruction for literal serial MOVE contacts.""" +import argparse +from collections import Counter, defaultdict +from hashlib import sha256 +import importlib.util +import json +from pathlib import Path +from time import monotonic + +DELIVERY_SHA = '184099c694493caa31d6c350be6cfd32520fc9bcef6d8fe4960d248d1c2cd67f' +PILOT = (738, 40528, 40538, 40529) + + +def dependency(path): + assert sha256(path.read_bytes()).hexdigest() == DELIVERY_SHA + spec = importlib.util.spec_from_file_location('exact_delivery_source', path) + result = importlib.util.module_from_spec(spec) + spec.loader.exec_module(result) + return result + + +def ids(mask): + while mask: + low = mask & -mask + yield low.bit_length()-1 + mask ^= low + + +def runs_and_reads(word, moves, class_id): + paths, reads = defaultdict(list), defaultdict(list) + for move in moves: + paths[move['role']].append(move) + for i, (op, role, *args) in enumerate(word['program']): + if op in ('ADD','COPY'): + reads[args[0]].append((i,args[2])) + runs, barriers, edges = [], [], [] + contains = defaultdict(set) + for owner, path in sorted(paths.items()): + run = [] + + def finish(): + if not run: + return + group = len(runs) + runs.append(len(run)) + for left in range(len(run)): + for right in range(left+1,len(run)): + eid = len(edges) + edges.append((class_id[run[left]['source']], class_id[run[right]['target']])) + for m in run[left:right+1]: + contains[m['event']].add(eid) + for j,(left,right) in enumerate(zip(run,run[1:]),1): + first = next(((i,f) for i,f in reads[owner] if left['event'] < i < right['event']),None) + if first is not None: + read,label = first + assert label == left['target'] == right['source'] + barriers.append((group,j,owner,left['event'],right['event'],read,label)) + for m in path: + ascent = m['rank'] == 1 and m['source_dim']+1 == m['target_dim'] + if run and (not ascent or m['source'] != run[-1]['target']): + finish() + run = [] + if ascent: + run.append(m) + finish() + return runs, barriers, edges, contains + + +def query_rows(word, barriers, donor, check_time): + wanted = {b[5]: b[2] for b in barriers} + assert len(wanted) == len(barriers) + live, masks = {}, {} + + def visit(cut, owner, chart, row): + live[owner] = row.copy() + if cut in wanted: + masks[cut] = sum(1 << i for i in live[wanted[cut]]) + + donor.replay(word, max(wanted), visit, check_time) + assert masks.keys() == wanted.keys() and all(masks.values()) + return masks + + +class Reachability: + def __init__(self, class_ranks, class_id, word, moves, edges, contains): + self.class_ranks = class_ranks + self.order = sorted(range(len(class_ranks)),key=class_ranks.__getitem__,reverse=True) + self.fixed = [(m['event'],class_id[m['source']],class_id[m['target']]) for m in moves] + self.edges = edges + self.contains = contains + self.counts = Counter(edges) + self.initial = [0]*len(class_ranks) + for i,label in enumerate(word['initial']): + self.initial[class_id[label]] |= 1 << i + + def graph(self, left, right): + omitted = Counter(self.edges[i] for i in self.contains[left] ^ self.contains[right]) + outgoing = [[] for _ in self.class_ranks] + for (source,target), count in self.counts.items(): + if count > omitted[source,target]: + assert self.class_ranks[source] < self.class_ranks[target] + outgoing[source].append(target) + return outgoing + + def reachable(self, left, right, cut, target, restore=False): + outgoing = self.graph(left,right) + descend = [1 << i for i in range(len(outgoing))] + for i in self.order: + for child in outgoing[i]: + descend[i] |= descend[child] + closure = [tuple(ids(mask)) for mask in descend] + available = [0]*len(outgoing) + + def add(i,mask): + new = mask & ~available[i] + if new: + for j in closure[i]: + available[j] |= new + for i,mask in enumerate(self.initial): + add(i,mask) + for event,source,dest in self.fixed: + if event >= cut: + break + if restore or event not in (left,right): + add(dest,available[source]) + return available[target] + + def single_coordinate(self,left,right,cut,target,coordinate): + outgoing = self.graph(left,right) + active = set() + + def visit(start): + stack = [start] + while stack: + cur = stack.pop() + if cur not in active: + active.add(cur) + stack.extend(outgoing[cur]) + + for i,mask in enumerate(self.initial): + if mask & (1 << coordinate): + visit(i) + for event,source,dest in self.fixed: + if event >= cut: + break + if source in active and event not in (left,right): + visit(dest) + return target in active + + +def run(package, cap, seconds): + started = monotonic() + + def check_time(): + if monotonic()-started >= seconds: + raise TimeoutError('temporal support budget') + + earlier = dependency(Path(__file__).with_name('paid_delivery.py')) + chart, owned, rank, donor = [earlier.load(package,n) for n in earlier.PINS] + root = package/'inputs' + word, result, caller, gate = chart.read_sources( + root/'peer',root/'caller/CALLER.json',root/'caller/interval_gate.py',owned,1) + try: + spaces,moves,_,_ = owned.scan_word(word,check_time,80000) + signed,invoice = owned.full_invoice(word,caller,result,moves) + reps, class_id, class_ranks = {}, [], [] + for space in spaces: + if space not in reps: + reps[space] = len(class_ranks) + class_ranks.append(owned.dimension(space)) + class_id.append(reps[space]) + for m in moves: + m.update(source_dim=class_ranks[class_id[m['source']]], + target_dim=class_ranks[class_id[m['target']]]) + runs,barriers,edges,contains = runs_and_reads(word,moves,class_id) + assert len(edges) == 3925 + assert Counter(runs) == {1:658,2:190,3:511,4:335,5:12,9:2} + query = query_rows(word,barriers,donor,check_time) + engine = Reachability(class_ranks,class_id,word,moves,edges,contains) + except TimeoutError: + return dict(status='PREPASS_PENDING',first_pending='exact tape scan',head=owned.HEAD, + cap=cap,seconds=seconds,seed=None) + cuts = [{0,n} for n in runs] + before = gate.moment(signed,owned.TARGET) + powers = [gate.exact(0)] + [gate.power(i,owned.TARGET) for i in range(1,max(runs)+1)] + + def margin(): + hist = Counter(right-left for part in cuts for left,right in zip(sorted(part),sorted(part)[1:])) + ideal = gate.sub(gate.exact(sum(runs)),gate.moment(hist,owned.TARGET)) + return gate.add(before,gate.smul(ideal,owned.STAGES)), hist + + def priority(barrier): + group,j,*_ = barrier + low = max(k for k in cuts[group] if k <= j) + high = min(k for k in cuts[group] if k >= j) + delta = powers[j-low][0]+powers[high-j][0]-powers[high-low][1] + return -delta,barrier[5] + + first = next(b for b in barriers if b[2:6] == PILOT) + _,_,owner,left,right,read,label = first + target = class_id[label] + original = engine.reachable(left,right,read,target,restore=True) + assert query[read] & ~original == 0 + remaining = set(barriers) + checked = [] + starting,hist = margin() + current, status = starting, 'EXHAUSTED' + while remaining: + if len(checked) >= cap or monotonic()-started >= seconds: + status = 'CAP_PENDING' + break + candidate = first if not checked else min(remaining,key=priority) + remaining.remove(candidate) + group,j,owner,left,right,read,label = candidate + target = class_id[label] + missing = query[read] & ~engine.reachable(left,right,read,target) + witness = (missing & -missing).bit_length()-1 if missing else None + if missing: + cuts[group].add(j) + if len(checked) < 8: + assert not engine.single_coordinate(left,right,read,target,witness) + checked.append(dict(role=owner,read=read,left=left,right=right,chart=label, + absent=missing.bit_count(),first_absent=witness)) + if len(checked) == 1: + assert owner == 738 and witness == 0 and missing.bit_count() == 23 + current,hist = margin() + if current[1] < 0: + status = 'PRICE_CLOSED' + break + pending = min(remaining,key=priority) if remaining else None + retained_blocks = sum(n*(n-1)//2*count for n,count in hist.items()) + return dict(status=status,head=owned.HEAD,target=str(owned.TARGET),seed=None, + cap=cap,seconds=seconds,pins=owned.PINS | earlier.PINS | {'paid_delivery.py':DELIVERY_SHA}, + invoice=invoice,read_barriers_total=len(barriers),read_barriers_unvisited=len(remaining), + blocks_total=len(edges),blocks_not_excluded=retained_blocks,blocks_excluded=len(edges)-retained_blocks, + tested=checked,first_pending=pending,initial_moment=gate.show(starting), + upper_moment=gate.show(current),upper_run_histogram=hist, + predecessor_control='Original MOVE at the first pilot restores all needed coordinate support.', + scope='Other old MOVE clocks retained as a free overgrant. Every eligible fused arc is available timelessly, except those using exactly one of the mandatory adjacent pair. Arbitrary coframed operations and free persistent caches.') + + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('package',type=Path) + parser.add_argument('--cap',type=int,default=1024) + parser.add_argument('--seconds',type=int,default=600) + args = parser.parse_args() + assert __debug__ and 0 < args.cap <= 1024 and 0 < args.seconds <= 600 + print(json.dumps(run(**vars(args)),indent=2,sort_keys=True)) diff --git a/research/p104-serial-temporal-support-bound/source7165/checks/charged_charts.py b/research/p104-serial-temporal-support-bound/source7165/checks/charged_charts.py new file mode 100644 index 0000000000..0dadeca867 --- /dev/null +++ b/research/p104-serial-temporal-support-bound/source7165/checks/charged_charts.py @@ -0,0 +1,267 @@ +"""One- or two-chart charged span recovery on the exact #7161 contact tape.""" + +import argparse +from collections import Counter, defaultdict +from fractions import Fraction +import gzip +from hashlib import sha256 +from importlib.util import module_from_spec, spec_from_file_location +from itertools import combinations +import json +from pathlib import Path +from time import monotonic + +DEPENDENCIES = { + 'round9/evidence/complex/side_rows.py': '4ee7c51298e53d54e33b9ab4abc68d489078f0cf5032f52248f773df3f4294e9', + 'round9/evidence/complex/donors/donor_intervals.py': '307af640b97bcc31a13a4b139b418038bbce137686fd6ffed93e8865e44c65ce', + 'round8/evidence/complex/owned.py': '53da0a7b551b34f3baf633083a4362570ebe694a694e2d0b6226d01c08a6ab3b', +} + + +class ScreenCap(Exception): + pass + + +def import_pinned(name, path, expected): + assert sha256(path.read_bytes()).hexdigest() == expected, path + spec = spec_from_file_location(name, path) + module = module_from_spec(spec) + spec.loader.exec_module(module) + return module + + +def in_span(elimination, target, vectors): + basis = {} + for vector in vectors: + elimination.insert(basis, vector) + return elimination.insert(basis, target) == 0 + + +def controls(elimination): + x, y, z = ({0: 1}, {1: 1}, {2: 1}) + assert in_span(elimination, {0: 1, 1: 1}, [x, y]) + assert not in_span(elimination, {0: 1, 1: 1}, [x, z]) + assert in_span(elimination, {0: 1, 1: 1}, [{0: -3, 1: -3}, z]) + assert not list(states_over_time([[], [(0,1,1)], [(2,3,2)]])) + assert list(states_over_time([[(0,4,0)], [(0,2,1)], [(2,3,2)]])) == [ + (2, ((0,), (1,), (2,))) + ] + + +def read_sources(peer, caller_path, interval_path, owned, source_count): + package = peer / owned.PACKAGE + name = f'peer/{owned.PACKAGE}/WORD.json.gz' + compressed = owned.pinned(package/'WORD.json.gz', name) + raw = gzip.decompress(compressed) + assert sha256(raw).hexdigest() == owned.PINS[name+'#decompressed'] + result = owned.pinned(package/'RESULT.json', f'peer/{owned.PACKAGE}/RESULT.json') + caller = owned.pinned(caller_path, 'caller-inputs/CALLER.json') + interval = import_pinned(f'chart_price_{source_count}', interval_path, owned.PINS['caller-inputs/interval_gate.py']) + return json.loads(raw), json.loads(result), json.loads(caller), interval + + +def chart_states(word, moves, chart_classes, geometry, elimination, donor, check_time): + # Store states only where one of the legal cheap routes could query them. + windows = {} + for move in moves: + lo, hi = move['window'] + for chart in geometry[move['event']]: + if chart in windows: + l, h = windows[chart] + windows[chart] = min(lo,l), max(hi,h) + else: + windows[chart] = lo, hi + last_cut = max(m['window'][1] for m in moves) + move_events = {m['event']:m['role'] for m in moves} + active = {} + intervals = defaultdict(list) + vectors = [] + sampled = {} + last_seen = 0 + + def flush(role, upper): + lower, chart, row = active[role] + left, right = windows[chart] + lower, upper = max(lower,left), min(upper,right) + if lower <= upper: + intervals[chart].append((lower,upper,role,len(vectors))) + vectors.append(elimination.integral(row)) + + def visit(cut, role, chart, row): + nonlocal last_seen + assert cut >= last_seen, (cut,last_seen) + last_seen = cut + if move_events.get(cut-1) == role: + assert row + sampled[cut-1] = elimination.integral(row) + if role in active: + flush(role,cut-1) + del active[role] + if chart is not None and chart_classes[chart] in windows and row: + active[role] = (cut,chart_classes[chart],row.copy()) + + donor.replay(word,last_cut,visit,check_time) + assert last_seen == last_cut + assert sampled.keys() == move_events.keys() + for role in active: + flush(role,last_cut) + return intervals, vectors, sampled + + +def clipped(records, role, lo, hi): + return [(max(l,lo),min(h,hi),i) for l,h,r,i in records if r != role and l <= hi and lo <= h] + + +def states_over_time(pools): + changes = defaultdict(list) + for chart,records in enumerate(pools): + for lo,hi,r in records: + changes[lo].append((chart, r, True)) + changes[hi+1].append((chart, r, False)) + live = [set() for _ in pools] + seen = set() + for cut in sorted(changes): + for chart,row,added in changes[cut]: + if added: + live[chart].add(row) + else: + live[chart].remove(row) + if not all(live[1:]): + continue + key = tuple(tuple(sorted(rows)) for rows in live) + if key not in seen: + seen.add(key) + yield cut, key + + +def run(peer, caller_path, interval_path, owned_path, side_path, donor_path, group_cap, seconds, source_count): + started = monotonic() + + def check_time(): + if monotonic()-started >= seconds: + raise ScreenCap('time') + + owned = import_pinned('retained_owned_clocks', owned_path, DEPENDENCIES['round8/evidence/complex/owned.py']) + elimination = import_pinned('exact_sparse_row_rank', side_path, DEPENDENCIES['round9/evidence/complex/side_rows.py']) + donor = import_pinned('exact_literal_tape_rows', donor_path, DEPENDENCIES['round9/evidence/complex/donors/donor_intervals.py']) + controls(elimination) + word, result, caller, gate = read_sources(peer, caller_path, interval_path, owned, source_count) + pins = owned.PINS | DEPENDENCIES + try: + spaces, native, moves, _ = owned.scan_word(word, check_time, 80000) + signed, invoice = owned.full_invoice(word, caller, result, native) + baseline = gate.moment(signed, owned.TARGET) + rep = {} + chart_classes = [rep.setdefault(s,i) for i,s in enumerate(spaces)] + geometry = {} + for m in moves: + check_time() + target = chart_classes[m['target']] + distances = {i:owned.distance(s,spaces[target]) for s,i in rep.items()} + geometry[m['event']] = {i:d for i,d in distances.items() if d < m['rank']} + assert geometry[m['event']][target] == 0 + intervals, vectors, sampled = chart_states(word,moves,chart_classes,geometry,elimination,donor,check_time) + except ScreenCap as error: + return dict(status='PREPASS_PENDING', head=owned.HEAD, pins=pins, first_pending=str(error), source_count=source_count) + + routes = [] + local = {} + for m in sorted(moves,key=lambda m:(-m['rank'],m['event'])): + lo,hi = m['window'] + ev = m['event'] + target = chart_classes[m['target']] + possible = geometry[ev] + groups = {chart:clipped(intervals[chart],m['role'],lo,hi) for chart in possible} + local[ev] = groups + positive = sorted(i for i in possible if i != target and groups[i]) + for sources in combinations(positive,source_count): + cost = sum(possible[chart] for chart in sources) + if cost < m['rank']: + routes.append((m,sources,cost)) + routes.sort(key=lambda r:(-r[0]['rank'],r[2],r[0]['event'],r[1])) + checked = Counter() + results = [] + first_pending = None + pending_index = None + best = {m['event']:m['rank'] for m in moves} + + def test(kind, site, sources, cut, rows): + nonlocal first_pending + first_pending = dict(event=site, charts=sources, cut=cut, step=kind) + check_time() + if sum(checked.values()) >= group_cap: + raise ScreenCap('groups') + checked[kind] += 1 + return in_span(elimination, sampled[site], (vectors[r] for chart in rows for r in chart)) + + for index,(move,sources,cost) in enumerate(routes): + event = move['event'] + target = chart_classes[move['target']] + pools = [local[event][chart] for chart in (target,*sources)] + record = dict(event=event, sources=sources, target=target, old_rank=move['rank'], cost=cost, + window=move['window'], exact_cuts_tested=0, witness_cut=None) + try: + union = [tuple(sorted(r for _,_,r in pool)) for pool in pools] + optimistic = test('window_union',event,sources,move['window'][0],union) + record['union_in_span'] = optimistic + if optimistic: + for cut,state in states_over_time(pools): + supported = test('exact_cut',event,sources,cut,state) + record['exact_cuts_tested'] += 1 + if supported: + record['witness_cut'] = cut + best[event] = min(best[event],cost) + break + except ScreenCap as error: + record['pending'] = str(error) + first_pending['reason'] = str(error) + pending_index = index + results.append(record) + break + results.append(record) + if pending_index is None: + first_pending = None + pending = routes[pending_index:] if pending_index is not None else [] + optimistic = best.copy() + for move,_,cost in pending: + event = move['event'] + optimistic[event] = min(optimistic[event],cost) + old = Counter(m['rank'] for m in moves) + + def price(rank_by_site): + histogram = Counter(r for r in rank_by_site.values() if r) + delta = old.copy() + delta.subtract(histogram) + saving = gate.smul(gate.moment(delta,owned.TARGET),owned.STAGES) + rank_sum = sum(rank_by_site.values()) + packed = gate.power(rank_sum,owned.TARGET) if rank_sum else (0,0) + packed_saving = gate.smul(gate.sub(gate.moment(old,owned.TARGET),packed),owned.STAGES) + return dict(ranks=histogram, rank_sum=rank_sum, savings=gate.show(saving), + moment=gate.show(gate.add(baseline,saving)), + additive_pack_savings=gate.show(packed_saving), + additive_pack_moment=gate.show(gate.add(baseline,packed_saving)), + lower_rank_sites={m['event']:rank_by_site[m['event']] for m in moves + if rank_by_site[m['event']] < m['rank']}) + + return dict(status='CAP_PENDING' if pending else 'EXHAUSTED', head=owned.HEAD, pins=pins, + source_count=source_count, target=str(owned.TARGET), invoice=invoice, baseline=gate.show(baseline), + caps=dict(groups=group_cap,seconds=seconds), first_pending=first_pending, + native_sites=len(moves), admissible_integer_cuts=len({c for m in moves for c in range(m['window'][0],m['window'][1]+1)}), + interval_rows=len(vectors), chart_spans_with_intervals=len(intervals), + routes_total=len(routes), routes_tested=len(routes)-len(pending), routes_unresolved=len(pending), + groups_tested=checked, positive_route_count=sum(r['witness_cut'] is not None for r in results), + routes=results, confirmed_price=price(best), optimistic_price=price(optimistic), seed=None) + + +if __name__ == '__main__': + if not __debug__: + raise RuntimeError('Run with assertions enabled') + parser = argparse.ArgumentParser(description=__doc__) + for name in ('peer','caller_path','interval_path','owned_path','side_path','donor_path'): + parser.add_argument(name,type=Path) + parser.add_argument('--group-cap',type=int,default=4096) + parser.add_argument('--seconds',type=int,default=720) + parser.add_argument('--source-count',type=int,choices=(1,2),default=1) + args = parser.parse_args() + assert 0 < args.group_cap <= 4096 and 0 < args.seconds <= 720 + print(json.dumps(run(**vars(args)),indent=2,sort_keys=True)) diff --git a/research/p104-serial-temporal-support-bound/source7165/checks/donor_intervals.py b/research/p104-serial-temporal-support-bound/source7165/checks/donor_intervals.py new file mode 100644 index 0000000000..a8ad58a554 --- /dev/null +++ b/research/p104-serial-temporal-support-bound/source7165/checks/donor_intervals.py @@ -0,0 +1,213 @@ +"""Check exact proportional donors in every live chart on retained #7161 clocks.""" + +import argparse +from collections import Counter, defaultdict +from fractions import Fraction +import gzip +from hashlib import sha256 +from importlib.util import module_from_spec, spec_from_file_location +import json +from pathlib import Path +from time import monotonic + +OWNED_SHA = '53da0a7b551b34f3baf633083a4362570ebe694a694e2d0b6226d01c08a6ab3b' + + +def load_pinned(name, path, expected): + assert sha256(path.read_bytes()).hexdigest() == expected, path + spec = spec_from_file_location(name, path) + module = module_from_spec(spec) + spec.loader.exec_module(module) + return module + + +def row_key(row): + first = min(row) + leading = row[first] + return tuple((i, row[i] / leading) for i in sorted(row)) + + +def replay(word, last_cut, visit, check_time): + public = word['public'] + charts = word['initial'] + [None]*word['owned_fields'] + rows = [{i:Fraction(1)} for i in range(public)] + [{} for _ in range(word['owned_fields'])] + coefficients = {} + for r, row in enumerate(rows): + visit(0, r, charts[r], row) + for i, (op, role, *args) in enumerate(word['program'][:last_cut]): + if i % 1024 == 0: + check_time() + if op == 'MOVE': + assert charts[role] == args[0] + charts[role] = args[1] + elif op == 'INIT': + assert charts[role] is None and not rows[role] + charts[role] = args[0] + elif op == 'CLEAR': + assert charts[role] == args[0] + charts[role], rows[role] = None, {} + else: + token = args[0 if op == 'SCALE' else 1] + if token not in coefficients: + coefficients[token] = Fraction(token) + value = coefficients[token] + if op == 'SCALE': + assert charts[role] == args[1] and value + rows[role] = {i:value*x for i,x in rows[role].items()} + else: + source = args[0] + assert charts[role] == charts[source] == args[2] + assert op == 'ADD' or op == 'COPY' and not rows[role] + for coordinate,x in rows[source].items(): + z = rows[role].get(coordinate,0) + value*x + if z: + rows[role][coordinate] = z + else: + rows[role].pop(coordinate,None) + visit(i+1, role, charts[role], rows[role]) + + +def controls(): + assert row_key({0:Fraction(2),3:Fraction(-5)}) == row_key({3:Fraction(15),0:Fraction(-6)}) + assert row_key({0:Fraction(2),3:Fraction(-5)}) != row_key({0:Fraction(-6),3:Fraction(-15)}) + toy = dict(public=3, owned_fields=0, initial=[0,0,0], + program=[['ADD',0,2,'3',0], ['SCALE',0,'-2',0]]) + timeline = [] + replay(toy, 2, lambda cut,role,chart,row: timeline.append((cut,role,dict(row))), lambda:None) + assert timeline[-2:] == [(1,0,{0:1,2:3}), (2,0,{0:-2,2:-6})] + + +def run(peer_root, caller_path, gate_path, owned_path, cut_cap, seconds): + controls() + started = monotonic() + + def check_time(): + if monotonic()-started > seconds: + raise TimeoutError('donor tape prepass reached its deadline') + + helper = load_pinned('owned_clocks', owned_path, OWNED_SHA) + package = peer_root / helper.PACKAGE + pins = helper.PINS | {'round8/evidence/complex/owned.py': OWNED_SHA} + word_raw = gzip.decompress(helper.pinned(package/'WORD.json.gz', f'peer/{helper.PACKAGE}/WORD.json.gz')) + assert sha256(word_raw).hexdigest() == pins[f'peer/{helper.PACKAGE}/WORD.json.gz#decompressed'] + word = json.loads(word_raw) + result = json.loads(helper.pinned(package/'RESULT.json', f'peer/{helper.PACKAGE}/RESULT.json')) + caller = json.loads(helper.pinned(caller_path, 'caller-inputs/CALLER.json')) + gate = load_pinned('directed_power', gate_path, pins['caller-inputs/interval_gate.py']) + try: + spaces, native, moves, _ = helper.scan_word(word, check_time, 80000) + signed, invoice = helper.full_invoice(word, caller, result, native) + baseline = gate.moment(signed, helper.TARGET) + by_role = defaultdict(set) + for m in moves: + by_role[m['role']].add(m['event']) + seen_by_cut = {} + + def sample(cut, role, chart, row): + if cut-1 in by_role.get(role, ()): + assert chart is not None and row + seen_by_cut[cut-1] = row_key(row) + + replay(word, max(m['event'] for m in moves)+1, sample, check_time) + assert seen_by_cut.keys() == {m['event'] for m in moves} + moves_by_key = defaultdict(list) + for move in moves: + moves_by_key[seen_by_cut[move['event']]].append(move) + allowed_leads = {(len(key), key[0][0]) for key in moves_by_key} + last_cut = max(m['window'][1] for m in moves) + available = {} + intervals = [] + stored = Counter() + + def flush(role, stop): + lo,key,chart = available[role] + for move in moves_by_key[key]: + first = max(lo, move['window'][0]) + last = min(stop, move['window'][1]) + if role != move['role'] and first <= last: + d = helper.distance(spaces[chart], spaces[move['target']]) + intervals.append(dict(first=first, last=last, event=move['event'], role=role, + chart=chart, target=move['target'], old_rank=move['rank'], rank=d)) + stored['interval_move_intersections'] += 1 + stored['constant_intervals'] += 1 + + def index(cut, role, chart, row): + key = None + if row and (len(row), min(row)) in allowed_leads: + key = row_key(row) + old = available.get(role) + if old and (old[1],old[2]) == (key,chart): + return + if old: + flush(role, cut-1) + del available[role] + if key in moves_by_key: + assert chart is not None + available[role] = (cut,key,chart) + + replay(word, last_cut, index, check_time) + for role in available: + flush(role,last_cut) + except TimeoutError: + return dict(status='INCOMPLETE_TAPE_PREPASS', head=helper.HEAD, pins=pins, first_pending='prepass') + intervals.sort(key=lambda x:(x['first'],x['event'],x['role'],x['chart'],x['last'])) + cuts = set() + checked = [] + pending = None + best = {m['event']:m['rank'] for m in moves} + for i, candidate in enumerate(intervals): + new = candidate['first'] not in cuts + if new and len(cuts) >= cut_cap or monotonic()-started > seconds: + pending = i + break + cuts.add(candidate['first']) + checked.append(candidate) + event = candidate['event'] + best[event] = min(best[event], candidate['rank']) + assert len(cuts) <= cut_cap + untested = intervals[pending:] if pending is not None else () + # Grant each pending site its shortest price-compatible distance. The tape + # index has already authenticated these interval lengths and chart labels. + for candidate in untested: + event = candidate['event'] + best[event] = min(best[event], candidate['rank']) + paid = {m['event']:m['rank'] for m in moves} + old = Counter(paid.values()) + reduced = Counter(rank for rank in best.values() if rank) + difference = old.copy() + difference.subtract(reduced) + saving = gate.smul(gate.moment(difference, helper.TARGET), helper.STAGES) + packed_rank = sum(best.values()) + packed = gate.power(packed_rank, helper.TARGET) if packed_rank else (0,0) + packed_saving = gate.smul(gate.sub(gate.moment(old, helper.TARGET), packed), helper.STAGES) + paid_sites = sorted(i for i in best if best[i] < paid[i]) + assert all(c['role'] != next(m['role'] for m in moves if m['event']==c['event']) for c in intervals) + return dict(status='EXHAUSTED' if pending is None else 'CAP_PENDING', head=helper.HEAD, + target=str(helper.TARGET), pins=pins, baseline=gate.show(baseline), invoice=invoice, + caps=dict(representative_cuts=cut_cap, seconds=seconds), + all_integer_cuts=len({c for m in moves for c in range(m['window'][0],m['window'][1]+1)}), + representative_cuts_tested=len(cuts), proportional_intervals_total=len(intervals), + proportional_intervals_tested=len(checked), proportional_intervals_unresolved=len(untested), + first_pending=untested[0] if untested else None, census=stored, + projective_target_rows=len(moves_by_key), intervals=checked, + old_native_ranks=old, optimistic_native_ranks=reduced, + potentially_saving_events=paid_sites, site_lower_rank={i:best[i] for i in paid_sites}, + directed_saving_upper=gate.show(saving)[1], + directed_resulting_moment_upper=gate.show(gate.add(baseline, (0,max(0,saving[1]))))[1], + additive_packing=dict(rank=packed_rank, directed_saving_upper=gate.show(packed_saving)[1], + directed_resulting_moment_upper=gate.show(gate.add(baseline, (0,packed_saving[1])))[1]), + controls=['rational projective equality and sign negative', 'ADD/COPY coordinate cannot replace event clock'], + seed=None) + + +if __name__ == '__main__': + if not __debug__: + raise RuntimeError('Run with assertions enabled') + parser = argparse.ArgumentParser(description=__doc__) + for name in ('peer_root','caller_path','gate_path','owned_path'): + parser.add_argument(name,type=Path) + parser.add_argument('--cut-cap',type=int,default=2048) + parser.add_argument('--seconds',type=int,default=480) + args = parser.parse_args() + assert 0 < args.cut_cap <= 2048 and 0 < args.seconds <= 480 + print(json.dumps(run(**vars(args)),indent=2,sort_keys=True)) diff --git a/research/p104-serial-temporal-support-bound/source7165/checks/owned.py b/research/p104-serial-temporal-support-bound/source7165/checks/owned.py new file mode 100644 index 0000000000..a54a0256a6 --- /dev/null +++ b/research/p104-serial-temporal-support-bound/source7165/checks/owned.py @@ -0,0 +1,622 @@ +"""Exact #7161 charged owned-MOVE sharing ceilings on retained contact clocks.""" +import argparse +from collections import Counter, defaultdict +from fractions import Fraction +from functools import lru_cache +import gzip +from hashlib import sha256 +from importlib.util import module_from_spec, spec_from_file_location +from itertools import combinations, product +import json +from pathlib import Path +from time import monotonic + +PACKAGE = 'research/p104-rank8-exit-funded-split' +HEAD = 'e3f8d39c43b07063dfc5b800f71c5d21015259e6' +PINS = { + f'peer/{PACKAGE}/WORD.json.gz': 'c1caec11ca3ee264ef03018dd91037eac10c3e28950c4c525ee1b4bf5ee210e2', + f'peer/{PACKAGE}/WORD.json.gz#decompressed': '9eff91418d838f1ffa20fe5c5975dc2c43a79b32d501fcbe30b90c50a7b11ce3', + f'peer/{PACKAGE}/RESULT.json': '59080d75e7281b1a8c1353930917fd15869ad747ff4200948898f78f11c14089', + 'caller-inputs/CALLER.json': '255d89f38cd45e38e5770f559bc43dc217e989032359768cdc7e8cdfd64b47bc', + 'caller-inputs/interval_gate.py': '60a743d13f668ef86db4b8215b4d5d04430a671ba6f1fe06d9c1c4c3dfe86da5', +} +TARGET = Fraction('0.0040075385047236') +PRIME = 2147483647 +STAGES = 17 +PUBLIC_SEEDS = (0, 1, 4, 6, 7, 8) +HOSTED_SEEDS = (2, 3, 5, 9, 10, 11) + + +def pinned(path, label): + raw = path.read_bytes() + assert sha256(raw).hexdigest() == PINS[label], path + return raw + + +def canonical_digest(value): + return sha256(json.dumps(value, sort_keys=True, separators=(',', ':')).encode()).hexdigest() + + +def span(vectors): + result = {0} + for vector in vectors: + assert vector not in result + result.update(value ^ vector for value in tuple(result)) + return frozenset(result) + + +def dimension(space): + assert len(space) > 0 and len(space) & (len(space) - 1) == 0 + return len(space).bit_length() - 1 + + +def distance(a, b): + return dimension(a) + dimension(b) - 2 * dimension(a & b) + + +def overlap_interval(a, b, c, d): + low1, high1 = (a, b) if a < b else (b, a) + low2, high2 = (c, d) if c < d else (d, c) + joint_lower = {u ^ v for u in low1 for v in low2} + joint_upper = high1 & high2 + ranks = (dimension(joint_lower), dimension(joint_upper)) + return ranks, ranks[1] - ranks[0] if joint_lower <= joint_upper else None + + +def scan_word(word, check_time, event_cap): + public = word['public'] + fields = word['owned_fields'] + spaces = list(map(span, word['frames'])) + charts = word['initial'] + [None] * fields + active = set() + contacts = defaultdict(list) + native_moves, owned_moves = [], [] + opcodes = Counter() + lifetimes = peak = 0 + program = word['program'] + assert len(program) <= event_cap, {'first_pending_native_event': event_cap} + for i, event in enumerate(program): + if i % 1024 == 0: + check_time() + op, r, *args = event + assert 0 <= r < len(charts) + opcodes[op] += 1 + if op != 'SCALE': + contacts[r].append((i, op if op not in ('ADD', 'COPY') else op + '_DEST')) + if op == 'MOVE': + a, b, owned = args + assert charts[r] == a and owned == (r >= public) + assert spaces[a] < spaces[b] or owned and spaces[b] < spaces[a] + rank = distance(spaces[a], spaces[b]) + move = dict(event=i, role=r, source=a, target=b, rank=rank) + native_moves.append(move) + if owned: + assert r in active + owned_moves.append(move) + charts[r] = b + elif op == 'INIT': + assert r >= public and charts[r] is None and r not in active + charts[r] = args[0] + active.add(r) + lifetimes += 1 + peak = max(peak, len(active)) + elif op == 'CLEAR': + assert r >= public and charts[r] == args[0] and r in active + charts[r] = None + active.remove(r) + elif op in ('ADD', 'COPY'): + s, coeff, frame = args + assert 0 <= s < len(charts) and s != r + assert charts[r] == charts[s] == frame and Fraction(coeff) + contacts[s].append((i, op + '_SOURCE')) + else: + assert op == 'SCALE' and charts[r] == args[1] and Fraction(args[0]) + assert charts == word['final'] + [None] * fields and not active + for move in owned_moves: + history = contacts[move['role']] + j = history.index((move['event'], 'MOVE')) + assert 0 < j < len(history) - 1 + before, after = history[j-1], history[j+1] + move.update(window=[before[0]+1, after[0]], previous=before, following=after) + assert (public, fields, lifetimes, peak, len(program), len(owned_moves)) == (1499, 63, 66, 48, 76349, 47) + return spaces, native_moves, owned_moves, dict( + public=public, owned_labels=fields, lifetimes=lifetimes, peak=peak, events=len(program), opcodes=opcodes, + ) + + +def full_invoice(word, caller, result, native_moves): + dports = word['hosted']['Dports'] + second = dict(zip(dports, zip(word['hosted']['X2'], word['hosted']['Y2']))) + assert caller['types']['A']['ports'] == dports + assert sorted(dports + caller['types']['B']['ports']) == list(range(104)) + assert caller['ambient_rank'] == 145 and caller['stages'] == STAGES + main = set(word['live']) | {r+112 for r in word['live']} | set(word['hosted']['X2']) | set(word['hosted']['Y2']) + helpers = set(range(word['public'])) - main + positions, staged = [], [] + paid = Counter() + for ce, event in enumerate(caller['events']): + if event[0] == 'J': + stage, pa, pb = event[1:] + staged.append(stage) + mapping = {} + for pi, r in enumerate(word['live']): + a, b = pa[:2] if pi in second else pb[:2] + mapping[r] = ('main', pi, a) + mapping[r+112] = ('main', pi, b) + if pi in second: + x, y = second[pi] + mapping[x] = ('main', pi, pa[2]) + mapping[y] = ('main', pi, pa[3]) + assert set(mapping) == main and len(set(mapping.values())) == len(main) + mapping.update((r, ('helper', ce, r)) for r in helpers) + for r in range(word['public'], word['public'] + word['owned_fields']): + mapping[r] = ('owned', ce, r-word['public']) + assert len(mapping) == len(set(mapping.values())) == word['public'] + word['owned_fields'] + for move in native_moves: + rank = move['rank'] + paid[rank] += 1 + positions.append([ce, move['event'], mapping[move['role']], rank, move['source'], move['target']]) + else: + kind, op, role, *args = event + if op not in ('IDLE_ONE', 'IDLE_ODD', 'QUERY'): + assert op in ('ADD', 'SWAP', 'SCALE', 'LAMBDA') + continue + rank = 1 if op == 'QUERY' else 8 * len(args[0]) + (op == 'IDLE_ODD') + for pi in caller['types'][kind]['ports']: + owner = ('query_scratch', ce, pi) if op == 'QUERY' else ('main', pi, role) + paid[rank] += 1 + positions.append([ce, op, owner, rank]) + assert staged == list(range(1, STAGES+1)) + binding = result['checks']['ODD-PHYSICAL-BINDING.json'] + assert binding['native_sha256'] == PINS[f'peer/{PACKAGE}/WORD.json.gz#decompressed'] + assert binding['caller_sha256'] == PINS['caller-inputs/CALLER.json'] + assert result['caller_sha256'] == binding['caller_sha256'] + geom = binding['occurrence_and_geometry'] + positions_sha = canonical_digest(positions) + assert positions_sha == geom['complete_paid_position_digest'] + invoice = result['price']['after'] + assert paid == {int(r): n for r, n in invoice['P'].items()} + assert invoice['T'] == geom['targets'] + assert sum(paid.values()) == geom['paid_positions'] == 110519 + assert sum(invoice['T'].values()) == geom['productive_fields'] == 22427 + signed = Counter({int(r): n for r, n in invoice['T'].items()}) + signed.subtract(paid) + assert sum(r*n for r, n in signed.items()) == invoice['S'] == 1424 + return signed, dict(P=paid, T=invoice['T'], S=1424, paid_position_sha256=positions_sha) + + +def overlap(left, right): + lo = max(left[0], right[0]) + hi = min(left[1], right[1]) + return [lo, hi] if lo <= hi else None + + +def match_max(edges): + graph = defaultdict(dict) + for i, j, weight in edges: + if weight > 0: + graph[i][j] = graph[j][i] = weight + + @lru_cache(None) + def best(vertices): + if not vertices: + return 0, () + i = min(vertices, key=lambda v: (len(graph[v].keys() & vertices), v)) + rest = vertices - {i} + winner = best(rest) + for j in sorted(graph[i].keys() & rest): + total, matching = best(rest - {j}) + pair = tuple(sorted((i, j))) + winner = max(winner, (total + graph[i][j], tuple(sorted((pair,) + matching)))) + return winner + + value, chosen = best(frozenset(graph)) + return value, chosen, best.cache_info().currsize + + +def scan_pairs(owned, spaces, gate, check_time, pair_cap): + counts = Counter({k: 0 for k in ('pairs', 'same_owner', 'distinct_owner', 'disjoint_windows', + 'overlap_windows', 'common_positive_interval', 'same_source', + 'same_target', 'cross_supply')}) + compatible, pending = [], None + for left, right in combinations(owned, 2): + i, j = left['event'], right['event'] + if counts['pairs'] == pair_cap: + pending = [i, j] + break + check_time() + counts['pairs'] += 1 + if left['role'] == right['role']: + counts['same_owner'] += 1 + continue + counts['distinct_owner'] += 1 + clock = overlap(left['window'], right['window']) + if clock is None: + counts['disjoint_windows'] += 1 + continue + counts['overlap_windows'] += 1 + a, b, c, d = (spaces[move[key]] for move in (left, right) for key in ('source', 'target')) + ranks, width = overlap_interval(a, b, c, d) + relations = dict(common_positive_interval=width is not None and width > 0, + same_source=a == c, same_target=b == d, cross_supply=a == d or c == b) + counts.update(key for key, present in relations.items() if present) + credit = gate.moment(Counter((left['rank'], right['rank'])), TARGET) + compatible.append(dict(events=[i, j], owners=[left['role'], right['role']], clock=clock, + paid_ranks=[left['rank'], right['rank']], overlap_ranks=ranks, + width=width, relations=relations, both_debits=gate.show(credit), + distances=[distance(a, b), distance(c, d), distance(a, d), + distance(c, b), distance(b, d)])) + return counts, compatible, pending + + +def pair_weights(pairs, gate, check_time): + @lru_cache(None) + def weight(rank): + return gate.power(rank, TARGET) if rank else (0, 0) + + @lru_cache(None) + def star(ab, ac, bc): + # If a length exceeds this limit, clamping it preserves all inequalities. + limit = max(ab, ac, bc) + answer = None + for a in range(limit+1): + for b in range(max(0, ab-a), limit+1): + c = max(0, ac-a, bc-b) + candidate = (weight(a)[0] + weight(b)[0] + weight(c)[0], (a, b, c)) + answer = candidate if answer is None else min(answer, candidate) + return answer + + result = [] + for pair in pairs: + check_time() + ab, cd, ad, cb, bd = pair['distances'] + assert pair['paid_ranks'] == [ab, cd] + old = gate.add(weight(ab), weight(cd)) + star_a, lengths_a = star(ab, ad, bd) + star_c, lengths_c = star(cb, cd, bd) + costs = (old[0], weight(ad)[0]+weight(cb)[0], star_a, star_c) + # Keeping the original charges has exactly zero saving, without roundoff. + upper = max(0, old[1]-min(costs[1:])) + i, j = pair['events'] + result.append((i, j, upper)) + pair.update(reroute_cost_lower=gate.show((min(costs), min(costs)))[0], + reroute_upper=gate.show((upper, upper))[0], star_lengths=[lengths_a, lengths_c]) + return result + + +def probe(word, sites, check_time): + public = word['public'] + main = set(word['live']) | {r+112 for r in word['live']} | set(word['hosted']['X2']) | set(word['hosted']['Y2']) + # Separate seed sets preserve the pair and triple witnesses. + public_seeds = set(PUBLIC_SEEDS) + rows = [] + for r in range(public + word['owned_fields']): + x = tuple(int.from_bytes(sha256(f'owned-7161:{j}:{r}'.encode()).digest(), 'big') % PRIME + if (j in public_seeds and r < public or j not in public_seeds and r in main) + else 0 for j in range(len(PUBLIC_SEEDS) + len(HOSTED_SEEDS))) + rows.append(x) + zero = (0,) * (len(PUBLIC_SEEDS) + len(HOSTED_SEEDS)) + snapshots = {} + seen_coeffs = {} + + def residue(s): + if s not in seen_coeffs: + q = Fraction(s) + assert q.denominator % PRIME + seen_coeffs[s] = q.numerator * pow(q.denominator, -1, PRIME) % PRIME + return seen_coeffs[s] + + for i, (op, role, *args) in enumerate(word['program']): + if i % 1024 == 0: + check_time() + if i in sites: + assert op == 'MOVE' and args[-1] + snapshots[i] = rows[role] + if op == 'INIT': + assert rows[role] == zero + elif op == 'CLEAR': + rows[role] = zero + elif op == 'SCALE': + c = residue(args[0]) + assert c + rows[role] = tuple(c*x % PRIME for x in rows[role]) + elif op in ('ADD', 'COPY'): + s, coeff, _ = args + c = residue(coeff) + if op == 'COPY': + assert rows[role] == zero + rows[role] = tuple((x+c*y) % PRIME for x, y in zip(rows[role], rows[s])) + else: + assert op == 'MOVE' + assert snapshots.keys() == sites + return snapshots, len(seen_coeffs) + + +def determinant(a, b, i, j): + return (a[i]*b[j]-a[j]*b[i]) % PRIME + + +def determinant3(a, b, c, i, j, k): + return (a[i]*determinant(b, c, j, k) - a[j]*determinant(b, c, i, k) + + a[k]*determinant(b, c, i, j)) % PRIME + + +def async_chains(owned, snapshots, spaces, check_time): + graph = defaultdict(set) + pairs = [] + for a, b in combinations(owned, 2): + check_time() + i, j = a['event'], b['event'] + if determinant(snapshots[i], snapshots[j], 0, 1): + continue + graph[i].add(j) + graph[j].add(i) + pairs.append([i, j]) + + move = {m['event']: m for m in owned} + seen = set() + chains = [] + for start in sorted(graph): + if start in seen: + continue + component, stack = set(), [start] + while stack: + node = stack.pop() + if node in component: + continue + component.add(node) + stack.extend(graph[node] - component) + seen.update(component) + itinerary = [move[i] for i in sorted(component)] + first, last = itinerary[0], itinerary[-1] + # The four source/target cases follow one common calculation: later + # original root frames are already required as earlier output frames. + assert all(x['window'][1] < y['window'][0] and x['target'] == y['source'] + for x, y in zip(itinerary, itinerary[1:])) + labels = [first['source']] + [x['target'] for x in itinerary] + assert len(set(spaces[x] for x in labels)) == len(labels) + endpoint_distance = distance(spaces[first['source']], spaces[last['target']]) + assert all(m['rank'] == 1 for m in itinerary[:-1]) + assert endpoint_distance == sum(m['rank'] for m in itinerary) + chains.append(dict(events=sorted(component), labels=labels, ranks=[m['rank'] for m in itinerary], + clocks=[m['window'] for m in itinerary], endpoint_distance=endpoint_distance, + necessary_positive_legs=len(itinerary))) + return dict(zero_minor_pairs=pairs, chains=chains, compatible_pair_count=len(pairs), + screened_pairs=len(owned)*(len(owned)-1)//2, saving_upper=0) + + +def scan_triples(owned, snapshots, gate, check_time, triple_cap): + counts = Counter({k: 0 for k in ('unordered_triples', 'same_owner', 'disjoint_windows', + 'clock_compatible_tested', 'all_public_zero_minor', 'hosted_zero_minor')}) + checked, pending = [], None + ranks = {m['event']: m['rank'] for m in owned} + for group in combinations(owned, 3): + check_time() + counts['unordered_triples'] += 1 + if len({m['role'] for m in group}) != 3: + counts['same_owner'] += 1 + continue + left, center, right = [m['window'] for m in group] + shared = overlap(left, center) + shared = overlap(shared, right) if shared else None + if not shared: + counts['disjoint_windows'] += 1 + continue + events = [m['event'] for m in group] + if counts['clock_compatible_tested'] == triple_cap: + pending = events + break + counts['clock_compatible_tested'] += 1 + a, b, c = map(snapshots.__getitem__, events) + public_minor = determinant3(a, b, c, 0, 1, 4) + hosted_minor = determinant3(a, b, c, 2, 3, 5) + counts['all_public_zero_minor'] += not public_minor + counts['hosted_zero_minor'] += not hosted_minor + checked.append(dict(events=events, clock=shared, all_public_minor=public_minor, + hosted_only_minor=hosted_minor)) + + vertices = {i for triple in checked for i in triple['events']} + survivors = [t for t in checked if not t['all_public_minor']] + survivor_vertices = {i for triple in survivors for i in triple['events']} + + def all_debits_upper(sites): + return gate.smul(gate.moment(Counter(ranks[i] for i in sites), TARGET), STAGES) + + return dict(cap=triple_cap, first_pending=pending, counts=counts, tested=checked, + vertices=sorted(vertices), price_before=gate.show(all_debits_upper(vertices)), + survivors=survivors, survivor_price=gate.show(all_debits_upper(survivor_vertices))) + + +def rank_and_determinant(rows): + matrix = [list(row) for row in rows] + size = len(matrix) + assert all(len(row) == size for row in matrix) + rank = 0 + value = 1 + for col in range(size): + pivot = next((i for i in range(rank, size) if matrix[i][col]), None) + if pivot is None: + continue + if pivot != rank: + matrix[rank], matrix[pivot] = matrix[pivot], matrix[rank] + value = -value + coefficient = matrix[rank][col] + value = value*coefficient % PRIME + inverse = pow(coefficient, -1, PRIME) + for i in range(rank+1, size): + multiple = matrix[i][col]*inverse % PRIME + if multiple: + matrix[i] = [(x-multiple*y) % PRIME for x,y in zip(matrix[i], matrix[rank])] + rank += 1 + return rank, value % PRIME if rank == size else 0 + + +def maximal_clock_sets(owned, snapshots, check_time, cap): + # Every compatible subset has a witness at its latest left endpoint. + starts = sorted({m['window'][0] for m in owned}) + choices = {} + count = 0 + multi_owner_cuts = 0 + for cut in starts: + check_time() + active = defaultdict(list) + for move in owned: + if move['window'][0] <= cut <= move['window'][1]: + active[move['role']].append(move['event']) + multi_owner_cuts += any(len(moves) > 1 for moves in active.values()) + for candidate in product(*active.values()): + if count == cap: + return dict(first_pending=[cut, sorted(candidate)], candidate_count=count, cap=cap) + choices.setdefault(frozenset(candidate), cut) + count += 1 + maximal = [s for s in choices if not any(s < t for t in choices)] + hist = Counter() + tests = [] + for compatible in sorted(maximal, key=lambda x: tuple(sorted(x))): + check_time() + events = sorted(compatible) + width = len(events) + hist[width] += 1 + assert width <= min(len(PUBLIC_SEEDS), len(HOSTED_SEEDS)), 'insufficient deterministic probes' + + def evaluate(seeds): + matrix = [[snapshots[i][s] for s in seeds[:width]] for i in events] + rank, value = rank_and_determinant(matrix) + return dict(rank=rank, determinant=value) + + tests.append(dict(events=events, witness_cut=choices[compatible], + all_public=evaluate(PUBLIC_SEEDS), hosted_only=evaluate(HOSTED_SEEDS))) + pending = [r for r in tests if r['all_public']['rank'] < len(r['events'])] + return dict(first_pending=None, cap=cap, candidate_count=count, tested=tests, maximal_widths=hist, + distinct_count=len(choices), max_width=max(hist), start_count=len(starts), + same_owner_choices_at_cuts=multi_owner_cuts, modular_rank_unresolved=pending) + + +def run(peer_root, caller_path, gate_path, event_cap, pair_cap, triple_cap, seconds): + started = monotonic() + + def check_time(): + assert monotonic()-started <= seconds, 'time cap reached before exhaustion' + + package = peer_root / PACKAGE + compressed = pinned(package/'WORD.json.gz', f'peer/{PACKAGE}/WORD.json.gz') + raw = gzip.decompress(compressed) + assert sha256(raw).hexdigest() == PINS[f'peer/{PACKAGE}/WORD.json.gz#decompressed'] + word = json.loads(raw) + result = json.loads(pinned(package/'RESULT.json', f'peer/{PACKAGE}/RESULT.json')) + caller = json.loads(pinned(caller_path, 'caller-inputs/CALLER.json')) + pinned(gate_path, 'caller-inputs/interval_gate.py') + spec = spec_from_file_location('pinned_owned_interval', gate_path) + gate = module_from_spec(spec) + spec.loader.exec_module(gate) + + # Lucas–Lehmer for the prime exponent 31 verifies the reduction field. + mersenne = 4 + for _ in range(29): + mersenne = (mersenne*mersenne - 2) % PRIME + assert PRIME == 2**31-1 and mersenne == 0 + h0, h1, h2 = (span(xs) for xs in ([], [1], [1, 2])) + h3 = span([2]) + assert overlap_interval(h0, h2, h1, h2) == ((1, 2), 1) + assert overlap_interval(h0, h1, h1, h2) == ((1, 1), 0) + assert overlap_interval(h0, h1, h3, h2) == ((1, 1), None) + assert overlap([1, 2], [2, 3]) == [2, 2] and overlap([1, 2], [3, 4]) is None + assert match_max([(1, 2, 8), (1, 3, 7), (3, 4, 2)])[:2] == (10, ((1, 2), (3, 4))) + assert determinant((1, 2), (2, 4), 0, 1) == 0 + assert determinant((1, 2), (2, 5), 0, 1) == 1 + assert determinant3((1, 0, 0), (0, 1, 0), (1, 1, 0), 0, 1, 2) == 0 + assert determinant3((1, 0, 0), (0, 1, 0), (1, 1, 1), 0, 1, 2) == 1 + assert rank_and_determinant(((0, 1), (1, 0))) == (2, PRIME-1) + assert rank_and_determinant(((0, 1), (0, 2))) == (1, 0) + + spaces, native, owned, census = scan_word(word, check_time, event_cap) + signed, invoice = full_invoice(word, caller, result, native) + lo, hi = map(Fraction, result['price']['gate']['raw_bracket']) + lo_sign, hi_sign = gate.moment(signed, lo), gate.moment(signed, hi) + assert lo_sign[0] > 0 > hi_sign[1] + baseline = gate.moment(signed, TARGET) + hist = Counter(move['rank'] for move in owned) + debit = gate.smul(gate.moment(hist, TARGET), STAGES) + assert gate.add(baseline, debit)[0] > 0 + counts, pairs, pending = scan_pairs(owned, spaces, gate, check_time, pair_cap) + if pending is not None: + return dict(status='PAIR_CAP_PENDING', pins=PINS, census=census, counts=counts, first_pending=pending) + assert counts['pairs'] == len(owned)*(len(owned)-1)//2 + assert counts['overlap_windows'] == len(pairs) + ranks = {m['event']: m['rank'] for m in owned} + candidates = [pair for pair in pairs if any(pair['relations'].values())] + loose_edges = [(i, j, gate.moment(Counter((ranks[i], ranks[j])), TARGET)[1]) + for i, j in (pair['events'] for pair in pairs)] + direct_edges = [(i, j, gate.moment(Counter((ranks[i], ranks[j])), TARGET)[1]) + for i, j in (pair['events'] for pair in candidates)] + time_only = match_max(loose_edges) + direct = match_max(direct_edges) + direct_union = gate.moment(Counter(ranks[i] for i in {k for a,b,_ in direct_edges for k in (a,b)}), TARGET)[1] + assert gate.add(baseline, (0, STAGES*direct_union))[1] < 0 + + detour = pair_weights(pairs, gate, check_time) + detour_before = match_max(detour) + assert gate.add(baseline, (0, STAGES*detour_before[0]))[1] > 0 + snapshots, coeffs = probe(word, set(ranks), check_time) + by_pair = {(i, j): upper for i, j, upper in detour} + left_edges = [] + main_left_edges = [] + for pair in pairs: + i, j = pair['events'] + minor = determinant(snapshots[i], snapshots[j], 0, 1) + main_minor = determinant(snapshots[i], snapshots[j], 2, 3) + pair.update(all_public_minor=minor, hosted_only_minor=main_minor) + if not minor: + left_edges.append((i, j, by_pair[i, j])) + if not main_minor: + main_left_edges.append((i, j, by_pair[i, j])) + after_probe = match_max(left_edges) + after_main_probe = match_max(main_left_edges) + nonzero = sum(any(values[:2]) for values in snapshots.values()) + assert nonzero == 47 + async_result = async_chains(owned, snapshots, spaces, check_time) + triple_result = scan_triples(owned, snapshots, gate, check_time, triple_cap) + maximal_result = maximal_clock_sets(owned, snapshots, check_time, triple_cap) + + def price_report(upper, chosen=(), states=None): + saving = STAGES * upper + return dict(saving_upper=gate.show((saving, saving))[0], matching=chosen, states=states, + moment_upper=gate.show(gate.add(baseline, (0, saving)))[1]) + + return dict(status='EXHAUSTED_OWNED_SHARE_NECESSARY_GATES', head=HEAD, pins=PINS, + target=str(TARGET), census=census, invoice=invoice, raw_bracket=[str(lo), str(hi)], + bracket_moments=[gate.show(lo_sign), gate.show(hi_sign)], baseline=gate.show(baseline), + caps=dict(events=event_cap, pairs=pair_cap, triple_candidates=triple_cap, seconds=seconds), + first_pending=triple_result['first_pending'] or maximal_result['first_pending'], + counts=counts, owned_rank_hist=hist, owned=owned, pairs=pairs, + all_old_debits=gate.show(debit), time_only=price_report(*time_only), + direct_pair=price_report(*direct), direct_vertex_union=price_report(direct_union), + arbitrary_nested_before_probe=price_report(*detour_before), + arbitrary_nested_after_probe=price_report(*after_probe), + arbitrary_nested_hosted_only_after_probe=price_report(*after_main_probe), + asynchronous_cache=async_result, triple_corecovery=triple_result, + maximal_common_clock=maximal_result, + probe=dict(prime=PRIME, distinct_coefficient_tokens=coeffs, snapshots=snapshots, + nonzero_public_rows=nonzero, public_zero_minor_pairs=len(left_edges), + hosted_zero_minor_pairs=len(main_left_edges), + public_positive_credit_survivors=[(i,j) for i,j,u in left_edges if u>0], + hosted_positive_credit_survivors=[(i,j) for i,j,u in main_left_edges if u>0]), + controls=['positive and zero-width intervals', 'incomparable interval', 'inclusive clock', + 'matching cannot reuse one vertex', 'proportional and nonproportional minors', + 'dependent and independent three-lane controls', 'singular and pivot-swap elimination']) + + +if __name__ == '__main__': + if not __debug__: + raise RuntimeError('Run with assertions enabled') + parser = argparse.ArgumentParser(description=__doc__) + for label in ('peer_root', 'caller_path', 'gate_path'): + parser.add_argument(label, type=Path) + parser.add_argument('--event-cap', type=int, default=80000) + parser.add_argument('--pair-cap', type=int, default=4096) + parser.add_argument('--triple-cap', type=int, default=4096) + parser.add_argument('--seconds', type=int, default=600) + args = parser.parse_args() + assert 0 < args.event_cap <= 80000 and 0 < args.pair_cap <= 4096 and 0 < args.seconds <= 600 + assert 0 < args.triple_cap <= 4096 + print(json.dumps(run(**vars(args)), indent=2, sort_keys=True)) diff --git a/research/p104-serial-temporal-support-bound/source7165/checks/side_rows.py b/research/p104-serial-temporal-support-bound/source7165/checks/side_rows.py new file mode 100644 index 0000000000..ddbc22e2c8 --- /dev/null +++ b/research/p104-serial-temporal-support-bound/source7165/checks/side_rows.py @@ -0,0 +1,324 @@ +"""Screen chart-local side rows on all common-clock cuts of exact #7161.""" + +import argparse +from collections import Counter, defaultdict +from fractions import Fraction +import gzip +from hashlib import sha256 +from importlib.util import module_from_spec, spec_from_file_location +from itertools import combinations +from math import gcd, lcm +import json +from pathlib import Path +from time import monotonic + +PREDECESSOR = '53da0a7b551b34f3baf633083a4362570ebe694a694e2d0b6226d01c08a6ab3b' + + +def import_pinned(name, path, expected): + assert sha256(path.read_bytes()).hexdigest() == expected, path + spec = spec_from_file_location(name, path) + module = module_from_spec(spec) + spec.loader.exec_module(module) + return module + + +def primitive(row): + content = gcd(*row.values()) + if content > 1: + return {i: x // content for i, x in row.items()} + return row + + +def integral(row): + denominator = lcm(*(x.denominator for x in row.values())) + return primitive({i: x.numerator * (denominator // x.denominator) for i, x in row.items()}) + + +def insert(basis, vector): + """Add one row over Q by fraction-free sparse elimination.""" + row = vector.copy() + while row: + lead = min(row) + entry = row[lead] + other = basis.get(lead) + if other is None: + basis[lead] = row + return 1 + pivot = other[lead] + common = gcd(pivot, entry) + a, b = pivot // common, entry // common + if a != 1: + row = {i: a*x for i, x in row.items()} + for i, x in other.items(): + value = row.get(i, 0)-b*x + if value: + row[i] = value + else: + row.pop(i, None) + row = primitive(row) + return 0 + + +def controls(): + basis = {} + assert insert(basis, {1: 2, 2: 3}) == 1 + assert insert(basis, {1: 4, 2: 6}) == 0 + assert insert(basis, {1: -3, 2: -4}) == 1 + assert insert(basis, {2: 1}) == 0 + assert insert(basis, {2: 1, 3: 1}) == 1 + row = {1: Fraction(6,5), 2: Fraction(-3,10)} + assert integral(row) == {1:4, 2:-1} + + +def max_sets(moves): + def active(cut): + return tuple(m['event'] for m in moves if m['window'][0] <= cut <= m['window'][1]) + + starts = sorted({m['window'][0] for m in moves}) + families = {frozenset(active(cut)) for cut in starts} + families = sorted((a for a in families if not any(a < b for b in families)), key=lambda a: sorted(a)) + return active, families + + +def run(peer_root, caller_path, gate_path, owned_path, seconds, maximal_cap): + controls() + started = monotonic() + + def check_time(): + if monotonic() - started > seconds: + raise TimeoutError('side-row time budget expired') + + owned = import_pinned('retained_owned', owned_path, PREDECESSOR) + package = peer_root / owned.PACKAGE + word_raw = gzip.decompress(owned.pinned(package/'WORD.json.gz', f'peer/{owned.PACKAGE}/WORD.json.gz')) + assert sha256(word_raw).hexdigest() == owned.PINS[f'peer/{owned.PACKAGE}/WORD.json.gz#decompressed'] + word = json.loads(word_raw) + result = json.loads(owned.pinned(package/'RESULT.json', f'peer/{owned.PACKAGE}/RESULT.json')) + caller = json.loads(owned.pinned(caller_path, 'caller-inputs/CALLER.json')) + gate = import_pinned('retained_interval', gate_path, owned.PINS['caller-inputs/interval_gate.py']) + spaces, native, moves, _ = owned.scan_word(word, check_time, 80000) + signed, invoice = owned.full_invoice(word, caller, result, native) + baseline = gate.moment(signed, owned.TARGET) + move = {m['event']: m for m in moves} + active_at, families = max_sets(moves) + assert len(families) == 42 + scope = {} + cut_range = range(min(m['window'][0] for m in moves), max(m['window'][1] for m in moves)+1) + for cut in cut_range: + active = active_at(cut) + if active: + assert len(active) == len({move[i]['role'] for i in active}) + group = frozenset(active) + scope[cut] = (active, next(j for j,family in enumerate(families) if group <= family)) + assert len(scope) == 11163 + assert len({a for a,_ in scope.values()}) == 53 + + charts = word['initial'] + [None] * word['owned_fields'] + rows = [{i: Fraction(1)} for i in range(word['public'])] + [{} for _ in range(word['owned_fields'])] + row_ids = list(range(len(rows))) + coefficients = {} + live_at = defaultdict(set) + for i, label in enumerate(charts): + if label is not None: + live_at[spaces[label]].add(i) + int_rows, bases, ranks = {}, {}, {} + used_families, used_groups = set(), set() + stats = {name: Counter() for name in ('target_pool','endpoint_pool')} + drop_union = {name:set() for name in stats} + bound_groups = {name:{} for name in stats} + local_sites = {} + local_groups = {} + local_group_cuts = Counter() + group_stats = defaultdict(Counter) + examined = 0 + first_pending = None + site_counts = Counter() + + def base_for(sides): + ids = tuple(row_ids[i] for i in sides) + if ids not in bases: + basis = {} + for i in sides: + key = row_ids[i] + if key not in int_rows: + int_rows[key] = integral(rows[i]) + insert(basis, int_rows[key]) + bases[ids] = basis + return bases[ids] + + def quotient_rank(sides, roles): + key = tuple(row_ids[i] for i in sides), tuple(row_ids[i] for i in roles) + if key not in ranks: + basis = base_for(sides).copy() + start = len(basis) + for i in roles: + k = row_ids[i] + if k not in int_rows: + int_rows[k] = integral(rows[i]) + insert(basis, int_rows[k]) + ranks[key] = len(basis) - start + return ranks[key] + + def side_rows(chart_labels, exempt): + return tuple(sorted({role for label in chart_labels for role in live_at[spaces[label]] + if role not in exempt and rows[role]})) + + def remember(target, key, value): + if key not in target or value[:3] < target[key][:3]: + target[key] = value + + for i,(op, r, *args) in enumerate(word['program'][:max(scope)+1]): + if i % 1024 == 0 and monotonic()-started > seconds: + first_pending = dict(cut=i, reason='time') + break + if i in scope: + events, family = scope[i] + if family >= maximal_cap: + if first_pending is None: + first_pending = dict(cut=i, family=family, reason='family cap') + else: + if monotonic()-started > seconds: + first_pending = dict(cut=i, family=family, reason='time') + break + used_families.add(family) + used_groups.add(events) + roles = tuple(move[e]['role'] for e in events) + group_stats[family]['cuts'] += 1 + examined += 1 + targets = {move[e]['target'] for e in events} + endpoints = targets | {move[e]['source'] for e in events} + assert all(rows[r0] for r0 in roles) + for name, frames in (('target_pool', targets), ('endpoint_pool', endpoints)): + sides = side_rows(frames, roles) + quotient = quotient_rank(sides, roles) + d = len(roles)-quotient + stats[name][d] += 1 + group_stats[family][f'{name}_{d}'] += 1 + if d: + drop_union[name].update(events) + remember(bound_groups[name], (events,d), (len(sides), i, quotient, sides)) + for event, r0 in zip(events, roles): + sides = side_rows((move[event]['target'],), {r0}) + if quotient_rank(sides, (r0,)) == 0: + site_counts[event] += 1 + remember(local_sites, event, (len(sides), i, move[event]['rank'], sides)) + if quotient_rank(side_rows(targets, roles), roles) < len(roles): + for size in range(2, len(events)+1): + for selected in combinations(events, size): + selected_roles = tuple(move[e]['role'] for e in selected) + selected_charts = {move[e]['target'] for e in selected} + sides = side_rows(selected_charts, selected_roles) + d = size-quotient_rank(sides, selected_roles) + if d: + local_group_cuts[selected,d] += 1 + remember(local_groups, (selected,d), (len(sides), i, d, sides)) + + if op == 'MOVE': + before, after, _ = args + assert charts[r] == before + live_at[spaces[before]].remove(r) + live_at[spaces[after]].add(r) + charts[r] = after + elif op == 'INIT': + assert not rows[r] and charts[r] is None + charts[r] = args[0] + live_at[spaces[charts[r]]].add(r) + elif op == 'CLEAR': + assert charts[r] == args[0] + live_at[spaces[charts[r]]].remove(r) + rows[r], charts[r] = {}, None + row_ids[r] = len(rows) + i + else: + key = args[0 if op == 'SCALE' else 1] + if key not in coefficients: + coefficients[key] = Fraction(key) + multiplier = coefficients[key] + if op == 'SCALE': + assert charts[r] == args[1] + rows[r] = {j:multiplier*x for j,x in rows[r].items()} + else: + source = args[0] + assert charts[r] == charts[source] == args[2] + assert op == 'ADD' or op == 'COPY' and not rows[r] + for j,x in rows[source].items(): + value = rows[r].get(j,0)+multiplier*x + if value: + rows[r][j] = value + else: + rows[r].pop(j,None) + row_ids[r] = len(rows) + i + + def price_upper(sites): + prices = Counter(move[i]['rank'] for i in sites) + saving = gate.smul(gate.moment(prices, owned.TARGET), owned.STAGES) + return dict(ranks=prices, sites=sorted(sites), saving_upper=gate.show(saving)[1], + resulting_moment_upper=gate.show(gate.add(baseline, (0,saving[1])))[1]) + + # Keep one occurrence in at most one replacement group. Overgrant choosing + # the highest-rank erased calls without constraining the carrier rows. + options = [(set(selected), tuple(sorted(selected, key=lambda e: (move[e]['rank'], e), reverse=True)[:d])) + for selected,d in sorted(local_groups)] + + def packed_price_bound(index, used, deleted): + if index == len(options): + return [(deleted, used)] + selected, omitted = options[index] + outcomes = packed_price_bound(index+1, used, deleted) + if not used & selected: + outcomes += packed_price_bound(index+1, used | selected, deleted + omitted) + return outcomes + + cases = packed_price_bound(0, set(), ()) + current = gate.moment(Counter(m['rank'] for m in moves), owned.TARGET) + total_rank = sum(m['rank'] for m in moves) + best = max(cases, key=lambda case: sum(move[e]['rank'] for e in case[0])) + remaining_rank = total_rank - sum(move[e]['rank'] for e in best[0]) + packed = gate.power(remaining_rank, owned.TARGET) + packed_credit = gate.smul(gate.sub(current, packed), owned.STAGES) + singletons = price_upper(local_sites) + retained_rank_drop = max((price_upper(deleted) for deleted,_ in cases), + key=lambda x: Fraction(x['saving_upper'])) + + screened = {} + for name in stats: + screened[name] = dict(deficit_cut_histogram=stats[name], unique_event_deletion_upper=price_upper(drop_union[name]), + positive_group_bounds=[dict(events=events, deficit=d, witness_cut=spec[1], + supply_count=spec[0], side_roles=spec[3]) + for (events,d),spec in sorted(bound_groups[name].items())]) + return dict(status='EXHAUSTED' if examined == len(scope) else 'CAP_PENDING', head=owned.HEAD, + target=str(owned.TARGET), invoice=invoice, baseline=gate.show(baseline), + caps=dict(maximal_families=maximal_cap, seconds=seconds), + pins=owned.PINS | {'round8/evidence/complex/owned.py':PREDECESSOR}, + first_pending=first_pending, clock_cuts_total=len(scope), clock_cuts_tested=examined, + clock_cuts_unresolved=len(scope)-examined, exact_active_sets_total=53, + exact_active_sets_tested=len(used_groups), maximal_families_total=len(families), + maximal_families_tested=len(used_families), basis_count=len(bases), quotient_count=len(ranks), + family_stats=[dict(maximal_events=sorted(a), counts=group_stats[j]) for j,a in enumerate(families)], + screened=screened, + singleton_target_local=dict(price_upper=singletons, witnesses=[ + dict(event=i, cut=spec[1], rank=spec[2], side_roles=spec[3], eligible_cuts=site_counts[i]) + for i,spec in sorted(local_sites.items())]), + exact_positive_target_subgroups=[dict(events=selected, deficit=d, witness_cut=spec[1], + supply_count=spec[0], side_roles=spec[3], + eligible_cuts=local_group_cuts[selected,d]) + for (selected,d),spec in sorted(local_groups.items())], + disjoint_group_deletion=dict(price_upper=retained_rank_drop, cases=len(cases), + additive_packing=dict(deleted=list(best[0]), rank=remaining_rank, + saving_upper=gate.show(packed_credit)[1], + resulting_moment_upper=gate.show(gate.add(baseline, (0,packed_credit[1])))[1])), + controls=['fraction-free elimination for singular, independent and negative pivot cases', + 'rational row denominator clearing', 'exact reconstructed paid invoice'], seed=None) + + +if __name__ == '__main__': + if not __debug__: + raise RuntimeError('Run with assertions enabled') + parser = argparse.ArgumentParser(description=__doc__) + for key in ('peer_root','caller_path','gate_path','owned_path'): + parser.add_argument(key, type=Path) + parser.add_argument('--seconds', type=int, default=720) + parser.add_argument('--maximal-cap', type=int, default=42) + args = parser.parse_args() + assert 0 < args.seconds <= 720 and 0 < args.maximal_cap <= 42 + print(json.dumps(run(**vars(args)), indent=2, sort_keys=True)) diff --git a/research/p104-serial-temporal-support-bound/source7165/inputs/PEER-NOTICE.txt b/research/p104-serial-temporal-support-bound/source7165/inputs/PEER-NOTICE.txt new file mode 100644 index 0000000000..ad393f2b6e --- /dev/null +++ b/research/p104-serial-temporal-support-bound/source7165/inputs/PEER-NOTICE.txt @@ -0,0 +1,14 @@ +Prepared for Clear1nsight with substantial OpenAI Codex and ChatGPT Pro +assistance. New work is Apache-2.0. + +Rohan Arun supplied the exact #7156 word, its directed supplier/caller +application, and the signed #7113 caller. His #7142 charged an input +boundary for a different split. Ali Romman supplied the causal-history +owned-buffer identity. Jerry Chen / CubeJerry supplied contact-free +retiming and temporal verification. Matarener supplied the helper +kernels. dillona supplied the temporal constructor, chart-595 source and +scalar-width work. ToikY supplied the pricing engines and earlier chart +leads. The #7155 composition and guarded suffix retain their authors. +Douglas Colkitt and the #7000/#7001 reviewers supplied the retained +all-width application and fixed-tape proof. All original source credits, +licenses and notices remain in the authenticated #7156 archive. diff --git a/research/p104-serial-temporal-support-bound/source7165/inputs/caller/CALLER.json b/research/p104-serial-temporal-support-bound/source7165/inputs/caller/CALLER.json new file mode 100644 index 0000000000..9451ceaf6e --- /dev/null +++ b/research/p104-serial-temporal-support-bound/source7165/inputs/caller/CALLER.json @@ -0,0 +1 @@ +{"schema":"mixed-root-caller/1","stages":17,"ambient_rank":145,"roles":72,"types":{"A":{"form":"two-chain-HOST2","roles":36,"offset":0,"ports":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,18,19,20,21,22,23,24,25,26,28,29,30,31,32,33,36,37,38,39,40,41,43,44,45,46,48,49,50,51,52,53,54,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103],"alpha2":"-1","beta2":"0","diagonal":[[-1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[-1,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0],[-1,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0],[-1,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0],[-1,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0],[-1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0],[-1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0],[-1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0],[-1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0],[-1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1],[-1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[-1,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0],[-1,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0],[-1,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0],[-1,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0],[-1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0],[-1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0],[-1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0],[-1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0],[-1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1]]},"B":{"form":"hosted-HOST","roles":36,"offset":36,"ports":[15,17,27,34,35,42,47,55],"diagonal":[[-1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[-1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],[-1,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,0,1,1,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1],[-1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1],[-1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0],[-1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0],[-1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0],[-1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,0,0],[-1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0],[-1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0],[-1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0],[-1,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,0,0,0],[-1,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0],[-1,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0],[-1,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0],[-1,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0],[-1,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0],[-1,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0],[-1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0],[-1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0],[-1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0]],"pairs":[[0,1,"-1","1/2","-1/2"],[2,3,"-1","1/2","-1/2"],[4,5,"-1","1/2","-1/2"],[6,7,"-1","1/2","-1/2"],[8,9,"-1","1/2","-1/2"],[10,11,"-1","1/2","-1/2"],[12,13,"-1","1/2","-1/2"],[14,15,"-1","1/2","-1/2"],[16,17,"-1","1/2","-1/2"],[22,23,"-1","1/2","-1/2"],[24,25,"-1","1/2","-1/2"],[26,27,"-1","1/2","-1/2"],[28,29,"-1","1/2","-1/2"],[30,31,"-1","1/2","-1/2"],[32,33,"-1","1/2","-1/2"],[34,35,"-1","1/2","-1/2"],[36,37,"-1","1/2","-1/2"],[38,39,"-1","1/2","-1/2"]]}},"events":[["B","ADD",37,36,"7"],["B","ADD",38,36,"-1/2"],["B","ADD",39,36,"3/2"],["B","SCALE",36,"-2"],["B","ADD",36,37,"1"],["B","ADD",36,38,"2"],["B","ADD",36,39,"-2"],["B","IDLE_ONE",36,[1]],["B","ADD",36,39,"2"],["B","ADD",36,38,"-2"],["B","ADD",36,37,"-1"],["B","SCALE",36,"-1/2"],["B","ADD",39,36,"-3/2"],["B","ADD",38,36,"1/2"],["B","ADD",37,36,"-7"],["B","ADD",39,37,"-1/2"],["B","SCALE",37,"-2"],["B","ADD",37,38,"4"],["B","ADD",37,39,"-8"],["B","IDLE_ONE",37,[1]],["B","ADD",37,39,"8"],["B","ADD",37,38,"-4"],["B","SCALE",37,"-1/2"],["B","ADD",39,37,"1/2"],["B","ADD",37,36,"1"],["B","ADD",38,36,"1/2"],["B","ADD",39,36,"1/2"],["B","ADD",36,38,"-1"],["B","ADD",38,37,"1/2"],["B","SCALE",37,"-1/2"],["B","ADD",37,38,"2"],["B","ADD",37,39,"-1"],["B","SCALE",37,"-1/2"],["B","ADD",37,36,"-1/2"],["B","ADD",36,37,"1"],["B","LAMBDA",36,1],["A","SCALE",1,"-1"],["A","ADD",1,0,"1"],["A","ADD",19,18,"-1"],["A","SCALE",19,"-1"],["A","LAMBDA",1,1],["A","LAMBDA",19,-1],["A","SCALE",19,"-1"],["J",1,[1,0,18,19],[36,37,"-1","1/2"]],["A","LAMBDA",1,-1],["A","LAMBDA",19,1],["A","SCALE",19,"-1"],["A","ADD",0,1,"-1"],["A","ADD",18,19,"-1"],["A","SCALE",19,"-1"],["A","ADD",19,18,"1"],["A","ADD",1,0,"-1"],["A","SCALE",1,"-1"],["B","LAMBDA",36,-1],["B","SCALE",37,"-2"],["B","ADD",37,39,"1"],["B","ADD",37,38,"-2"],["B","SCALE",37,"-2"],["B","ADD",38,37,"-1/2"],["B","ADD",36,38,"1"],["B","ADD",39,36,"-1/2"],["B","ADD",38,36,"-1/2"],["B","ADD",37,36,"-1"],["B","ADD",37,36,"12/5"],["B","ADD",38,36,"1/5"],["B","ADD",39,36,"3/10"],["B","ADD",40,36,"-1/40"],["B","ADD",41,36,"3/40"],["B","SCALE",36,"-1/10"],["B","ADD",36,37,"-1"],["B","ADD",36,38,"-2"],["B","ADD",36,39,"6"],["B","ADD",36,40,"20"],["B","ADD",36,41,"8"],["B","IDLE_ONE",36,[2]],["B","ADD",36,41,"-8"],["B","ADD",36,40,"-20"],["B","ADD",36,39,"-6"],["B","ADD",36,38,"2"],["B","ADD",36,37,"1"],["B","SCALE",36,"-10"],["B","ADD",41,36,"-3/40"],["B","ADD",40,36,"1/40"],["B","ADD",39,36,"-3/10"],["B","ADD",38,36,"-1/5"],["B","ADD",37,36,"-12/5"],["B","ADD",37,36,"7/3"],["B","ADD",38,36,"1/6"],["B","ADD",39,36,"1/6"],["B","ADD",41,36,"1/12"],["B","SCALE",36,"1/3"],["B","ADD",36,37,"-2"],["B","ADD",36,38,"-8"],["B","ADD",36,39,"20"],["B","ADD",36,40,"68"],["B","ADD",36,41,"28"],["B","IDLE_ONE",36,[2]],["B","ADD",36,41,"-28"],["B","ADD",36,40,"-68"],["B","ADD",36,39,"-20"],["B","ADD",36,38,"8"],["B","ADD",36,37,"2"],["B","SCALE",36,"3"],["B","ADD",41,36,"-1/12"],["B","ADD",39,36,"-1/6"],["B","ADD",38,36,"-1/6"],["B","ADD",37,36,"-7/3"],["B","ADD",37,36,"3"],["B","ADD",38,36,"1/2"],["B","ADD",39,36,"3/2"],["B","ADD",40,36,"-1/2"],["B","ADD",41,36,"1/2"],["B","SCALE",36,"-1"],["B","ADD",36,37,"1/2"],["B","ADD",36,39,"-1"],["B","ADD",36,40,"-4"],["B","ADD",38,37,"-1/2"],["B","ADD",39,37,"-2"],["B","ADD",40,37,"1/2"],["B","SCALE",37,"1/2"],["B","ADD",37,38,"1"],["B","ADD",37,39,"-2"],["B","ADD",37,40,"-8"],["B","ADD",37,41,"-4"],["B","SCALE",37,"1/2"],["B","ADD",37,36,"-1/2"],["B","ADD",36,37,"1"],["B","LAMBDA",36,1],["A","SCALE",2,"-1"],["A","ADD",2,0,"1"],["A","ADD",1,0,"-2"],["A","ADD",19,18,"-2"],["A","ADD",20,18,"-1"],["A","SCALE",20,"-1"],["A","LAMBDA",2,1],["A","LAMBDA",20,-1],["A","SCALE",20,"-1"],["J",2,[2,0,18,20],[36,37,"-1","1/2"]],["A","LAMBDA",2,-1],["A","LAMBDA",20,1],["A","SCALE",20,"-1"],["A","ADD",0,2,"-1"],["A","ADD",18,20,"-1"],["A","SCALE",20,"-1"],["A","ADD",20,18,"1"],["A","ADD",19,18,"2"],["A","ADD",1,0,"2"],["A","ADD",2,0,"-1"],["A","SCALE",2,"-1"],["B","LAMBDA",36,-1],["B","SCALE",37,"2"],["B","ADD",37,41,"4"],["B","ADD",37,40,"8"],["B","ADD",37,39,"2"],["B","ADD",37,38,"-1"],["B","SCALE",37,"2"],["B","ADD",40,37,"-1/2"],["B","ADD",39,37,"2"],["B","ADD",38,37,"1/2"],["B","ADD",36,40,"4"],["B","ADD",36,39,"1"],["B","ADD",36,37,"-1/2"],["B","SCALE",36,"-1"],["B","ADD",41,36,"-1/2"],["B","ADD",40,36,"1/2"],["B","ADD",39,36,"-3/2"],["B","ADD",38,36,"-1/2"],["B","ADD",37,36,"-3"],["B","ADD",37,36,"7"],["B","ADD",38,36,"5/2"],["B","ADD",39,36,"19/2"],["B","ADD",40,36,"-5/4"],["B","ADD",41,36,"-9/4"],["B","ADD",42,36,"-1/2"],["B","ADD",43,36,"3/2"],["B","SCALE",36,"-2"],["B","ADD",36,37,"7"],["B","ADD",36,38,"26"],["B","ADD",36,39,"-66"],["B","ADD",36,40,"-212"],["B","ADD",36,41,"-132"],["B","ADD",36,42,"14"],["B","ADD",36,43,"-26"],["B","IDLE_ONE",36,[3]],["B","ADD",36,43,"26"],["B","ADD",36,42,"-14"],["B","ADD",36,41,"132"],["B","ADD",36,40,"212"],["B","ADD",36,39,"66"],["B","ADD",36,38,"-26"],["B","ADD",36,37,"-7"],["B","SCALE",36,"-1/2"],["B","ADD",43,36,"-3/2"],["B","ADD",42,36,"1/2"],["B","ADD",41,36,"9/4"],["B","ADD",40,36,"5/4"],["B","ADD",39,36,"-19/2"],["B","ADD",38,36,"-5/2"],["B","ADD",37,36,"-7"],["B","ADD",37,36,"22/3"],["B","ADD",38,36,"8/3"],["B","ADD",39,36,"61/6"],["B","ADD",40,36,"-4/3"],["B","ADD",41,36,"-29/12"],["B","ADD",42,36,"-1/2"],["B","ADD",43,36,"5/3"],["B","SCALE",36,"2/3"],["B","ADD",36,37,"2"],["B","ADD",36,38,"8"],["B","ADD",36,39,"-20"],["B","ADD",36,40,"-64"],["B","ADD",36,41,"-40"],["B","ADD",36,42,"4"],["B","ADD",36,43,"-8"],["B","IDLE_ONE",36,[3]],["B","ADD",36,43,"8"],["B","ADD",36,42,"-4"],["B","ADD",36,41,"40"],["B","ADD",36,40,"64"],["B","ADD",36,39,"20"],["B","ADD",36,38,"-8"],["B","ADD",36,37,"-2"],["B","SCALE",36,"3/2"],["B","ADD",43,36,"-5/3"],["B","ADD",42,36,"1/2"],["B","ADD",41,36,"29/12"],["B","ADD",40,36,"4/3"],["B","ADD",39,36,"-61/6"],["B","ADD",38,36,"-8/3"],["B","ADD",37,36,"-22/3"],["B","ADD",37,36,"1"],["B","ADD",38,36,"-1/2"],["B","ADD",39,36,"-5/2"],["B","ADD",40,36,"1/4"],["B","ADD",41,36,"3/4"],["B","ADD",42,36,"1/2"],["B","ADD",43,36,"1/2"],["B","ADD",36,38,"-1"],["B","ADD",36,39,"2"],["B","ADD",36,40,"6"],["B","ADD",36,41,"4"],["B","ADD",36,42,"-1"],["B","ADD",38,37,"-1/2"],["B","ADD",39,37,"-2"],["B","ADD",40,37,"1/4"],["B","ADD",41,37,"1/2"],["B","ADD",42,37,"1/2"],["B","SCALE",37,"-1/2"],["B","ADD",37,39,"-1"],["B","ADD",37,40,"-4"],["B","ADD",37,41,"-2"],["B","ADD",37,42,"2"],["B","ADD",37,43,"-1"],["B","SCALE",37,"-1/2"],["B","ADD",37,36,"-1/2"],["B","ADD",36,37,"1"],["B","LAMBDA",36,1],["A","SCALE",3,"-1"],["A","ADD",3,0,"1"],["A","ADD",1,0,"-2"],["A","ADD",2,0,"-2"],["A","ADD",19,18,"-2"],["A","ADD",20,18,"-2"],["A","ADD",21,18,"-1"],["A","SCALE",21,"-1"],["A","LAMBDA",3,1],["A","LAMBDA",21,-1],["A","SCALE",21,"-1"],["J",3,[3,0,18,21],[36,37,"-1","1/2"]],["A","LAMBDA",3,-1],["A","LAMBDA",21,1],["A","SCALE",21,"-1"],["A","ADD",0,3,"-1"],["A","ADD",18,21,"-1"],["A","SCALE",21,"-1"],["A","ADD",21,18,"1"],["A","ADD",20,18,"2"],["A","ADD",19,18,"2"],["A","ADD",2,0,"2"],["A","ADD",1,0,"2"],["A","ADD",3,0,"-1"],["A","SCALE",3,"-1"],["B","LAMBDA",36,-1],["B","SCALE",37,"-2"],["B","ADD",37,43,"1"],["B","ADD",37,42,"-2"],["B","ADD",37,41,"2"],["B","ADD",37,40,"4"],["B","ADD",37,39,"1"],["B","SCALE",37,"-2"],["B","ADD",42,37,"-1/2"],["B","ADD",41,37,"-1/2"],["B","ADD",40,37,"-1/4"],["B","ADD",39,37,"2"],["B","ADD",38,37,"1/2"],["B","ADD",36,42,"1"],["B","ADD",36,41,"-4"],["B","ADD",36,40,"-6"],["B","ADD",36,39,"-2"],["B","ADD",36,38,"1"],["B","ADD",43,36,"-1/2"],["B","ADD",42,36,"-1/2"],["B","ADD",41,36,"-3/4"],["B","ADD",40,36,"-1/4"],["B","ADD",39,36,"5/2"],["B","ADD",38,36,"1/2"],["B","ADD",37,36,"-1"],["B","ADD",37,36,"12/5"],["B","ADD",38,36,"1/5"],["B","ADD",39,36,"3/10"],["B","ADD",40,36,"-1/10"],["B","ADD",41,36,"1/20"],["B","ADD",42,36,"1/5"],["B","ADD",43,36,"3/10"],["B","ADD",44,36,"-1/40"],["B","ADD",45,36,"3/40"],["B","SCALE",36,"-1/10"],["B","ADD",36,37,"-1"],["B","ADD",36,38,"-2"],["B","ADD",36,39,"6"],["B","ADD",36,40,"20"],["B","ADD",36,41,"12"],["B","ADD",36,42,"-2"],["B","ADD",36,43,"6"],["B","ADD",36,44,"20"],["B","ADD",36,45,"8"],["B","IDLE_ONE",36,[4]],["B","ADD",36,45,"-8"],["B","ADD",36,44,"-20"],["B","ADD",36,43,"-6"],["B","ADD",36,42,"2"],["B","ADD",36,41,"-12"],["B","ADD",36,40,"-20"],["B","ADD",36,39,"-6"],["B","ADD",36,38,"2"],["B","ADD",36,37,"1"],["B","SCALE",36,"-10"],["B","ADD",45,36,"-3/40"],["B","ADD",44,36,"1/40"],["B","ADD",43,36,"-3/10"],["B","ADD",42,36,"-1/5"],["B","ADD",41,36,"-1/20"],["B","ADD",40,36,"1/10"],["B","ADD",39,36,"-3/10"],["B","ADD",38,36,"-1/5"],["B","ADD",37,36,"-12/5"],["B","ADD",37,36,"7/3"],["B","ADD",38,36,"1/6"],["B","ADD",39,36,"1/6"],["B","ADD",40,36,"-1/12"],["B","ADD",41,36,"1/12"],["B","ADD",42,36,"1/6"],["B","ADD",43,36,"1/6"],["B","ADD",45,36,"1/12"],["B","SCALE",36,"1/3"],["B","ADD",36,37,"-2"],["B","ADD",36,38,"-8"],["B","ADD",36,39,"20"],["B","ADD",36,40,"64"],["B","ADD",36,41,"40"],["B","ADD",36,42,"-8"],["B","ADD",36,43,"20"],["B","ADD",36,44,"68"],["B","ADD",36,45,"28"],["B","IDLE_ONE",36,[4]],["B","ADD",36,45,"-28"],["B","ADD",36,44,"-68"],["B","ADD",36,43,"-20"],["B","ADD",36,42,"8"],["B","ADD",36,41,"-40"],["B","ADD",36,40,"-64"],["B","ADD",36,39,"-20"],["B","ADD",36,38,"8"],["B","ADD",36,37,"2"],["B","SCALE",36,"3"],["B","ADD",45,36,"-1/12"],["B","ADD",43,36,"-1/6"],["B","ADD",42,36,"-1/6"],["B","ADD",41,36,"-1/12"],["B","ADD",40,36,"1/12"],["B","ADD",39,36,"-1/6"],["B","ADD",38,36,"-1/6"],["B","ADD",37,36,"-7/3"],["B","ADD",37,36,"3"],["B","ADD",38,36,"1/2"],["B","ADD",39,36,"3/2"],["B","ADD",40,36,"-1/4"],["B","ADD",41,36,"-1/4"],["B","ADD",42,36,"1/2"],["B","ADD",43,36,"3/2"],["B","ADD",44,36,"-1/2"],["B","ADD",45,36,"1/2"],["B","SCALE",36,"-1"],["B","ADD",36,37,"1/2"],["B","ADD",36,39,"-1"],["B","ADD",36,40,"-4"],["B","ADD",36,41,"-2"],["B","ADD",36,43,"-1"],["B","ADD",36,44,"-4"],["B","ADD",38,37,"-1/2"],["B","ADD",39,37,"-2"],["B","ADD",40,37,"1/4"],["B","ADD",41,37,"1/2"],["B","ADD",42,37,"-1/2"],["B","ADD",43,37,"-2"],["B","ADD",44,37,"1/2"],["B","SCALE",37,"1/2"],["B","ADD",37,38,"1"],["B","ADD",37,39,"-2"],["B","ADD",37,40,"-6"],["B","ADD",37,41,"-4"],["B","ADD",37,42,"1"],["B","ADD",37,43,"-2"],["B","ADD",37,44,"-8"],["B","ADD",37,45,"-4"],["B","SCALE",37,"1/2"],["B","ADD",37,36,"-1/2"],["B","ADD",36,37,"1"],["B","LAMBDA",36,1],["A","SCALE",4,"-1"],["A","ADD",4,0,"1"],["A","ADD",1,0,"-2"],["A","ADD",2,0,"-2"],["A","ADD",3,0,"-2"],["A","ADD",19,18,"-2"],["A","ADD",20,18,"-2"],["A","ADD",21,18,"-2"],["A","ADD",22,18,"-1"],["A","SCALE",22,"-1"],["A","LAMBDA",4,1],["A","LAMBDA",22,-1],["A","SCALE",22,"-1"],["J",4,[4,0,18,22],[36,37,"-1","1/2"]],["A","LAMBDA",4,-1],["A","LAMBDA",22,1],["A","SCALE",22,"-1"],["A","ADD",0,4,"-1"],["A","ADD",18,22,"-1"],["A","SCALE",22,"-1"],["A","ADD",22,18,"1"],["A","ADD",21,18,"2"],["A","ADD",20,18,"2"],["A","ADD",19,18,"2"],["A","ADD",3,0,"2"],["A","ADD",2,0,"2"],["A","ADD",1,0,"2"],["A","ADD",4,0,"-1"],["A","SCALE",4,"-1"],["B","LAMBDA",36,-1],["B","SCALE",37,"2"],["B","ADD",37,45,"4"],["B","ADD",37,44,"8"],["B","ADD",37,43,"2"],["B","ADD",37,42,"-1"],["B","ADD",37,41,"4"],["B","ADD",37,40,"6"],["B","ADD",37,39,"2"],["B","ADD",37,38,"-1"],["B","SCALE",37,"2"],["B","ADD",44,37,"-1/2"],["B","ADD",43,37,"2"],["B","ADD",42,37,"1/2"],["B","ADD",41,37,"-1/2"],["B","ADD",40,37,"-1/4"],["B","ADD",39,37,"2"],["B","ADD",38,37,"1/2"],["B","ADD",36,44,"4"],["B","ADD",36,43,"1"],["B","ADD",36,41,"2"],["B","ADD",36,40,"4"],["B","ADD",36,39,"1"],["B","ADD",36,37,"-1/2"],["B","SCALE",36,"-1"],["B","ADD",45,36,"-1/2"],["B","ADD",44,36,"1/2"],["B","ADD",43,36,"-3/2"],["B","ADD",42,36,"-1/2"],["B","ADD",41,36,"1/4"],["B","ADD",40,36,"1/4"],["B","ADD",39,36,"-3/2"],["B","ADD",38,36,"-1/2"],["B","ADD",37,36,"-3"],["B","ADD",37,36,"7"],["B","ADD",38,36,"5/2"],["B","ADD",39,36,"19/2"],["B","ADD",40,36,"-5/4"],["B","ADD",41,36,"-9/4"],["B","ADD",42,36,"5/2"],["B","ADD",43,36,"19/2"],["B","ADD",44,36,"-5/4"],["B","ADD",45,36,"-9/4"],["B","ADD",46,36,"-1/2"],["B","ADD",47,36,"3/2"],["B","SCALE",36,"-2"],["B","ADD",36,37,"7"],["B","ADD",36,38,"26"],["B","ADD",36,39,"-66"],["B","ADD",36,40,"-212"],["B","ADD",36,41,"-132"],["B","ADD",36,42,"26"],["B","ADD",36,43,"-66"],["B","ADD",36,44,"-212"],["B","ADD",36,45,"-132"],["B","ADD",36,46,"14"],["B","ADD",36,47,"-26"],["B","IDLE_ONE",36,[5]],["B","ADD",36,47,"26"],["B","ADD",36,46,"-14"],["B","ADD",36,45,"132"],["B","ADD",36,44,"212"],["B","ADD",36,43,"66"],["B","ADD",36,42,"-26"],["B","ADD",36,41,"132"],["B","ADD",36,40,"212"],["B","ADD",36,39,"66"],["B","ADD",36,38,"-26"],["B","ADD",36,37,"-7"],["B","SCALE",36,"-1/2"],["B","ADD",47,36,"-3/2"],["B","ADD",46,36,"1/2"],["B","ADD",45,36,"9/4"],["B","ADD",44,36,"5/4"],["B","ADD",43,36,"-19/2"],["B","ADD",42,36,"-5/2"],["B","ADD",41,36,"9/4"],["B","ADD",40,36,"5/4"],["B","ADD",39,36,"-19/2"],["B","ADD",38,36,"-5/2"],["B","ADD",37,36,"-7"],["B","ADD",37,36,"22/3"],["B","ADD",38,36,"8/3"],["B","ADD",39,36,"61/6"],["B","ADD",40,36,"-4/3"],["B","ADD",41,36,"-29/12"],["B","ADD",42,36,"8/3"],["B","ADD",43,36,"61/6"],["B","ADD",44,36,"-4/3"],["B","ADD",45,36,"-29/12"],["B","ADD",46,36,"-1/2"],["B","ADD",47,36,"5/3"],["B","SCALE",36,"2/3"],["B","ADD",36,37,"2"],["B","ADD",36,38,"8"],["B","ADD",36,39,"-20"],["B","ADD",36,40,"-64"],["B","ADD",36,41,"-40"],["B","ADD",36,42,"8"],["B","ADD",36,43,"-20"],["B","ADD",36,44,"-64"],["B","ADD",36,45,"-40"],["B","ADD",36,46,"4"],["B","ADD",36,47,"-8"],["B","IDLE_ONE",36,[5]],["B","ADD",36,47,"8"],["B","ADD",36,46,"-4"],["B","ADD",36,45,"40"],["B","ADD",36,44,"64"],["B","ADD",36,43,"20"],["B","ADD",36,42,"-8"],["B","ADD",36,41,"40"],["B","ADD",36,40,"64"],["B","ADD",36,39,"20"],["B","ADD",36,38,"-8"],["B","ADD",36,37,"-2"],["B","SCALE",36,"3/2"],["B","ADD",47,36,"-5/3"],["B","ADD",46,36,"1/2"],["B","ADD",45,36,"29/12"],["B","ADD",44,36,"4/3"],["B","ADD",43,36,"-61/6"],["B","ADD",42,36,"-8/3"],["B","ADD",41,36,"29/12"],["B","ADD",40,36,"4/3"],["B","ADD",39,36,"-61/6"],["B","ADD",38,36,"-8/3"],["B","ADD",37,36,"-22/3"],["B","ADD",37,36,"1"],["B","ADD",38,36,"-1/2"],["B","ADD",39,36,"-5/2"],["B","ADD",40,36,"1/4"],["B","ADD",41,36,"3/4"],["B","ADD",42,36,"-1/2"],["B","ADD",43,36,"-5/2"],["B","ADD",44,36,"1/4"],["B","ADD",45,36,"3/4"],["B","ADD",46,36,"1/2"],["B","ADD",47,36,"1/2"],["B","ADD",36,38,"-1"],["B","ADD",36,39,"2"],["B","ADD",36,40,"6"],["B","ADD",36,41,"4"],["B","ADD",36,42,"-1"],["B","ADD",36,43,"2"],["B","ADD",36,44,"6"],["B","ADD",36,45,"4"],["B","ADD",36,46,"-1"],["B","ADD",38,37,"-1/2"],["B","ADD",39,37,"-2"],["B","ADD",40,37,"1/4"],["B","ADD",41,37,"1/2"],["B","ADD",42,37,"-1/2"],["B","ADD",43,37,"-2"],["B","ADD",44,37,"1/4"],["B","ADD",45,37,"1/2"],["B","ADD",46,37,"1/2"],["B","SCALE",37,"-1/2"],["B","ADD",37,39,"-1"],["B","ADD",37,40,"-4"],["B","ADD",37,41,"-2"],["B","ADD",37,43,"-1"],["B","ADD",37,44,"-4"],["B","ADD",37,45,"-2"],["B","ADD",37,46,"2"],["B","ADD",37,47,"-1"],["B","SCALE",37,"-1/2"],["B","ADD",37,36,"-1/2"],["B","ADD",36,37,"1"],["B","LAMBDA",36,1],["A","SCALE",5,"-1"],["A","ADD",5,0,"1"],["A","ADD",1,0,"-2"],["A","ADD",2,0,"-2"],["A","ADD",3,0,"-2"],["A","ADD",4,0,"-2"],["A","ADD",19,18,"-2"],["A","ADD",20,18,"-2"],["A","ADD",21,18,"-2"],["A","ADD",22,18,"-2"],["A","ADD",23,18,"-1"],["A","SCALE",23,"-1"],["A","LAMBDA",5,1],["A","LAMBDA",23,-1],["A","SCALE",23,"-1"],["J",5,[5,0,18,23],[36,37,"-1","1/2"]],["A","LAMBDA",5,-1],["A","LAMBDA",23,1],["A","SCALE",23,"-1"],["A","ADD",0,5,"-1"],["A","ADD",18,23,"-1"],["A","SCALE",23,"-1"],["A","ADD",23,18,"1"],["A","ADD",22,18,"2"],["A","ADD",21,18,"2"],["A","ADD",20,18,"2"],["A","ADD",19,18,"2"],["A","ADD",4,0,"2"],["A","ADD",3,0,"2"],["A","ADD",2,0,"2"],["A","ADD",1,0,"2"],["A","ADD",5,0,"-1"],["A","SCALE",5,"-1"],["B","LAMBDA",36,-1],["B","SCALE",37,"-2"],["B","ADD",37,47,"1"],["B","ADD",37,46,"-2"],["B","ADD",37,45,"2"],["B","ADD",37,44,"4"],["B","ADD",37,43,"1"],["B","ADD",37,41,"2"],["B","ADD",37,40,"4"],["B","ADD",37,39,"1"],["B","SCALE",37,"-2"],["B","ADD",46,37,"-1/2"],["B","ADD",45,37,"-1/2"],["B","ADD",44,37,"-1/4"],["B","ADD",43,37,"2"],["B","ADD",42,37,"1/2"],["B","ADD",41,37,"-1/2"],["B","ADD",40,37,"-1/4"],["B","ADD",39,37,"2"],["B","ADD",38,37,"1/2"],["B","ADD",36,46,"1"],["B","ADD",36,45,"-4"],["B","ADD",36,44,"-6"],["B","ADD",36,43,"-2"],["B","ADD",36,42,"1"],["B","ADD",36,41,"-4"],["B","ADD",36,40,"-6"],["B","ADD",36,39,"-2"],["B","ADD",36,38,"1"],["B","ADD",47,36,"-1/2"],["B","ADD",46,36,"-1/2"],["B","ADD",45,36,"-3/4"],["B","ADD",44,36,"-1/4"],["B","ADD",43,36,"5/2"],["B","ADD",42,36,"1/2"],["B","ADD",41,36,"-3/4"],["B","ADD",40,36,"-1/4"],["B","ADD",39,36,"5/2"],["B","ADD",38,36,"1/2"],["B","ADD",37,36,"-1"],["B","ADD",37,36,"12/5"],["B","ADD",38,36,"1/5"],["B","ADD",39,36,"3/10"],["B","ADD",40,36,"-1/10"],["B","ADD",41,36,"1/20"],["B","ADD",42,36,"1/5"],["B","ADD",43,36,"3/10"],["B","ADD",44,36,"-1/10"],["B","ADD",45,36,"1/20"],["B","ADD",46,36,"1/5"],["B","ADD",47,36,"3/10"],["B","ADD",48,36,"-1/40"],["B","ADD",49,36,"3/40"],["B","SCALE",36,"-1/10"],["B","ADD",36,37,"-1"],["B","ADD",36,38,"-2"],["B","ADD",36,39,"6"],["B","ADD",36,40,"20"],["B","ADD",36,41,"12"],["B","ADD",36,42,"-2"],["B","ADD",36,43,"6"],["B","ADD",36,44,"20"],["B","ADD",36,45,"12"],["B","ADD",36,46,"-2"],["B","ADD",36,47,"6"],["B","ADD",36,48,"20"],["B","ADD",36,49,"8"],["B","IDLE_ONE",36,[6]],["B","ADD",36,49,"-8"],["B","ADD",36,48,"-20"],["B","ADD",36,47,"-6"],["B","ADD",36,46,"2"],["B","ADD",36,45,"-12"],["B","ADD",36,44,"-20"],["B","ADD",36,43,"-6"],["B","ADD",36,42,"2"],["B","ADD",36,41,"-12"],["B","ADD",36,40,"-20"],["B","ADD",36,39,"-6"],["B","ADD",36,38,"2"],["B","ADD",36,37,"1"],["B","SCALE",36,"-10"],["B","ADD",49,36,"-3/40"],["B","ADD",48,36,"1/40"],["B","ADD",47,36,"-3/10"],["B","ADD",46,36,"-1/5"],["B","ADD",45,36,"-1/20"],["B","ADD",44,36,"1/10"],["B","ADD",43,36,"-3/10"],["B","ADD",42,36,"-1/5"],["B","ADD",41,36,"-1/20"],["B","ADD",40,36,"1/10"],["B","ADD",39,36,"-3/10"],["B","ADD",38,36,"-1/5"],["B","ADD",37,36,"-12/5"],["B","ADD",37,36,"7/3"],["B","ADD",38,36,"1/6"],["B","ADD",39,36,"1/6"],["B","ADD",40,36,"-1/12"],["B","ADD",41,36,"1/12"],["B","ADD",42,36,"1/6"],["B","ADD",43,36,"1/6"],["B","ADD",44,36,"-1/12"],["B","ADD",45,36,"1/12"],["B","ADD",46,36,"1/6"],["B","ADD",47,36,"1/6"],["B","ADD",49,36,"1/12"],["B","SCALE",36,"1/3"],["B","ADD",36,37,"-2"],["B","ADD",36,38,"-8"],["B","ADD",36,39,"20"],["B","ADD",36,40,"64"],["B","ADD",36,41,"40"],["B","ADD",36,42,"-8"],["B","ADD",36,43,"20"],["B","ADD",36,44,"64"],["B","ADD",36,45,"40"],["B","ADD",36,46,"-8"],["B","ADD",36,47,"20"],["B","ADD",36,48,"68"],["B","ADD",36,49,"28"],["B","IDLE_ONE",36,[6]],["B","ADD",36,49,"-28"],["B","ADD",36,48,"-68"],["B","ADD",36,47,"-20"],["B","ADD",36,46,"8"],["B","ADD",36,45,"-40"],["B","ADD",36,44,"-64"],["B","ADD",36,43,"-20"],["B","ADD",36,42,"8"],["B","ADD",36,41,"-40"],["B","ADD",36,40,"-64"],["B","ADD",36,39,"-20"],["B","ADD",36,38,"8"],["B","ADD",36,37,"2"],["B","SCALE",36,"3"],["B","ADD",49,36,"-1/12"],["B","ADD",47,36,"-1/6"],["B","ADD",46,36,"-1/6"],["B","ADD",45,36,"-1/12"],["B","ADD",44,36,"1/12"],["B","ADD",43,36,"-1/6"],["B","ADD",42,36,"-1/6"],["B","ADD",41,36,"-1/12"],["B","ADD",40,36,"1/12"],["B","ADD",39,36,"-1/6"],["B","ADD",38,36,"-1/6"],["B","ADD",37,36,"-7/3"],["B","ADD",37,36,"3"],["B","ADD",38,36,"1/2"],["B","ADD",39,36,"3/2"],["B","ADD",40,36,"-1/4"],["B","ADD",41,36,"-1/4"],["B","ADD",42,36,"1/2"],["B","ADD",43,36,"3/2"],["B","ADD",44,36,"-1/4"],["B","ADD",45,36,"-1/4"],["B","ADD",46,36,"1/2"],["B","ADD",47,36,"3/2"],["B","ADD",48,36,"-1/2"],["B","ADD",49,36,"1/2"],["B","SCALE",36,"-1"],["B","ADD",36,37,"1/2"],["B","ADD",36,39,"-1"],["B","ADD",36,40,"-4"],["B","ADD",36,41,"-2"],["B","ADD",36,43,"-1"],["B","ADD",36,44,"-4"],["B","ADD",36,45,"-2"],["B","ADD",36,47,"-1"],["B","ADD",36,48,"-4"],["B","ADD",38,37,"-1/2"],["B","ADD",39,37,"-2"],["B","ADD",40,37,"1/4"],["B","ADD",41,37,"1/2"],["B","ADD",42,37,"-1/2"],["B","ADD",43,37,"-2"],["B","ADD",44,37,"1/4"],["B","ADD",45,37,"1/2"],["B","ADD",46,37,"-1/2"],["B","ADD",47,37,"-2"],["B","ADD",48,37,"1/2"],["B","SCALE",37,"1/2"],["B","ADD",37,38,"1"],["B","ADD",37,39,"-2"],["B","ADD",37,40,"-6"],["B","ADD",37,41,"-4"],["B","ADD",37,42,"1"],["B","ADD",37,43,"-2"],["B","ADD",37,44,"-6"],["B","ADD",37,45,"-4"],["B","ADD",37,46,"1"],["B","ADD",37,47,"-2"],["B","ADD",37,48,"-8"],["B","ADD",37,49,"-4"],["B","SCALE",37,"1/2"],["B","ADD",37,36,"-1/2"],["B","ADD",36,37,"1"],["B","LAMBDA",36,1],["A","SCALE",6,"-1"],["A","ADD",6,0,"1"],["A","ADD",1,0,"-2"],["A","ADD",2,0,"-2"],["A","ADD",3,0,"-2"],["A","ADD",4,0,"-2"],["A","ADD",5,0,"-2"],["A","ADD",19,18,"-2"],["A","ADD",20,18,"-2"],["A","ADD",21,18,"-2"],["A","ADD",22,18,"-2"],["A","ADD",23,18,"-2"],["A","ADD",24,18,"-1"],["A","SCALE",24,"-1"],["A","LAMBDA",6,1],["A","LAMBDA",24,-1],["A","SCALE",24,"-1"],["J",6,[6,0,18,24],[36,37,"-1","1/2"]],["A","LAMBDA",6,-1],["A","LAMBDA",24,1],["A","SCALE",24,"-1"],["A","ADD",0,6,"-1"],["A","ADD",18,24,"-1"],["A","SCALE",24,"-1"],["A","ADD",24,18,"1"],["A","ADD",23,18,"2"],["A","ADD",22,18,"2"],["A","ADD",21,18,"2"],["A","ADD",20,18,"2"],["A","ADD",19,18,"2"],["A","ADD",5,0,"2"],["A","ADD",4,0,"2"],["A","ADD",3,0,"2"],["A","ADD",2,0,"2"],["A","ADD",1,0,"2"],["A","ADD",6,0,"-1"],["A","SCALE",6,"-1"],["B","LAMBDA",36,-1],["B","SCALE",37,"2"],["B","ADD",37,49,"4"],["B","ADD",37,48,"8"],["B","ADD",37,47,"2"],["B","ADD",37,46,"-1"],["B","ADD",37,45,"4"],["B","ADD",37,44,"6"],["B","ADD",37,43,"2"],["B","ADD",37,42,"-1"],["B","ADD",37,41,"4"],["B","ADD",37,40,"6"],["B","ADD",37,39,"2"],["B","ADD",37,38,"-1"],["B","SCALE",37,"2"],["B","ADD",48,37,"-1/2"],["B","ADD",47,37,"2"],["B","ADD",46,37,"1/2"],["B","ADD",45,37,"-1/2"],["B","ADD",44,37,"-1/4"],["B","ADD",43,37,"2"],["B","ADD",42,37,"1/2"],["B","ADD",41,37,"-1/2"],["B","ADD",40,37,"-1/4"],["B","ADD",39,37,"2"],["B","ADD",38,37,"1/2"],["B","ADD",36,48,"4"],["B","ADD",36,47,"1"],["B","ADD",36,45,"2"],["B","ADD",36,44,"4"],["B","ADD",36,43,"1"],["B","ADD",36,41,"2"],["B","ADD",36,40,"4"],["B","ADD",36,39,"1"],["B","ADD",36,37,"-1/2"],["B","SCALE",36,"-1"],["B","ADD",49,36,"-1/2"],["B","ADD",48,36,"1/2"],["B","ADD",47,36,"-3/2"],["B","ADD",46,36,"-1/2"],["B","ADD",45,36,"1/4"],["B","ADD",44,36,"1/4"],["B","ADD",43,36,"-3/2"],["B","ADD",42,36,"-1/2"],["B","ADD",41,36,"1/4"],["B","ADD",40,36,"1/4"],["B","ADD",39,36,"-3/2"],["B","ADD",38,36,"-1/2"],["B","ADD",37,36,"-3"],["B","ADD",37,36,"7"],["B","ADD",38,36,"5/2"],["B","ADD",39,36,"19/2"],["B","ADD",40,36,"-5/4"],["B","ADD",41,36,"-9/4"],["B","ADD",42,36,"5/2"],["B","ADD",43,36,"19/2"],["B","ADD",44,36,"-5/4"],["B","ADD",45,36,"-9/4"],["B","ADD",46,36,"5/2"],["B","ADD",47,36,"19/2"],["B","ADD",48,36,"-5/4"],["B","ADD",49,36,"-9/4"],["B","ADD",50,36,"-1/2"],["B","ADD",51,36,"3/2"],["B","SCALE",36,"-2"],["B","ADD",36,37,"7"],["B","ADD",36,38,"26"],["B","ADD",36,39,"-66"],["B","ADD",36,40,"-212"],["B","ADD",36,41,"-132"],["B","ADD",36,42,"26"],["B","ADD",36,43,"-66"],["B","ADD",36,44,"-212"],["B","ADD",36,45,"-132"],["B","ADD",36,46,"26"],["B","ADD",36,47,"-66"],["B","ADD",36,48,"-212"],["B","ADD",36,49,"-132"],["B","ADD",36,50,"14"],["B","ADD",36,51,"-26"],["B","IDLE_ONE",36,[7]],["B","ADD",36,51,"26"],["B","ADD",36,50,"-14"],["B","ADD",36,49,"132"],["B","ADD",36,48,"212"],["B","ADD",36,47,"66"],["B","ADD",36,46,"-26"],["B","ADD",36,45,"132"],["B","ADD",36,44,"212"],["B","ADD",36,43,"66"],["B","ADD",36,42,"-26"],["B","ADD",36,41,"132"],["B","ADD",36,40,"212"],["B","ADD",36,39,"66"],["B","ADD",36,38,"-26"],["B","ADD",36,37,"-7"],["B","SCALE",36,"-1/2"],["B","ADD",51,36,"-3/2"],["B","ADD",50,36,"1/2"],["B","ADD",49,36,"9/4"],["B","ADD",48,36,"5/4"],["B","ADD",47,36,"-19/2"],["B","ADD",46,36,"-5/2"],["B","ADD",45,36,"9/4"],["B","ADD",44,36,"5/4"],["B","ADD",43,36,"-19/2"],["B","ADD",42,36,"-5/2"],["B","ADD",41,36,"9/4"],["B","ADD",40,36,"5/4"],["B","ADD",39,36,"-19/2"],["B","ADD",38,36,"-5/2"],["B","ADD",37,36,"-7"],["B","ADD",37,36,"22/3"],["B","ADD",38,36,"8/3"],["B","ADD",39,36,"61/6"],["B","ADD",40,36,"-4/3"],["B","ADD",41,36,"-29/12"],["B","ADD",42,36,"8/3"],["B","ADD",43,36,"61/6"],["B","ADD",44,36,"-4/3"],["B","ADD",45,36,"-29/12"],["B","ADD",46,36,"8/3"],["B","ADD",47,36,"61/6"],["B","ADD",48,36,"-4/3"],["B","ADD",49,36,"-29/12"],["B","ADD",50,36,"-1/2"],["B","ADD",51,36,"5/3"],["B","SCALE",36,"2/3"],["B","ADD",36,37,"2"],["B","ADD",36,38,"8"],["B","ADD",36,39,"-20"],["B","ADD",36,40,"-64"],["B","ADD",36,41,"-40"],["B","ADD",36,42,"8"],["B","ADD",36,43,"-20"],["B","ADD",36,44,"-64"],["B","ADD",36,45,"-40"],["B","ADD",36,46,"8"],["B","ADD",36,47,"-20"],["B","ADD",36,48,"-64"],["B","ADD",36,49,"-40"],["B","ADD",36,50,"4"],["B","ADD",36,51,"-8"],["B","IDLE_ONE",36,[7]],["B","ADD",36,51,"8"],["B","ADD",36,50,"-4"],["B","ADD",36,49,"40"],["B","ADD",36,48,"64"],["B","ADD",36,47,"20"],["B","ADD",36,46,"-8"],["B","ADD",36,45,"40"],["B","ADD",36,44,"64"],["B","ADD",36,43,"20"],["B","ADD",36,42,"-8"],["B","ADD",36,41,"40"],["B","ADD",36,40,"64"],["B","ADD",36,39,"20"],["B","ADD",36,38,"-8"],["B","ADD",36,37,"-2"],["B","SCALE",36,"3/2"],["B","ADD",51,36,"-5/3"],["B","ADD",50,36,"1/2"],["B","ADD",49,36,"29/12"],["B","ADD",48,36,"4/3"],["B","ADD",47,36,"-61/6"],["B","ADD",46,36,"-8/3"],["B","ADD",45,36,"29/12"],["B","ADD",44,36,"4/3"],["B","ADD",43,36,"-61/6"],["B","ADD",42,36,"-8/3"],["B","ADD",41,36,"29/12"],["B","ADD",40,36,"4/3"],["B","ADD",39,36,"-61/6"],["B","ADD",38,36,"-8/3"],["B","ADD",37,36,"-22/3"],["B","ADD",37,36,"1"],["B","ADD",38,36,"-1/2"],["B","ADD",39,36,"-5/2"],["B","ADD",40,36,"1/4"],["B","ADD",41,36,"3/4"],["B","ADD",42,36,"-1/2"],["B","ADD",43,36,"-5/2"],["B","ADD",44,36,"1/4"],["B","ADD",45,36,"3/4"],["B","ADD",46,36,"-1/2"],["B","ADD",47,36,"-5/2"],["B","ADD",48,36,"1/4"],["B","ADD",49,36,"3/4"],["B","ADD",50,36,"1/2"],["B","ADD",51,36,"1/2"],["B","ADD",36,38,"-1"],["B","ADD",36,39,"2"],["B","ADD",36,40,"6"],["B","ADD",36,41,"4"],["B","ADD",36,42,"-1"],["B","ADD",36,43,"2"],["B","ADD",36,44,"6"],["B","ADD",36,45,"4"],["B","ADD",36,46,"-1"],["B","ADD",36,47,"2"],["B","ADD",36,48,"6"],["B","ADD",36,49,"4"],["B","ADD",36,50,"-1"],["B","ADD",38,37,"-1/2"],["B","ADD",39,37,"-2"],["B","ADD",40,37,"1/4"],["B","ADD",41,37,"1/2"],["B","ADD",42,37,"-1/2"],["B","ADD",43,37,"-2"],["B","ADD",44,37,"1/4"],["B","ADD",45,37,"1/2"],["B","ADD",46,37,"-1/2"],["B","ADD",47,37,"-2"],["B","ADD",48,37,"1/4"],["B","ADD",49,37,"1/2"],["B","ADD",50,37,"1/2"],["B","SCALE",37,"-1/2"],["B","ADD",37,39,"-1"],["B","ADD",37,40,"-4"],["B","ADD",37,41,"-2"],["B","ADD",37,43,"-1"],["B","ADD",37,44,"-4"],["B","ADD",37,45,"-2"],["B","ADD",37,47,"-1"],["B","ADD",37,48,"-4"],["B","ADD",37,49,"-2"],["B","ADD",37,50,"2"],["B","ADD",37,51,"-1"],["B","SCALE",37,"-1/2"],["B","ADD",37,36,"-1/2"],["B","ADD",36,37,"1"],["B","LAMBDA",36,1],["A","SCALE",7,"-1"],["A","ADD",7,0,"1"],["A","ADD",1,0,"-2"],["A","ADD",2,0,"-2"],["A","ADD",3,0,"-2"],["A","ADD",4,0,"-2"],["A","ADD",5,0,"-2"],["A","ADD",6,0,"-2"],["A","ADD",19,18,"-2"],["A","ADD",20,18,"-2"],["A","ADD",21,18,"-2"],["A","ADD",22,18,"-2"],["A","ADD",23,18,"-2"],["A","ADD",24,18,"-2"],["A","ADD",25,18,"-1"],["A","SCALE",25,"-1"],["A","LAMBDA",7,1],["A","LAMBDA",25,-1],["A","SCALE",25,"-1"],["J",7,[7,0,18,25],[36,37,"-1","1/2"]],["A","LAMBDA",7,-1],["A","LAMBDA",25,1],["A","SCALE",25,"-1"],["A","ADD",0,7,"-1"],["A","ADD",18,25,"-1"],["A","SCALE",25,"-1"],["A","ADD",25,18,"1"],["A","ADD",24,18,"2"],["A","ADD",23,18,"2"],["A","ADD",22,18,"2"],["A","ADD",21,18,"2"],["A","ADD",20,18,"2"],["A","ADD",19,18,"2"],["A","ADD",6,0,"2"],["A","ADD",5,0,"2"],["A","ADD",4,0,"2"],["A","ADD",3,0,"2"],["A","ADD",2,0,"2"],["A","ADD",1,0,"2"],["A","ADD",7,0,"-1"],["A","SCALE",7,"-1"],["B","LAMBDA",36,-1],["B","SCALE",37,"-2"],["B","ADD",37,51,"1"],["B","ADD",37,50,"-2"],["B","ADD",37,49,"2"],["B","ADD",37,48,"4"],["B","ADD",37,47,"1"],["B","ADD",37,45,"2"],["B","ADD",37,44,"4"],["B","ADD",37,43,"1"],["B","ADD",37,41,"2"],["B","ADD",37,40,"4"],["B","ADD",37,39,"1"],["B","SCALE",37,"-2"],["B","ADD",50,37,"-1/2"],["B","ADD",49,37,"-1/2"],["B","ADD",48,37,"-1/4"],["B","ADD",47,37,"2"],["B","ADD",46,37,"1/2"],["B","ADD",45,37,"-1/2"],["B","ADD",44,37,"-1/4"],["B","ADD",43,37,"2"],["B","ADD",42,37,"1/2"],["B","ADD",41,37,"-1/2"],["B","ADD",40,37,"-1/4"],["B","ADD",39,37,"2"],["B","ADD",38,37,"1/2"],["B","ADD",36,50,"1"],["B","ADD",36,49,"-4"],["B","ADD",36,48,"-6"],["B","ADD",36,47,"-2"],["B","ADD",36,46,"1"],["B","ADD",36,45,"-4"],["B","ADD",36,44,"-6"],["B","ADD",36,43,"-2"],["B","ADD",36,42,"1"],["B","ADD",36,41,"-4"],["B","ADD",36,40,"-6"],["B","ADD",36,39,"-2"],["B","ADD",36,38,"1"],["B","ADD",51,36,"-1/2"],["B","ADD",50,36,"-1/2"],["B","ADD",49,36,"-3/4"],["B","ADD",48,36,"-1/4"],["B","ADD",47,36,"5/2"],["B","ADD",46,36,"1/2"],["B","ADD",45,36,"-3/4"],["B","ADD",44,36,"-1/4"],["B","ADD",43,36,"5/2"],["B","ADD",42,36,"1/2"],["B","ADD",41,36,"-3/4"],["B","ADD",40,36,"-1/4"],["B","ADD",39,36,"5/2"],["B","ADD",38,36,"1/2"],["B","ADD",37,36,"-1"],["B","ADD",37,36,"41/15"],["B","ADD",38,36,"11/30"],["B","ADD",39,36,"29/30"],["B","ADD",40,36,"-11/60"],["B","ADD",41,36,"-7/60"],["B","ADD",42,36,"11/30"],["B","ADD",43,36,"29/30"],["B","ADD",44,36,"-11/60"],["B","ADD",45,36,"-7/60"],["B","ADD",46,36,"11/30"],["B","ADD",47,36,"29/30"],["B","ADD",48,36,"-11/60"],["B","ADD",49,36,"-7/60"],["B","ADD",50,36,"7/30"],["B","ADD",51,36,"11/30"],["B","SCALE",36,"-2/15"],["B","ADD",36,37,"55"],["B","ADD",36,38,"218"],["B","ADD",36,39,"-546"],["B","ADD",36,40,"-1748"],["B","ADD",36,41,"-1092"],["B","ADD",36,42,"218"],["B","ADD",36,43,"-546"],["B","ADD",36,44,"-1748"],["B","ADD",36,45,"-1092"],["B","ADD",36,46,"218"],["B","ADD",36,47,"-546"],["B","ADD",36,48,"-1748"],["B","ADD",36,49,"-1092"],["B","ADD",36,50,"-982"],["B","ADD",36,51,"218"],["B","IDLE_ONE",36,[8]],["B","ADD",36,51,"-218"],["B","ADD",36,50,"982"],["B","ADD",36,49,"1092"],["B","ADD",36,48,"1748"],["B","ADD",36,47,"546"],["B","ADD",36,46,"-218"],["B","ADD",36,45,"1092"],["B","ADD",36,44,"1748"],["B","ADD",36,43,"546"],["B","ADD",36,42,"-218"],["B","ADD",36,41,"1092"],["B","ADD",36,40,"1748"],["B","ADD",36,39,"546"],["B","ADD",36,38,"-218"],["B","ADD",36,37,"-55"],["B","SCALE",36,"-15/2"],["B","ADD",51,36,"-11/30"],["B","ADD",50,36,"-7/30"],["B","ADD",49,36,"7/60"],["B","ADD",48,36,"11/60"],["B","ADD",47,36,"-29/30"],["B","ADD",46,36,"-11/30"],["B","ADD",45,36,"7/60"],["B","ADD",44,36,"11/60"],["B","ADD",43,36,"-29/30"],["B","ADD",42,36,"-11/30"],["B","ADD",41,36,"7/60"],["B","ADD",40,36,"11/60"],["B","ADD",39,36,"-29/30"],["B","ADD",38,36,"-11/30"],["B","ADD",37,36,"-41/15"],["B","ADD",36,38,"409/150"],["B","ADD",37,38,"-559/75"],["B","ADD",39,38,"-791/300"],["B","ADD",40,38,"1/2"],["B","ADD",41,38,"191/600"],["B","ADD",42,38,"-1"],["B","ADD",43,38,"-791/300"],["B","ADD",44,38,"1/2"],["B","ADD",45,38,"191/600"],["B","ADD",46,38,"-1"],["B","ADD",47,38,"-791/300"],["B","ADD",48,38,"1/2"],["B","ADD",49,38,"191/600"],["B","ADD",50,38,"-191/300"],["B","ADD",51,38,"-1"],["B","SCALE",38,"1/75"],["B","ADD",38,37,"-2"],["B","ADD",38,39,"20"],["B","ADD",38,40,"64"],["B","ADD",38,41,"40"],["B","ADD",38,42,"-8"],["B","ADD",38,43,"20"],["B","ADD",38,44,"64"],["B","ADD",38,45,"40"],["B","ADD",38,46,"-8"],["B","ADD",38,47,"20"],["B","ADD",38,48,"64"],["B","ADD",38,49,"40"],["B","ADD",38,50,"36"],["B","ADD",38,51,"-8"],["B","IDLE_ONE",38,[8]],["B","ADD",38,51,"8"],["B","ADD",38,50,"-36"],["B","ADD",38,49,"-40"],["B","ADD",38,48,"-64"],["B","ADD",38,47,"-20"],["B","ADD",38,46,"8"],["B","ADD",38,45,"-40"],["B","ADD",38,44,"-64"],["B","ADD",38,43,"-20"],["B","ADD",38,42,"8"],["B","ADD",38,41,"-40"],["B","ADD",38,40,"-64"],["B","ADD",38,39,"-20"],["B","ADD",38,37,"2"],["B","SCALE",38,"75"],["B","ADD",51,38,"1"],["B","ADD",50,38,"191/300"],["B","ADD",49,38,"-191/600"],["B","ADD",48,38,"-1/2"],["B","ADD",47,38,"791/300"],["B","ADD",46,38,"1"],["B","ADD",45,38,"-191/600"],["B","ADD",44,38,"-1/2"],["B","ADD",43,38,"791/300"],["B","ADD",42,38,"1"],["B","ADD",41,38,"-191/600"],["B","ADD",40,38,"-1/2"],["B","ADD",39,38,"791/300"],["B","ADD",37,38,"559/75"],["B","ADD",36,38,"-409/150"],["B","IDLE_ODD",68,[8],-1],["B","IDLE_ODD",69,[8],-1],["B","ADD",37,36,"11/5"],["B","ADD",38,36,"1/10"],["B","ADD",39,36,"-1/10"],["B","ADD",40,36,"-1/20"],["B","ADD",41,36,"3/20"],["B","ADD",42,36,"1/10"],["B","ADD",43,36,"-1/10"],["B","ADD",44,36,"-1/20"],["B","ADD",45,36,"3/20"],["B","ADD",46,36,"1/10"],["B","ADD",47,36,"-1/10"],["B","ADD",48,36,"-1/20"],["B","ADD",49,36,"3/20"],["B","ADD",50,36,"1/10"],["B","ADD",51,36,"-1/10"],["B","SCALE",36,"1/5"],["B","ADD",36,37,"-1/2"],["B","ADD",36,39,"1"],["B","ADD",36,40,"4"],["B","ADD",36,41,"2"],["B","ADD",36,43,"1"],["B","ADD",36,44,"4"],["B","ADD",36,45,"2"],["B","ADD",36,47,"1"],["B","ADD",36,48,"4"],["B","ADD",36,49,"2"],["B","ADD",36,51,"1"],["B","ADD",38,37,"-1/2"],["B","ADD",39,37,"-2"],["B","ADD",40,37,"1/4"],["B","ADD",41,37,"1/2"],["B","ADD",42,37,"-1/2"],["B","ADD",43,37,"-2"],["B","ADD",44,37,"1/4"],["B","ADD",45,37,"1/2"],["B","ADD",46,37,"-1/2"],["B","ADD",47,37,"-2"],["B","ADD",48,37,"1/4"],["B","ADD",49,37,"1/2"],["B","ADD",50,37,"-1/2"],["B","ADD",51,37,"-2"],["B","SCALE",37,"-5/2"],["B","ADD",37,38,"-1"],["B","ADD",37,39,"-2"],["B","ADD",37,40,"-10"],["B","ADD",37,41,"-4"],["B","ADD",37,42,"-1"],["B","ADD",37,43,"-2"],["B","ADD",37,44,"-10"],["B","ADD",37,45,"-4"],["B","ADD",37,46,"-1"],["B","ADD",37,47,"-2"],["B","ADD",37,48,"-10"],["B","ADD",37,49,"-4"],["B","ADD",37,50,"-1"],["B","ADD",37,51,"-2"],["B","SCALE",37,"-1/2"],["B","ADD",37,36,"-1"],["B","ADD",37,36,"-1/2"],["B","ADD",36,37,"1"],["B","LAMBDA",36,1],["A","SCALE",8,"-1"],["A","ADD",8,0,"1"],["A","ADD",1,0,"-2"],["A","ADD",2,0,"-2"],["A","ADD",3,0,"-2"],["A","ADD",4,0,"-2"],["A","ADD",5,0,"-2"],["A","ADD",6,0,"-2"],["A","ADD",7,0,"-2"],["A","ADD",19,18,"-2"],["A","ADD",20,18,"-2"],["A","ADD",21,18,"-2"],["A","ADD",22,18,"-2"],["A","ADD",23,18,"-2"],["A","ADD",24,18,"-2"],["A","ADD",25,18,"-2"],["A","ADD",26,18,"-1"],["A","SCALE",26,"-1"],["A","LAMBDA",8,1],["A","LAMBDA",26,-1],["A","SCALE",26,"-1"],["J",8,[8,0,18,26],[36,37,"-1","1/2"]],["A","LAMBDA",8,-1],["A","LAMBDA",26,1],["A","SCALE",26,"-1"],["A","ADD",0,8,"-1"],["A","ADD",18,26,"-1"],["A","SCALE",26,"-1"],["A","ADD",26,18,"1"],["A","ADD",25,18,"2"],["A","ADD",24,18,"2"],["A","ADD",23,18,"2"],["A","ADD",22,18,"2"],["A","ADD",21,18,"2"],["A","ADD",20,18,"2"],["A","ADD",19,18,"2"],["A","ADD",7,0,"2"],["A","ADD",6,0,"2"],["A","ADD",5,0,"2"],["A","ADD",4,0,"2"],["A","ADD",3,0,"2"],["A","ADD",2,0,"2"],["A","ADD",1,0,"2"],["A","ADD",8,0,"-1"],["A","SCALE",8,"-1"],["A","ADD",1,0,"-2"],["A","IDLE_ONE",1,[2,3,4,5,6,7,8]],["A","ADD",1,0,"2"],["A","ADD",2,0,"-2"],["A","IDLE_ONE",2,[3,4,5,6,7,8]],["A","ADD",2,0,"2"],["A","ADD",3,0,"-2"],["A","IDLE_ONE",3,[4,5,6,7,8]],["A","ADD",3,0,"2"],["A","ADD",4,0,"-2"],["A","IDLE_ONE",4,[5,6,7,8]],["A","ADD",4,0,"2"],["A","ADD",5,0,"-2"],["A","IDLE_ONE",5,[6,7,8]],["A","ADD",5,0,"2"],["A","ADD",6,0,"-2"],["A","IDLE_ONE",6,[7,8]],["A","ADD",6,0,"2"],["A","ADD",7,0,"-2"],["A","IDLE_ONE",7,[8]],["A","ADD",7,0,"2"],["A","ADD",19,18,"-2"],["A","IDLE_ONE",19,[2,3,4,5,6,7,8]],["A","ADD",19,18,"2"],["A","ADD",20,18,"-2"],["A","IDLE_ONE",20,[3,4,5,6,7,8]],["A","ADD",20,18,"2"],["A","ADD",21,18,"-2"],["A","IDLE_ONE",21,[4,5,6,7,8]],["A","ADD",21,18,"2"],["A","ADD",22,18,"-2"],["A","IDLE_ONE",22,[5,6,7,8]],["A","ADD",22,18,"2"],["A","ADD",23,18,"-2"],["A","IDLE_ONE",23,[6,7,8]],["A","ADD",23,18,"2"],["A","ADD",24,18,"-2"],["A","IDLE_ONE",24,[7,8]],["A","ADD",24,18,"2"],["A","ADD",25,18,"-2"],["A","IDLE_ONE",25,[8]],["A","ADD",25,18,"2"],["A","SWAP",0,18],["A","ADD",19,0,"-2"],["A","ADD",20,0,"-2"],["A","ADD",21,0,"-2"],["A","ADD",22,0,"-2"],["A","ADD",23,0,"-2"],["A","ADD",24,0,"-2"],["A","ADD",25,0,"-2"],["A","ADD",26,0,"-2"],["A","SWAP",1,19],["A","ADD",1,20,"-1"],["A","ADD",1,21,"1"],["A","ADD",1,22,"-1"],["A","ADD",1,23,"1"],["A","ADD",1,24,"-1"],["A","ADD",1,25,"1"],["A","ADD",1,26,"-1"],["A","ADD",1,27,"-1"],["A","ADD",1,28,"1"],["A","ADD",1,29,"-1"],["A","ADD",1,30,"1"],["A","ADD",1,31,"-1"],["A","ADD",1,32,"1"],["A","ADD",1,33,"-1"],["A","ADD",1,34,"1"],["A","ADD",1,35,"-1"],["A","LAMBDA",1,1],["A","QUERY",0,1,-1],["A","LAMBDA",1,-1],["A","ADD",0,1,"-1"],["A","ADD",1,35,"1"],["A","ADD",1,34,"-1"],["A","ADD",1,33,"1"],["A","ADD",1,32,"-1"],["A","ADD",1,31,"1"],["A","ADD",1,30,"-1"],["A","ADD",1,29,"1"],["A","ADD",1,28,"-1"],["A","ADD",1,27,"1"],["A","ADD",1,26,"1"],["A","ADD",1,25,"-1"],["A","ADD",1,24,"1"],["A","ADD",1,23,"-1"],["A","ADD",1,22,"1"],["A","ADD",1,21,"-1"],["A","ADD",1,20,"1"],["A","SWAP",1,19],["A","ADD",26,0,"2"],["A","ADD",25,0,"2"],["A","ADD",24,0,"2"],["A","ADD",23,0,"2"],["A","ADD",22,0,"2"],["A","ADD",21,0,"2"],["A","ADD",20,0,"2"],["A","ADD",19,0,"2"],["A","SWAP",0,18],["A","SWAP",0,19],["A","ADD",20,0,"-1"],["A","ADD",21,0,"-1"],["A","ADD",22,0,"-1"],["A","ADD",23,0,"-1"],["A","ADD",24,0,"-1"],["A","ADD",25,0,"-1"],["A","ADD",26,0,"-1"],["A","ADD",27,0,"-1"],["A","ADD",28,0,"-1"],["A","ADD",29,0,"-1"],["A","ADD",30,0,"-1"],["A","ADD",31,0,"-1"],["A","ADD",32,0,"-1"],["A","ADD",33,0,"-1"],["A","ADD",34,0,"-1"],["A","ADD",35,0,"-1"],["A","ADD",1,2,"-1"],["A","ADD",1,3,"1"],["A","ADD",1,4,"-1"],["A","ADD",1,5,"1"],["A","ADD",1,6,"-1"],["A","ADD",1,7,"1"],["A","ADD",1,8,"-1"],["A","ADD",1,9,"-1"],["A","ADD",1,10,"1"],["A","ADD",1,11,"-1"],["A","ADD",1,12,"1"],["A","ADD",1,13,"-1"],["A","ADD",1,14,"1"],["A","ADD",1,15,"-1"],["A","ADD",1,16,"1"],["A","ADD",1,17,"-1"],["A","ADD",1,18,"1"],["A","LAMBDA",1,1],["A","QUERY",0,1,-1],["A","LAMBDA",1,-1],["A","ADD",0,1,"-1"],["A","ADD",1,18,"-1"],["A","ADD",1,17,"1"],["A","ADD",1,16,"-1"],["A","ADD",1,15,"1"],["A","ADD",1,14,"-1"],["A","ADD",1,13,"1"],["A","ADD",1,12,"-1"],["A","ADD",1,11,"1"],["A","ADD",1,10,"-1"],["A","ADD",1,9,"1"],["A","ADD",1,8,"1"],["A","ADD",1,7,"-1"],["A","ADD",1,6,"1"],["A","ADD",1,5,"-1"],["A","ADD",1,4,"1"],["A","ADD",1,3,"-1"],["A","ADD",1,2,"1"],["A","ADD",35,0,"1"],["A","ADD",34,0,"1"],["A","ADD",33,0,"1"],["A","ADD",32,0,"1"],["A","ADD",31,0,"1"],["A","ADD",30,0,"1"],["A","ADD",29,0,"1"],["A","ADD",28,0,"1"],["A","ADD",27,0,"1"],["A","ADD",26,0,"1"],["A","ADD",25,0,"1"],["A","ADD",24,0,"1"],["A","ADD",23,0,"1"],["A","ADD",22,0,"1"],["A","ADD",21,0,"1"],["A","ADD",20,0,"1"],["A","SWAP",0,19],["A","ADD",1,0,"-2"],["A","ADD",2,0,"-2"],["A","ADD",3,0,"-2"],["A","ADD",4,0,"-2"],["A","ADD",5,0,"-2"],["A","ADD",6,0,"-2"],["A","ADD",7,0,"-2"],["A","ADD",8,0,"-2"],["A","ADD",19,0,"1"],["A","ADD",20,0,"1"],["A","ADD",21,0,"1"],["A","ADD",22,0,"1"],["A","ADD",23,0,"1"],["A","ADD",24,0,"1"],["A","ADD",25,0,"1"],["A","ADD",26,0,"1"],["A","ADD",27,0,"1"],["A","ADD",28,0,"1"],["A","ADD",29,0,"1"],["A","ADD",30,0,"1"],["A","ADD",31,0,"1"],["A","ADD",32,0,"1"],["A","ADD",33,0,"1"],["A","ADD",34,0,"1"],["A","ADD",35,0,"1"],["A","ADD",1,2,"-1"],["A","ADD",1,3,"1"],["A","ADD",1,4,"-1"],["A","ADD",1,5,"1"],["A","ADD",1,6,"-1"],["A","ADD",1,7,"1"],["A","ADD",1,8,"-1"],["A","ADD",1,9,"-1"],["A","ADD",1,10,"1"],["A","ADD",1,11,"-1"],["A","ADD",1,12,"1"],["A","ADD",1,13,"-1"],["A","ADD",1,14,"1"],["A","ADD",1,15,"-1"],["A","ADD",1,16,"1"],["A","ADD",1,17,"-1"],["A","LAMBDA",1,1],["A","QUERY",0,1,-1],["A","LAMBDA",1,-1],["A","ADD",0,1,"-1"],["A","ADD",1,17,"1"],["A","ADD",1,16,"-1"],["A","ADD",1,15,"1"],["A","ADD",1,14,"-1"],["A","ADD",1,13,"1"],["A","ADD",1,12,"-1"],["A","ADD",1,11,"1"],["A","ADD",1,10,"-1"],["A","ADD",1,9,"1"],["A","ADD",1,8,"1"],["A","ADD",1,7,"-1"],["A","ADD",1,6,"1"],["A","ADD",1,5,"-1"],["A","ADD",1,4,"1"],["A","ADD",1,3,"-1"],["A","ADD",1,2,"1"],["A","ADD",35,0,"-1"],["A","ADD",34,0,"-1"],["A","ADD",33,0,"-1"],["A","ADD",32,0,"-1"],["A","ADD",31,0,"-1"],["A","ADD",30,0,"-1"],["A","ADD",29,0,"-1"],["A","ADD",28,0,"-1"],["A","ADD",27,0,"-1"],["A","ADD",26,0,"-1"],["A","ADD",25,0,"-1"],["A","ADD",24,0,"-1"],["A","ADD",23,0,"-1"],["A","ADD",22,0,"-1"],["A","ADD",21,0,"-1"],["A","ADD",20,0,"-1"],["A","ADD",19,0,"-1"],["A","ADD",8,0,"2"],["A","ADD",7,0,"2"],["A","ADD",6,0,"2"],["A","ADD",5,0,"2"],["A","ADD",4,0,"2"],["A","ADD",3,0,"2"],["A","ADD",2,0,"2"],["A","ADD",1,0,"2"],["A","SWAP",0,1],["A","ADD",2,0,"-1"],["A","ADD",3,0,"-1"],["A","ADD",4,0,"-1"],["A","ADD",5,0,"-1"],["A","ADD",6,0,"-1"],["A","ADD",7,0,"-1"],["A","ADD",8,0,"-1"],["A","ADD",9,0,"-1"],["A","ADD",10,0,"-1"],["A","ADD",11,0,"-1"],["A","ADD",12,0,"-1"],["A","ADD",13,0,"-1"],["A","ADD",14,0,"-1"],["A","ADD",15,0,"-1"],["A","ADD",16,0,"-1"],["A","ADD",17,0,"-1"],["A","LAMBDA",1,1],["A","QUERY",0,1,-1],["A","LAMBDA",1,-1],["A","ADD",0,1,"-1"],["A","ADD",17,0,"1"],["A","ADD",16,0,"1"],["A","ADD",15,0,"1"],["A","ADD",14,0,"1"],["A","ADD",13,0,"1"],["A","ADD",12,0,"1"],["A","ADD",11,0,"1"],["A","ADD",10,0,"1"],["A","ADD",9,0,"1"],["A","ADD",8,0,"1"],["A","ADD",7,0,"1"],["A","ADD",6,0,"1"],["A","ADD",5,0,"1"],["A","ADD",4,0,"1"],["A","ADD",3,0,"1"],["A","ADD",2,0,"1"],["A","SWAP",0,1],["A","ADD",10,0,"2"],["A","IDLE_ONE",10,[9]],["A","ADD",10,0,"-2"],["A","ADD",11,0,"2"],["A","IDLE_ONE",11,[9,10]],["A","ADD",11,0,"-2"],["A","ADD",12,0,"2"],["A","IDLE_ONE",12,[9,10,11]],["A","ADD",12,0,"-2"],["A","ADD",13,0,"2"],["A","IDLE_ONE",13,[9,10,11,12]],["A","ADD",13,0,"-2"],["A","ADD",14,0,"2"],["A","IDLE_ONE",14,[9,10,11,12,13]],["A","ADD",14,0,"-2"],["A","ADD",15,0,"2"],["A","IDLE_ONE",15,[9,10,11,12,13,14]],["A","ADD",15,0,"-2"],["A","ADD",16,0,"2"],["A","IDLE_ONE",16,[9,10,11,12,13,14,15]],["A","ADD",16,0,"-2"],["A","ADD",17,0,"2"],["A","IDLE_ONE",17,[9,10,11,12,13,14,15,16]],["A","ADD",17,0,"-2"],["A","ADD",28,18,"2"],["A","IDLE_ONE",28,[9]],["A","ADD",28,18,"-2"],["A","ADD",29,18,"2"],["A","IDLE_ONE",29,[9,10]],["A","ADD",29,18,"-2"],["A","ADD",30,18,"2"],["A","IDLE_ONE",30,[9,10,11]],["A","ADD",30,18,"-2"],["A","ADD",31,18,"2"],["A","IDLE_ONE",31,[9,10,11,12]],["A","ADD",31,18,"-2"],["A","ADD",32,18,"2"],["A","IDLE_ONE",32,[9,10,11,12,13]],["A","ADD",32,18,"-2"],["A","ADD",33,18,"2"],["A","IDLE_ONE",33,[9,10,11,12,13,14]],["A","ADD",33,18,"-2"],["A","ADD",34,18,"2"],["A","IDLE_ONE",34,[9,10,11,12,13,14,15]],["A","ADD",34,18,"-2"],["A","ADD",35,18,"2"],["A","IDLE_ONE",35,[9,10,11,12,13,14,15,16]],["A","ADD",35,18,"-2"],["B","LAMBDA",36,-1],["B","ADD",37,36,"1"],["B","SCALE",37,"-2"],["B","ADD",37,51,"2"],["B","ADD",37,50,"1"],["B","ADD",37,49,"4"],["B","ADD",37,48,"10"],["B","ADD",37,47,"2"],["B","ADD",37,46,"1"],["B","ADD",37,45,"4"],["B","ADD",37,44,"10"],["B","ADD",37,43,"2"],["B","ADD",37,42,"1"],["B","ADD",37,41,"4"],["B","ADD",37,40,"10"],["B","ADD",37,39,"2"],["B","ADD",37,38,"1"],["B","SCALE",37,"-2/5"],["B","ADD",51,37,"2"],["B","ADD",50,37,"1/2"],["B","ADD",49,37,"-1/2"],["B","ADD",48,37,"-1/4"],["B","ADD",47,37,"2"],["B","ADD",46,37,"1/2"],["B","ADD",45,37,"-1/2"],["B","ADD",44,37,"-1/4"],["B","ADD",43,37,"2"],["B","ADD",42,37,"1/2"],["B","ADD",41,37,"-1/2"],["B","ADD",40,37,"-1/4"],["B","ADD",39,37,"2"],["B","ADD",38,37,"1/2"],["B","ADD",36,51,"-1"],["B","ADD",36,49,"-2"],["B","ADD",36,48,"-4"],["B","ADD",36,47,"-1"],["B","ADD",36,45,"-2"],["B","ADD",36,44,"-4"],["B","ADD",36,43,"-1"],["B","ADD",36,41,"-2"],["B","ADD",36,40,"-4"],["B","ADD",36,39,"-1"],["B","ADD",36,37,"1/2"],["B","SCALE",36,"5"],["B","ADD",51,36,"1/10"],["B","ADD",50,36,"-1/10"],["B","ADD",49,36,"-3/20"],["B","ADD",48,36,"1/20"],["B","ADD",47,36,"1/10"],["B","ADD",46,36,"-1/10"],["B","ADD",45,36,"-3/20"],["B","ADD",44,36,"1/20"],["B","ADD",43,36,"1/10"],["B","ADD",42,36,"-1/10"],["B","ADD",41,36,"-3/20"],["B","ADD",40,36,"1/20"],["B","ADD",39,36,"1/10"],["B","ADD",38,36,"-1/10"],["B","ADD",37,36,"-11/5"],["B","ADD",37,36,"41/15"],["B","ADD",38,36,"7/30"],["B","ADD",39,36,"11/30"],["B","SCALE",36,"-2/15"],["B","ADD",36,37,"-3"],["B","ADD",36,38,"62"],["B","ADD",36,39,"-14"],["B","IDLE_ONE",36,[2,3,4,5,6,7,8]],["B","ADD",36,39,"14"],["B","ADD",36,38,"-62"],["B","ADD",36,37,"3"],["B","SCALE",36,"-15/2"],["B","ADD",39,36,"-11/30"],["B","ADD",38,36,"-7/30"],["B","ADD",37,36,"-41/15"],["B","ADD",36,38,"13/3"],["B","ADD",37,38,"-71/6"],["B","ADD",39,38,"-19/12"],["B","SCALE",38,"1/3"],["B","ADD",38,37,"2"],["B","ADD",38,39,"8"],["B","IDLE_ONE",38,[2,3,4,5,6,7,8]],["B","ADD",38,39,"-8"],["B","ADD",38,37,"-2"],["B","SCALE",38,"3"],["B","ADD",39,38,"19/12"],["B","ADD",37,38,"71/6"],["B","ADD",36,38,"-13/3"],["B","ADD",37,36,"41/15"],["B","ADD",38,36,"11/30"],["B","ADD",39,36,"29/30"],["B","ADD",40,36,"-1/15"],["B","ADD",41,36,"-1/6"],["B","SCALE",36,"2/15"],["B","ADD",36,37,"6"],["B","ADD",36,38,"22"],["B","ADD",36,39,"-56"],["B","ADD",36,40,"-68"],["B","ADD",36,41,"-156"],["B","IDLE_ONE",36,[3,4,5,6,7,8]],["B","ADD",36,41,"156"],["B","ADD",36,40,"68"],["B","ADD",36,39,"56"],["B","ADD",36,38,"-22"],["B","ADD",36,37,"-6"],["B","SCALE",36,"15/2"],["B","ADD",41,36,"1/6"],["B","ADD",40,36,"1/15"],["B","ADD",39,36,"-29/30"],["B","ADD",38,36,"-11/30"],["B","ADD",37,36,"-41/15"],["B","ADD",36,37,"1"],["B","SWAP",36,37],["B","ADD",36,37,"-1"],["B","SWAP",36,37],["B","ADD",36,37,"-1"],["B","SWAP",36,37],["B","ADD",36,37,"-1"],["B","SWAP",36,37],["B","ADD",36,37,"-2"],["B","SWAP",36,37],["B","ADD",36,37,"-1"],["B","SWAP",36,37],["B","ADD",36,37,"-3"],["B","SWAP",36,37],["B","ADD",36,37,"-2"],["B","SWAP",36,37],["B","ADD",36,37,"-2"],["B","SWAP",36,37],["B","SWAP",36,38],["B","ADD",36,38,"-30"],["B","SWAP",36,38],["B","ADD",36,38,"-2"],["B","SWAP",36,38],["B","SWAP",36,39],["B","ADD",36,39,"-161"],["B","SWAP",36,39],["B","ADD",36,40,"1"],["B","SWAP",36,40],["B","ADD",36,40,"-1"],["B","SWAP",36,40],["B","ADD",36,40,"-10"],["B","SWAP",36,40],["B","SWAP",36,41],["B","ADD",36,41,"-28"],["B","SWAP",36,41],["B","SCALE",36,"4"],["B","ADD",36,37,"-93"],["B","ADD",36,38,"-347"],["B","ADD",36,39,"10"],["B","ADD",36,40,"12"],["B","ADD",36,41,"28"],["B","IDLE_ONE",36,[3,4,5,6,7,8]],["B","ADD",36,41,"-28"],["B","ADD",36,40,"-12"],["B","ADD",36,39,"-10"],["B","ADD",36,38,"347"],["B","ADD",36,37,"93"],["B","SCALE",36,"1/4"],["B","SWAP",36,41],["B","ADD",36,41,"28"],["B","SWAP",36,41],["B","SWAP",36,40],["B","ADD",36,40,"10"],["B","SWAP",36,40],["B","ADD",36,40,"1"],["B","SWAP",36,40],["B","ADD",36,40,"-1"],["B","SWAP",36,39],["B","ADD",36,39,"161"],["B","SWAP",36,39],["B","SWAP",36,38],["B","ADD",36,38,"2"],["B","SWAP",36,38],["B","ADD",36,38,"30"],["B","SWAP",36,38],["B","SWAP",36,37],["B","ADD",36,37,"2"],["B","SWAP",36,37],["B","ADD",36,37,"2"],["B","SWAP",36,37],["B","ADD",36,37,"3"],["B","SWAP",36,37],["B","ADD",36,37,"1"],["B","SWAP",36,37],["B","ADD",36,37,"2"],["B","SWAP",36,37],["B","ADD",36,37,"1"],["B","SWAP",36,37],["B","ADD",36,37,"1"],["B","SWAP",36,37],["B","ADD",36,37,"1"],["B","SWAP",36,37],["B","ADD",36,37,"-1"],["B","ADD",37,36,"41/15"],["B","ADD",38,36,"11/30"],["B","ADD",39,36,"29/30"],["B","ADD",40,36,"-11/60"],["B","ADD",41,36,"-7/60"],["B","ADD",42,36,"7/30"],["B","ADD",43,36,"11/30"],["B","SCALE",36,"-2/15"],["B","ADD",36,37,"55"],["B","ADD",36,38,"218"],["B","ADD",36,39,"-546"],["B","ADD",36,40,"-1748"],["B","ADD",36,41,"-1092"],["B","ADD",36,42,"-982"],["B","ADD",36,43,"218"],["B","IDLE_ONE",36,[4,5,6,7,8]],["B","ADD",36,43,"-218"],["B","ADD",36,42,"982"],["B","ADD",36,41,"1092"],["B","ADD",36,40,"1748"],["B","ADD",36,39,"546"],["B","ADD",36,38,"-218"],["B","ADD",36,37,"-55"],["B","SCALE",36,"-15/2"],["B","ADD",43,36,"-11/30"],["B","ADD",42,36,"-7/30"],["B","ADD",41,36,"7/60"],["B","ADD",40,36,"11/60"],["B","ADD",39,36,"-29/30"],["B","ADD",38,36,"-11/30"],["B","ADD",37,36,"-41/15"],["B","ADD",36,38,"409/150"],["B","ADD",37,38,"-559/75"],["B","ADD",39,38,"-791/300"],["B","ADD",40,38,"1/2"],["B","ADD",41,38,"191/600"],["B","ADD",42,38,"-191/300"],["B","ADD",43,38,"-1"],["B","SCALE",38,"1/75"],["B","ADD",38,37,"-2"],["B","ADD",38,39,"20"],["B","ADD",38,40,"64"],["B","ADD",38,41,"40"],["B","ADD",38,42,"36"],["B","ADD",38,43,"-8"],["B","IDLE_ONE",38,[4,5,6,7,8]],["B","ADD",38,43,"8"],["B","ADD",38,42,"-36"],["B","ADD",38,41,"-40"],["B","ADD",38,40,"-64"],["B","ADD",38,39,"-20"],["B","ADD",38,37,"2"],["B","SCALE",38,"75"],["B","ADD",43,38,"1"],["B","ADD",42,38,"191/300"],["B","ADD",41,38,"-191/600"],["B","ADD",40,38,"-1/2"],["B","ADD",39,38,"791/300"],["B","ADD",37,38,"559/75"],["B","ADD",36,38,"-409/150"],["B","ADD",37,36,"41/15"],["B","ADD",38,36,"11/30"],["B","ADD",39,36,"29/30"],["B","ADD",40,36,"-11/60"],["B","ADD",41,36,"-7/60"],["B","ADD",42,36,"11/30"],["B","ADD",43,36,"29/30"],["B","ADD",44,36,"-1/15"],["B","ADD",45,36,"-1/6"],["B","SCALE",36,"2/15"],["B","ADD",36,37,"55"],["B","ADD",36,38,"218"],["B","ADD",36,39,"-546"],["B","ADD",36,40,"-1748"],["B","ADD",36,41,"-1092"],["B","ADD",36,42,"218"],["B","ADD",36,43,"-546"],["B","ADD",36,44,"-656"],["B","ADD",36,45,"-1528"],["B","IDLE_ONE",36,[5,6,7,8]],["B","ADD",36,45,"1528"],["B","ADD",36,44,"656"],["B","ADD",36,43,"546"],["B","ADD",36,42,"-218"],["B","ADD",36,41,"1092"],["B","ADD",36,40,"1748"],["B","ADD",36,39,"546"],["B","ADD",36,38,"-218"],["B","ADD",36,37,"-55"],["B","SCALE",36,"15/2"],["B","ADD",45,36,"1/6"],["B","ADD",44,36,"1/15"],["B","ADD",43,36,"-29/30"],["B","ADD",42,36,"-11/30"],["B","ADD",41,36,"7/60"],["B","ADD",40,36,"11/60"],["B","ADD",39,36,"-29/30"],["B","ADD",38,36,"-11/30"],["B","ADD",37,36,"-41/15"],["B","ADD",36,38,"409/150"],["B","ADD",37,38,"-559/75"],["B","ADD",39,38,"-791/300"],["B","ADD",40,38,"1/2"],["B","ADD",41,38,"191/600"],["B","ADD",42,38,"-1"],["B","ADD",43,38,"-791/300"],["B","ADD",44,38,"109/600"],["B","ADD",45,38,"91/200"],["B","SCALE",38,"-1/75"],["B","ADD",38,37,"-2"],["B","ADD",38,39,"20"],["B","ADD",38,40,"64"],["B","ADD",38,41,"40"],["B","ADD",38,42,"-8"],["B","ADD",38,43,"20"],["B","ADD",38,44,"24"],["B","ADD",38,45,"56"],["B","IDLE_ONE",38,[5,6,7,8]],["B","ADD",38,45,"-56"],["B","ADD",38,44,"-24"],["B","ADD",38,43,"-20"],["B","ADD",38,42,"8"],["B","ADD",38,41,"-40"],["B","ADD",38,40,"-64"],["B","ADD",38,39,"-20"],["B","ADD",38,37,"2"],["B","SCALE",38,"-75"],["B","ADD",45,38,"-91/200"],["B","ADD",44,38,"-109/600"],["B","ADD",43,38,"791/300"],["B","ADD",42,38,"1"],["B","ADD",41,38,"-191/600"],["B","ADD",40,38,"-1/2"],["B","ADD",39,38,"791/300"],["B","ADD",37,38,"559/75"],["B","ADD",36,38,"-409/150"],["B","ADD",37,36,"41/15"],["B","ADD",38,36,"11/30"],["B","ADD",39,36,"29/30"],["B","ADD",40,36,"-11/60"],["B","ADD",41,36,"-7/60"],["B","ADD",42,36,"11/30"],["B","ADD",43,36,"29/30"],["B","ADD",44,36,"-11/60"],["B","ADD",45,36,"-7/60"],["B","ADD",46,36,"7/30"],["B","ADD",47,36,"11/30"],["B","SCALE",36,"-2/15"],["B","ADD",36,37,"55"],["B","ADD",36,38,"218"],["B","ADD",36,39,"-546"],["B","ADD",36,40,"-1748"],["B","ADD",36,41,"-1092"],["B","ADD",36,42,"218"],["B","ADD",36,43,"-546"],["B","ADD",36,44,"-1748"],["B","ADD",36,45,"-1092"],["B","ADD",36,46,"-982"],["B","ADD",36,47,"218"],["B","IDLE_ONE",36,[6,7,8]],["B","ADD",36,47,"-218"],["B","ADD",36,46,"982"],["B","ADD",36,45,"1092"],["B","ADD",36,44,"1748"],["B","ADD",36,43,"546"],["B","ADD",36,42,"-218"],["B","ADD",36,41,"1092"],["B","ADD",36,40,"1748"],["B","ADD",36,39,"546"],["B","ADD",36,38,"-218"],["B","ADD",36,37,"-55"],["B","SCALE",36,"-15/2"],["B","ADD",47,36,"-11/30"],["B","ADD",46,36,"-7/30"],["B","ADD",45,36,"7/60"],["B","ADD",44,36,"11/60"],["B","ADD",43,36,"-29/30"],["B","ADD",42,36,"-11/30"],["B","ADD",41,36,"7/60"],["B","ADD",40,36,"11/60"],["B","ADD",39,36,"-29/30"],["B","ADD",38,36,"-11/30"],["B","ADD",37,36,"-41/15"],["B","ADD",36,38,"409/150"],["B","ADD",37,38,"-559/75"],["B","ADD",39,38,"-791/300"],["B","ADD",40,38,"1/2"],["B","ADD",41,38,"191/600"],["B","ADD",42,38,"-1"],["B","ADD",43,38,"-791/300"],["B","ADD",44,38,"1/2"],["B","ADD",45,38,"191/600"],["B","ADD",46,38,"-191/300"],["B","ADD",47,38,"-1"],["B","SCALE",38,"1/75"],["B","ADD",38,37,"-2"],["B","ADD",38,39,"20"],["B","ADD",38,40,"64"],["B","ADD",38,41,"40"],["B","ADD",38,42,"-8"],["B","ADD",38,43,"20"],["B","ADD",38,44,"64"],["B","ADD",38,45,"40"],["B","ADD",38,46,"36"],["B","ADD",38,47,"-8"],["B","IDLE_ONE",38,[6,7,8]],["B","ADD",38,47,"8"],["B","ADD",38,46,"-36"],["B","ADD",38,45,"-40"],["B","ADD",38,44,"-64"],["B","ADD",38,43,"-20"],["B","ADD",38,42,"8"],["B","ADD",38,41,"-40"],["B","ADD",38,40,"-64"],["B","ADD",38,39,"-20"],["B","ADD",38,37,"2"],["B","SCALE",38,"75"],["B","ADD",47,38,"1"],["B","ADD",46,38,"191/300"],["B","ADD",45,38,"-191/600"],["B","ADD",44,38,"-1/2"],["B","ADD",43,38,"791/300"],["B","ADD",42,38,"1"],["B","ADD",41,38,"-191/600"],["B","ADD",40,38,"-1/2"],["B","ADD",39,38,"791/300"],["B","ADD",37,38,"559/75"],["B","ADD",36,38,"-409/150"],["B","ADD",37,36,"41/15"],["B","ADD",38,36,"11/30"],["B","ADD",39,36,"29/30"],["B","ADD",40,36,"-11/60"],["B","ADD",41,36,"-7/60"],["B","ADD",42,36,"11/30"],["B","ADD",43,36,"29/30"],["B","ADD",44,36,"-11/60"],["B","ADD",45,36,"-7/60"],["B","ADD",46,36,"11/30"],["B","ADD",47,36,"29/30"],["B","ADD",48,36,"-1/15"],["B","ADD",49,36,"-1/6"],["B","SCALE",36,"2/15"],["B","ADD",36,37,"55"],["B","ADD",36,38,"218"],["B","ADD",36,39,"-546"],["B","ADD",36,40,"-1748"],["B","ADD",36,41,"-1092"],["B","ADD",36,42,"218"],["B","ADD",36,43,"-546"],["B","ADD",36,44,"-1748"],["B","ADD",36,45,"-1092"],["B","ADD",36,46,"218"],["B","ADD",36,47,"-546"],["B","ADD",36,48,"-656"],["B","ADD",36,49,"-1528"],["B","IDLE_ONE",36,[7,8]],["B","ADD",36,49,"1528"],["B","ADD",36,48,"656"],["B","ADD",36,47,"546"],["B","ADD",36,46,"-218"],["B","ADD",36,45,"1092"],["B","ADD",36,44,"1748"],["B","ADD",36,43,"546"],["B","ADD",36,42,"-218"],["B","ADD",36,41,"1092"],["B","ADD",36,40,"1748"],["B","ADD",36,39,"546"],["B","ADD",36,38,"-218"],["B","ADD",36,37,"-55"],["B","SCALE",36,"15/2"],["B","ADD",49,36,"1/6"],["B","ADD",48,36,"1/15"],["B","ADD",47,36,"-29/30"],["B","ADD",46,36,"-11/30"],["B","ADD",45,36,"7/60"],["B","ADD",44,36,"11/60"],["B","ADD",43,36,"-29/30"],["B","ADD",42,36,"-11/30"],["B","ADD",41,36,"7/60"],["B","ADD",40,36,"11/60"],["B","ADD",39,36,"-29/30"],["B","ADD",38,36,"-11/30"],["B","ADD",37,36,"-41/15"],["B","ADD",36,38,"409/150"],["B","ADD",37,38,"-559/75"],["B","ADD",39,38,"-791/300"],["B","ADD",40,38,"1/2"],["B","ADD",41,38,"191/600"],["B","ADD",42,38,"-1"],["B","ADD",43,38,"-791/300"],["B","ADD",44,38,"1/2"],["B","ADD",45,38,"191/600"],["B","ADD",46,38,"-1"],["B","ADD",47,38,"-791/300"],["B","ADD",48,38,"109/600"],["B","ADD",49,38,"91/200"],["B","SCALE",38,"-1/75"],["B","ADD",38,37,"-2"],["B","ADD",38,39,"20"],["B","ADD",38,40,"64"],["B","ADD",38,41,"40"],["B","ADD",38,42,"-8"],["B","ADD",38,43,"20"],["B","ADD",38,44,"64"],["B","ADD",38,45,"40"],["B","ADD",38,46,"-8"],["B","ADD",38,47,"20"],["B","ADD",38,48,"24"],["B","ADD",38,49,"56"],["B","IDLE_ONE",38,[7,8]],["B","ADD",38,49,"-56"],["B","ADD",38,48,"-24"],["B","ADD",38,47,"-20"],["B","ADD",38,46,"8"],["B","ADD",38,45,"-40"],["B","ADD",38,44,"-64"],["B","ADD",38,43,"-20"],["B","ADD",38,42,"8"],["B","ADD",38,41,"-40"],["B","ADD",38,40,"-64"],["B","ADD",38,39,"-20"],["B","ADD",38,37,"2"],["B","SCALE",38,"-75"],["B","ADD",49,38,"-91/200"],["B","ADD",48,38,"-109/600"],["B","ADD",47,38,"791/300"],["B","ADD",46,38,"1"],["B","ADD",45,38,"-191/600"],["B","ADD",44,38,"-1/2"],["B","ADD",43,38,"791/300"],["B","ADD",42,38,"1"],["B","ADD",41,38,"-191/600"],["B","ADD",40,38,"-1/2"],["B","ADD",39,38,"791/300"],["B","ADD",37,38,"559/75"],["B","ADD",36,38,"-409/150"],["B","ADD",37,36,"41/16"],["B","ADD",52,36,"1/16"],["B","ADD",53,36,"9/32"],["B","SCALE",36,"-1/16"],["B","ADD",36,52,"-10"],["B","ADD",36,53,"6"],["B","IDLE_ONE",36,[16,15,14,13,12,11,10,9]],["B","ADD",36,53,"-6"],["B","ADD",36,52,"10"],["B","SCALE",36,"-16"],["B","ADD",53,36,"-9/32"],["B","ADD",52,36,"-1/16"],["B","ADD",37,36,"-41/16"],["B","ADD",36,37,"7/18"],["B","ADD",52,37,"-1/36"],["B","ADD",53,37,"-1/9"],["B","SCALE",37,"-1/18"],["B","ADD",37,52,"-22"],["B","ADD",37,53,"14"],["B","IDLE_ONE",37,[16,15,14,13,12,11,10,9]],["B","ADD",37,53,"-14"],["B","ADD",37,52,"22"],["B","SCALE",37,"-18"],["B","ADD",53,37,"1/9"],["B","ADD",52,37,"1/36"],["B","ADD",36,37,"-7/18"],["B","ADD",37,36,"41/16"],["B","ADD",52,36,"11/64"],["B","ADD",53,36,"29/64"],["B","ADD",54,36,"1/32"],["B","ADD",55,36,"5/64"],["B","SCALE",36,"-1/16"],["B","ADD",36,37,"5"],["B","ADD",36,52,"22"],["B","ADD",36,53,"-54"],["B","ADD",36,54,"32"],["B","ADD",36,55,"76"],["B","IDLE_ONE",36,[15,14,13,12,11,10,9]],["B","ADD",36,55,"-76"],["B","ADD",36,54,"-32"],["B","ADD",36,53,"54"],["B","ADD",36,52,"-22"],["B","ADD",36,37,"-5"],["B","SCALE",36,"-16"],["B","ADD",55,36,"-5/64"],["B","ADD",54,36,"-1/32"],["B","ADD",53,36,"-29/64"],["B","ADD",52,36,"-11/64"],["B","ADD",37,36,"-41/16"],["B","ADD",36,52,"29/5"],["B","ADD",37,52,"-223/15"],["B","ADD",53,52,"-79/30"],["B","ADD",54,52,"-11/60"],["B","ADD",55,52,"-9/20"],["B","SCALE",52,"1/15"],["B","ADD",52,37,"-1"],["B","ADD",52,53,"10"],["B","ADD",52,54,"-6"],["B","ADD",52,55,"-14"],["B","IDLE_ONE",52,[15,14,13,12,11,10,9]],["B","ADD",52,55,"14"],["B","ADD",52,54,"6"],["B","ADD",52,53,"-10"],["B","ADD",52,37,"1"],["B","SCALE",52,"15"],["B","ADD",55,52,"9/20"],["B","ADD",54,52,"11/60"],["B","ADD",53,52,"79/30"],["B","ADD",37,52,"223/15"],["B","ADD",36,52,"-29/5"],["B","ADD",37,36,"41/16"],["B","ADD",52,36,"11/64"],["B","ADD",53,36,"29/64"],["B","ADD",54,36,"9/64"],["B","ADD",55,36,"1/32"],["B","ADD",56,36,"1/16"],["B","ADD",57,36,"9/32"],["B","SCALE",36,"-1/16"],["B","ADD",36,37,"-5"],["B","ADD",36,52,"-22"],["B","ADD",36,53,"54"],["B","ADD",36,54,"-140"],["B","ADD",36,55,"-32"],["B","ADD",36,56,"-120"],["B","ADD",36,57,"76"],["B","IDLE_ONE",36,[14,13,12,11,10,9]],["B","ADD",36,57,"-76"],["B","ADD",36,56,"120"],["B","ADD",36,55,"32"],["B","ADD",36,54,"140"],["B","ADD",36,53,"-54"],["B","ADD",36,52,"22"],["B","ADD",36,37,"5"],["B","SCALE",36,"-16"],["B","ADD",57,36,"-9/32"],["B","ADD",56,36,"-1/16"],["B","ADD",55,36,"-1/32"],["B","ADD",54,36,"-9/64"],["B","ADD",53,36,"-29/64"],["B","ADD",52,36,"-11/64"],["B","ADD",37,36,"-41/16"],["B","ADD",36,52,"29/5"],["B","ADD",37,52,"-223/15"],["B","ADD",53,52,"-79/30"],["B","ADD",54,52,"-49/60"],["B","ADD",55,52,"-11/60"],["B","ADD",56,52,"-11/30"],["B","ADD",57,52,"-49/30"],["B","SCALE",52,"1/15"],["B","ADD",52,37,"1"],["B","ADD",52,53,"-10"],["B","ADD",52,54,"26"],["B","ADD",52,55,"6"],["B","ADD",52,56,"22"],["B","ADD",52,57,"-14"],["B","IDLE_ONE",52,[14,13,12,11,10,9]],["B","ADD",52,57,"14"],["B","ADD",52,56,"-22"],["B","ADD",52,55,"-6"],["B","ADD",52,54,"-26"],["B","ADD",52,53,"10"],["B","ADD",52,37,"-1"],["B","SCALE",52,"15"],["B","ADD",57,52,"49/30"],["B","ADD",56,52,"11/30"],["B","ADD",55,52,"11/60"],["B","ADD",54,52,"49/60"],["B","ADD",53,52,"79/30"],["B","ADD",37,52,"223/15"],["B","ADD",36,52,"-29/5"],["B","ADD",37,36,"41/16"],["B","ADD",52,36,"11/64"],["B","ADD",53,36,"29/64"],["B","ADD",54,36,"9/64"],["B","ADD",55,36,"1/32"],["B","ADD",56,36,"11/64"],["B","ADD",57,36,"29/64"],["B","ADD",58,36,"1/32"],["B","ADD",59,36,"5/64"],["B","SCALE",36,"-1/16"],["B","ADD",36,37,"5"],["B","ADD",36,52,"22"],["B","ADD",36,53,"-54"],["B","ADD",36,54,"140"],["B","ADD",36,55,"32"],["B","ADD",36,56,"22"],["B","ADD",36,57,"-54"],["B","ADD",36,58,"32"],["B","ADD",36,59,"76"],["B","IDLE_ONE",36,[13,12,11,10,9]],["B","ADD",36,59,"-76"],["B","ADD",36,58,"-32"],["B","ADD",36,57,"54"],["B","ADD",36,56,"-22"],["B","ADD",36,55,"-32"],["B","ADD",36,54,"-140"],["B","ADD",36,53,"54"],["B","ADD",36,52,"-22"],["B","ADD",36,37,"-5"],["B","SCALE",36,"-16"],["B","ADD",59,36,"-5/64"],["B","ADD",58,36,"-1/32"],["B","ADD",57,36,"-29/64"],["B","ADD",56,36,"-11/64"],["B","ADD",55,36,"-1/32"],["B","ADD",54,36,"-9/64"],["B","ADD",53,36,"-29/64"],["B","ADD",52,36,"-11/64"],["B","ADD",37,36,"-41/16"],["B","ADD",36,52,"29/5"],["B","ADD",37,52,"-223/15"],["B","ADD",53,52,"-79/30"],["B","ADD",54,52,"-49/60"],["B","ADD",55,52,"-11/60"],["B","ADD",56,52,"-1"],["B","ADD",57,52,"-79/30"],["B","ADD",58,52,"-11/60"],["B","ADD",59,52,"-9/20"],["B","SCALE",52,"1/15"],["B","ADD",52,37,"-1"],["B","ADD",52,53,"10"],["B","ADD",52,54,"-26"],["B","ADD",52,55,"-6"],["B","ADD",52,56,"-4"],["B","ADD",52,57,"10"],["B","ADD",52,58,"-6"],["B","ADD",52,59,"-14"],["B","IDLE_ONE",52,[13,12,11,10,9]],["B","ADD",52,59,"14"],["B","ADD",52,58,"6"],["B","ADD",52,57,"-10"],["B","ADD",52,56,"4"],["B","ADD",52,55,"6"],["B","ADD",52,54,"26"],["B","ADD",52,53,"-10"],["B","ADD",52,37,"1"],["B","SCALE",52,"15"],["B","ADD",59,52,"9/20"],["B","ADD",58,52,"11/60"],["B","ADD",57,52,"79/30"],["B","ADD",56,52,"1"],["B","ADD",55,52,"11/60"],["B","ADD",54,52,"49/60"],["B","ADD",53,52,"79/30"],["B","ADD",37,52,"223/15"],["B","ADD",36,52,"-29/5"],["B","ADD",37,36,"41/16"],["B","ADD",52,36,"11/64"],["B","ADD",53,36,"29/64"],["B","ADD",54,36,"9/64"],["B","ADD",55,36,"1/32"],["B","ADD",56,36,"11/64"],["B","ADD",57,36,"29/64"],["B","ADD",58,36,"9/64"],["B","ADD",59,36,"1/32"],["B","ADD",60,36,"1/16"],["B","ADD",61,36,"9/32"],["B","SCALE",36,"-1/16"],["B","ADD",36,37,"-5"],["B","ADD",36,52,"-22"],["B","ADD",36,53,"54"],["B","ADD",36,54,"-140"],["B","ADD",36,55,"-32"],["B","ADD",36,56,"-22"],["B","ADD",36,57,"54"],["B","ADD",36,58,"-140"],["B","ADD",36,59,"-32"],["B","ADD",36,60,"-120"],["B","ADD",36,61,"76"],["B","IDLE_ONE",36,[12,11,10,9]],["B","ADD",36,61,"-76"],["B","ADD",36,60,"120"],["B","ADD",36,59,"32"],["B","ADD",36,58,"140"],["B","ADD",36,57,"-54"],["B","ADD",36,56,"22"],["B","ADD",36,55,"32"],["B","ADD",36,54,"140"],["B","ADD",36,53,"-54"],["B","ADD",36,52,"22"],["B","ADD",36,37,"5"],["B","SCALE",36,"-16"],["B","ADD",61,36,"-9/32"],["B","ADD",60,36,"-1/16"],["B","ADD",59,36,"-1/32"],["B","ADD",58,36,"-9/64"],["B","ADD",57,36,"-29/64"],["B","ADD",56,36,"-11/64"],["B","ADD",55,36,"-1/32"],["B","ADD",54,36,"-9/64"],["B","ADD",53,36,"-29/64"],["B","ADD",52,36,"-11/64"],["B","ADD",37,36,"-41/16"],["B","ADD",36,52,"29/5"],["B","ADD",37,52,"-223/15"],["B","ADD",53,52,"-79/30"],["B","ADD",54,52,"-49/60"],["B","ADD",55,52,"-11/60"],["B","ADD",56,52,"-1"],["B","ADD",57,52,"-79/30"],["B","ADD",58,52,"-49/60"],["B","ADD",59,52,"-11/60"],["B","ADD",60,52,"-11/30"],["B","ADD",61,52,"-49/30"],["B","SCALE",52,"1/15"],["B","ADD",52,37,"1"],["B","ADD",52,53,"-10"],["B","ADD",52,54,"26"],["B","ADD",52,55,"6"],["B","ADD",52,56,"4"],["B","ADD",52,57,"-10"],["B","ADD",52,58,"26"],["B","ADD",52,59,"6"],["B","ADD",52,60,"22"],["B","ADD",52,61,"-14"],["B","IDLE_ONE",52,[12,11,10,9]],["B","ADD",52,61,"14"],["B","ADD",52,60,"-22"],["B","ADD",52,59,"-6"],["B","ADD",52,58,"-26"],["B","ADD",52,57,"10"],["B","ADD",52,56,"-4"],["B","ADD",52,55,"-6"],["B","ADD",52,54,"-26"],["B","ADD",52,53,"10"],["B","ADD",52,37,"-1"],["B","SCALE",52,"15"],["B","ADD",61,52,"49/30"],["B","ADD",60,52,"11/30"],["B","ADD",59,52,"11/60"],["B","ADD",58,52,"49/60"],["B","ADD",57,52,"79/30"],["B","ADD",56,52,"1"],["B","ADD",55,52,"11/60"],["B","ADD",54,52,"49/60"],["B","ADD",53,52,"79/30"],["B","ADD",37,52,"223/15"],["B","ADD",36,52,"-29/5"],["B","ADD",37,36,"41/16"],["B","ADD",52,36,"11/64"],["B","ADD",53,36,"29/64"],["B","ADD",54,36,"9/64"],["B","ADD",55,36,"1/32"],["B","ADD",56,36,"11/64"],["B","ADD",57,36,"29/64"],["B","ADD",58,36,"9/64"],["B","ADD",59,36,"1/32"],["B","ADD",60,36,"11/64"],["B","ADD",61,36,"29/64"],["B","ADD",62,36,"1/32"],["B","ADD",63,36,"5/64"],["B","SCALE",36,"-1/16"],["B","ADD",36,37,"5"],["B","ADD",36,52,"22"],["B","ADD",36,53,"-54"],["B","ADD",36,54,"140"],["B","ADD",36,55,"32"],["B","ADD",36,56,"22"],["B","ADD",36,57,"-54"],["B","ADD",36,58,"140"],["B","ADD",36,59,"32"],["B","ADD",36,60,"22"],["B","ADD",36,61,"-54"],["B","ADD",36,62,"32"],["B","ADD",36,63,"76"],["B","IDLE_ONE",36,[11,10,9]],["B","ADD",36,63,"-76"],["B","ADD",36,62,"-32"],["B","ADD",36,61,"54"],["B","ADD",36,60,"-22"],["B","ADD",36,59,"-32"],["B","ADD",36,58,"-140"],["B","ADD",36,57,"54"],["B","ADD",36,56,"-22"],["B","ADD",36,55,"-32"],["B","ADD",36,54,"-140"],["B","ADD",36,53,"54"],["B","ADD",36,52,"-22"],["B","ADD",36,37,"-5"],["B","SCALE",36,"-16"],["B","ADD",63,36,"-5/64"],["B","ADD",62,36,"-1/32"],["B","ADD",61,36,"-29/64"],["B","ADD",60,36,"-11/64"],["B","ADD",59,36,"-1/32"],["B","ADD",58,36,"-9/64"],["B","ADD",57,36,"-29/64"],["B","ADD",56,36,"-11/64"],["B","ADD",55,36,"-1/32"],["B","ADD",54,36,"-9/64"],["B","ADD",53,36,"-29/64"],["B","ADD",52,36,"-11/64"],["B","ADD",37,36,"-41/16"],["B","ADD",36,52,"29/5"],["B","ADD",37,52,"-223/15"],["B","ADD",53,52,"-79/30"],["B","ADD",54,52,"-49/60"],["B","ADD",55,52,"-11/60"],["B","ADD",56,52,"-1"],["B","ADD",57,52,"-79/30"],["B","ADD",58,52,"-49/60"],["B","ADD",59,52,"-11/60"],["B","ADD",60,52,"-1"],["B","ADD",61,52,"-79/30"],["B","ADD",62,52,"-11/60"],["B","ADD",63,52,"-9/20"],["B","SCALE",52,"1/15"],["B","ADD",52,37,"-1"],["B","ADD",52,53,"10"],["B","ADD",52,54,"-26"],["B","ADD",52,55,"-6"],["B","ADD",52,56,"-4"],["B","ADD",52,57,"10"],["B","ADD",52,58,"-26"],["B","ADD",52,59,"-6"],["B","ADD",52,60,"-4"],["B","ADD",52,61,"10"],["B","ADD",52,62,"-6"],["B","ADD",52,63,"-14"],["B","IDLE_ONE",52,[11,10,9]],["B","ADD",52,63,"14"],["B","ADD",52,62,"6"],["B","ADD",52,61,"-10"],["B","ADD",52,60,"4"],["B","ADD",52,59,"6"],["B","ADD",52,58,"26"],["B","ADD",52,57,"-10"],["B","ADD",52,56,"4"],["B","ADD",52,55,"6"],["B","ADD",52,54,"26"],["B","ADD",52,53,"-10"],["B","ADD",52,37,"1"],["B","SCALE",52,"15"],["B","ADD",63,52,"9/20"],["B","ADD",62,52,"11/60"],["B","ADD",61,52,"79/30"],["B","ADD",60,52,"1"],["B","ADD",59,52,"11/60"],["B","ADD",58,52,"49/60"],["B","ADD",57,52,"79/30"],["B","ADD",56,52,"1"],["B","ADD",55,52,"11/60"],["B","ADD",54,52,"49/60"],["B","ADD",53,52,"79/30"],["B","ADD",37,52,"223/15"],["B","ADD",36,52,"-29/5"],["B","ADD",37,36,"5/2"],["B","ADD",52,36,"1/8"],["B","ADD",53,36,"3/8"],["B","ADD",54,36,"1/8"],["B","ADD",56,36,"1/8"],["B","ADD",57,36,"3/8"],["B","ADD",58,36,"1/8"],["B","ADD",60,36,"1/8"],["B","ADD",61,36,"3/8"],["B","ADD",62,36,"1/8"],["B","ADD",65,36,"1/4"],["B","SCALE",36,"-5/2"],["B","ADD",36,37,"3"],["B","ADD",36,52,"2"],["B","ADD",36,53,"-10"],["B","ADD",36,54,"28"],["B","ADD",36,55,"8"],["B","ADD",36,56,"2"],["B","ADD",36,57,"-10"],["B","ADD",36,58,"28"],["B","ADD",36,59,"8"],["B","ADD",36,60,"2"],["B","ADD",36,61,"-10"],["B","ADD",36,62,"28"],["B","ADD",36,63,"8"],["B","ADD",36,64,"2"],["B","IDLE_ONE",36,[10,9]],["B","ADD",36,64,"-2"],["B","ADD",36,63,"-8"],["B","ADD",36,62,"-28"],["B","ADD",36,61,"10"],["B","ADD",36,60,"-2"],["B","ADD",36,59,"-8"],["B","ADD",36,58,"-28"],["B","ADD",36,57,"10"],["B","ADD",36,56,"-2"],["B","ADD",36,55,"-8"],["B","ADD",36,54,"-28"],["B","ADD",36,53,"10"],["B","ADD",36,52,"-2"],["B","ADD",36,37,"-3"],["B","SCALE",36,"-2/5"],["B","ADD",65,36,"-1/4"],["B","ADD",62,36,"-1/8"],["B","ADD",61,36,"-3/8"],["B","ADD",60,36,"-1/8"],["B","ADD",58,36,"-1/8"],["B","ADD",57,36,"-3/8"],["B","ADD",56,36,"-1/8"],["B","ADD",54,36,"-1/8"],["B","ADD",53,36,"-3/8"],["B","ADD",52,36,"-1/8"],["B","ADD",37,36,"-5/2"],["B","ADD",37,36,"2"],["B","ADD",52,36,"-1/4"],["B","ADD",53,36,"-1/4"],["B","ADD",55,36,"-1/4"],["B","ADD",56,36,"-1/4"],["B","ADD",57,36,"-1/4"],["B","ADD",59,36,"-1/4"],["B","ADD",60,36,"-1/4"],["B","ADD",61,36,"-1/4"],["B","ADD",63,36,"-1/4"],["B","ADD",64,36,"-1/2"],["B","SCALE",36,"5"],["B","ADD",36,37,"2"],["B","ADD",36,52,"8"],["B","ADD",36,53,"-20"],["B","ADD",36,54,"52"],["B","ADD",36,55,"12"],["B","ADD",36,56,"8"],["B","ADD",36,57,"-20"],["B","ADD",36,58,"52"],["B","ADD",36,59,"12"],["B","ADD",36,60,"8"],["B","ADD",36,61,"-20"],["B","ADD",36,62,"52"],["B","ADD",36,63,"12"],["B","ADD",36,64,"18"],["B","ADD",36,65,"-20"],["B","IDLE_ONE",36,[10,9]],["B","ADD",36,65,"20"],["B","ADD",36,64,"-18"],["B","ADD",36,63,"-12"],["B","ADD",36,62,"-52"],["B","ADD",36,61,"20"],["B","ADD",36,60,"-8"],["B","ADD",36,59,"-12"],["B","ADD",36,58,"-52"],["B","ADD",36,57,"20"],["B","ADD",36,56,"-8"],["B","ADD",36,55,"-12"],["B","ADD",36,54,"-52"],["B","ADD",36,53,"20"],["B","ADD",36,52,"-8"],["B","ADD",36,37,"-2"],["B","SCALE",36,"1/5"],["B","ADD",64,36,"1/2"],["B","ADD",63,36,"1/4"],["B","ADD",61,36,"1/4"],["B","ADD",60,36,"1/4"],["B","ADD",59,36,"1/4"],["B","ADD",57,36,"1/4"],["B","ADD",56,36,"1/4"],["B","ADD",55,36,"1/4"],["B","ADD",53,36,"1/4"],["B","ADD",52,36,"1/4"],["B","ADD",37,36,"-2"],["B","ADD",37,36,"9/5"],["B","ADD",52,36,"-2/5"],["B","ADD",53,36,"-1/2"],["B","ADD",54,36,"-1/20"],["B","ADD",55,36,"-7/20"],["B","ADD",56,36,"-2/5"],["B","ADD",57,36,"-1/2"],["B","ADD",58,36,"-1/20"],["B","ADD",59,36,"-7/20"],["B","ADD",60,36,"-2/5"],["B","ADD",61,36,"-1/2"],["B","ADD",62,36,"-1/20"],["B","ADD",63,36,"-7/20"],["B","ADD",64,36,"-1/5"],["B","ADD",66,36,"-2/5"],["B","ADD",67,36,"7/40"],["B","SCALE",36,"-1/2"],["B","ADD",36,37,"-4"],["B","ADD",36,52,"-6"],["B","ADD",36,53,"20"],["B","ADD",36,54,"-54"],["B","ADD",36,55,"-14"],["B","ADD",36,56,"-6"],["B","ADD",36,57,"20"],["B","ADD",36,58,"-54"],["B","ADD",36,59,"-14"],["B","ADD",36,60,"-6"],["B","ADD",36,61,"20"],["B","ADD",36,62,"-54"],["B","ADD",36,63,"-14"],["B","ADD",36,64,"-6"],["B","ADD",36,65,"20"],["B","ADD",36,66,"40"],["B","ADD",36,67,"100"],["B","IDLE_ONE",36,[9]],["B","ADD",36,67,"-100"],["B","ADD",36,66,"-40"],["B","ADD",36,65,"-20"],["B","ADD",36,64,"6"],["B","ADD",36,63,"14"],["B","ADD",36,62,"54"],["B","ADD",36,61,"-20"],["B","ADD",36,60,"6"],["B","ADD",36,59,"14"],["B","ADD",36,58,"54"],["B","ADD",36,57,"-20"],["B","ADD",36,56,"6"],["B","ADD",36,55,"14"],["B","ADD",36,54,"54"],["B","ADD",36,53,"-20"],["B","ADD",36,52,"6"],["B","ADD",36,37,"4"],["B","SCALE",36,"-2"],["B","ADD",67,36,"-7/40"],["B","ADD",66,36,"2/5"],["B","ADD",64,36,"1/5"],["B","ADD",63,36,"7/20"],["B","ADD",62,36,"1/20"],["B","ADD",61,36,"1/2"],["B","ADD",60,36,"2/5"],["B","ADD",59,36,"7/20"],["B","ADD",58,36,"1/20"],["B","ADD",57,36,"1/2"],["B","ADD",56,36,"2/5"],["B","ADD",55,36,"7/20"],["B","ADD",54,36,"1/20"],["B","ADD",53,36,"1/2"],["B","ADD",52,36,"2/5"],["B","ADD",37,36,"-9/5"],["B","ADD",36,54,"-52/3"],["B","ADD",37,54,"92/3"],["B","ADD",52,54,"-22/3"],["B","ADD",53,54,"-28/3"],["B","ADD",55,54,"-19/3"],["B","ADD",56,54,"-22/3"],["B","ADD",57,54,"-28/3"],["B","ADD",58,54,"-1"],["B","ADD",59,54,"-19/3"],["B","ADD",60,54,"-22/3"],["B","ADD",61,54,"-28/3"],["B","ADD",62,54,"-1"],["B","ADD",63,54,"-19/3"],["B","ADD",64,54,"-8/3"],["B","ADD",65,54,"2/3"],["B","ADD",66,54,"-22/3"],["B","ADD",67,54,"3"],["B","SCALE",54,"-20/3"],["B","ADD",54,37,"2"],["B","ADD",54,52,"8"],["B","ADD",54,53,"-20"],["B","ADD",54,55,"12"],["B","ADD",54,56,"8"],["B","ADD",54,57,"-20"],["B","ADD",54,58,"52"],["B","ADD",54,59,"12"],["B","ADD",54,60,"8"],["B","ADD",54,61,"-20"],["B","ADD",54,62,"52"],["B","ADD",54,63,"12"],["B","ADD",54,64,"8"],["B","ADD",54,65,"-20"],["B","ADD",54,66,"-30"],["B","ADD",54,67,"-80"],["B","IDLE_ONE",54,[9]],["B","ADD",54,67,"80"],["B","ADD",54,66,"30"],["B","ADD",54,65,"20"],["B","ADD",54,64,"-8"],["B","ADD",54,63,"-12"],["B","ADD",54,62,"-52"],["B","ADD",54,61,"20"],["B","ADD",54,60,"-8"],["B","ADD",54,59,"-12"],["B","ADD",54,58,"-52"],["B","ADD",54,57,"20"],["B","ADD",54,56,"-8"],["B","ADD",54,55,"-12"],["B","ADD",54,53,"20"],["B","ADD",54,52,"-8"],["B","ADD",54,37,"-2"],["B","SCALE",54,"-3/20"],["B","ADD",67,54,"-3"],["B","ADD",66,54,"22/3"],["B","ADD",65,54,"-2/3"],["B","ADD",64,54,"8/3"],["B","ADD",63,54,"19/3"],["B","ADD",62,54,"1"],["B","ADD",61,54,"28/3"],["B","ADD",60,54,"22/3"],["B","ADD",59,54,"19/3"],["B","ADD",58,54,"1"],["B","ADD",57,54,"28/3"],["B","ADD",56,54,"22/3"],["B","ADD",55,54,"19/3"],["B","ADD",53,54,"28/3"],["B","ADD",52,54,"22/3"],["B","ADD",37,54,"-92/3"],["B","ADD",36,54,"52/3"],["B","IDLE_ODD",70,[9],-1],["B","IDLE_ODD",71,[9],-1],["B","ADD",37,36,"5/3"],["B","ADD",52,36,"-1/2"],["B","ADD",53,36,"-2/3"],["B","ADD",54,36,"-1/12"],["B","ADD",55,36,"-5/12"],["B","ADD",56,36,"-1/2"],["B","ADD",57,36,"-2/3"],["B","ADD",58,36,"-1/12"],["B","ADD",59,36,"-5/12"],["B","ADD",60,36,"-1/2"],["B","ADD",61,36,"-2/3"],["B","ADD",62,36,"-1/12"],["B","ADD",63,36,"-5/12"],["B","ADD",65,36,"1/6"],["B","ADD",66,36,"-2/3"],["B","ADD",67,36,"1/4"],["B","SCALE",36,"-1/3"],["B","ADD",36,37,"1"],["B","ADD",36,52,"-2"],["B","ADD",36,53,"2"],["B","ADD",36,54,"-4"],["B","ADD",36,56,"-2"],["B","ADD",36,57,"2"],["B","ADD",36,58,"-4"],["B","ADD",36,60,"-2"],["B","ADD",36,61,"2"],["B","ADD",36,62,"-4"],["B","ADD",36,64,"-2"],["B","ADD",36,65,"2"],["B","ADD",36,66,"-2"],["B","ADD",52,37,"-3/4"],["B","ADD",53,37,"-5/4"],["B","ADD",54,37,"-1/4"],["B","ADD",55,37,"-1/2"],["B","ADD",56,37,"-3/4"],["B","ADD",57,37,"-5/4"],["B","ADD",58,37,"-1/4"],["B","ADD",59,37,"-1/2"],["B","ADD",60,37,"-3/4"],["B","ADD",61,37,"-5/4"],["B","ADD",62,37,"-1/4"],["B","ADD",63,37,"-1/2"],["B","ADD",64,37,"3/2"],["B","ADD",65,37,"5/4"],["B","ADD",66,37,"-1/2"],["B","SCALE",37,"-3/4"],["B","ADD",37,53,"1"],["B","ADD",37,54,"-3"],["B","ADD",37,55,"-1"],["B","ADD",37,57,"1"],["B","ADD",37,58,"-3"],["B","ADD",37,59,"-1"],["B","ADD",37,61,"1"],["B","ADD",37,62,"-3"],["B","ADD",37,63,"-1"],["B","ADD",37,65,"1"],["B","ADD",37,66,"2"],["B","ADD",37,67,"4"],["B","SCALE",37,"1"],["B","ADD",37,36,"1/2"],["B","ADD",37,36,"-1/2"],["B","ADD",36,37,"1"],["B","LAMBDA",36,1],["A","ADD",9,0,"1"],["A","ADD",10,0,"2"],["A","ADD",11,0,"2"],["A","ADD",12,0,"2"],["A","ADD",13,0,"2"],["A","ADD",14,0,"2"],["A","ADD",15,0,"2"],["A","ADD",16,0,"2"],["A","ADD",17,0,"2"],["A","SCALE",0,"-1"],["A","ADD",27,18,"1"],["A","ADD",28,18,"2"],["A","ADD",29,18,"2"],["A","ADD",30,18,"2"],["A","ADD",31,18,"2"],["A","ADD",32,18,"2"],["A","ADD",33,18,"2"],["A","ADD",34,18,"2"],["A","ADD",35,18,"2"],["A","SCALE",18,"-1"],["A","LAMBDA",9,1],["A","LAMBDA",27,-1],["A","SCALE",27,"-1"],["J",9,[9,0,18,27],[36,37,"-1","1/2"]],["A","LAMBDA",9,-1],["A","LAMBDA",27,1],["A","SCALE",27,"-1"],["A","ADD",0,9,"-1"],["A","ADD",18,27,"-1"],["A","SCALE",18,"-1"],["A","ADD",35,18,"-2"],["A","ADD",34,18,"-2"],["A","ADD",33,18,"-2"],["A","ADD",32,18,"-2"],["A","ADD",31,18,"-2"],["A","ADD",30,18,"-2"],["A","ADD",29,18,"-2"],["A","ADD",28,18,"-2"],["A","ADD",27,18,"-1"],["A","SCALE",0,"-1"],["A","ADD",17,0,"-2"],["A","ADD",16,0,"-2"],["A","ADD",15,0,"-2"],["A","ADD",14,0,"-2"],["A","ADD",13,0,"-2"],["A","ADD",12,0,"-2"],["A","ADD",11,0,"-2"],["A","ADD",10,0,"-2"],["A","ADD",9,0,"-1"],["B","LAMBDA",36,-1],["B","ADD",37,36,"-1/2"],["B","SCALE",37,"1"],["B","ADD",37,67,"-4"],["B","ADD",37,66,"-2"],["B","ADD",37,65,"-1"],["B","ADD",37,63,"1"],["B","ADD",37,62,"3"],["B","ADD",37,61,"-1"],["B","ADD",37,59,"1"],["B","ADD",37,58,"3"],["B","ADD",37,57,"-1"],["B","ADD",37,55,"1"],["B","ADD",37,54,"3"],["B","ADD",37,53,"-1"],["B","SCALE",37,"-4/3"],["B","ADD",66,37,"1/2"],["B","ADD",65,37,"-5/4"],["B","ADD",64,37,"-3/2"],["B","ADD",63,37,"1/2"],["B","ADD",62,37,"1/4"],["B","ADD",61,37,"5/4"],["B","ADD",60,37,"3/4"],["B","ADD",59,37,"1/2"],["B","ADD",58,37,"1/4"],["B","ADD",57,37,"5/4"],["B","ADD",56,37,"3/4"],["B","ADD",55,37,"1/2"],["B","ADD",54,37,"1/4"],["B","ADD",53,37,"5/4"],["B","ADD",52,37,"3/4"],["B","ADD",36,66,"2"],["B","ADD",36,65,"-2"],["B","ADD",36,64,"2"],["B","ADD",36,62,"4"],["B","ADD",36,61,"-2"],["B","ADD",36,60,"2"],["B","ADD",36,58,"4"],["B","ADD",36,57,"-2"],["B","ADD",36,56,"2"],["B","ADD",36,54,"4"],["B","ADD",36,53,"-2"],["B","ADD",36,52,"2"],["B","ADD",36,37,"-1"],["B","SCALE",36,"-3"],["B","ADD",67,36,"-1/4"],["B","ADD",66,36,"2/3"],["B","ADD",65,36,"-1/6"],["B","ADD",63,36,"5/12"],["B","ADD",62,36,"1/12"],["B","ADD",61,36,"2/3"],["B","ADD",60,36,"1/2"],["B","ADD",59,36,"5/12"],["B","ADD",58,36,"1/12"],["B","ADD",57,36,"2/3"],["B","ADD",56,36,"1/2"],["B","ADD",55,36,"5/12"],["B","ADD",54,36,"1/12"],["B","ADD",53,36,"2/3"],["B","ADD",52,36,"1/2"],["B","ADD",37,36,"-5/3"],["B","ADD",37,36,"7/5"],["B","ADD",52,36,"-7/10"],["B","ADD",53,36,"-1"],["B","ADD",54,36,"-3/20"],["B","ADD",55,36,"-11/20"],["B","ADD",56,36,"-7/10"],["B","ADD",57,36,"-1"],["B","ADD",58,36,"-3/20"],["B","ADD",59,36,"-11/20"],["B","ADD",60,36,"-7/10"],["B","ADD",61,36,"-1"],["B","ADD",62,36,"-3/20"],["B","ADD",63,36,"-11/20"],["B","ADD",64,36,"2/5"],["B","ADD",65,36,"1/2"],["B","ADD",66,36,"-3/5"],["B","ADD",67,36,"1/5"],["B","SCALE",36,"-2"],["B","ADD",36,37,"-69"],["B","ADD",36,52,"-296"],["B","ADD",36,53,"730"],["B","ADD",36,54,"-1894"],["B","ADD",36,55,"-434"],["B","ADD",36,56,"-296"],["B","ADD",36,57,"730"],["B","ADD",36,58,"-1894"],["B","ADD",36,59,"-434"],["B","ADD",36,60,"-296"],["B","ADD",36,61,"730"],["B","ADD",36,62,"-1894"],["B","ADD",36,63,"-434"],["B","ADD",36,64,"-296"],["B","ADD",36,65,"730"],["B","ADD",36,66,"710"],["B","ADD",36,67,"1440"],["B","IDLE_ONE",36,[10]],["B","ADD",36,67,"-1440"],["B","ADD",36,66,"-710"],["B","ADD",36,65,"-730"],["B","ADD",36,64,"296"],["B","ADD",36,63,"434"],["B","ADD",36,62,"1894"],["B","ADD",36,61,"-730"],["B","ADD",36,60,"296"],["B","ADD",36,59,"434"],["B","ADD",36,58,"1894"],["B","ADD",36,57,"-730"],["B","ADD",36,56,"296"],["B","ADD",36,55,"434"],["B","ADD",36,54,"1894"],["B","ADD",36,53,"-730"],["B","ADD",36,52,"296"],["B","ADD",36,37,"69"],["B","SCALE",36,"-1/2"],["B","ADD",67,36,"-1/5"],["B","ADD",66,36,"3/5"],["B","ADD",65,36,"-1/2"],["B","ADD",64,36,"-2/5"],["B","ADD",63,36,"11/20"],["B","ADD",62,36,"3/20"],["B","ADD",61,36,"1"],["B","ADD",60,36,"7/10"],["B","ADD",59,36,"11/20"],["B","ADD",58,36,"3/20"],["B","ADD",57,36,"1"],["B","ADD",56,36,"7/10"],["B","ADD",55,36,"11/20"],["B","ADD",54,36,"3/20"],["B","ADD",53,36,"1"],["B","ADD",52,36,"7/10"],["B","ADD",37,36,"-7/5"],["B","ADD",36,55,"-11/6"],["B","ADD",37,55,"31/12"],["B","ADD",52,55,"-61/48"],["B","ADD",53,55,"-29/16"],["B","ADD",54,55,"-13/48"],["B","ADD",56,55,"-61/48"],["B","ADD",57,55,"-29/16"],["B","ADD",58,55,"-13/48"],["B","ADD",59,55,"-1"],["B","ADD",60,55,"-61/48"],["B","ADD",61,55,"-29/16"],["B","ADD",62,55,"-13/48"],["B","ADD",63,55,"-1"],["B","ADD",64,55,"17/24"],["B","ADD",65,55,"43/48"],["B","ADD",66,55,"-53/48"],["B","ADD",67,55,"143/384"],["B","SCALE",55,"5/48"],["B","ADD",55,37,"-2"],["B","ADD",55,52,"-8"],["B","ADD",55,53,"20"],["B","ADD",55,54,"-52"],["B","ADD",55,56,"-8"],["B","ADD",55,57,"20"],["B","ADD",55,58,"-52"],["B","ADD",55,59,"-12"],["B","ADD",55,60,"-8"],["B","ADD",55,61,"20"],["B","ADD",55,62,"-52"],["B","ADD",55,63,"-12"],["B","ADD",55,64,"-8"],["B","ADD",55,65,"20"],["B","ADD",55,66,"20"],["B","ADD",55,67,"40"],["B","IDLE_ONE",55,[10]],["B","ADD",55,67,"-40"],["B","ADD",55,66,"-20"],["B","ADD",55,65,"-20"],["B","ADD",55,64,"8"],["B","ADD",55,63,"12"],["B","ADD",55,62,"52"],["B","ADD",55,61,"-20"],["B","ADD",55,60,"8"],["B","ADD",55,59,"12"],["B","ADD",55,58,"52"],["B","ADD",55,57,"-20"],["B","ADD",55,56,"8"],["B","ADD",55,54,"52"],["B","ADD",55,53,"-20"],["B","ADD",55,52,"8"],["B","ADD",55,37,"2"],["B","SCALE",55,"48/5"],["B","ADD",67,55,"-143/384"],["B","ADD",66,55,"53/48"],["B","ADD",65,55,"-43/48"],["B","ADD",64,55,"-17/24"],["B","ADD",63,55,"1"],["B","ADD",62,55,"13/48"],["B","ADD",61,55,"29/16"],["B","ADD",60,55,"61/48"],["B","ADD",59,55,"1"],["B","ADD",58,55,"13/48"],["B","ADD",57,55,"29/16"],["B","ADD",56,55,"61/48"],["B","ADD",54,55,"13/48"],["B","ADD",53,55,"29/16"],["B","ADD",52,55,"61/48"],["B","ADD",37,55,"-31/12"],["B","ADD",36,55,"11/6"],["B","ADD",37,36,"3"],["B","ADD",52,36,"1/2"],["B","ADD",53,36,"1"],["B","ADD",54,36,"1/4"],["B","ADD",55,36,"1/4"],["B","ADD",56,36,"1/2"],["B","ADD",57,36,"1"],["B","ADD",58,36,"1/4"],["B","ADD",59,36,"1/4"],["B","ADD",60,36,"1/2"],["B","ADD",61,36,"1"],["B","ADD",62,36,"1/4"],["B","ADD",63,36,"1/4"],["B","ADD",64,36,"-2"],["B","ADD",65,36,"-3/2"],["B","ADD",67,36,"1/2"],["B","SCALE",36,"2"],["B","ADD",36,52,"4"],["B","ADD",36,53,"-8"],["B","ADD",36,54,"20"],["B","ADD",36,55,"4"],["B","ADD",36,56,"4"],["B","ADD",36,57,"-8"],["B","ADD",36,58,"20"],["B","ADD",36,59,"4"],["B","ADD",36,60,"4"],["B","ADD",36,61,"-8"],["B","ADD",36,62,"20"],["B","ADD",36,63,"4"],["B","ADD",36,64,"4"],["B","ADD",36,65,"-8"],["B","ADD",36,66,"-6"],["B","ADD",36,67,"-16"],["B","ADD",52,37,"-3/4"],["B","ADD",53,37,"-5/4"],["B","ADD",54,37,"-1/4"],["B","ADD",55,37,"-1/2"],["B","ADD",56,37,"-3/4"],["B","ADD",57,37,"-5/4"],["B","ADD",58,37,"-1/4"],["B","ADD",59,37,"-1/2"],["B","ADD",60,37,"-3/4"],["B","ADD",61,37,"-5/4"],["B","ADD",62,37,"-1/4"],["B","ADD",63,37,"-1/2"],["B","ADD",64,37,"3/2"],["B","ADD",65,37,"5/4"],["B","ADD",66,37,"-1/4"],["B","ADD",67,37,"-1/4"],["B","SCALE",37,"1/8"],["B","ADD",37,52,"-2"],["B","ADD",37,53,"7/2"],["B","ADD",37,54,"-17/2"],["B","ADD",37,55,"-3/2"],["B","ADD",37,56,"-2"],["B","ADD",37,57,"7/2"],["B","ADD",37,58,"-17/2"],["B","ADD",37,59,"-3/2"],["B","ADD",37,60,"-2"],["B","ADD",37,61,"7/2"],["B","ADD",37,62,"-17/2"],["B","ADD",37,63,"-3/2"],["B","ADD",37,64,"-2"],["B","ADD",37,65,"7/2"],["B","ADD",37,66,"1"],["B","ADD",37,67,"4"],["B","SCALE",37,"-2"],["B","ADD",37,36,"-1/2"],["B","ADD",37,36,"-1/2"],["B","ADD",36,37,"1"],["B","LAMBDA",36,1],["A","ADD",10,0,"1"],["A","ADD",11,0,"2"],["A","ADD",12,0,"2"],["A","ADD",13,0,"2"],["A","ADD",14,0,"2"],["A","ADD",15,0,"2"],["A","ADD",16,0,"2"],["A","ADD",17,0,"2"],["A","SCALE",0,"-1"],["A","ADD",28,18,"1"],["A","ADD",29,18,"2"],["A","ADD",30,18,"2"],["A","ADD",31,18,"2"],["A","ADD",32,18,"2"],["A","ADD",33,18,"2"],["A","ADD",34,18,"2"],["A","ADD",35,18,"2"],["A","SCALE",18,"-1"],["A","LAMBDA",10,1],["A","LAMBDA",28,-1],["A","SCALE",28,"-1"],["J",10,[10,0,18,28],[36,37,"-1","1/2"]],["A","LAMBDA",10,-1],["A","LAMBDA",28,1],["A","SCALE",28,"-1"],["A","ADD",0,10,"-1"],["A","ADD",18,28,"-1"],["A","SCALE",18,"-1"],["A","ADD",35,18,"-2"],["A","ADD",34,18,"-2"],["A","ADD",33,18,"-2"],["A","ADD",32,18,"-2"],["A","ADD",31,18,"-2"],["A","ADD",30,18,"-2"],["A","ADD",29,18,"-2"],["A","ADD",28,18,"-1"],["A","SCALE",0,"-1"],["A","ADD",17,0,"-2"],["A","ADD",16,0,"-2"],["A","ADD",15,0,"-2"],["A","ADD",14,0,"-2"],["A","ADD",13,0,"-2"],["A","ADD",12,0,"-2"],["A","ADD",11,0,"-2"],["A","ADD",10,0,"-1"],["B","LAMBDA",36,-1],["B","ADD",37,36,"1/2"],["B","SCALE",37,"-1/2"],["B","ADD",37,67,"-4"],["B","ADD",37,66,"-1"],["B","ADD",37,65,"-7/2"],["B","ADD",37,64,"2"],["B","ADD",37,63,"3/2"],["B","ADD",37,62,"17/2"],["B","ADD",37,61,"-7/2"],["B","ADD",37,60,"2"],["B","ADD",37,59,"3/2"],["B","ADD",37,58,"17/2"],["B","ADD",37,57,"-7/2"],["B","ADD",37,56,"2"],["B","ADD",37,55,"3/2"],["B","ADD",37,54,"17/2"],["B","ADD",37,53,"-7/2"],["B","ADD",37,52,"2"],["B","SCALE",37,"8"],["B","ADD",67,37,"1/4"],["B","ADD",66,37,"1/4"],["B","ADD",65,37,"-5/4"],["B","ADD",64,37,"-3/2"],["B","ADD",63,37,"1/2"],["B","ADD",62,37,"1/4"],["B","ADD",61,37,"5/4"],["B","ADD",60,37,"3/4"],["B","ADD",59,37,"1/2"],["B","ADD",58,37,"1/4"],["B","ADD",57,37,"5/4"],["B","ADD",56,37,"3/4"],["B","ADD",55,37,"1/2"],["B","ADD",54,37,"1/4"],["B","ADD",53,37,"5/4"],["B","ADD",52,37,"3/4"],["B","ADD",36,67,"16"],["B","ADD",36,66,"6"],["B","ADD",36,65,"8"],["B","ADD",36,64,"-4"],["B","ADD",36,63,"-4"],["B","ADD",36,62,"-20"],["B","ADD",36,61,"8"],["B","ADD",36,60,"-4"],["B","ADD",36,59,"-4"],["B","ADD",36,58,"-20"],["B","ADD",36,57,"8"],["B","ADD",36,56,"-4"],["B","ADD",36,55,"-4"],["B","ADD",36,54,"-20"],["B","ADD",36,53,"8"],["B","ADD",36,52,"-4"],["B","SCALE",36,"1/2"],["B","ADD",67,36,"-1/2"],["B","ADD",65,36,"3/2"],["B","ADD",64,36,"2"],["B","ADD",63,36,"-1/4"],["B","ADD",62,36,"-1/4"],["B","ADD",61,36,"-1"],["B","ADD",60,36,"-1/2"],["B","ADD",59,36,"-1/4"],["B","ADD",58,36,"-1/4"],["B","ADD",57,36,"-1"],["B","ADD",56,36,"-1/2"],["B","ADD",55,36,"-1/4"],["B","ADD",54,36,"-1/4"],["B","ADD",53,36,"-1"],["B","ADD",52,36,"-1/2"],["B","ADD",37,36,"-3"],["B","ADD",37,36,"2/3"],["B","ADD",52,36,"-5/4"],["B","ADD",53,36,"-23/12"],["B","ADD",54,36,"-1/3"],["B","ADD",55,36,"-11/12"],["B","ADD",56,36,"-5/4"],["B","ADD",57,36,"-23/12"],["B","ADD",58,36,"-1/3"],["B","ADD",59,36,"-11/12"],["B","ADD",60,36,"-5/4"],["B","ADD",61,36,"-23/12"],["B","ADD",62,36,"-1/3"],["B","ADD",63,36,"-11/12"],["B","ADD",64,36,"-1/3"],["B","SCALE",36,"2/3"],["B","ADD",36,37,"-12"],["B","ADD",36,52,"-52"],["B","ADD",36,53,"128"],["B","ADD",36,54,"-332"],["B","ADD",36,55,"-76"],["B","ADD",36,56,"-52"],["B","ADD",36,57,"128"],["B","ADD",36,58,"-332"],["B","ADD",36,59,"-76"],["B","ADD",36,60,"-52"],["B","ADD",36,61,"128"],["B","ADD",36,62,"-332"],["B","ADD",36,63,"-76"],["B","ADD",36,64,"-28"],["B","ADD",36,65,"76"],["B","IDLE_ONE",36,[11]],["B","ADD",36,65,"-76"],["B","ADD",36,64,"28"],["B","ADD",36,63,"76"],["B","ADD",36,62,"332"],["B","ADD",36,61,"-128"],["B","ADD",36,60,"52"],["B","ADD",36,59,"76"],["B","ADD",36,58,"332"],["B","ADD",36,57,"-128"],["B","ADD",36,56,"52"],["B","ADD",36,55,"76"],["B","ADD",36,54,"332"],["B","ADD",36,53,"-128"],["B","ADD",36,52,"52"],["B","ADD",36,37,"12"],["B","SCALE",36,"3/2"],["B","ADD",64,36,"1/3"],["B","ADD",63,36,"11/12"],["B","ADD",62,36,"1/3"],["B","ADD",61,36,"23/12"],["B","ADD",60,36,"5/4"],["B","ADD",59,36,"11/12"],["B","ADD",58,36,"1/3"],["B","ADD",57,36,"23/12"],["B","ADD",56,36,"5/4"],["B","ADD",55,36,"11/12"],["B","ADD",54,36,"1/3"],["B","ADD",53,36,"23/12"],["B","ADD",52,36,"5/4"],["B","ADD",37,36,"-2/3"],["B","ADD",36,53,"-14/27"],["B","ADD",37,53,"46/135"],["B","ADD",52,53,"-88/135"],["B","ADD",54,53,"-47/270"],["B","ADD",55,53,"-43/90"],["B","ADD",56,53,"-88/135"],["B","ADD",57,53,"-1"],["B","ADD",58,53,"-47/270"],["B","ADD",59,53,"-43/90"],["B","ADD",60,53,"-88/135"],["B","ADD",61,53,"-1"],["B","ADD",62,53,"-47/270"],["B","ADD",63,53,"-43/90"],["B","ADD",64,53,"-22/135"],["B","ADD",65,53,"1/135"],["B","SCALE",53,"-4/135"],["B","ADD",53,37,"-1"],["B","ADD",53,52,"-4"],["B","ADD",53,54,"-26"],["B","ADD",53,55,"-6"],["B","ADD",53,56,"-4"],["B","ADD",53,57,"10"],["B","ADD",53,58,"-26"],["B","ADD",53,59,"-6"],["B","ADD",53,60,"-4"],["B","ADD",53,61,"10"],["B","ADD",53,62,"-26"],["B","ADD",53,63,"-6"],["B","ADD",53,64,"-2"],["B","ADD",53,65,"6"],["B","IDLE_ONE",53,[11]],["B","ADD",53,65,"-6"],["B","ADD",53,64,"2"],["B","ADD",53,63,"6"],["B","ADD",53,62,"26"],["B","ADD",53,61,"-10"],["B","ADD",53,60,"4"],["B","ADD",53,59,"6"],["B","ADD",53,58,"26"],["B","ADD",53,57,"-10"],["B","ADD",53,56,"4"],["B","ADD",53,55,"6"],["B","ADD",53,54,"26"],["B","ADD",53,52,"4"],["B","ADD",53,37,"1"],["B","SCALE",53,"-135/4"],["B","ADD",65,53,"-1/135"],["B","ADD",64,53,"22/135"],["B","ADD",63,53,"43/90"],["B","ADD",62,53,"47/270"],["B","ADD",61,53,"1"],["B","ADD",60,53,"88/135"],["B","ADD",59,53,"43/90"],["B","ADD",58,53,"47/270"],["B","ADD",57,53,"1"],["B","ADD",56,53,"88/135"],["B","ADD",55,53,"43/90"],["B","ADD",54,53,"47/270"],["B","ADD",52,53,"88/135"],["B","ADD",37,53,"-46/135"],["B","ADD",36,53,"14/27"],["B","ADD",37,36,"3"],["B","ADD",52,36,"1/2"],["B","ADD",53,36,"1"],["B","ADD",54,36,"1/4"],["B","ADD",55,36,"1/4"],["B","ADD",56,36,"1/2"],["B","ADD",57,36,"1"],["B","ADD",58,36,"1/4"],["B","ADD",59,36,"1/4"],["B","ADD",60,36,"1/2"],["B","ADD",61,36,"1"],["B","ADD",62,36,"1/4"],["B","ADD",63,36,"1/4"],["B","ADD",65,36,"1/2"],["B","SCALE",36,"-2"],["B","ADD",36,52,"-4"],["B","ADD",36,53,"8"],["B","ADD",36,54,"-20"],["B","ADD",36,55,"-4"],["B","ADD",36,56,"-4"],["B","ADD",36,57,"8"],["B","ADD",36,58,"-20"],["B","ADD",36,59,"-4"],["B","ADD",36,60,"-4"],["B","ADD",36,61,"8"],["B","ADD",36,62,"-20"],["B","ADD",36,63,"-4"],["B","ADD",36,64,"-6"],["B","ADD",36,65,"8"],["B","ADD",52,37,"-3/4"],["B","ADD",53,37,"-5/4"],["B","ADD",54,37,"-1/4"],["B","ADD",55,37,"-1/2"],["B","ADD",56,37,"-3/4"],["B","ADD",57,37,"-5/4"],["B","ADD",58,37,"-1/4"],["B","ADD",59,37,"-1/2"],["B","ADD",60,37,"-3/4"],["B","ADD",61,37,"-5/4"],["B","ADD",62,37,"-1/4"],["B","ADD",63,37,"-1/2"],["B","ADD",64,37,"-1/4"],["B","ADD",65,37,"-1/4"],["B","SCALE",37,"-1/8"],["B","ADD",37,52,"-2"],["B","ADD",37,53,"9/2"],["B","ADD",37,54,"-23/2"],["B","ADD",37,55,"-5/2"],["B","ADD",37,56,"-2"],["B","ADD",37,57,"9/2"],["B","ADD",37,58,"-23/2"],["B","ADD",37,59,"-5/2"],["B","ADD",37,60,"-2"],["B","ADD",37,61,"9/2"],["B","ADD",37,62,"-23/2"],["B","ADD",37,63,"-5/2"],["B","ADD",37,64,"-2"],["B","ADD",37,65,"5/2"],["B","SCALE",37,"2"],["B","ADD",37,36,"-1/2"],["B","ADD",37,36,"-1/2"],["B","ADD",36,37,"1"],["B","LAMBDA",36,1],["A","ADD",11,0,"1"],["A","ADD",12,0,"2"],["A","ADD",13,0,"2"],["A","ADD",14,0,"2"],["A","ADD",15,0,"2"],["A","ADD",16,0,"2"],["A","ADD",17,0,"2"],["A","SCALE",0,"-1"],["A","ADD",29,18,"1"],["A","ADD",30,18,"2"],["A","ADD",31,18,"2"],["A","ADD",32,18,"2"],["A","ADD",33,18,"2"],["A","ADD",34,18,"2"],["A","ADD",35,18,"2"],["A","SCALE",18,"-1"],["A","LAMBDA",11,1],["A","LAMBDA",29,-1],["A","SCALE",29,"-1"],["J",11,[11,0,18,29],[36,37,"-1","1/2"]],["A","LAMBDA",11,-1],["A","LAMBDA",29,1],["A","SCALE",29,"-1"],["A","ADD",0,11,"-1"],["A","ADD",18,29,"-1"],["A","SCALE",18,"-1"],["A","ADD",35,18,"-2"],["A","ADD",34,18,"-2"],["A","ADD",33,18,"-2"],["A","ADD",32,18,"-2"],["A","ADD",31,18,"-2"],["A","ADD",30,18,"-2"],["A","ADD",29,18,"-1"],["A","SCALE",0,"-1"],["A","ADD",17,0,"-2"],["A","ADD",16,0,"-2"],["A","ADD",15,0,"-2"],["A","ADD",14,0,"-2"],["A","ADD",13,0,"-2"],["A","ADD",12,0,"-2"],["A","ADD",11,0,"-1"],["B","LAMBDA",36,-1],["B","ADD",37,36,"1/2"],["B","SCALE",37,"1/2"],["B","ADD",37,65,"-5/2"],["B","ADD",37,64,"2"],["B","ADD",37,63,"5/2"],["B","ADD",37,62,"23/2"],["B","ADD",37,61,"-9/2"],["B","ADD",37,60,"2"],["B","ADD",37,59,"5/2"],["B","ADD",37,58,"23/2"],["B","ADD",37,57,"-9/2"],["B","ADD",37,56,"2"],["B","ADD",37,55,"5/2"],["B","ADD",37,54,"23/2"],["B","ADD",37,53,"-9/2"],["B","ADD",37,52,"2"],["B","SCALE",37,"-8"],["B","ADD",65,37,"1/4"],["B","ADD",64,37,"1/4"],["B","ADD",63,37,"1/2"],["B","ADD",62,37,"1/4"],["B","ADD",61,37,"5/4"],["B","ADD",60,37,"3/4"],["B","ADD",59,37,"1/2"],["B","ADD",58,37,"1/4"],["B","ADD",57,37,"5/4"],["B","ADD",56,37,"3/4"],["B","ADD",55,37,"1/2"],["B","ADD",54,37,"1/4"],["B","ADD",53,37,"5/4"],["B","ADD",52,37,"3/4"],["B","ADD",36,65,"-8"],["B","ADD",36,64,"6"],["B","ADD",36,63,"4"],["B","ADD",36,62,"20"],["B","ADD",36,61,"-8"],["B","ADD",36,60,"4"],["B","ADD",36,59,"4"],["B","ADD",36,58,"20"],["B","ADD",36,57,"-8"],["B","ADD",36,56,"4"],["B","ADD",36,55,"4"],["B","ADD",36,54,"20"],["B","ADD",36,53,"-8"],["B","ADD",36,52,"4"],["B","SCALE",36,"-1/2"],["B","ADD",65,36,"-1/2"],["B","ADD",63,36,"-1/4"],["B","ADD",62,36,"-1/4"],["B","ADD",61,36,"-1"],["B","ADD",60,36,"-1/2"],["B","ADD",59,36,"-1/4"],["B","ADD",58,36,"-1/4"],["B","ADD",57,36,"-1"],["B","ADD",56,36,"-1/2"],["B","ADD",55,36,"-1/4"],["B","ADD",54,36,"-1/4"],["B","ADD",53,36,"-1"],["B","ADD",52,36,"-1/2"],["B","ADD",37,36,"-3"],["B","ADD",36,52,"14"],["B","ADD",37,52,"-34"],["B","ADD",53,52,"-4"],["B","ADD",54,52,"-3/2"],["B","ADD",55,52,"1/2"],["B","ADD",56,52,"-1"],["B","ADD",57,52,"-4"],["B","ADD",58,52,"-3/2"],["B","ADD",59,52,"1/2"],["B","ADD",60,52,"-1"],["B","ADD",61,52,"-4"],["B","ADD",62,52,"-1/2"],["B","ADD",63,52,"1"],["B","SCALE",52,"-1"],["B","ADD",52,36,"1"],["B","ADD",52,37,"1"],["B","ADD",52,53,"-6"],["B","ADD",52,54,"16"],["B","ADD",52,55,"4"],["B","ADD",52,56,"2"],["B","ADD",52,57,"-6"],["B","ADD",52,58,"16"],["B","ADD",52,59,"4"],["B","ADD",52,60,"2"],["B","ADD",52,61,"-6"],["B","ADD",52,62,"14"],["B","ADD",52,63,"6"],["B","IDLE_ONE",52,[12]],["B","ADD",52,63,"-6"],["B","ADD",52,62,"-14"],["B","ADD",52,61,"6"],["B","ADD",52,60,"-2"],["B","ADD",52,59,"-4"],["B","ADD",52,58,"-16"],["B","ADD",52,57,"6"],["B","ADD",52,56,"-2"],["B","ADD",52,55,"-4"],["B","ADD",52,54,"-16"],["B","ADD",52,53,"6"],["B","ADD",52,37,"-1"],["B","ADD",52,36,"-1"],["B","SCALE",52,"-1"],["B","ADD",63,52,"-1"],["B","ADD",62,52,"1/2"],["B","ADD",61,52,"4"],["B","ADD",60,52,"1"],["B","ADD",59,52,"-1/2"],["B","ADD",58,52,"3/2"],["B","ADD",57,52,"4"],["B","ADD",56,52,"1"],["B","ADD",55,52,"-1/2"],["B","ADD",54,52,"3/2"],["B","ADD",53,52,"4"],["B","ADD",37,52,"34"],["B","ADD",36,52,"-14"],["B","ADD",37,36,"5/2"],["B","ADD",52,36,"1/8"],["B","ADD",53,36,"3/8"],["B","ADD",54,36,"1/8"],["B","ADD",56,36,"1/8"],["B","ADD",57,36,"3/8"],["B","ADD",58,36,"1/8"],["B","ADD",60,36,"1/8"],["B","ADD",61,36,"3/8"],["B","ADD",62,36,"1/16"],["B","ADD",63,36,"-1/16"],["B","SCALE",36,"1/8"],["B","ADD",36,37,"-1"],["B","ADD",36,52,"-4"],["B","ADD",36,53,"10"],["B","ADD",36,54,"-26"],["B","ADD",36,55,"-6"],["B","ADD",36,56,"-4"],["B","ADD",36,57,"10"],["B","ADD",36,58,"-26"],["B","ADD",36,59,"-6"],["B","ADD",36,60,"-4"],["B","ADD",36,61,"10"],["B","ADD",36,62,"-24"],["B","ADD",36,63,"-10"],["B","IDLE_ONE",36,[12]],["B","ADD",36,63,"10"],["B","ADD",36,62,"24"],["B","ADD",36,61,"-10"],["B","ADD",36,60,"4"],["B","ADD",36,59,"6"],["B","ADD",36,58,"26"],["B","ADD",36,57,"-10"],["B","ADD",36,56,"4"],["B","ADD",36,55,"6"],["B","ADD",36,54,"26"],["B","ADD",36,53,"-10"],["B","ADD",36,52,"4"],["B","ADD",36,37,"1"],["B","SCALE",36,"8"],["B","ADD",63,36,"1/16"],["B","ADD",62,36,"-1/16"],["B","ADD",61,36,"-3/8"],["B","ADD",60,36,"-1/8"],["B","ADD",58,36,"-1/8"],["B","ADD",57,36,"-3/8"],["B","ADD",56,36,"-1/8"],["B","ADD",54,36,"-1/8"],["B","ADD",53,36,"-3/8"],["B","ADD",52,36,"-1/8"],["B","ADD",37,36,"-5/2"],["B","SWAP",36,37],["B","ADD",52,36,"-3/4"],["B","ADD",53,36,"-5/4"],["B","ADD",54,36,"-1/4"],["B","ADD",55,36,"-1/2"],["B","ADD",56,36,"-3/4"],["B","ADD",57,36,"-5/4"],["B","ADD",58,36,"-1/4"],["B","ADD",59,36,"-1/2"],["B","ADD",60,36,"-3/4"],["B","ADD",61,36,"-5/4"],["B","ADD",62,36,"-1/4"],["B","ADD",63,36,"-1/4"],["B","SCALE",36,"-1/2"],["B","ADD",36,37,"1/2"],["B","ADD",36,52,"1"],["B","ADD",36,53,"-3"],["B","ADD",36,54,"8"],["B","ADD",36,55,"2"],["B","ADD",36,56,"1"],["B","ADD",36,57,"-3"],["B","ADD",36,58,"8"],["B","ADD",36,59,"2"],["B","ADD",36,60,"1"],["B","ADD",36,61,"-3"],["B","ADD",36,62,"6"],["B","ADD",36,63,"2"],["B","ADD",52,37,"-7/4"],["B","ADD",53,37,"-11/4"],["B","ADD",54,37,"-1/2"],["B","ADD",55,37,"-5/4"],["B","ADD",56,37,"-7/4"],["B","ADD",57,37,"-11/4"],["B","ADD",58,37,"-1/2"],["B","ADD",59,37,"-5/4"],["B","ADD",60,37,"-7/4"],["B","ADD",61,37,"-11/4"],["B","ADD",62,37,"-3/4"],["B","ADD",63,37,"-1/4"],["B","SCALE",37,"1/2"],["B","ADD",37,52,"-1"],["B","ADD",37,53,"1"],["B","ADD",37,54,"-2"],["B","ADD",37,56,"-1"],["B","ADD",37,57,"1"],["B","ADD",37,58,"-2"],["B","ADD",37,60,"-1"],["B","ADD",37,61,"1"],["B","ADD",37,62,"-2"],["B","ADD",37,63,"-2"],["B","SCALE",37,"-1/2"],["B","ADD",37,36,"-1/2"],["B","ADD",36,37,"1"],["B","LAMBDA",36,1],["A","ADD",12,0,"1"],["A","ADD",13,0,"2"],["A","ADD",14,0,"2"],["A","ADD",15,0,"2"],["A","ADD",16,0,"2"],["A","ADD",17,0,"2"],["A","SCALE",0,"-1"],["A","ADD",30,18,"1"],["A","ADD",31,18,"2"],["A","ADD",32,18,"2"],["A","ADD",33,18,"2"],["A","ADD",34,18,"2"],["A","ADD",35,18,"2"],["A","SCALE",18,"-1"],["A","LAMBDA",12,1],["A","LAMBDA",30,-1],["A","SCALE",30,"-1"],["J",12,[12,0,18,30],[36,37,"-1","1/2"]],["A","LAMBDA",12,-1],["A","LAMBDA",30,1],["A","SCALE",30,"-1"],["A","ADD",0,12,"-1"],["A","ADD",18,30,"-1"],["A","SCALE",18,"-1"],["A","ADD",35,18,"-2"],["A","ADD",34,18,"-2"],["A","ADD",33,18,"-2"],["A","ADD",32,18,"-2"],["A","ADD",31,18,"-2"],["A","ADD",30,18,"-1"],["A","SCALE",0,"-1"],["A","ADD",17,0,"-2"],["A","ADD",16,0,"-2"],["A","ADD",15,0,"-2"],["A","ADD",14,0,"-2"],["A","ADD",13,0,"-2"],["A","ADD",12,0,"-1"],["B","LAMBDA",36,-1],["B","SCALE",37,"-2"],["B","ADD",37,63,"2"],["B","ADD",37,62,"2"],["B","ADD",37,61,"-1"],["B","ADD",37,60,"1"],["B","ADD",37,58,"2"],["B","ADD",37,57,"-1"],["B","ADD",37,56,"1"],["B","ADD",37,54,"2"],["B","ADD",37,53,"-1"],["B","ADD",37,52,"1"],["B","SCALE",37,"2"],["B","ADD",63,37,"1/4"],["B","ADD",62,37,"3/4"],["B","ADD",61,37,"11/4"],["B","ADD",60,37,"7/4"],["B","ADD",59,37,"5/4"],["B","ADD",58,37,"1/2"],["B","ADD",57,37,"11/4"],["B","ADD",56,37,"7/4"],["B","ADD",55,37,"5/4"],["B","ADD",54,37,"1/2"],["B","ADD",53,37,"11/4"],["B","ADD",52,37,"7/4"],["B","ADD",36,63,"-2"],["B","ADD",36,62,"-6"],["B","ADD",36,61,"3"],["B","ADD",36,60,"-1"],["B","ADD",36,59,"-2"],["B","ADD",36,58,"-8"],["B","ADD",36,57,"3"],["B","ADD",36,56,"-1"],["B","ADD",36,55,"-2"],["B","ADD",36,54,"-8"],["B","ADD",36,53,"3"],["B","ADD",36,52,"-1"],["B","ADD",36,37,"-1/2"],["B","SCALE",36,"-2"],["B","ADD",63,36,"1/4"],["B","ADD",62,36,"1/4"],["B","ADD",61,36,"5/4"],["B","ADD",60,36,"3/4"],["B","ADD",59,36,"1/2"],["B","ADD",58,36,"1/4"],["B","ADD",57,36,"5/4"],["B","ADD",56,36,"3/4"],["B","ADD",55,36,"1/2"],["B","ADD",54,36,"1/4"],["B","ADD",53,36,"5/4"],["B","ADD",52,36,"3/4"],["B","SWAP",36,37],["B","ADD",37,36,"7/4"],["B","ADD",52,36,"-7/16"],["B","ADD",53,36,"-9/16"],["B","ADD",54,36,"-1/16"],["B","ADD",55,36,"-3/8"],["B","ADD",56,36,"-7/16"],["B","ADD",57,36,"-9/16"],["B","ADD",58,36,"-1/16"],["B","ADD",59,36,"-3/8"],["B","ADD",60,36,"-1/8"],["B","ADD",61,36,"1/4"],["B","SCALE",36,"-1/4"],["B","ADD",36,52,"2"],["B","ADD",36,53,"-4"],["B","ADD",36,54,"10"],["B","ADD",36,55,"2"],["B","ADD",36,56,"2"],["B","ADD",36,57,"-4"],["B","ADD",36,58,"10"],["B","ADD",36,59,"2"],["B","ADD",36,60,"2"],["B","ADD",36,61,"-2"],["B","IDLE_ONE",36,[13]],["B","ADD",36,61,"2"],["B","ADD",36,60,"-2"],["B","ADD",36,59,"-2"],["B","ADD",36,58,"-10"],["B","ADD",36,57,"4"],["B","ADD",36,56,"-2"],["B","ADD",36,55,"-2"],["B","ADD",36,54,"-10"],["B","ADD",36,53,"4"],["B","ADD",36,52,"-2"],["B","SCALE",36,"-4"],["B","ADD",61,36,"-1/4"],["B","ADD",60,36,"1/8"],["B","ADD",59,36,"3/8"],["B","ADD",58,36,"1/16"],["B","ADD",57,36,"9/16"],["B","ADD",56,36,"7/16"],["B","ADD",55,36,"3/8"],["B","ADD",54,36,"1/16"],["B","ADD",53,36,"9/16"],["B","ADD",52,36,"7/16"],["B","ADD",37,36,"-7/4"],["B","ADD",37,36,"2"],["B","ADD",52,36,"-1/4"],["B","ADD",53,36,"-1/4"],["B","ADD",55,36,"-1/4"],["B","ADD",56,36,"-1/4"],["B","ADD",57,36,"-1/4"],["B","ADD",59,36,"-1/4"],["B","ADD",61,36,"1/2"],["B","ADD",36,37,"1"],["B","ADD",36,52,"4"],["B","ADD",36,53,"-10"],["B","ADD",36,54,"26"],["B","ADD",36,55,"6"],["B","ADD",36,56,"4"],["B","ADD",36,57,"-10"],["B","ADD",36,58,"26"],["B","ADD",36,59,"6"],["B","ADD",36,60,"2"],["B","ADD",36,61,"-6"],["B","IDLE_ONE",36,[13]],["B","ADD",36,61,"6"],["B","ADD",36,60,"-2"],["B","ADD",36,59,"-6"],["B","ADD",36,58,"-26"],["B","ADD",36,57,"10"],["B","ADD",36,56,"-4"],["B","ADD",36,55,"-6"],["B","ADD",36,54,"-26"],["B","ADD",36,53,"10"],["B","ADD",36,52,"-4"],["B","ADD",36,37,"-1"],["B","ADD",61,36,"-1/2"],["B","ADD",59,36,"1/4"],["B","ADD",57,36,"1/4"],["B","ADD",56,36,"1/4"],["B","ADD",55,36,"1/4"],["B","ADD",53,36,"1/4"],["B","ADD",52,36,"1/4"],["B","ADD",37,36,"-2"],["B","ADD",37,36,"2"],["B","ADD",52,36,"-1/4"],["B","ADD",53,36,"-1/4"],["B","ADD",55,36,"-1/4"],["B","ADD",56,36,"-1/4"],["B","ADD",57,36,"-1/4"],["B","ADD",59,36,"-1/4"],["B","ADD",60,36,"-1/4"],["B","ADD",61,36,"1/4"],["B","SCALE",36,"-1/2"],["B","ADD",36,37,"1/2"],["B","ADD",36,52,"-1"],["B","ADD",36,53,"1"],["B","ADD",36,54,"-2"],["B","ADD",36,56,"-1"],["B","ADD",36,57,"1"],["B","ADD",36,58,"-2"],["B","ADD",36,60,"-3"],["B","ADD",36,61,"1"],["B","ADD",52,37,"-3/4"],["B","ADD",53,37,"-5/4"],["B","ADD",54,37,"-1/4"],["B","ADD",55,37,"-1/2"],["B","ADD",56,37,"-3/4"],["B","ADD",57,37,"-5/4"],["B","ADD",58,37,"-1/4"],["B","ADD",59,37,"-1/2"],["B","ADD",60,37,"-1/4"],["B","ADD",61,37,"-1/4"],["B","SCALE",37,"-1/2"],["B","ADD",37,52,"-1"],["B","ADD",37,53,"3"],["B","ADD",37,54,"-8"],["B","ADD",37,55,"-2"],["B","ADD",37,56,"-1"],["B","ADD",37,57,"3"],["B","ADD",37,58,"-8"],["B","ADD",37,59,"-2"],["B","ADD",37,60,"-1"],["B","ADD",37,61,"1"],["B","SCALE",37,"1/2"],["B","ADD",37,36,"-1/2"],["B","ADD",36,37,"1"],["B","LAMBDA",36,1],["A","ADD",13,0,"1"],["A","ADD",14,0,"2"],["A","ADD",15,0,"2"],["A","ADD",16,0,"2"],["A","ADD",17,0,"2"],["A","SCALE",0,"-1"],["A","ADD",31,18,"1"],["A","ADD",32,18,"2"],["A","ADD",33,18,"2"],["A","ADD",34,18,"2"],["A","ADD",35,18,"2"],["A","SCALE",18,"-1"],["A","LAMBDA",13,1],["A","LAMBDA",31,-1],["A","SCALE",31,"-1"],["J",13,[13,0,18,31],[36,37,"-1","1/2"]],["A","LAMBDA",13,-1],["A","LAMBDA",31,1],["A","SCALE",31,"-1"],["A","ADD",0,13,"-1"],["A","ADD",18,31,"-1"],["A","SCALE",18,"-1"],["A","ADD",35,18,"-2"],["A","ADD",34,18,"-2"],["A","ADD",33,18,"-2"],["A","ADD",32,18,"-2"],["A","ADD",31,18,"-1"],["A","SCALE",0,"-1"],["A","ADD",17,0,"-2"],["A","ADD",16,0,"-2"],["A","ADD",15,0,"-2"],["A","ADD",14,0,"-2"],["A","ADD",13,0,"-1"],["B","LAMBDA",36,-1],["B","SCALE",37,"2"],["B","ADD",37,61,"-1"],["B","ADD",37,60,"1"],["B","ADD",37,59,"2"],["B","ADD",37,58,"8"],["B","ADD",37,57,"-3"],["B","ADD",37,56,"1"],["B","ADD",37,55,"2"],["B","ADD",37,54,"8"],["B","ADD",37,53,"-3"],["B","ADD",37,52,"1"],["B","SCALE",37,"-2"],["B","ADD",61,37,"1/4"],["B","ADD",60,37,"1/4"],["B","ADD",59,37,"1/2"],["B","ADD",58,37,"1/4"],["B","ADD",57,37,"5/4"],["B","ADD",56,37,"3/4"],["B","ADD",55,37,"1/2"],["B","ADD",54,37,"1/4"],["B","ADD",53,37,"5/4"],["B","ADD",52,37,"3/4"],["B","ADD",36,61,"-1"],["B","ADD",36,60,"3"],["B","ADD",36,58,"2"],["B","ADD",36,57,"-1"],["B","ADD",36,56,"1"],["B","ADD",36,54,"2"],["B","ADD",36,53,"-1"],["B","ADD",36,52,"1"],["B","ADD",36,37,"-1/2"],["B","SCALE",36,"-2"],["B","ADD",61,36,"-1/4"],["B","ADD",60,36,"1/4"],["B","ADD",59,36,"1/4"],["B","ADD",57,36,"1/4"],["B","ADD",56,36,"1/4"],["B","ADD",55,36,"1/4"],["B","ADD",53,36,"1/4"],["B","ADD",52,36,"1/4"],["B","ADD",37,36,"-2"],["B","ADD",36,52,"14"],["B","ADD",37,52,"-34"],["B","ADD",53,52,"-4"],["B","ADD",54,52,"-3/2"],["B","ADD",55,52,"1/2"],["B","ADD",56,52,"-1"],["B","ADD",57,52,"-4"],["B","ADD",58,52,"-1/2"],["B","ADD",59,52,"1"],["B","SCALE",52,"-1"],["B","ADD",52,36,"1"],["B","ADD",52,37,"1"],["B","ADD",52,53,"-6"],["B","ADD",52,54,"16"],["B","ADD",52,55,"4"],["B","ADD",52,56,"2"],["B","ADD",52,57,"-6"],["B","ADD",52,58,"14"],["B","ADD",52,59,"6"],["B","IDLE_ONE",52,[14]],["B","ADD",52,59,"-6"],["B","ADD",52,58,"-14"],["B","ADD",52,57,"6"],["B","ADD",52,56,"-2"],["B","ADD",52,55,"-4"],["B","ADD",52,54,"-16"],["B","ADD",52,53,"6"],["B","ADD",52,37,"-1"],["B","ADD",52,36,"-1"],["B","SCALE",52,"-1"],["B","ADD",59,52,"-1"],["B","ADD",58,52,"1/2"],["B","ADD",57,52,"4"],["B","ADD",56,52,"1"],["B","ADD",55,52,"-1/2"],["B","ADD",54,52,"3/2"],["B","ADD",53,52,"4"],["B","ADD",37,52,"34"],["B","ADD",36,52,"-14"],["B","ADD",37,36,"5/2"],["B","ADD",52,36,"1/8"],["B","ADD",53,36,"3/8"],["B","ADD",54,36,"1/8"],["B","ADD",56,36,"1/8"],["B","ADD",57,36,"3/8"],["B","ADD",58,36,"1/16"],["B","ADD",59,36,"-1/16"],["B","SCALE",36,"1/8"],["B","ADD",36,37,"-1"],["B","ADD",36,52,"-4"],["B","ADD",36,53,"10"],["B","ADD",36,54,"-26"],["B","ADD",36,55,"-6"],["B","ADD",36,56,"-4"],["B","ADD",36,57,"10"],["B","ADD",36,58,"-24"],["B","ADD",36,59,"-10"],["B","IDLE_ONE",36,[14]],["B","ADD",36,59,"10"],["B","ADD",36,58,"24"],["B","ADD",36,57,"-10"],["B","ADD",36,56,"4"],["B","ADD",36,55,"6"],["B","ADD",36,54,"26"],["B","ADD",36,53,"-10"],["B","ADD",36,52,"4"],["B","ADD",36,37,"1"],["B","SCALE",36,"8"],["B","ADD",59,36,"1/16"],["B","ADD",58,36,"-1/16"],["B","ADD",57,36,"-3/8"],["B","ADD",56,36,"-1/8"],["B","ADD",54,36,"-1/8"],["B","ADD",53,36,"-3/8"],["B","ADD",52,36,"-1/8"],["B","ADD",37,36,"-5/2"],["B","SWAP",36,37],["B","ADD",52,36,"-3/4"],["B","ADD",53,36,"-5/4"],["B","ADD",54,36,"-1/4"],["B","ADD",55,36,"-1/2"],["B","ADD",56,36,"-3/4"],["B","ADD",57,36,"-5/4"],["B","ADD",58,36,"-1/4"],["B","ADD",59,36,"-1/4"],["B","SCALE",36,"-1/2"],["B","ADD",36,37,"1/2"],["B","ADD",36,52,"1"],["B","ADD",36,53,"-3"],["B","ADD",36,54,"8"],["B","ADD",36,55,"2"],["B","ADD",36,56,"1"],["B","ADD",36,57,"-3"],["B","ADD",36,58,"6"],["B","ADD",36,59,"2"],["B","ADD",52,37,"-7/4"],["B","ADD",53,37,"-11/4"],["B","ADD",54,37,"-1/2"],["B","ADD",55,37,"-5/4"],["B","ADD",56,37,"-7/4"],["B","ADD",57,37,"-11/4"],["B","ADD",58,37,"-3/4"],["B","ADD",59,37,"-1/4"],["B","SCALE",37,"1/2"],["B","ADD",37,52,"-1"],["B","ADD",37,53,"1"],["B","ADD",37,54,"-2"],["B","ADD",37,56,"-1"],["B","ADD",37,57,"1"],["B","ADD",37,58,"-2"],["B","ADD",37,59,"-2"],["B","SCALE",37,"-1/2"],["B","ADD",37,36,"-1/2"],["B","ADD",36,37,"1"],["B","LAMBDA",36,1],["A","ADD",14,0,"1"],["A","ADD",15,0,"2"],["A","ADD",16,0,"2"],["A","ADD",17,0,"2"],["A","SCALE",0,"-1"],["A","ADD",32,18,"1"],["A","ADD",33,18,"2"],["A","ADD",34,18,"2"],["A","ADD",35,18,"2"],["A","SCALE",18,"-1"],["A","LAMBDA",14,1],["A","LAMBDA",32,-1],["A","SCALE",32,"-1"],["J",14,[14,0,18,32],[36,37,"-1","1/2"]],["A","LAMBDA",14,-1],["A","LAMBDA",32,1],["A","SCALE",32,"-1"],["A","ADD",0,14,"-1"],["A","ADD",18,32,"-1"],["A","SCALE",18,"-1"],["A","ADD",35,18,"-2"],["A","ADD",34,18,"-2"],["A","ADD",33,18,"-2"],["A","ADD",32,18,"-1"],["A","SCALE",0,"-1"],["A","ADD",17,0,"-2"],["A","ADD",16,0,"-2"],["A","ADD",15,0,"-2"],["A","ADD",14,0,"-1"],["B","LAMBDA",36,-1],["B","SCALE",37,"-2"],["B","ADD",37,59,"2"],["B","ADD",37,58,"2"],["B","ADD",37,57,"-1"],["B","ADD",37,56,"1"],["B","ADD",37,54,"2"],["B","ADD",37,53,"-1"],["B","ADD",37,52,"1"],["B","SCALE",37,"2"],["B","ADD",59,37,"1/4"],["B","ADD",58,37,"3/4"],["B","ADD",57,37,"11/4"],["B","ADD",56,37,"7/4"],["B","ADD",55,37,"5/4"],["B","ADD",54,37,"1/2"],["B","ADD",53,37,"11/4"],["B","ADD",52,37,"7/4"],["B","ADD",36,59,"-2"],["B","ADD",36,58,"-6"],["B","ADD",36,57,"3"],["B","ADD",36,56,"-1"],["B","ADD",36,55,"-2"],["B","ADD",36,54,"-8"],["B","ADD",36,53,"3"],["B","ADD",36,52,"-1"],["B","ADD",36,37,"-1/2"],["B","SCALE",36,"-2"],["B","ADD",59,36,"1/4"],["B","ADD",58,36,"1/4"],["B","ADD",57,36,"5/4"],["B","ADD",56,36,"3/4"],["B","ADD",55,36,"1/2"],["B","ADD",54,36,"1/4"],["B","ADD",53,36,"5/4"],["B","ADD",52,36,"3/4"],["B","SWAP",36,37],["B","ADD",37,36,"7/4"],["B","ADD",52,36,"-7/16"],["B","ADD",53,36,"-9/16"],["B","ADD",54,36,"-1/16"],["B","ADD",55,36,"-3/8"],["B","ADD",56,36,"-1/8"],["B","ADD",57,36,"1/4"],["B","SCALE",36,"-1/4"],["B","ADD",36,52,"2"],["B","ADD",36,53,"-4"],["B","ADD",36,54,"10"],["B","ADD",36,55,"2"],["B","ADD",36,56,"2"],["B","ADD",36,57,"-2"],["B","IDLE_ONE",36,[15]],["B","ADD",36,57,"2"],["B","ADD",36,56,"-2"],["B","ADD",36,55,"-2"],["B","ADD",36,54,"-10"],["B","ADD",36,53,"4"],["B","ADD",36,52,"-2"],["B","SCALE",36,"-4"],["B","ADD",57,36,"-1/4"],["B","ADD",56,36,"1/8"],["B","ADD",55,36,"3/8"],["B","ADD",54,36,"1/16"],["B","ADD",53,36,"9/16"],["B","ADD",52,36,"7/16"],["B","ADD",37,36,"-7/4"],["B","ADD",37,36,"2"],["B","ADD",52,36,"-1/4"],["B","ADD",53,36,"-1/4"],["B","ADD",55,36,"-1/4"],["B","ADD",57,36,"1/2"],["B","ADD",36,37,"1"],["B","ADD",36,52,"4"],["B","ADD",36,53,"-10"],["B","ADD",36,54,"26"],["B","ADD",36,55,"6"],["B","ADD",36,56,"2"],["B","ADD",36,57,"-6"],["B","IDLE_ONE",36,[15]],["B","ADD",36,57,"6"],["B","ADD",36,56,"-2"],["B","ADD",36,55,"-6"],["B","ADD",36,54,"-26"],["B","ADD",36,53,"10"],["B","ADD",36,52,"-4"],["B","ADD",36,37,"-1"],["B","ADD",57,36,"-1/2"],["B","ADD",55,36,"1/4"],["B","ADD",53,36,"1/4"],["B","ADD",52,36,"1/4"],["B","ADD",37,36,"-2"],["B","ADD",37,36,"2"],["B","ADD",52,36,"-1/4"],["B","ADD",53,36,"-1/4"],["B","ADD",55,36,"-1/4"],["B","ADD",56,36,"-1/4"],["B","ADD",57,36,"1/4"],["B","SCALE",36,"-1/2"],["B","ADD",36,37,"1/2"],["B","ADD",36,52,"-1"],["B","ADD",36,53,"1"],["B","ADD",36,54,"-2"],["B","ADD",36,56,"-3"],["B","ADD",36,57,"1"],["B","ADD",52,37,"-3/4"],["B","ADD",53,37,"-5/4"],["B","ADD",54,37,"-1/4"],["B","ADD",55,37,"-1/2"],["B","ADD",56,37,"-1/4"],["B","ADD",57,37,"-1/4"],["B","SCALE",37,"-1/2"],["B","ADD",37,52,"-1"],["B","ADD",37,53,"3"],["B","ADD",37,54,"-8"],["B","ADD",37,55,"-2"],["B","ADD",37,56,"-1"],["B","ADD",37,57,"1"],["B","SCALE",37,"1/2"],["B","ADD",37,36,"-1/2"],["B","ADD",36,37,"1"],["B","LAMBDA",36,1],["A","ADD",15,0,"1"],["A","ADD",16,0,"2"],["A","ADD",17,0,"2"],["A","SCALE",0,"-1"],["A","ADD",33,18,"1"],["A","ADD",34,18,"2"],["A","ADD",35,18,"2"],["A","SCALE",18,"-1"],["A","LAMBDA",15,1],["A","LAMBDA",33,-1],["A","SCALE",33,"-1"],["J",15,[15,0,18,33],[36,37,"-1","1/2"]],["A","LAMBDA",15,-1],["A","LAMBDA",33,1],["A","SCALE",33,"-1"],["A","ADD",0,15,"-1"],["A","ADD",18,33,"-1"],["A","SCALE",18,"-1"],["A","ADD",35,18,"-2"],["A","ADD",34,18,"-2"],["A","ADD",33,18,"-1"],["A","SCALE",0,"-1"],["A","ADD",17,0,"-2"],["A","ADD",16,0,"-2"],["A","ADD",15,0,"-1"],["B","LAMBDA",36,-1],["B","SCALE",37,"2"],["B","ADD",37,57,"-1"],["B","ADD",37,56,"1"],["B","ADD",37,55,"2"],["B","ADD",37,54,"8"],["B","ADD",37,53,"-3"],["B","ADD",37,52,"1"],["B","SCALE",37,"-2"],["B","ADD",57,37,"1/4"],["B","ADD",56,37,"1/4"],["B","ADD",55,37,"1/2"],["B","ADD",54,37,"1/4"],["B","ADD",53,37,"5/4"],["B","ADD",52,37,"3/4"],["B","ADD",36,57,"-1"],["B","ADD",36,56,"3"],["B","ADD",36,54,"2"],["B","ADD",36,53,"-1"],["B","ADD",36,52,"1"],["B","ADD",36,37,"-1/2"],["B","SCALE",36,"-2"],["B","ADD",57,36,"-1/4"],["B","ADD",56,36,"1/4"],["B","ADD",55,36,"1/4"],["B","ADD",53,36,"1/4"],["B","ADD",52,36,"1/4"],["B","ADD",37,36,"-2"],["B","ADD",36,52,"14"],["B","ADD",37,52,"-34"],["B","ADD",53,52,"-4"],["B","ADD",54,52,"-1/2"],["B","ADD",55,52,"1"],["B","SCALE",52,"-1"],["B","ADD",52,36,"1"],["B","ADD",52,37,"1"],["B","ADD",52,53,"-6"],["B","ADD",52,54,"14"],["B","ADD",52,55,"6"],["B","IDLE_ONE",52,[16]],["B","ADD",52,55,"-6"],["B","ADD",52,54,"-14"],["B","ADD",52,53,"6"],["B","ADD",52,37,"-1"],["B","ADD",52,36,"-1"],["B","SCALE",52,"-1"],["B","ADD",55,52,"-1"],["B","ADD",54,52,"1/2"],["B","ADD",53,52,"4"],["B","ADD",37,52,"34"],["B","ADD",36,52,"-14"],["B","ADD",37,36,"5/2"],["B","ADD",52,36,"1/8"],["B","ADD",53,36,"3/8"],["B","ADD",54,36,"1/16"],["B","ADD",55,36,"-1/16"],["B","SCALE",36,"1/8"],["B","ADD",36,37,"-1"],["B","ADD",36,52,"-4"],["B","ADD",36,53,"10"],["B","ADD",36,54,"-24"],["B","ADD",36,55,"-10"],["B","IDLE_ONE",36,[16]],["B","ADD",36,55,"10"],["B","ADD",36,54,"24"],["B","ADD",36,53,"-10"],["B","ADD",36,52,"4"],["B","ADD",36,37,"1"],["B","SCALE",36,"8"],["B","ADD",55,36,"1/16"],["B","ADD",54,36,"-1/16"],["B","ADD",53,36,"-3/8"],["B","ADD",52,36,"-1/8"],["B","ADD",37,36,"-5/2"],["B","SWAP",36,37],["B","ADD",52,36,"-3/4"],["B","ADD",53,36,"-5/4"],["B","ADD",54,36,"-1/4"],["B","ADD",55,36,"-1/4"],["B","SCALE",36,"-1/2"],["B","ADD",36,37,"1/2"],["B","ADD",36,52,"1"],["B","ADD",36,53,"-3"],["B","ADD",36,54,"6"],["B","ADD",36,55,"2"],["B","ADD",52,37,"-7/4"],["B","ADD",53,37,"-11/4"],["B","ADD",54,37,"-3/4"],["B","ADD",55,37,"-1/4"],["B","SCALE",37,"1/2"],["B","ADD",37,52,"-1"],["B","ADD",37,53,"1"],["B","ADD",37,54,"-2"],["B","ADD",37,55,"-2"],["B","SCALE",37,"-1/2"],["B","ADD",37,36,"-1/2"],["B","ADD",36,37,"1"],["B","LAMBDA",36,1],["A","ADD",16,0,"1"],["A","ADD",17,0,"2"],["A","SCALE",0,"-1"],["A","ADD",34,18,"1"],["A","ADD",35,18,"2"],["A","SCALE",18,"-1"],["A","LAMBDA",16,1],["A","LAMBDA",34,-1],["A","SCALE",34,"-1"],["J",16,[16,0,18,34],[36,37,"-1","1/2"]],["A","LAMBDA",16,-1],["A","LAMBDA",34,1],["A","SCALE",34,"-1"],["A","ADD",0,16,"-1"],["A","ADD",18,34,"-1"],["A","SCALE",18,"-1"],["A","ADD",35,18,"-2"],["A","ADD",34,18,"-1"],["A","SCALE",0,"-1"],["A","ADD",17,0,"-2"],["A","ADD",16,0,"-1"],["B","LAMBDA",36,-1],["B","SCALE",37,"-2"],["B","ADD",37,55,"2"],["B","ADD",37,54,"2"],["B","ADD",37,53,"-1"],["B","ADD",37,52,"1"],["B","SCALE",37,"2"],["B","ADD",55,37,"1/4"],["B","ADD",54,37,"3/4"],["B","ADD",53,37,"11/4"],["B","ADD",52,37,"7/4"],["B","ADD",36,55,"-2"],["B","ADD",36,54,"-6"],["B","ADD",36,53,"3"],["B","ADD",36,52,"-1"],["B","ADD",36,37,"-1/2"],["B","SCALE",36,"-2"],["B","ADD",55,36,"1/4"],["B","ADD",54,36,"1/4"],["B","ADD",53,36,"5/4"],["B","ADD",52,36,"3/4"],["B","SWAP",36,37],["B","ADD",37,36,"7/4"],["B","ADD",52,36,"-1/8"],["B","ADD",53,36,"1/4"],["B","SCALE",36,"-1/4"],["B","ADD",36,37,"-1"],["B","ADD",36,53,"4"],["B","IDLE_ONE",36,[17]],["B","ADD",36,53,"-4"],["B","ADD",36,37,"1"],["B","SCALE",36,"-4"],["B","ADD",53,36,"-1/4"],["B","ADD",52,36,"1/8"],["B","ADD",37,36,"-7/4"],["B","ADD",37,36,"5/3"],["B","ADD",52,36,"-1/6"],["B","ADD",53,36,"1/6"],["B","SCALE",36,"-1/3"],["B","ADD",36,37,"1"],["B","ADD",36,52,"2"],["B","ADD",36,53,"-6"],["B","IDLE_ONE",36,[17]],["B","ADD",36,53,"6"],["B","ADD",36,52,"-2"],["B","ADD",36,37,"-1"],["B","SCALE",36,"-3"],["B","ADD",53,36,"-1/6"],["B","ADD",52,36,"1/6"],["B","ADD",37,36,"-5/3"],["B","ADD",37,36,"2"],["B","ADD",52,36,"-1/4"],["B","ADD",53,36,"1/4"],["B","SCALE",36,"-1/2"],["B","ADD",36,37,"1/2"],["B","ADD",36,52,"-3"],["B","ADD",36,53,"1"],["B","ADD",52,37,"-1/4"],["B","ADD",53,37,"-1/4"],["B","SCALE",37,"-1/2"],["B","ADD",37,52,"-1"],["B","ADD",37,53,"1"],["B","SCALE",37,"1/2"],["B","ADD",37,36,"-1/2"],["B","ADD",36,37,"1"],["B","LAMBDA",36,1],["A","ADD",17,0,"1"],["A","SCALE",0,"-1"],["A","ADD",35,18,"1"],["A","SCALE",18,"-1"],["A","LAMBDA",17,1],["A","LAMBDA",35,-1],["A","SCALE",35,"-1"],["J",17,[17,0,18,35],[36,37,"-1","1/2"]],["A","LAMBDA",17,-1],["A","LAMBDA",35,1],["A","SCALE",35,"-1"],["A","ADD",0,17,"-1"],["A","ADD",18,35,"-1"],["A","SCALE",18,"-1"],["A","ADD",35,18,"-1"],["A","SCALE",0,"-1"],["A","ADD",17,0,"-1"],["A","LAMBDA",0,-1],["A","LAMBDA",1,-1],["A","LAMBDA",2,-1],["A","LAMBDA",3,-1],["A","LAMBDA",4,-1],["A","LAMBDA",5,-1],["A","LAMBDA",6,-1],["A","LAMBDA",7,-1],["A","LAMBDA",8,-1],["A","LAMBDA",9,-1],["A","LAMBDA",10,-1],["A","LAMBDA",11,-1],["A","LAMBDA",12,-1],["A","LAMBDA",13,-1],["A","LAMBDA",14,-1],["A","LAMBDA",15,-1],["A","LAMBDA",16,-1],["A","LAMBDA",17,-1],["A","LAMBDA",18,-1],["A","LAMBDA",19,-1],["A","LAMBDA",20,-1],["A","LAMBDA",21,-1],["A","LAMBDA",22,-1],["A","LAMBDA",23,-1],["A","LAMBDA",24,-1],["A","LAMBDA",25,-1],["A","LAMBDA",26,-1],["A","LAMBDA",27,-1],["A","LAMBDA",28,-1],["A","LAMBDA",29,-1],["A","LAMBDA",30,-1],["A","LAMBDA",31,-1],["A","LAMBDA",32,-1],["A","LAMBDA",33,-1],["A","LAMBDA",34,-1],["A","LAMBDA",35,-1],["B","LAMBDA",36,-1],["B","SCALE",37,"2"],["B","ADD",37,53,"-1"],["B","ADD",37,52,"1"],["B","SCALE",37,"-2"],["B","ADD",53,37,"1/4"],["B","ADD",52,37,"1/4"],["B","ADD",36,53,"-1"],["B","ADD",36,52,"3"],["B","ADD",36,37,"-1/2"],["B","SCALE",36,"-2"],["B","ADD",53,36,"-1/4"],["B","ADD",52,36,"1/4"],["B","ADD",37,36,"-2"],["B","LAMBDA",36,-1],["B","LAMBDA",37,-1],["B","LAMBDA",38,-1],["B","LAMBDA",39,-1],["B","LAMBDA",40,-1],["B","LAMBDA",41,-1],["B","LAMBDA",42,-1],["B","LAMBDA",43,-1],["B","LAMBDA",44,-1],["B","LAMBDA",45,-1],["B","LAMBDA",46,-1],["B","LAMBDA",47,-1],["B","LAMBDA",48,-1],["B","LAMBDA",49,-1],["B","LAMBDA",50,-1],["B","LAMBDA",51,-1],["B","LAMBDA",52,-1],["B","LAMBDA",53,-1],["B","LAMBDA",54,-1],["B","LAMBDA",55,-1],["B","LAMBDA",56,-1],["B","LAMBDA",57,-1],["B","LAMBDA",58,-1],["B","LAMBDA",59,-1],["B","LAMBDA",60,-1],["B","LAMBDA",61,-1],["B","LAMBDA",62,-1],["B","LAMBDA",63,-1],["B","LAMBDA",64,-1],["B","LAMBDA",65,-1],["B","LAMBDA",66,-1],["B","LAMBDA",67,-1]],"ops_note":"QSELF(x, k): R[x] *= q^k, one paid rank-1 job on one register (new op; not in the retained alphabet).; source interval457..575 replaced by a three-QUERY even-basis factorization; no QSELF"} \ No newline at end of file diff --git a/research/p104-serial-temporal-support-bound/source7165/inputs/caller/interval_gate.py b/research/p104-serial-temporal-support-bound/source7165/inputs/caller/interval_gate.py new file mode 100644 index 0000000000..e24dc46079 --- /dev/null +++ b/research/p104-serial-temporal-support-bound/source7165/inputs/caller/interval_gate.py @@ -0,0 +1,128 @@ +#!/usr/bin/env python3 +"""Independent certified fixed-grid intervals (80 decimal places). +ln via 2 atanh after binary range reduction; exp(-x) via alternating +Taylor brackets. Uses only integer floor/ceiling, not Decimal transcendents. +""" +from fractions import Fraction as F +from functools import lru_cache +from pathlib import Path +import json,argparse +if not __debug__: raise RuntimeError('Run without -O; assertions are proof checks.') +B=10**80 + +def ceildiv(a,b):return -((-a)//b) +def exact(q): + q=F(q);return q.numerator*B//q.denominator,ceildiv(q.numerator*B,q.denominator) +def add(a,b):return a[0]+b[0],a[1]+b[1] +def sub(a,b):return a[0]-b[1],a[1]-b[0] +def mul(a,b): + p=[a[i]*b[j] for i in (0,1) for j in (0,1)];return min(p)//B,ceildiv(max(p),B) +def div(a,b): + assert b[0]>0 + p=[F(a[i]*B,b[j]) for i in (0,1) for j in (0,1)] + return min(p).__floor__(),max(p).__ceil__() +def smul(a,q):return mul(a,exact(q)) +def atanh_log(y): + yi=exact(y);yy=mul(yi,yi);p=yi;s=(0,0) + for j in range(100):s=add(s,smul(p,F(2,2*j+1)));p=mul(p,yy) + # 0 <= tail <= 2 y^201/[201(1-y^2)] < 3*(1/3)^201. + return s[0],s[1]+ceildiv(3*B,3**201) +@lru_cache(None) +def log(r): + assert r>=1 + k=r.bit_length()-1;y=F(r-2**k,r+2**k) + a=atanh_log(y);b=atanh_log(F(1,3));return add(a,smul(b,k)) +def expminus(x): + assert 0<=x[0]<=x[1]0 and margins[str(hi)][1]<0 and margins[str(tested)][0]>0 + target=moment(T,tested);paid=moment(P,tested) + alpha=div(paid,target) + # Tail exponent = 1-tested+1/7; argument exp may not be negative. + # r^(1-tested+1/7)=r^(1-tested)* exp(log(r)/7). + def exppos(x): + assert 0<=x[0]<=x[1]0 and gap.numerator==1;step=gap.denominator + wins=lambda j:(step*j+1)**written<2**j + l,h=1,2 + while not wins(h):l,h=h,2*h + while h-l>1: + m=(l+h)//2 + if wins(m):h=m + else:l=m + assert wins(h) and not wins(h-1) + # Monotonicity: upper derivative bound on [0, cap]. + derivative=(0,0) + for rr in T.keys()|P.keys(): + c=T.get(rr,0)-P.get(rr,0);r=int(rr) + term=mul(power(r,cap if c>=0 else 0),log(r));derivative=add(derivative,smul(term,-c)) + assert derivative[1]<0 + result=dict(claim=str(claim),tested=str(tested),raw_bracket=[str(lo),str(hi)],moment_margins={k:show(v) for k,v in margins.items()},moment_margin_float={k:value(v) for k,v in margins.items()},derivative_upper=float(F(derivative[1],B)),alpha=value(alpha),gamma=value(gamma),delta=value(delta),minimum_log_power=lp,written_log_power=written,compiler_gap=str(gap),H=str(step*h),BIT_pin=str(cap),BIT_margin=str(cap-tested)) + # Outer formulas evaluated independently after algebraically substituting + # b=k+5g,a=k+4g,q=k+3g,epsilon=1-g,beta=1-3g. + k=claim;g=gap;b=k+5*g;a=k+4*g;q=k+3*g;ep=1-g;be=1-3*g;r0=g/10;stop=layout=g + sig=1-b;tau=1-a;internal=tau+(1-stop)*max(sig-tau,0);leaf=sig+stop*(1-sig);lam=1-(q+a)/2;xi=ep*(1+q)-F(3,32)+layout;key=be+1-ep + M=[ep*q,a,1-ep+q*be,1-ep+a*be,1-ep+be,F(3,32)+xi-ep,xi+F(1,2)-ep,ep,1-(ep+be+48-128+2)] + checks=[cap-a,b-a,q,b-q,a-q,stop,1-stop,(1-stop)*b-a,1-internal-q,1-leaf-q,lam-tau,lam-sig,lam-internal,1-q-lam,1-q-leaf,ep,1-ep,xi-F(1,2),ep-xi,be,ep-be,1-be,1-(2*xi-2)-r0-be,1-(2*xi-2)-be,1-ep-r0,1-ep,r0,1-key,1-be-2*(1-ep),128-48-be,layout,ep-a,F(1,32)-b,F(2**45-7**16),F(2),2-xi,F(5),1-be,1-be,1-ep,M[2]-M[0],g,k-F('.001730970419199163702738'),1-ep,F(11,2)]+[x-k for x in M] + functional=[1-be,be*(1-F(3,1000)),128-48-ep-be-1,be*(1-F(1,250))] + assert len(checks)==54 and len(functional)==4 and min(checks+functional)>0 + result['outer']=dict(strict_count=54,functional_count=4,minimum_margin=str(min(checks+functional)),BIT_just_below_effective_rejected=(a-F(1,10**12))-a<0) + # Input-lift is only needed on [1-tested_complex,1]. A stronger BIT + # pin is irrelevant to this interval; the source's crude BIT-wide bound + # is not imported beyond its valid range. + pos={7:1,3:1,5:1};neg={9:1,4:1,1:2};d1=(0,0);curvature=(0,0) + for hist,sign in ((pos,1),(neg,-1)): + for r,c in hist.items(): + d1=add(d1,smul(log(r),sign*c*r)) + curvature=add(curvature,smul(mul(log(r),log(r)),c*r)) + lift_cap=cap if cap<=F('.00376669') else tested + assert tested<=lift_cap and F(d1[1],B)+lift_cap*F(curvature[1],B)<0 + lifts={} + for price in (claim,tested): + lift=sub(moment(pos,price),moment(neg,price));assert lift[0]>0 + assert price*(-F(d1[1],B))-price*price*F(curvature[1],B)/2>0 + lifts[str(price)]=show(lift) + result['input_lift']=dict(margins=lifts,interval_kappa_cap=str(lift_cap),derivative_upper_on_required_interval=str(F(d1[1],B)+lift_cap*F(curvature[1],B)),source_BIT_wide_crude_bound_would_be=str(F(d1[1],B)+cap*F(curvature[1],B))) + return result +if __name__=='__main__': + p=argparse.ArgumentParser();p.add_argument('audit');p.add_argument('--claim',default='.00362852408');p.add_argument('--tested',default='.00362852408007');p.add_argument('--lower',default='.00362852408398727978896072723289');p.add_argument('--upper',default='.00362852408398727978896072723290');p.add_argument('--out',required=True);p.add_argument('--bit-pin',default='.00376669');a=p.parse_args() + r=gate(json.loads(Path(a.audit).read_text())['invoice'],a.claim,a.tested,a.lower,a.upper,a.bit_pin);Path(a.out).write_text(json.dumps(r,indent=2)+'\n');print(json.dumps(r,indent=2)) diff --git a/research/p104-serial-temporal-support-bound/source7165/inputs/peer/research/p104-rank8-exit-funded-split/RESULT.json b/research/p104-serial-temporal-support-bound/source7165/inputs/peer/research/p104-rank8-exit-funded-split/RESULT.json new file mode 100644 index 0000000000..60edfac362 --- /dev/null +++ b/research/p104-serial-temporal-support-bound/source7165/inputs/peer/research/p104-rank8-exit-funded-split/RESULT.json @@ -0,0 +1,1599 @@ +{ + "adapter": { + "adapted_sha256": { + "check_odd_partial_admission.py": "de75cd93b9bfffb2a13781209435d31a84edd97f0fe313d3ecb9542ce8383dac", + "check_odd_precision.py": "59d811dd0eddca0a761e935341e7bee51cf66b9d9481ce8eb500c9ae5723bbcb", + "emit_odd_type_ab.py": "6fd9f61f9ba6c726524d1a585d0201b0eac61829ccae6be598f0f0fc1cb64f1a" + }, + "edits": [ + { + "file": "emit_odd_type_ab.py", + "new": "invoice=json.loads((root/\"COHORT-PRICE.json\").read_text())", + "old": "invoice=next(x for x in json.loads((root/\"SHORT-CALLER-RAW-PRICE.json\").read_text())[\"rows\"] if tuple(x[\"shape\"])==shape)" + }, + { + "file": "check_odd_partial_admission.py", + "new": "actual_native=ind.native(w)\nassert actual_native==N and not N[\"bad_inputs\"], \"Fresh complete native inventory and arbitrary-input adjoint\"", + "old": "previous=json.loads((root/\"SHORT-ADMISSION-PARTIAL.json\").read_text())\nassert previous[\"native_sha256\"]==digest and not N[\"bad_inputs\"]" + }, + { + "file": "check_odd_partial_admission.py", + "new": "claim=Q('0.00364489006794')", + "old": "claim=Q(\".00363797977\")" + }, + { + "file": "check_odd_partial_admission.py", + "new": "tested=claim+Q(7,10**17)\nwhile tested>=Q(reference[\"raw_bracket\"][0]):\n tested=claim+(tested-claim)/10", + "old": "tested=claim+Q(7,10**17)" + }, + { + "file": "check_odd_partial_admission.py", + "new": "g=gate(invoice,claim,tested,*bracket,r[\"gate\"][\"BIT_pin\"])\ntry:\n gate(invoice,claim,Q(bracket[0]),*bracket,r[\"gate\"][\"BIT_pin\"])\nexcept AssertionError:\n crossing_probe_rejected=True\nelse:\n raise AssertionError(\"Probe at lower crossing unexpectedly accepted\")", + "old": "g=gate(invoice,claim,tested,*bracket,r[\"gate\"][\"BIT_pin\"])" + }, + { + "file": "check_odd_partial_admission.py", + "new": "\"crossing_probe_rejected\":crossing_probe_rejected,\"scope\":\"Fresh exact current native arbitrary-input adjoint;", + "old": "\"scope\":\"Reuse exact same native word all-column adjoint;" + }, + { + "file": "check_odd_precision.py", + "new": "patch('(life, peak, owned_count) == (54, 43, 51)','(life, peak, owned_count) == (66, 48, 63)')\nenv=ModuleType(\"short_envelope\")", + "old": "env=ModuleType(\"short_envelope\")" + }, + { + "file": "check_odd_precision.py", + "new": "", + "old": "previous=json.loads((root/\"SHORT-PRECISION.json\").read_text())" + }, + { + "file": "check_odd_precision.py", + "new": "assert grid_receipt[\"caller_sha256\"]==sha256(cpath.read_bytes()).hexdigest()", + "old": "assert previous[\"native_sha256\"]==sha and grid_receipt[\"caller_sha256\"]==sha256(cpath.read_bytes()).hexdigest()" + }, + { + "file": "check_odd_precision.py", + "new": "wg=grid.word_run(w, frac=25)\nwp,wr=env.native_envelope(w)\nwg=json.loads(json.dumps(wg,default=str));wr=json.loads(json.dumps(wr,default=str))\nassert wg==r[\"precision\"][\"word\"] and wr==r[\"precision\"][\"rounded_native\"], \"Fresh changed-native grid and envelope\"", + "old": "wg=previous[\"native_grid\"]\nwr=previous[\"rounded_native\"]\nwp={key:(Q(v[\"exact\"]),v[\"witness\"]) for key,v in wr[\"bounds\"].items()}" + } + ] + }, + "caller_sha256": "255d89f38cd45e38e5770f559bc43dc217e989032359768cdc7e8cdfd64b47bc", + "catalogue": [ + { + "catalogue_digest": "789580be599f2c712cda0ef0622d3fff6c86bf1ffdcd49c73b2f7f839aae5f23", + "catalogue_size": 3036, + "checked_maps": 1000, + "distinct_helper_maps": 187, + "distinct_paid_maps": 2950, + "exact_recipe_digest": "430c467e9c73ef00ddc325b7cf95aba8a34187f362eae67791aafd26b117e4b9", + "main_boundary_digest": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945", + "main_boundary_pairs": 0, + "phase_control_rejected": true, + "scope": "Complete signed Pauli action plus exact Gaussian global phase; for Clifford maps these determine every matrix column. Generic tensor-product and physical grammar application is written in the review. No random-field substitution.", + "slice_start": 0, + "slice_stop": 1000, + "status": "PASS_CURRENT_NATIVE_CATALOGUE_SLICE", + "word_sha256": "c1caec11ca3ee264ef03018dd91037eac10c3e28950c4c525ee1b4bf5ee210e2" + }, + { + "catalogue_digest": "789580be599f2c712cda0ef0622d3fff6c86bf1ffdcd49c73b2f7f839aae5f23", + "catalogue_size": 3036, + "checked_maps": 1000, + "distinct_helper_maps": 187, + "distinct_paid_maps": 2950, + "exact_recipe_digest": "2cae048f253c10a701476eaa4486931f22766daf994d44d80688b0f8f2fc530f", + "main_boundary_digest": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945", + "main_boundary_pairs": 0, + "phase_control_rejected": true, + "scope": "Complete signed Pauli action plus exact Gaussian global phase; for Clifford maps these determine every matrix column. Generic tensor-product and physical grammar application is written in the review. No random-field substitution.", + "slice_start": 1000, + "slice_stop": 2000, + "status": "PASS_CURRENT_NATIVE_CATALOGUE_SLICE", + "word_sha256": "c1caec11ca3ee264ef03018dd91037eac10c3e28950c4c525ee1b4bf5ee210e2" + }, + { + "catalogue_digest": "789580be599f2c712cda0ef0622d3fff6c86bf1ffdcd49c73b2f7f839aae5f23", + "catalogue_size": 3036, + "checked_maps": 1000, + "distinct_helper_maps": 187, + "distinct_paid_maps": 2950, + "exact_recipe_digest": "c8524029578adf6749ecc9b72b848a9933ea23b54951d7349c0614c18603fea9", + "main_boundary_digest": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945", + "main_boundary_pairs": 0, + "phase_control_rejected": true, + "scope": "Complete signed Pauli action plus exact Gaussian global phase; for Clifford maps these determine every matrix column. Generic tensor-product and physical grammar application is written in the review. No random-field substitution.", + "slice_start": 2000, + "slice_stop": 3000, + "status": "PASS_CURRENT_NATIVE_CATALOGUE_SLICE", + "word_sha256": "c1caec11ca3ee264ef03018dd91037eac10c3e28950c4c525ee1b4bf5ee210e2" + }, + { + "catalogue_digest": "789580be599f2c712cda0ef0622d3fff6c86bf1ffdcd49c73b2f7f839aae5f23", + "catalogue_size": 3036, + "checked_maps": 36, + "distinct_helper_maps": 187, + "distinct_paid_maps": 2950, + "exact_recipe_digest": "01651736571052e77f70be25553d3f726b5325a89c93cb9459a54c3634ee1f38", + "main_boundary_digest": "ad959887c990b8862a0e60db3f53d5195a1c9d667c1593f0101adc8db18f27fa", + "main_boundary_pairs": 104, + "phase_control_rejected": true, + "scope": "Complete signed Pauli action plus exact Gaussian global phase; for Clifford maps these determine every matrix column. Generic tensor-product and physical grammar application is written in the review. No random-field substitution.", + "slice_start": 3000, + "slice_stop": 3036, + "status": "PASS_CURRENT_NATIVE_CATALOGUE_SLICE", + "word_sha256": "c1caec11ca3ee264ef03018dd91037eac10c3e28950c4c525ee1b4bf5ee210e2" + } + ], + "checks": { + "ODD-8X9-APPLICATION-CHECKS.json": { + "assumptions": [ + "native_all_columns", + "owned_erasure", + "compiler", + "precision_tape", + "analytic_recovery" + ], + "caller_sha256": "255d89f38cd45e38e5770f559bc43dc217e989032359768cdc7e8cdfd64b47bc", + "candidate": "182244503397/50000000000000", + "catalogue": [ + { + "catalogue_digest": "789580be599f2c712cda0ef0622d3fff6c86bf1ffdcd49c73b2f7f839aae5f23", + "catalogue_size": 3036, + "checked_maps": 1000, + "distinct_helper_maps": 187, + "distinct_paid_maps": 2950, + "exact_recipe_digest": "430c467e9c73ef00ddc325b7cf95aba8a34187f362eae67791aafd26b117e4b9", + "log_sha256": "935d09f384d976a4abe11403eb0213e1f42e68dffb5467b2fdff7635473e68e9", + "main_boundary_digest": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945", + "main_boundary_pairs": 0, + "phase_control_rejected": true, + "scope": "Complete signed Pauli action plus exact Gaussian global phase; for Clifford maps these determine every matrix column. Generic tensor-product and physical grammar application is written in the review. No random-field substitution.", + "slice_start": 0, + "slice_stop": 1000, + "status": "PASS_CURRENT_NATIVE_CATALOGUE_SLICE", + "word_sha256": "c1caec11ca3ee264ef03018dd91037eac10c3e28950c4c525ee1b4bf5ee210e2" + }, + { + "catalogue_digest": "789580be599f2c712cda0ef0622d3fff6c86bf1ffdcd49c73b2f7f839aae5f23", + "catalogue_size": 3036, + "checked_maps": 1000, + "distinct_helper_maps": 187, + "distinct_paid_maps": 2950, + "exact_recipe_digest": "2cae048f253c10a701476eaa4486931f22766daf994d44d80688b0f8f2fc530f", + "log_sha256": "463a21775a829fdb699fa5f6eaa73026bb9043f668b612717b6c496956864b34", + "main_boundary_digest": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945", + "main_boundary_pairs": 0, + "phase_control_rejected": true, + "scope": "Complete signed Pauli action plus exact Gaussian global phase; for Clifford maps these determine every matrix column. Generic tensor-product and physical grammar application is written in the review. No random-field substitution.", + "slice_start": 1000, + "slice_stop": 2000, + "status": "PASS_CURRENT_NATIVE_CATALOGUE_SLICE", + "word_sha256": "c1caec11ca3ee264ef03018dd91037eac10c3e28950c4c525ee1b4bf5ee210e2" + }, + { + "catalogue_digest": "789580be599f2c712cda0ef0622d3fff6c86bf1ffdcd49c73b2f7f839aae5f23", + "catalogue_size": 3036, + "checked_maps": 1000, + "distinct_helper_maps": 187, + "distinct_paid_maps": 2950, + "exact_recipe_digest": "c8524029578adf6749ecc9b72b848a9933ea23b54951d7349c0614c18603fea9", + "log_sha256": "e59a6f7fdab5722a88432a4c0ac5109e50edd2f7ad3f76861f6354c467383275", + "main_boundary_digest": "4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945", + "main_boundary_pairs": 0, + "phase_control_rejected": true, + "scope": "Complete signed Pauli action plus exact Gaussian global phase; for Clifford maps these determine every matrix column. Generic tensor-product and physical grammar application is written in the review. No random-field substitution.", + "slice_start": 2000, + "slice_stop": 3000, + "status": "PASS_CURRENT_NATIVE_CATALOGUE_SLICE", + "word_sha256": "c1caec11ca3ee264ef03018dd91037eac10c3e28950c4c525ee1b4bf5ee210e2" + }, + { + "catalogue_digest": "789580be599f2c712cda0ef0622d3fff6c86bf1ffdcd49c73b2f7f839aae5f23", + "catalogue_size": 3036, + "checked_maps": 36, + "distinct_helper_maps": 187, + "distinct_paid_maps": 2950, + "exact_recipe_digest": "01651736571052e77f70be25553d3f726b5325a89c93cb9459a54c3634ee1f38", + "log_sha256": "691b3eed53d1c03b06f8361effe1f6db74ea2a7fe7bfc983437a0857cb3b5cd5", + "main_boundary_digest": "ad959887c990b8862a0e60db3f53d5195a1c9d667c1593f0101adc8db18f27fa", + "main_boundary_pairs": 104, + "phase_control_rejected": true, + "scope": "Complete signed Pauli action plus exact Gaussian global phase; for Clifford maps these determine every matrix column. Generic tensor-product and physical grammar application is written in the review. No random-field substitution.", + "slice_start": 3000, + "slice_stop": 3036, + "status": "PASS_CURRENT_NATIVE_CATALOGUE_SLICE", + "word_sha256": "c1caec11ca3ee264ef03018dd91037eac10c3e28950c4c525ee1b4bf5ee210e2" + } + ], + "fixed_tape_counts": { + "H": 16510400000000000000000, + "Kstar_bits": 14093, + "actual_ambient": 145, + "caller_odd_scale": 675, + "caller_sha256": "255d89f38cd45e38e5770f559bc43dc217e989032359768cdc7e8cdfd64b47bc", + "common_grid": { + "fractional": "p+D", + "signed_width": "p+h+2D+3", + "temp_padding": 26 + }, + "compiler_ambient_cap": 153, + "context_bound_bits": 14104, + "context_c": 2430, + "elementary_records_per_map_upper": 85264, + "elementary_records_upper": 25471767360, + "log_power": 2237, + "max_scalar_numerator_bits": 24, + "monomial_map_slots": 298740, + "native_invocations": 17, + "native_sha256": "9eff91418d838f1ffa20fe5c5975dc2c43a79b32d501fcbe30b90c50a7b11ce3", + "owned_banks_per_raw_occurrence": 1071, + "scalar_macro_inputs": { + "caller": 117856, + "conversions": 58454, + "native": 1191190 + }, + "scalar_services_upper": 43760000, + "scalar_steps_coefficient": 45885685760000, + "scope": "Exact finite-cost and common-format substitutions in the selected #7000 conditional application proof, using the conservative primitive movement and scalar constants there. The premise is the complete signed native/physical binding and retained compiler, BIT, stock, and outer contracts. This script counts the raw occurrence, not an enumerated top-level compiled multiplier.", + "tested_claim": "182244503397/50000000000000" + }, + "native_archive_sha256": "c1caec11ca3ee264ef03018dd91037eac10c3e28950c4c525ee1b4bf5ee210e2", + "native_canonical_sha256": "9eff91418d838f1ffa20fe5c5975dc2c43a79b32d501fcbe30b90c50a7b11ce3", + "numeric_gate": { + "BIT_margin": "12179993205993/100000000000000000", + "BIT_pin": "376669/100000000", + "H": "16510400000000000000000", + "alpha": [ + 1.0, + 1.0 + ], + "claim": "182244503397/50000000000000", + "compiler_gap": "1/100000000000000000", + "delta": [ + 0.9066684778947387, + 0.9066684778947387 + ], + "derivative_upper": -381691.382745105, + "gamma": [ + 0.9407507620286742, + 0.9407507620286742 + ], + "input_lift": { + "derivative_upper_on_required_interval": "-2299831290525933154178526076272396899996972093654613095735772838275432653960006518819/2500000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "interval_kappa_cap": "376669/100000000", + "margins": { + "182244503397/50000000000000": [ + "12435616268822964624108204151994732023643370358542418433979015630224454754777/10000000000000000000000000000000000000000000000000000000000000000000000000000000", + "124356162688229646241082041519947320236433703585424184339790156302244547549693/100000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "364489006794007/100000000000000000": [ + "31089040672057983150912632412500092401132902361597748561959244574623506755013/25000000000000000000000000000000000000000000000000000000000000000000000000000000", + "31089040672057983150912632412500092401132902361597748561959244574623506755499/25000000000000000000000000000000000000000000000000000000000000000000000000000000" + ] + }, + "source_BIT_wide_crude_bound_would_be": "-2299831290525933154178526076272396899996972093654613095735772838275432653960006518819/2500000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + "minimum_log_power": 2236, + "moment_margin_float": { + "364489006794007/100000000000000000": [ + 2.1150234102748054e-12, + 2.1150234102748054e-12 + ], + "36448900679400754544078619670439/10000000000000000000000000000000000": [ + 7.73624976984083e-30, + 7.73624976984083e-30 + ], + "911222516985018863601965491761/250000000000000000000000000000000": [ + -3.104015756527284e-29, + -3.104015756527284e-29 + ] + }, + "moment_margins": { + "364489006794007/100000000000000000": [ + "211502341027480531553379384024870327589034622358366451274129769433559/100000000000000000000000000000000000000000000000000000000000000000000000000000000", + "211502341027480531553379384024870327589034622358366451274129808297531/100000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "36448900679400754544078619670439/10000000000000000000000000000000000": [ + "773624976984082980223062771948247773718705008389919/100000000000000000000000000000000000000000000000000000000000000000000000000000000", + "773624976984082980223062771948247773718705047289897/100000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "911222516985018863601965491761/250000000000000000000000000000000": [ + "-3104015756527283602766646092015489002158505106995697/100000000000000000000000000000000000000000000000000000000000000000000000000000000", + "-3104015756527283602766646092015489002158505068342321/100000000000000000000000000000000000000000000000000000000000000000000000000000000" + ] + }, + "outer": { + "BIT_just_below_effective_rejected": true, + "functional_count": 4, + "minimum_margin": "1/1000000000000000000", + "strict_count": 54 + }, + "raw_bracket": [ + "36448900679400754544078619670439/10000000000000000000000000000000000", + "911222516985018863601965491761/250000000000000000000000000000000" + ], + "tested": "364489006794007/100000000000000000", + "written_log_power": 2237 + }, + "physical_binding": { + "ambient": 145, + "complete_paid_position_digest": "f562c24ef3c0e657936f45baa50a921964282dbcbc1ed85ebae85422bc567ed1", + "fresh_helpers": 18683, + "idle_uses": 3392, + "lambda_uses": 11280, + "native_calls": 17, + "native_contact_boundaries": 13600, + "native_public": 1499, + "nonzero_boundary_translations": 13600, + "paid": { + "1": 68367, + "16": 416, + "2": 14501, + "24": 416, + "3": 14093, + "32": 416, + "4": 3825, + "40": 416, + "48": 416, + "5": 5848, + "56": 416, + "6": 238, + "64": 208, + "7": 170, + "8": 741, + "9": 32 + }, + "paid_positions": 110519, + "phase_record_digest": "586ab7499fb677afdd83c397ea0b6d3b25f73ea6cdfa1ec95dd68adccff935ad", + "productive_fields": 22427, + "query_uses": 384, + "rank_surplus": 1424, + "reserved_native_banks": 1071, + "reserved_serial_query_lambda_bank": 1, + "targets": { + "1": 289, + "137": 208, + "17": 416, + "2": 357, + "25": 416, + "3": 799, + "33": 416, + "4": 3791, + "41": 416, + "49": 416, + "5": 1343, + "57": 416, + "6": 731, + "65": 416, + "7": 323, + "73": 208, + "8": 578, + "9": 10888 + } + }, + "scope": "Conditional component application to the exact 8+9 source with the selected completed BIT predecessor and inherited five assumptions. Checks every normalized endpoint, every paid/helper nested chart map up to exact signed Pauli and absolute phase, caller occurrence/phase, precision, finite scalar and route bounds, and numeric gates. Does not run a compiled Turing machine, select an upstream frontier, or claim human/formal review.", + "source_unit_ordinary": { + "all_caller_scalar_surcharge": 2248928, + "caller_items": { + "A": { + "envelope": 102076416, + "field_boundary": 89856, + "fused_routes": 0, + "idle_routes": 170112000, + "output_routes": 213120000, + "query_routes": 1152000, + "thin": 6144 + }, + "B": { + "envelope": 35730432, + "field_boundary": 7488, + "fused_routes": 1168000, + "idle_routes": 18016000, + "output_routes": 17760000, + "query_routes": 0, + "thin": 0 + } + }, + "caller_total": 559238336, + "charged_caller_odd_conversions": 479232, + "conservative_total": 782129100, + "init_clear_allowance": 264, + "lambda_paid_rank1_would_reduce_S_by": 11280, + "lambda_second_charge": 11280000, + "margin_to_billion": 217870900, + "odd_divisions": { + "ADD": 5829, + "SCALE": 71 + }, + "per_input_conversion": 2650232, + "raw_upper": 765470708, + "route_items": { + "first_main_adapter": 416, + "first_main_boundary": 208, + "helper_boundary": 2198, + "moves": 6279, + "owned_lifetime": 264, + "second_main_adapter": 384, + "second_main_boundary": 192 + }, + "routing": 9941000, + "scalar_upper": 2190316 + }, + "status": "PASS_8X9_EXACT_COMPONENT_APPLICATION_CHECKS" + }, + "ODD-ADMISSION-PARTIAL.json": { + "caller_sha256": "255d89f38cd45e38e5770f559bc43dc217e989032359768cdc7e8cdfd64b47bc", + "compiler_outer": { + "BIT_margin": "12179993205993/100000000000000000", + "BIT_pin": "376669/100000000", + "H": "16510400000000000000000", + "alpha": [ + 1.0, + 1.0 + ], + "claim": "182244503397/50000000000000", + "compiler_gap": "1/100000000000000000", + "delta": [ + 0.9066684778947387, + 0.9066684778947387 + ], + "derivative_upper": -381691.382745105, + "gamma": [ + 0.9407507620286742, + 0.9407507620286742 + ], + "input_lift": { + "derivative_upper_on_required_interval": "-2299831290525933154178526076272396899996972093654613095735772838275432653960006518819/2500000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "interval_kappa_cap": "376669/100000000", + "margins": { + "182244503397/50000000000000": [ + "12435616268822964624108204151994732023643370358542418433979015630224454754777/10000000000000000000000000000000000000000000000000000000000000000000000000000000", + "124356162688229646241082041519947320236433703585424184339790156302244547549693/100000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "364489006794007/100000000000000000": [ + "31089040672057983150912632412500092401132902361597748561959244574623506755013/25000000000000000000000000000000000000000000000000000000000000000000000000000000", + "31089040672057983150912632412500092401132902361597748561959244574623506755499/25000000000000000000000000000000000000000000000000000000000000000000000000000000" + ] + }, + "source_BIT_wide_crude_bound_would_be": "-2299831290525933154178526076272396899996972093654613095735772838275432653960006518819/2500000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + "minimum_log_power": 2236, + "moment_margin_float": { + "364489006794007/100000000000000000": [ + 2.1150234102748054e-12, + 2.1150234102748054e-12 + ], + "36448900679400754544078619670439/10000000000000000000000000000000000": [ + 7.73624976984083e-30, + 7.73624976984083e-30 + ], + "911222516985018863601965491761/250000000000000000000000000000000": [ + -3.104015756527284e-29, + -3.104015756527284e-29 + ] + }, + "moment_margins": { + "364489006794007/100000000000000000": [ + "211502341027480531553379384024870327589034622358366451274129769433559/100000000000000000000000000000000000000000000000000000000000000000000000000000000", + "211502341027480531553379384024870327589034622358366451274129808297531/100000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "36448900679400754544078619670439/10000000000000000000000000000000000": [ + "773624976984082980223062771948247773718705008389919/100000000000000000000000000000000000000000000000000000000000000000000000000000000", + "773624976984082980223062771948247773718705047289897/100000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "911222516985018863601965491761/250000000000000000000000000000000": [ + "-3104015756527283602766646092015489002158505106995697/100000000000000000000000000000000000000000000000000000000000000000000000000000000", + "-3104015756527283602766646092015489002158505068342321/100000000000000000000000000000000000000000000000000000000000000000000000000000000" + ] + }, + "outer": { + "BIT_just_below_effective_rejected": true, + "functional_count": 4, + "minimum_margin": "1/1000000000000000000", + "strict_count": 54 + }, + "raw_bracket": [ + "36448900679400754544078619670439/10000000000000000000000000000000000", + "911222516985018863601965491761/250000000000000000000000000000000" + ], + "tested": "364489006794007/100000000000000000", + "written_log_power": 2237 + }, + "crossing_probe_rejected": true, + "finite_rank9_fields": [ + { + "child_rank": 9, + "denominator": 512, + "exponent": 1, + "mutated_entries": { + "missing global phase": 8, + "missing multiplicity": 0 + }, + "spectators": 136, + "stage": 8, + "swaps": [ + [ + 1, + 65 + ], + [ + 2, + 66 + ], + [ + 3, + 67 + ], + [ + 4, + 68 + ], + [ + 5, + 69 + ], + [ + 6, + 70 + ], + [ + 7, + 71 + ], + [ + 8, + 72 + ] + ], + "tested_entries": 262144, + "width": 1 + }, + { + "child_rank": 9, + "denominator": 262144, + "exponent": 2, + "mutated_entries": { + "missing global phase": 8, + "missing multiplicity": 8 + }, + "spectators": 272, + "stage": 8, + "swaps": [ + [ + 1, + 65 + ], + [ + 2, + 66 + ], + [ + 3, + 67 + ], + [ + 4, + 68 + ], + [ + 5, + 69 + ], + [ + 6, + 70 + ], + [ + 7, + 71 + ], + [ + 8, + 72 + ] + ], + "tested_entries": 1024, + "width": 2 + }, + { + "child_rank": 9, + "denominator": 134217728, + "exponent": 3, + "mutated_entries": { + "missing global phase": 8, + "missing multiplicity": 8 + }, + "spectators": 408, + "stage": 8, + "swaps": [ + [ + 1, + 65 + ], + [ + 2, + 66 + ], + [ + 3, + 67 + ], + [ + 4, + 68 + ], + [ + 5, + 69 + ], + [ + 6, + 70 + ], + [ + 7, + 71 + ], + [ + 8, + 72 + ] + ], + "tested_entries": 1024, + "width": 3 + }, + { + "child_rank": 9, + "denominator": 512, + "exponent": 1, + "mutated_entries": { + "missing global phase": 8, + "missing multiplicity": 0 + }, + "spectators": 136, + "stage": 9, + "swaps": [ + [ + 1, + 73 + ], + [ + 2, + 74 + ], + [ + 3, + 75 + ], + [ + 4, + 76 + ], + [ + 5, + 77 + ], + [ + 6, + 78 + ], + [ + 7, + 79 + ], + [ + 8, + 80 + ] + ], + "tested_entries": 262144, + "width": 1 + }, + { + "child_rank": 9, + "denominator": 262144, + "exponent": 2, + "mutated_entries": { + "missing global phase": 8, + "missing multiplicity": 8 + }, + "spectators": 272, + "stage": 9, + "swaps": [ + [ + 1, + 73 + ], + [ + 2, + 74 + ], + [ + 3, + 75 + ], + [ + 4, + 76 + ], + [ + 5, + 77 + ], + [ + 6, + 78 + ], + [ + 7, + 79 + ], + [ + 8, + 80 + ] + ], + "tested_entries": 1024, + "width": 2 + }, + { + "child_rank": 9, + "denominator": 134217728, + "exponent": 3, + "mutated_entries": { + "missing global phase": 8, + "missing multiplicity": 8 + }, + "spectators": 408, + "stage": 9, + "swaps": [ + [ + 1, + 73 + ], + [ + 2, + 74 + ], + [ + 3, + 75 + ], + [ + 4, + 76 + ], + [ + 5, + 77 + ], + [ + 6, + 78 + ], + [ + 7, + 79 + ], + [ + 8, + 80 + ] + ], + "tested_entries": 1024, + "width": 3 + } + ], + "invoice": { + "P": { + "1": 68367, + "16": 416, + "2": 14501, + "24": 416, + "3": 14093, + "32": 416, + "4": 3825, + "40": 416, + "48": 416, + "5": 5848, + "56": 416, + "6": 238, + "64": 208, + "7": 170, + "8": 741, + "9": 32 + }, + "S": 1424, + "T": { + "1": 289, + "137": 208, + "17": 416, + "2": 357, + "25": 416, + "3": 799, + "33": 416, + "4": 3791, + "41": 416, + "49": 416, + "5": 1343, + "57": 416, + "6": 731, + "65": 416, + "7": 323, + "73": 208, + "8": 578, + "9": 10888 + }, + "empty_root_credits": 0, + "no_E_credit_crossing": "0.0036448900679400754544078619670439199509193901914957386128030283655", + "raw_crossing": "0.0036448900679400754544078619670439199509193901914957386128030283655" + }, + "native_sha256": "9eff91418d838f1ffa20fe5c5975dc2c43a79b32d501fcbe30b90c50a7b11ce3", + "ordinary": { + "all_caller_scalar_surcharge": 2248928, + "caller_items": { + "A": { + "envelope": 102076416, + "field_boundary": 89856, + "fused_routes": 0, + "idle_routes": 170112000, + "output_routes": 213120000, + "query_routes": 1152000, + "thin": 6144 + }, + "B": { + "envelope": 35730432, + "field_boundary": 7488, + "fused_routes": 1168000, + "idle_routes": 18016000, + "output_routes": 17760000, + "query_routes": 0, + "thin": 0 + } + }, + "caller_total": 559238336, + "charged_caller_odd_conversions": 479232, + "conservative_total": 782129100, + "init_clear_allowance": 264, + "lambda_paid_rank1_would_reduce_S_by": 11280, + "lambda_second_charge": 11280000, + "margin_to_billion": 217870900, + "odd_divisions": { + "ADD": 5829, + "SCALE": 71 + }, + "per_input_conversion": 2650232, + "raw_upper": 765470708, + "route_items": { + "first_main_adapter": 416, + "first_main_boundary": 208, + "helper_boundary": 2198, + "moves": 6279, + "owned_lifetime": 264, + "second_main_adapter": 384, + "second_main_boundary": 192 + }, + "routing": 9941000, + "scalar_upper": 2190316 + }, + "scope": "Fresh exact current native arbitrary-input adjoint; fresh exact signed caller and invoice, ordinary source-unit upper bill, inherited numerical compiler and outer inequalities, and signed rank9 child finite field routes. Fresh integrated physical native/caller and changed-word precision/occurrence application remain separate." + }, + "ODD-CALLER-EXACT-GRID.json": { + "caller_odd_scale": "675", + "caller_odd_scale_bits": 10, + "caller_sha256": "255d89f38cd45e38e5770f559bc43dc217e989032359768cdc7e8cdfd64b47bc", + "grid_exponents": [ + 381, + 3, + 2 + ], + "peak_terms": 3752, + "preproduct_exact_divisions": 176874, + "prime_order": [ + 2, + 3, + 5 + ], + "safe_valuation_bound": [ + 381, + 69, + 62 + ], + "scope": "Independent integer Laurent caller endpoint and pre-product divisibility. Valuation bound propagates complete field operators whose Gaussian coefficients have only power-of-two denominators, so odd factors are sourced only from the charged scalar operations. Fixed conversion and storage bounds still needed." + }, + "ODD-FIXED-TAPE-COUNTS.json": { + "H": 16510400000000000000000, + "Kstar_bits": 14093, + "actual_ambient": 145, + "caller_odd_scale": 675, + "caller_sha256": "255d89f38cd45e38e5770f559bc43dc217e989032359768cdc7e8cdfd64b47bc", + "common_grid": { + "fractional": "p+D", + "signed_width": "p+h+2D+3", + "temp_padding": 26 + }, + "compiler_ambient_cap": 153, + "context_bound_bits": 14104, + "context_c": 2430, + "elementary_records_per_map_upper": 85264, + "elementary_records_upper": 25471767360, + "log_power": 2237, + "max_scalar_numerator_bits": 24, + "monomial_map_slots": 298740, + "native_invocations": 17, + "native_sha256": "9eff91418d838f1ffa20fe5c5975dc2c43a79b32d501fcbe30b90c50a7b11ce3", + "owned_banks_per_raw_occurrence": 1071, + "scalar_macro_inputs": { + "caller": 117856, + "conversions": 58454, + "native": 1191190 + }, + "scalar_services_upper": 43760000, + "scalar_steps_coefficient": 45885685760000, + "scope": "Exact finite-cost and common-format substitutions in the selected #7000 conditional application proof, using the conservative primitive movement and scalar constants there. The premise is the complete signed native/physical binding and retained compiler, BIT, stock, and outer contracts. This script counts the raw occurrence, not an enumerated top-level compiled multiplier.", + "tested_claim": "182244503397/50000000000000" + }, + "ODD-PHYSICAL-BINDING.json": { + "aliased_main_rejected": true, + "caller_sha256": "255d89f38cd45e38e5770f559bc43dc217e989032359768cdc7e8cdfd64b47bc", + "native_sha256": "9eff91418d838f1ffa20fe5c5975dc2c43a79b32d501fcbe30b90c50a7b11ce3", + "occurrence_and_geometry": { + "ambient": 145, + "complete_paid_position_digest": "f562c24ef3c0e657936f45baa50a921964282dbcbc1ed85ebae85422bc567ed1", + "fresh_helpers": 18683, + "idle_uses": 3392, + "lambda_uses": 11280, + "native_calls": 17, + "native_contact_boundaries": 13600, + "native_public": 1499, + "nonzero_boundary_translations": 13600, + "paid": { + "1": 68367, + "16": 416, + "2": 14501, + "24": 416, + "3": 14093, + "32": 416, + "4": 3825, + "40": 416, + "48": 416, + "5": 5848, + "56": 416, + "6": 238, + "64": 208, + "7": 170, + "8": 741, + "9": 32 + }, + "paid_positions": 110519, + "phase_record_digest": "586ab7499fb677afdd83c397ea0b6d3b25f73ea6cdfa1ec95dd68adccff935ad", + "productive_fields": 22427, + "query_uses": 384, + "rank_surplus": 1424, + "reserved_native_banks": 1071, + "reserved_serial_query_lambda_bank": 1, + "targets": { + "1": 289, + "137": 208, + "17": 416, + "2": 357, + "25": 416, + "3": 799, + "33": 416, + "4": 3791, + "41": 416, + "49": 416, + "5": 1343, + "57": 416, + "6": 731, + "65": 416, + "7": 323, + "73": 208, + "8": 578, + "9": 10888 + } + }, + "patched_application_sha256": "733b31b1cee4567b466fdf834a34460b530f1f87ca6dca9270c0fabb2cf89849", + "scope": "Current caller port and ownership substitution, full phase-polynomial native contact identities on disjoint stage axes, whole signed idle/output geometry, and ordered paid positions. Retains the standard nested chart and local operator premises and requires separate full native replay and complete fixed-tape tariff application.", + "source_reviewer_sha256": "d98987db98553dc55bfc80e3ca47abfcd51c57af6f8cda61101391d8eae94184" + }, + "ODD-PRECISION.json": { + "caller_grid": { + "caller_odd_scale": "675", + "caller_odd_scale_bits": 10, + "caller_sha256": "255d89f38cd45e38e5770f559bc43dc217e989032359768cdc7e8cdfd64b47bc", + "grid_exponents": [ + 381, + 3, + 2 + ], + "peak_terms": 3752, + "preproduct_exact_divisions": 176874, + "prime_order": [ + 2, + 3, + 5 + ], + "safe_valuation_bound": [ + 381, + 69, + 62 + ], + "scope": "Independent integer Laurent caller endpoint and pre-product divisibility. Valuation bound propagates complete field operators whose Gaussian coefficients have only power-of-two denominators, so odd factors are sourced only from the charged scalar operations. Fixed conversion and storage bounds still needed." + }, + "caller_sha256": "255d89f38cd45e38e5770f559bc43dc217e989032359768cdc7e8cdfd64b47bc", + "context_c": 2430, + "context_height": 406, + "context_mass_bits": 1215, + "native_grid": { + "coefficient_visits": 16445348, + "dyadic_height": 25, + "mass_witness": [ + 66145, + "stored add" + ], + "maximum_scaled_mass": "841374570120675/8192", + "numerator_bits": 24, + "odd_scale_lcm": 1125 + }, + "native_sha256": "9eff91418d838f1ffa20fe5c5975dc2c43a79b32d501fcbe30b90c50a7b11ce3", + "precision_program_sha256": "ce92f880fa0628caadfea4e14140ad4f617a82f13ae452fe7b8cd8e7a00ffd78", + "rounded_caller": { + "bounds": { + "E_joint_entrance": { + "exact": "3698438700488346562040013259694346617276899010780958570896247841998410543952845718405399644725727547850031077289428751190142095725329631299078835662282648820955677952400390221055254876259133646109032215543464282810791436554335493309483059934863526258758473057114627247663197031967632688279411793657724951672054526204278013917041108799506354516222839195219110526644345688152721349310078745278165209175303889670639871906387750453394182745449/621565922642917122701475579763837894656000000000000000000000000000000000000000000000", + "strict_power_of_two": 1179, + "witness": { + "cut": 4691, + "event": 4691, + "factor": "1", + "kind": "stored", + "register": 36 + } + }, + "Gamma_context": { + "exact": "95447834498064093977737612322824240860989785478457360939465616050207668401318696429374977499654675832619420189662071162238213252926528019212202119948273559620833568903976256447063993069483371253646038779934250562521737509241245604006816339083315916440441340371511437198043447875773697313054280541087366528176065281903824560726454243830482481398816516247979371536730979517503204509049338241842295670801401782033813662295564612880551752527779/466174441982187842026106684822878420992000000000000000000000000000000000000000000000", + "strict_power_of_two": 1184, + "witness": { + "cut": 4783, + "factor": "1", + "kind": "public-return", + "register": 37 + } + }, + "M_caller": { + "exact": "321214676655933560129782836030951119958622429471431692811117505066079252658303325303661828534046786576018850667853596288128047313819788006911616028348392581085050721023636971054851673799947587501432346122953175312809813833001587100311020687804583808767060460431114911369649528995555025426696059541/456139469146728515625000000", + "strict_power_of_two": 897, + "witness": { + "cut": 4751, + "event": 4750, + "factor": "1", + "kind": "stored", + "register": 37 + } + }, + "M_context": { + "exact": "327111736213353305790991091824348467854708091542498514544864499380347538764149951207806586803328343722622028458252856338974714017710745131664240849335386155294919376186366908519280366477832364454061654742515102357862733358286618892685278348518498630998166743815885045516870288507481034139825665242058716892571547731071918126148364289902790435685318383779081796746597020584004569680769807459720842641555764310577929855342933981306629425946370943/1841676807830865548745112828929890058240000000000000000000000000000000000000000000000", + "strict_power_of_two": 1194, + "witness": { + "cut": 4692, + "event": 4691, + "factor": "1", + "kind": "stored", + "register": null + } + }, + "M_joint_entrance": { + "exact": "12446513821466013746992171114880354528234540647439407368041740746722705684890095694539586093101687855496797040728247169012299728404791642365323413178973703529222728715961384485250463009966565309368602073434714550373752128374887698957802006867751735225949803848812917591840288770078529478244705471/608185958862304687500000000", + "strict_power_of_two": 892, + "witness": { + "cut": 4691, + "event": 4691, + "factor": "1", + "kind": "stored", + "register": 36 + } + }, + "Sigma_caller": { + "exact": "95447834498064093977737612322824240860989785478457360939465616050207668401318696429374977499654675832619420189662071162238213252926528019212202119948273559620833568903976256447063993069483371253646038779934250562521737509241245604006816339083315916440441340371511437198043447875773697313054280541087366528176065281903824560726454243830482481398816516247979371536730979517503204509049338241842295670801401782033813662295564612880551752527779/466174441982187842026106684822878420992000000000000000000000000000000000000000000000", + "strict_power_of_two": 1184, + "witness": { + "cut": 4753, + "event": 4752, + "factor": "1", + "kind": "stored", + "register": 37 + } + }, + "Sigma_context": { + "exact": "97200125428608128489216070525154109508426116851325939285166229979576527601965279780108941017029567412524930841655033462200595331602346042170156280563751372476355153428928041901330308853897527069649172077561612201280886795792050483903130003242812199393567682674388749350080279922803877708906264073587180499798876419824043178765084616132016246018732612635186671137342317350328077348428527157289666609535211460036799834610051652352756119191538243717843171259307129217712969198197798027813358984110291089666596780034994353102138829797819414278054468301136396234517195236214520059991140917417/1882193312076485335946784195032073491952987754324492345686684017015875908403200000000000000000000000000000000000000000000000000000000000000000", + "strict_power_of_two": 1481, + "witness": { + "cut": 4692, + "event": 4691, + "factor": "1", + "kind": "stored", + "register": null + } + } + }, + "fresh_arbitrary_helpers": 18683, + "helper_allocation_premise": "distinct (stage, helper) public inputs as in frozen caller proof", + "independent_adjoint": { + "E_joint_entrance": { + "entrance_mass": "12446513821466013746992171114880354528234540647439407368041740746722705684890095694539586093101687855496797040728247169012299728404791642365323413178973703529222728715961384485250463009966565309368602073434714550373752128374887698957802006867751735225949803848812917591840288770078529478244705471/608185958862304687500000000", + "joint_coefficient": "144218124282401204617230263054514744346632405857442589144991781917530152132889870002846209306787762894150543865356389849084238452276894627352790762454037345126994351979907477144401257368423063007427271766117739822282248246858569624239109891511459830034432108241771054783468611278140179030295737/14596463012695312500000000000", + "primitive_coefficient": "1237373204913668966810008103424843603237049842106979534739539344726881600855129275554334885562896567825503574055929527662143657491595081161117482238618339640110136792453314323518006796600687371906278112102741547626404362403105174332310591538741639237757093806525664195341657589882317257470101709011/175157556152343750000000000000", + "residual_mass": "3698438700488346562040013259694346617276899010780958570896247841998410543952845718405399644725727547850031077289428751190142095725329631299078835662282648820955677952400390221055254876259133646109032215543464282810791436554335493309483059934863526258758473057114627247663197031967632688279411793657724951672054526204278013917041108799506354516222839195219110526644345688152721349310078745278165209175303889670639871906387750453394182745449/621565922642917122701475579763837894656000000000000000000000000000000000000000000000" + }, + "Gamma_context": { + "entrance_mass": "321214676655933560129782836030951119958622429471431692811117505066079252658303325303661828534046786576018850667853596288128047313819788006911616028348392581085050721023636971054851673799947587501432346122953175312809813833001587100311020687804583808767060460431114911369649528995555025426696059541/456139469146728515625000000", + "joint_coefficient": "3721923971948022264020008386608472289590988528157114268392412469599050143495508978788641788787976594161440706214373829555996384554677122174093932095769106055424540710380314024651007332164525664382203471694821380954416641216321248248752759218861172626274920078125266851782731337714997593665899027/10947347259521484375000000000", + "primitive_coefficient": "31933635363307317503891208167952125518099265598871297188945655447689887409437080424471754322893069036961252717295444311531802702290424391181977246033332095685934810861449534911850277930109610390733877602745069385156892357266512877411313922547610591253415658016844390796379192959369382262182067424881/131368167114257812500000000000", + "residual_mass": "95447834498064093977737612322824240860989785478457360939465616050207668401318696429374977499654675832619420189662071162238213252926528019212202119948273559620833568903976256447063993069483371253646038779934250562521737509241245604006816339083315916440441340371511437198043447875773697313054280541087366528176065281903824560726454243830482481398816516247979371536730979517503204509049338241842295670801401782033813662295564612880551752527779/466174441982187842026106684822878420992000000000000000000000000000000000000000000000" + }, + "M_caller": { + "entrance_mass": "321214676655933560129782836030951119958622429471431692811117505066079252658303325303661828534046786576018850667853596288128047313819788006911616028348392581085050721023636971054851673799947587501432346122953175312809813833001587100311020687804583808767060460431114911369649528995555025426696059541/456139469146728515625000000", + "joint_coefficient": "3721923971948022264020008386608472289590988528157114268392412469599050143495508978788641788787976594161440706214373829555996384554677122174093932095769106055424540710380314024651007332164525664382203471694821380954416641216321248248752759218861172626274920078125266851782731337714997593665899027/10947347259521484375000000000", + "primitive_coefficient": "31933635363307317503891208167952125518099265598871297188945655447689887409437080424471754322893069036961252717295444311531802702290424391181977246033332095685934810861449534911850277930109610390733877602745069385156892357266512877411313922547610591253415658016844390796247824792255124449682067424881/131368167114257812500000000000", + "residual_mass": "95447834498064093977737612322824240860989785478457360939465616050207668401318696429374977499654675832619420189662071162238213252926528019212202119948273559620833568903976256447063993069483371253646038779934250562521737509241245604006816339083315916440441340371511437198043447875773697313054280541087366528176065281903824560726454243830482481398816516247978905362288997329661178402364515363421303670801401782033813662295564612880551752527779/466174441982187842026106684822878420992000000000000000000000000000000000000000000000" + }, + "M_joint_entrance": { + "entrance_mass": "12446513821466013746992171114880354528234540647439407368041740746722705684890095694539586093101687855496797040728247169012299728404791642365323413178973703529222728715961384485250463009966565309368602073434714550373752128374887698957802006867751735225949803848812917591840288770078529478244705471/608185958862304687500000000", + "joint_coefficient": "144218124282401204617230263054514744346632405857442589144991781917530152132889870002846209306787762894150543865356389849084238452276894627352790762454037345126994351979907477144401257368423063007427271766117739822282248246858569624239109891511459830034432108241771054783468611278140179030295737/14596463012695312500000000000", + "primitive_coefficient": "1237373204913668966810008103424843603237049842106979534739539344726881600855129275554334885562896567825503574055929527662143657491595081161117482238618339640110136792453314323518006796600687371906278112102741547626404362403105174332310591538741639237757093806525664195341657589882317257470101709011/175157556152343750000000000000", + "residual_mass": "3698438700488346562040013259694346617276899010780958570896247841998410543952845718405399644725727547850031077289428751190142095725329631299078835662282648820955677952400390221055254876259133646109032215543464282810791436554335493309483059934863526258758473057114627247663197031967632688279411793657724951672054526204278013917041108799506354516222839195219110526644345688152721349310078745278165209175303889670639871906387750453394182745449/621565922642917122701475579763837894656000000000000000000000000000000000000000000000" + }, + "Sigma_caller": { + "entrance_mass": "321214676655933560129782836030951119958622429471431692811117505066079252658303325303661828534046786576018850667853596288128047313819788006911616028348392581085050721023636971054851673799947587501432346122953175312809813833001587100311020687804583808767060460431114911369649528995555025426696059541/456139469146728515625000000", + "joint_coefficient": "3721923971948022264020008386608472289590988528157114268392412469599050143495508978788641788787976594161440706214373829555996384554677122174093932095769106055424540710380314024651007332164525664382203471694821380954416641216321248248752759218861172626274920078125266851782731337714997593665899027/10947347259521484375000000000", + "primitive_coefficient": "31933635363307317503891208167952125518099265598871297188945655447689887409437080424471754322893069036961252717295444311531802702290424391181977246033332095685934810861449534911850277930109610390733877602745069385156892357266512877411313922547610591253415658016844390796379192959369382262182067424881/131368167114257812500000000000", + "residual_mass": "95447834498064093977737612322824240860989785478457360939465616050207668401318696429374977499654675832619420189662071162238213252926528019212202119948273559620833568903976256447063993069483371253646038779934250562521737509241245604006816339083315916440441340371511437198043447875773697313054280541087366528176065281903824560726454243830482481398816516247979371536730979517503204509049338241842295670801401782033813662295564612880551752527779/466174441982187842026106684822878420992000000000000000000000000000000000000000000000" + } + }, + "joint_entries": [ + { + "entrance_defect": "1435/4", + "entrance_mass": "2067/2", + "event": 43, + "stage": 1 + }, + { + "entrance_defect": "43991195055799274123411242921324271734478455985890198352160063172610749059649698547529231750013035691116050646090343510746895632484908840899233488027039/13307288940955860965151791568755097600000000000000000000", + "entrance_mass": "56849465528/5", + "event": 137, + "stage": 2 + }, + { + "entrance_defect": "66839871164980025891562407739654598808732884408115621525672134771122867273784736682440264802344057181363365557479678295660998822886293864382938888018202725413690399/1277499738331762652654571990600489369600000000000000000000", + "entrance_mass": "899756300051784928313/5", + "event": 268, + "stage": 3 + }, + { + "entrance_defect": "62254959917069896363208216864987682119550378620799358416991837549724853757364506294619230252744604068296561789025711563978900365745210260641569153351016186124262729588048607/1277499738331762652654571990600489369600000000000000000000", + "entrance_mass": "2514111326902273689027625979152/15", + "event": 432, + "stage": 4 + }, + { + "entrance_defect": "12717282397132733798393428787991042792090654564660720512466624063727256891568118724887223325609262097806872554498360458524761922878644474215813598782298518175908996284135644485840118297/1277499738331762652654571990600489369600000000000000000000", + "entrance_mass": "513576167499541081817002847690160861158177/15", + "event": 633, + "stage": 5 + }, + { + "entrance_defect": "1217679593022116207546798210509341018107956170805439203146320903582405629342831584971649991934747195551432048220505207354942555451241246562794205971480277017338935671718591575078851944120477226373/19162496074976439789818579859007340544000000000000000000000", + "entrance_mass": "49174910102467876864090432969907258581035345395534834/225", + "event": 867, + "stage": 6 + }, + { + "entrance_defect": "129871744818989406529136440635320053468594962372247188734851546603640722173330037286540003337339006135733031631529724863171261371030324854618435464569131918500814943028189111054364714934029599793598578157323/2129166230552937754424286651000815616000000000000000000000", + "entrance_mass": "47202796791779792903787260464709452698419616298153732189406926691/225", + "event": 1138, + "stage": 7 + }, + { + "entrance_defect": "37813377877403518679603587364443864192869730544824933592938983450113445181333793973311575547782383550855324302983105699755916196331551485204733270065381214330215929074986595427757936618733450720913522003488563216694609577117/2395312009372054973727322482375917568000000000000000000000000", + "entrance_mass": "1527059719525243651854937925515623170877847518562264265010551055991429949116792541/28125", + "event": 1423, + "stage": 8 + }, + { + "entrance_defect": "13485111100785005818854756620792265912792044032380491916410990711278752085520894076096194182218145474914871229377058423816209967454842768761272432055034086749310362249239022183799859089040688426046153163094839262417451340701653087987475285752765277099662282008373062970678961836829617573496155772575300592701038458942604991457306957047577275549855577024784657/2762515211746298323117669243394835087360000000000000000000000000000000000000000000", + "entrance_mass": "45382020709918266925583064268574418985484021788023395083741971786893952543604385214817042722264713249357732585113211736557042182118473445437784492974844696068231496289005681248244219743195326431922663592509646282903/2703048706054687500000000", + "event": 3058, + "stage": 9 + }, + { + "entrance_defect": "5127732227387110678967027168422380165679923489786173400936436526331584549760674845909743846963200900082293320528327348675592186404519106863134721753032955606579090875501665747290688111825582567305719726516449877276397266785447407727551835704300498140438006106341009644723036232335871040970870983576100037024676195704808736239600045128505300003389191880568335999249679289803/69062880293657458077941731084870877184000000000000000000000000000000000000000000000", + "entrance_mass": "17256576412236653193246225901973714737195067836439327666112948810725372605325768521068989782195051084826433423902219365061463548934152577319772447024097669813834215493691840531234110147024064996639957180865886380686899413865699437/67576217651367187500000000", + "event": 3377, + "stage": 10 + }, + { + "entrance_defect": "2446368255677193791537585526745456909387262363063406782498159597508854770748821831604995647428658315859752679609122120658484852867890901034407915663364399289773956622195440328032414352595847281093297090679259382124637259040947438564034593319172314012794984639781615038992215013461769508751154050633844870368423250908674143726469817469914530366652932470484822738648026770805995036730857/2302096009788581935931391036162362572800000000000000000000000000000000000000000000", + "entrance_mass": "8232867642949280967953864719378369729636081542640965177026582834276172086852779069019078166383458700724373015543641299678854718814560615654710102550769670203427726502361438450768012893674227975469242856299447027845030556012745339827937032703/2252540588378906250000000", + "event": 3674, + "stage": 11 + }, + { + "entrance_defect": "30742073962484744766258245709440053785098846127465153132082220387400660976118286537491285825438064395478013500046150157253538525114662141068463918276720746502952033492552522059762840347383273419151092006122402449922502385316395083759894998070422941912287971564062875788575885089522789600133731982224301283464731216037762934014517356690548872043927892007423598423276522879511493488517270465014036489/310782961321458561350737789881918947328000000000000000000000000000000000000000000000", + "entrance_mass": "103457615351059805192637231353494210876529187337645013912367786609511281374638184501291799844537790265462481580051228205479278831706979374022592427678836083146990308179368316797029946556942233864286312243671687806427572314354434738422294564686254956597631/304092979431152343750000000", + "event": 3934, + "stage": 12 + }, + { + "entrance_defect": "2024960850820717113647511115349387054612389423918231520164467685608025516907980454086975110649055579362369362133378615585609588865077067528014675123515253984311296867587679221527384472231594314514953968681581378564368546042590212960917657833817546402926344928041324835535492579780231932477057528212203067674304958720572336155237253117014016517351855286308122365804803660928731156852447449938381445886967241/77695740330364640337684447470479736832000000000000000000000000000000000000000000000", + "entrance_mass": "6814687293408352348961376609223100753789665399854180217091951198766673494955017243489117504312576625705862588971333049204842152193259763726092611947454717867967563820647006231530855513792517852570389360287582421241328472893443552787136426885585158158296407747039/76023244857788085937500000", + "event": 4149, + "stage": 13 + }, + { + "entrance_defect": "81325613924632265972116031833515725734855056582845884709615502923472832168001762885789094897101393212435713558809993527758903597942084333030120682747662319238260618295425402334822414156545534955855646140803647735067564723779148239789429732493011560461173178376803275812392378467368386496781289728344483788639943005510241666662165577816968510679560803319250777341971187940556742415989285372516451660198685056367703729/621565922642917122701475579763837894656000000000000000000000000000000000000000000000", + "entrance_mass": "273688564209132230699064882255651065961520374651451250325109091529813162250488973700796593555467744131430272845604649750549608356985710665121874068107850799585492748533787927289567936649257940207702597871193107311090132538524151482351564937285621850171994049078063458209591/608185958862304687500000000", + "event": 4337, + "stage": 14 + }, + { + "entrance_defect": "1554308434532708246513761244702860402843720433931527900427142455484989429748607772865318899608021612457077805111457279277381044621687051325316805018370486198518344869367080458503369255017490416584791967002729290065877869212686128354966137537811032281077526621976312546497580810881264716289333634746074634578648311139860229751437017745038260695629368270596536839355214583222335763415885401308955338157387180314158326053089659/310782961321458561350737789881918947328000000000000000000000000000000000000000000000", + "entrance_mass": "5230780602279043381317572379439763694807653157987526423412516241866438709931406455512285461654380762978554988724296151241130161368896505647624919395909388513302452136334767445346454946237326490486725295589968816639097338790755366202380875008783642473174121062695038054202858248061/304092979431152343750000000", + "event": 4485, + "stage": 15 + }, + { + "entrance_defect": "1720604571973581728449057367510187268442851574154237958747013645017468056662434022154922140035404832726830435684001912925318257016166850004404265476480594359639867430640003041080331094187750685556438303713474195078858144384729727402873025339028856919093791963325204408018217206911405568383191718938509697713838850822433581599042152158101457333878525103131164334328694214459836595261531760705636792165400186404621791714358967065672697/621565922642917122701475579763837894656000000000000000000000000000000000000000000000", + "entrance_mass": "5790424100720951765768300756324298709533962301792798636386692749870979029496708556989270788662796627612885676197810930990877069943243536093513215980405080279750566239442965631097385199413957318608000177913047677092759213914423460784984181631621622445055356552059259436283593839861423838063/608185958862304687500000000", + "event": 4606, + "stage": 16 + }, + { + "entrance_defect": "3698438700488346562040013259694346617276899010780958570896247841998410543952845718405399644725727547850031077289428751190142095725329631299078835662282648820955677952400390221055254876259133646109032215543464282810791436554335493309483059934863526258758473057114627247663197031967632688279411793657724951672054526204278013917041108799506354516222839195219110526644345688152721349310078745278165209175303889670639871906387750453394182745449/621565922642917122701475579763837894656000000000000000000000000000000000000000000000", + "entrance_mass": "12446513821466013746992171114880354528234540647439407368041740746722705684890095694539586093101687855496797040728247169012299728404791642365323413178973703529222728715961384485250463009966565309368602073434714550373752128374887698957802006867751735225949803848812917591840288770078529478244705471/608185958862304687500000000", + "event": 4691, + "stage": 17 + } + ], + "physical_main_inputs": 3744, + "sites": { + "ADD": 4126, + "IDLE_ODD": 4, + "IDLE_ONE": 90, + "J": 17, + "LAMBDA": 178, + "QUERY": 4, + "SCALE": 312, + "SWAP": 52, + "noninteger_scalar": 1752 + } + }, + "rounded_native": { + "bounds": { + "Gamma": { + "exact": "25644756641309773204499715182067154753640655532996075189246670424342881345155813487719928577675093971877014167583684151460219920536239411929200177/42583324611058755088485733020016312320000000000000000000", + "strict_power_of_two": 299, + "witness": { + "cut": 76349, + "factor": "1", + "kind": "public-return", + "register": 1498 + } + }, + "M": { + "exact": "26281394204471659888223645870046127062271058529103906740924080498292768335410526105784514321102978706962592713956752093599490780744495562301020762433/3028147527897511472958985459201159987200000000000000000000", + "strict_power_of_two": 303, + "witness": { + "cut": 76349, + "factor": "1", + "kind": "stored", + "register": 1498 + } + }, + "Sigma": { + "exact": "25644756641309773204499715182067154753640655532996075189246670424342881345155813487719928577675093971877014167583684151460219920536239411929200177/42583324611058755088485733020016312320000000000000000000", + "strict_power_of_two": 299, + "witness": { + "cut": 76349, + "factor": "1", + "kind": "stored", + "register": 1498 + } + } + }, + "census": { + "denominator_bits": 20, + "events": 76349, + "lifetimes": 66, + "max_denominator": 655360, + "max_numerator": 14729531, + "numerator_bits": 24, + "opcodes": { + "ADD": 66213, + "CLEAR": 66, + "COPY": 1, + "INIT": 66, + "MOVE": 6279, + "SCALE": 3724 + }, + "owned_labels": 63, + "peak_owned": 48, + "public": 1499, + "scalars": { + "dyadic": 64038, + "integer": 39714, + "noninteger": 30224, + "odd": 5900 + } + }, + "independent_adjoint": { + "Gamma": { + "active_residual_sites": 26545, + "entrance_mass": "26281394204471659888223645870046127062271058529103906740924080498292768335410526105784514321102978706962592713956752093599490780744495562301020762433/3028147527897511472958985459201159987200000000000000000000", + "residual_mass": "25644756641309773204499715182067154753640655532996075189246670424342881345155813487719928577675093971877014167583684151460219920536239411929200177/42583324611058755088485733020016312320000000000000000000" + }, + "M": { + "active_residual_sites": 26545, + "entrance_mass": "26281394204471659888223645870046127062271058529103906740924080498292768335410526105784514321102978706962592713956752093599490780744495562301020762433/3028147527897511472958985459201159987200000000000000000000", + "residual_mass": "25644756641309773204499715182067154753640655532996075189246670424342881345155813487719928577675093971877014167583684151460219920536239411929200177/42583324611058755088485733020016312320000000000000000000" + }, + "Sigma": { + "active_residual_sites": 26545, + "entrance_mass": "26281394204471659888223645870046127062271058529103906740924080498292768335410526105784514321102978706962592713956752093599490780744495562301020762433/3028147527897511472958985459201159987200000000000000000000", + "residual_mass": "25644756641309773204499715182067154753640655532996075189246670424342881345155813487719928577675093971877014167583684151460219920536239411929200177/42583324611058755088485733020016312320000000000000000000" + } + } + }, + "scope": "Fixed integer Laurent grid with charged odd caller scale, and pinned attributed forward/adjoint all-fibre defect engine applied to the emitted 17-stage caller. Each LAMBDA, QUERY and signed/unsigned idle is one unitary with one child defect. The caller allocation assumes independent stage helpers. Full physical application remains separate." + }, + "ODD-TYPE-AB-REPLAY.json": { + "caller_sha256": "255d89f38cd45e38e5770f559bc43dc217e989032359768cdc7e8cdfd64b47bc", + "paid": { + "1": 68367, + "16": 416, + "2": 14501, + "24": 416, + "3": 14093, + "32": 416, + "4": 3825, + "40": 416, + "48": 416, + "5": 5848, + "56": 416, + "6": 238, + "64": 208, + "7": 170, + "8": 741, + "9": 32 + }, + "raw_bracket": [ + "36448900679400754544078619670439/10000000000000000000000000000000000", + "911222516985018863601965491761/250000000000000000000000000000000" + ], + "replay": { + "bad_outputs": [], + "caller_denominator_height_bound": 578, + "caller_mass_bound": "854474036861847560509026474008040300059938928517783661039773198072080884690114508581583887358835968277340425788985297793555303569703690223623950838857161290503004459697662544865276977234864184443860251086668962688762176068520364648820282528496698239206689277049335412289161443623602012468587331439851515703/168151253906250000000000000000000", + "caller_mass_ceiling_bits": 910, + "max_terms": 3752 + }, + "scope": "Exact emitted signed Laurent caller endpoint and recomputed native/caller paid and target profiles. Physical address bindings, independent branch-source composition, ordinary units, precision and outer gates are still required.", + "shape": [ + 8, + 9 + ], + "source_word_sha256": "9eff91418d838f1ffa20fe5c5975dc2c43a79b32d501fcbe30b90c50a7b11ce3", + "target": { + "1": 289, + "137": 208, + "17": 416, + "2": 357, + "25": 416, + "3": 799, + "33": 416, + "4": 3791, + "41": 416, + "49": 416, + "5": 1343, + "57": 416, + "6": 731, + "65": 416, + "7": 323, + "73": 208, + "8": 578, + "9": 10888 + } + } + }, + "claim": "182244503397/50000000000000", + "price": { + "after": { + "P": { + "1": 68367, + "16": 416, + "2": 14501, + "24": 416, + "3": 14093, + "32": 416, + "4": 3825, + "40": 416, + "48": 416, + "5": 5848, + "56": 416, + "6": 238, + "64": 208, + "7": 170, + "8": 741, + "9": 32 + }, + "S": 1424, + "T": { + "1": 289, + "137": 208, + "17": 416, + "2": 357, + "25": 416, + "3": 799, + "33": 416, + "4": 3791, + "41": 416, + "49": 416, + "5": 1343, + "57": 416, + "6": 731, + "65": 416, + "7": 323, + "73": 208, + "8": 578, + "9": 10888 + }, + "empty_root_credits": 0, + "no_E_credit_crossing": "0.0036448900679400754544078619670439199509193901914957386128030283655", + "raw_crossing": "0.0036448900679400754544078619670439199509193901914957386128030283655" + }, + "before": { + "P": { + "1": 68350, + "16": 416, + "2": 14501, + "24": 416, + "3": 14093, + "32": 416, + "4": 3825, + "40": 416, + "48": 416, + "5": 5848, + "56": 416, + "6": 238, + "64": 208, + "7": 170, + "8": 741, + "9": 32 + }, + "S": 1424, + "T": { + "1": 289, + "137": 208, + "17": 416, + "2": 357, + "25": 416, + "3": 799, + "33": 416, + "4": 3774, + "41": 416, + "49": 416, + "5": 1326, + "57": 416, + "6": 731, + "65": 416, + "7": 323, + "73": 208, + "8": 595, + "9": 10888 + }, + "empty_root_credits": 0, + "no_E_credit_crossing": "0.0036444078955399752291473031465479694211600421312227856343702575978", + "raw_crossing": "0.0036444078955399752291473031465479694211600421312227856343702575978" + }, + "gate": { + "BIT_margin": "12179993205993/100000000000000000", + "BIT_pin": "376669/100000000", + "H": "16510400000000000000000", + "alpha": [ + 1.0, + 1.0 + ], + "claim": "182244503397/50000000000000", + "compiler_gap": "1/100000000000000000", + "delta": [ + 0.9066684778947387, + 0.9066684778947387 + ], + "derivative_upper": -381691.382745105, + "gamma": [ + 0.9407507620286742, + 0.9407507620286742 + ], + "input_lift": { + "derivative_upper_on_required_interval": "-2299831290525933154178526076272396899996972093654613095735772838275432653960006518819/2500000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + "interval_kappa_cap": "376669/100000000", + "margins": { + "182244503397/50000000000000": [ + "12435616268822964624108204151994732023643370358542418433979015630224454754777/10000000000000000000000000000000000000000000000000000000000000000000000000000000", + "124356162688229646241082041519947320236433703585424184339790156302244547549693/100000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "364489006794007/100000000000000000": [ + "31089040672057983150912632412500092401132902361597748561959244574623506755013/25000000000000000000000000000000000000000000000000000000000000000000000000000000", + "31089040672057983150912632412500092401132902361597748561959244574623506755499/25000000000000000000000000000000000000000000000000000000000000000000000000000000" + ] + }, + "source_BIT_wide_crude_bound_would_be": "-2299831290525933154178526076272396899996972093654613095735772838275432653960006518819/2500000000000000000000000000000000000000000000000000000000000000000000000000000000000000" + }, + "minimum_log_power": 2236, + "moment_margin_float": { + "364489006794007/100000000000000000": [ + 2.1150234102748054e-12, + 2.1150234102748054e-12 + ], + "36448900679400754544078619670439/10000000000000000000000000000000000": [ + 7.73624976984083e-30, + 7.73624976984083e-30 + ], + "911222516985018863601965491761/250000000000000000000000000000000": [ + -3.104015756527284e-29, + -3.104015756527284e-29 + ] + }, + "moment_margins": { + "364489006794007/100000000000000000": [ + "211502341027480531553379384024870327589034622358366451274129769433559/100000000000000000000000000000000000000000000000000000000000000000000000000000000", + "211502341027480531553379384024870327589034622358366451274129808297531/100000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "36448900679400754544078619670439/10000000000000000000000000000000000": [ + "773624976984082980223062771948247773718705008389919/100000000000000000000000000000000000000000000000000000000000000000000000000000000", + "773624976984082980223062771948247773718705047289897/100000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "911222516985018863601965491761/250000000000000000000000000000000": [ + "-3104015756527283602766646092015489002158505106995697/100000000000000000000000000000000000000000000000000000000000000000000000000000000", + "-3104015756527283602766646092015489002158505068342321/100000000000000000000000000000000000000000000000000000000000000000000000000000000" + ] + }, + "outer": { + "BIT_just_below_effective_rejected": true, + "functional_count": 4, + "minimum_margin": "1/1000000000000000000", + "strict_count": 54 + }, + "raw_bracket": [ + "36448900679400754544078619670439/10000000000000000000000000000000000", + "911222516985018863601965491761/250000000000000000000000000000000" + ], + "tested": "364489006794007/100000000000000000", + "written_log_power": 2237 + }, + "native_baseline_rejects_new_claim": true, + "new_native": "9eff91418d838f1ffa20fe5c5975dc2c43a79b32d501fcbe30b90c50a7b11ce3", + "old_native": "b012295cfe44d204c2724fe544731ac17aa969e06e33043496ac7a1c91a912b3", + "price": { + "baseline_rejects_new_claim": true, + "candidate_margin_at_old_upper": [ + "2337116490365366956039289279110037307025889205276376707432293767001594532441593/12500000000000000000000000000000000000000000000000000000000000000000000000000000", + "18696931922922935648314314232880298456207113642211013659458350136012756293809623/100000000000000000000000000000000000000000000000000000000000000000000000000000000" + ], + "claim_decimal": "0.00364489006794", + "gain": "4.82172401E-7", + "gain_exact": "482172401/1000000000000000", + "independent_raw_bracket": [ + "0.00364489006794007545440786196704391", + "0.00364489006794007545440786196704392" + ], + "previous_claim": "3644407895539/1000000000000000", + "raw_bracket": [ + "0.0036448900679400754544078619670439", + "0.003644890067940075454407861967044" + ] + } + }, + "status": "PASS_FUNDED_EXIT_CONTINUATION" +} diff --git a/research/p104-serial-temporal-support-bound/source7165/inputs/peer/research/p104-rank8-exit-funded-split/WORD.json.gz b/research/p104-serial-temporal-support-bound/source7165/inputs/peer/research/p104-rank8-exit-funded-split/WORD.json.gz new file mode 100644 index 0000000000..84c893e83b Binary files /dev/null and b/research/p104-serial-temporal-support-bound/source7165/inputs/peer/research/p104-rank8-exit-funded-split/WORD.json.gz differ diff --git a/research/p104-serial-temporal-support-bound/verify.py b/research/p104-serial-temporal-support-bound/verify.py new file mode 100644 index 0000000000..46ff4d6113 --- /dev/null +++ b/research/p104-serial-temporal-support-bound/verify.py @@ -0,0 +1,52 @@ +"""Reproduce the timed support cap, pilot and exact price receipts.""" +from hashlib import sha256 +import json +from pathlib import Path +import subprocess +import sys + +ROOT = Path(__file__).resolve().parent +SOURCE = ROOT/'source7165' + + +def unique_object(items): + result = {} + for key,value in items: + if key in result: + raise ValueError(f'duplicate JSON key: {key}') + result[key] = value + return result + + +def read_manifest(filename): + return json.loads((ROOT/filename).read_text(encoding='utf-8'),object_pairs_hook=unique_object) + + +def main(): + if not __debug__ or sys.implementation.name != 'cpython' or sys.version_info[:2] != (3,12): + raise SystemExit('Use CPython 3.12 with assertions enabled') + pins = read_manifest('INPUTS.json') + actual = {p.relative_to(SOURCE).as_posix() for p in SOURCE.rglob('*') if p.is_file()} + if pins.keys() != actual: + raise ValueError('source paths disagree with declared manifest') + for name,record in pins.items(): + if sha256((SOURCE/name).read_bytes()).hexdigest() != record['sha256']: + raise ValueError(f'changed exact source: {name}') + frozen = read_manifest('RECEIPTS.json') + commands = { + 'paid_delivery': ['paid_delivery.py'], + 'temporal_cap_one': ['temporal_barrier.py','--cap','1'], + 'temporal_barriers': ['temporal_barrier.py'], + } + assert frozen['stdout_sha256'].keys() == commands.keys() + for name,(script,*args) in commands.items(): + argv = [sys.executable,'-I','-B',str(ROOT/'checks'/script),str(SOURCE),*args] + output = subprocess.run(argv,check=True,capture_output=True).stdout + if sha256(output).hexdigest() != frozen['stdout_sha256'][name]: + raise ValueError(f'changed frozen receipt: {name}') + print(f'PASS {name}',flush=True) + print('PASS_P104_SERIAL_TEMPORAL_SUPPORT_BOUND') + + +if __name__ == '__main__': + main()