diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md index a9641976f3..9282beafbd 100644 --- a/CONTRIBUTORS.md +++ b/CONTRIBUTORS.md @@ -613,6 +613,8 @@ Selected progression: Jeremy Kothe and Rohan Arun; T16 controller: Hao Yan. Inde The [92-PR review](docs/research/community-reconciliation92-review.md) records individual contributions, replays, limitations and retained source trees. This includes parallel improvements, formal arithmetic, reproducibility tools and negative research; credit does not imply every historical claim was accepted. +**Divjot Singh Manchanda (@djsmanchanda)** supplied [#99's nondegenerate readout saturation](https://github.com/CrocSwap/integer-mult-bounds/pull/99), retained in **Rohan Arun's [#103 signed/balanced integration](https://github.com/CrocSwap/integer-mult-bounds/pull/103)**. The [source-retention receipt](research/pr99-retention-seed99/README.md) authenticates all 46 original files and reconciles the saved 177,100-singleton profile reduction. This preserves individual mechanism credit without changing historical review dispositions or claiming a fresh physical replay. + - **DaysSky (@DaysSky)**: [#162](https://github.com/CrocSwap/integer-mult-bounds/pull/162). - **Dominik Scholz (@DominikScholz)**: [#22](https://github.com/CrocSwap/integer-mult-bounds/pull/22), [#27](https://github.com/CrocSwap/integer-mult-bounds/pull/27), [#33](https://github.com/CrocSwap/integer-mult-bounds/pull/33), [#35](https://github.com/CrocSwap/integer-mult-bounds/pull/35), [#38](https://github.com/CrocSwap/integer-mult-bounds/pull/38), [#63](https://github.com/CrocSwap/integer-mult-bounds/pull/63), [#68](https://github.com/CrocSwap/integer-mult-bounds/pull/68), [#81](https://github.com/CrocSwap/integer-mult-bounds/pull/81). - **Joel Pulikkan (@GamingPuzzled)**: [#125](https://github.com/CrocSwap/integer-mult-bounds/pull/125). diff --git a/research/pr99-retention-seed99/README.md b/research/pr99-retention-seed99/README.md new file mode 100644 index 0000000000..1c238720bf --- /dev/null +++ b/research/pr99-retention-seed99/README.md @@ -0,0 +1,127 @@ +# PR99 source retention through PR103 + +**Research consolidation; no new kappa.** All 46 files introduced by Divjot +Singh Manchanda's PR99 survive unchanged in Rohan Arun's incorporated PR103. +Both complete package trees are `6bebd79406bb2453ada2b7761aece13d3e53b694`. +The offline proof authenticates paths, modes, blob identities and the complete +original commit difference, rather than relying on a matching title or README. + +At base `bce54fb3f895cbe5cd4c0eb477c3afeed100190f`, the +[ledger](../../docs/research/pr-ledger.json) gives PR99 no integration location +and records only earlier source-inventory triage. PR103's retained README says +the whole PR99 package was vendored unchanged. This receipt establishes that +link and restores the missing individual credit in +[CONTRIBUTORS.md](../../CONTRIBUTORS.md). It does not change ledger dispositions +or convert source retention into mathematical approval. Live GitHub metadata +at entry already reported both PRs closed; no PR was closed by this work. + +## Exact sources and coverage + +| Role | Commit and path | +|---|---| +| PR99 source | `0622dcce6a897567e4eb6bdfedc7def66ab21346:research/nondegenerate-readout-saturation` | +| Original comparison parent | `56b66d58297deca1d7dd130247d720e960f77a37` | +| PR103 retained copy | `75ab1f70d146c21c7611ce0df9eb5f645f51ac0e:research/saturated-balanced/vendor/pr99` | +| Published source archive | `b91de239a64d24d8aee409a0f4ac3e00710ae5c1`, tag `archive/pr-reconciliation100-20261013` | + +[SOURCE-PROOF.json](SOURCE-PROOF.json) contains 32 raw Git objects: four commits, +the necessary trees, and five evidence blobs. Its authenticated commit difference +is exactly 46 additions, zero modifications and zero deletions. PR103 is a direct +parent of the archive commit, whose identity and parent list are checked against +the retained archive receipt. The historical PR103 review is bound to its exact +head. Git content identity assumes collision resistance of Git SHA-1; it does +not authenticate signatures or establish authorship. The optional collector +also compares every original and retained file's bytes using Git directly. + +The standalone checker imports no predecessor implementation. It reconciles +four authenticated saved reports: the baseline histogram, PR99's candidate and +frame-extension list, PR99's historical component-delta review, and PR103's +integrated histogram. The extension counts are six `12->13`, three `12->14`, +and thirteen `13->14`: 22 frames and 25 added dimensions. With `v=1771`, their +recorded merger accounting is + +```text +3542 * [6*(H509-H507-2*H1) + 13*(H511-H509-2*H1) + + 3*(H511-H507-4*H1)] += -177100*H1 - 31878*H507 - 24794*H509 + 56672*H511. +``` + +Here `Hr` denotes one child of rank `r`. The independently subtracted saved +histograms give precisely this vector. Its rank-weighted mass is zero; both +profiles have recursive rank `57,403,754,177`, width `108,516,254` and `28,866` +auxiliary roles. PR103's complete saved histogram equals PR99's candidate. +The checker verifies these identities, not the legality of the original frame +extensions or a newly executed circuit. Full physical, native, moment, all-size, +compiler, routing, precision/recovery and analytic obligations remain inherited. +No full multiplication theorem or new selected-frontier replay is claimed. + +## Reproduce + +From the repository root, using Python 3.12 and its standard library: + +```sh +python3.12 scripts/research_package.py --package research/pr99-retention-seed99 +``` + +This runs the read-only checker and 18 tests: one positive case and 17 failure +controls. Expected output includes: + +```text +PASS_PR99_RETENTION_AND_SAVED_ACCOUNTING files=46 singleton_delta=-177100 mass_delta=0 +Ran 18 tests +OK +PASS_REGISTERED_RESEARCH_PACKAGE research/pr99-retention-seed99 outcome=completed +``` + +Controls cover missing files and trees, same-count path substitution, file modes, +corrupt commits and accounting blobs, missing archive ancestry, wrong review +heads, duplicate JSON/ranks/slots, a missing double extension, changed width, +omitted component charges, a mass-preserving wrong profile, and substitution of +the unsaturated histogram into PR103. Explicit checks also run under `python -O`. + +The direct `python3 -I -O -B research/pr99-retention-seed99/verify.py` command +needs neither Git nor network access, only this package and the two immutable +review inputs listed in [VERIFY.json](VERIFY.json). The registered metadata +check additionally uses Git history for the provenance in [SOURCES.json](SOURCES.json). +[RESULT.json](RESULT.json) is compared against recomputation on every default run. + +To recollect the proof from locally available pinned Git objects, run +`python3 -I -B research/pr99-retention-seed99/collect.py --output /tmp/pr99-proof.json` +and compare it with `SOURCE-PROOF.json`. The collector documents the fetches +needed if those objects are absent; it never fetches or runs archived code itself. + +## Task and overlap + +OS-random seed **99**, consolidation track; task `overlap-receipt`, refined to +PR99 through PR103. The seed selects the older PR99 object. PR279 source closure +and stale current-result routing were rejected as candidate tasks because +PR1190 and PR1232/1285 already address them. This receipt uses a similar Git +object authentication method to Adam Gall's PR1190, on a distinct source tree; +no code or proof data from that pending PR is imported. Rohan Arun's PR103 and +the maintainer reconciliation are the retention and review predecessors. +Full overlap-search coverage and limitations are recorded in [TASK.json](TASK.json). +The [coordination claim](https://github.com/CrocSwap/integer-mult-bounds/discussions/1166#discussioncomment-18912011) +was posted before implementation. No search for a better circuit was performed. + +## Open next questions + +No further retention experiment is justified by this receipt: the complete +original change is accounted for. This does not settle whether every original +mathematical obligation has received sufficient review. That question remains +outside this source-retention result; neither the ledger's historical disposition +nor the selected frontier is changed. + +## Credit + +Divjot Singh Manchanda (@djsmanchanda) supplied PR99's nondegenerate readout +saturation. Rohan Arun (@rohanarun) supplied PR103's signed/balanced integration; +Zhihao Chen (@jacklightChen), Swapnil Jain and the original notices retain the +upstream mathematical and implementation credit. Douglas Colkitt and the +maintainer reconciliation retained the historical source and review records. +The original [UPSTREAM-NOTICE](UPSTREAM-NOTICE) is preserved byte for byte. + +Prepared for Hanson Sun (@bbMisk), with substantial OpenAI Codex assistance in +source investigation, implementation, verification and writing. These checks +are independently implemented relative to the historical code, not independent +human peer review. New work is Apache-2.0; predecessor licenses remain in their +unchanged original package. diff --git a/research/pr99-retention-seed99/RESULT.json b/research/pr99-retention-seed99/RESULT.json new file mode 100644 index 0000000000..16fe693d55 --- /dev/null +++ b/research/pr99-retention-seed99/RESULT.json @@ -0,0 +1,38 @@ +{ + "status": "PASS_PR99_RETENTION_AND_SAVED_ACCOUNTING", + "base_commit": "bce54fb3f895cbe5cd4c0eb477c3afeed100190f", + "original_head": "0622dcce6a897567e4eb6bdfedc7def66ab21346", + "retained_head": "75ab1f70d146c21c7611ce0df9eb5f645f51ac0e", + "archive_commit": "b91de239a64d24d8aee409a0f4ac3e00710ae5c1", + "common_package_tree": "6bebd79406bb2453ada2b7761aece13d3e53b694", + "retained_files": 46, + "original_changes": { + "added": 46, + "modified": 0, + "deleted": 0 + }, + "authenticated_git_objects": 32, + "accounting": { + "changed_frames": 22, + "dimension_increase": 25, + "frame_extension_counts": { + "12->13": 6, + "12->14": 3, + "13->14": 13 + }, + "histogram_delta": { + "1": -177100, + "507": -31878, + "509": -24794, + "511": 56672 + }, + "rank_mass_delta": 0, + "recursive_rank": 57403754177, + "width": 108516254, + "auxiliary_roles": 28866, + "pr103_saved_histogram_matches": true + }, + "fresh_physical_replay": false, + "new_kappa_claim": false, + "scope": "Complete historical source retention and saved-report accounting; no new construction acceptance." +} diff --git a/research/pr99-retention-seed99/SOURCE-PROOF.json b/research/pr99-retention-seed99/SOURCE-PROOF.json new file mode 100644 index 0000000000..37f372bb0f --- /dev/null +++ b/research/pr99-retention-seed99/SOURCE-PROOF.json @@ -0,0 +1,319 @@ +{ + "schema_version": 1, + "objects": { + "0622dcce6a897567e4eb6bdfedc7def66ab21346": { + "type": "commit", + "base64": "dHJlZSAyYzU4M2Y2ZThmMmUzMGE2ZTVhODA5Zjk0ZjRjNTZhODRlZTEzMzM4CnBhcmVudCA1NmI2NmQ1ODI5N2RlY2ExZDdkZDEzMDI0N2Q3MjBlOTYwZjc3YTM3CmF1dGhvciBEaXZqb3QgU2luZ2ggTWFuY2hhbmRhIDw2ODgwODg0OCtkanNtYW5jaGFuZGFAdXNlcnMubm9yZXBseS5naXRodWIuY29tPiAxNzkxNTAwMDg4ICswNTMwCmNvbW1pdHRlciBEaXZqb3QgU2luZ2ggTWFuY2hhbmRhIDw2ODgwODg0OCtkanNtYW5jaGFuZGFAdXNlcnMubm9yZXBseS5naXRodWIuY29tPiAxNzkxNTAwMDg4ICswNTMwCgpBZGQgbm9uZGVnZW5lcmF0ZSByZWFkb3V0IHNhdHVyYXRpb24gZXhwZXJpbWVudCB3aXRoIHBpbm5lZCB2ZXJpZmljYXRpb24gYW5kIGNyZWRpdHM=" + }, + "163260325bb989eb0538b04c89e10d70eb0a2f88": { + "type": "blob", + "base64": "ewogICJaIjogewogICAgImNoYW5nZWRfc2xvdHMiOiAyMiwKICAgICJkaW1lbnNpb25faW5jcmVhc2UiOiAyNSwKICAgICJjaGFuZ2VzIjogWwogICAgICB7CiAgICAgICAgInNsb3QiOiAyMzQ4NCwKICAgICAgICAib2xkX2RpbSI6IDEzLAogICAgICAgICJuZXdfZGltIjogMTQKICAgICAgfSwKICAgICAgewogICAgICAgICJzbG90IjogMjM0NDUsCiAgICAgICAgIm9sZF9kaW0iOiAxMywKICAgICAgICAibmV3X2RpbSI6IDE0CiAgICAgIH0sCiAgICAgIHsKICAgICAgICAic2xvdCI6IDIzNDM0LAogICAgICAgICJvbGRfZGltIjogMTMsCiAgICAgICAgIm5ld19kaW0iOiAxNAogICAgICB9LAogICAgICB7CiAgICAgICAgInNsb3QiOiAyMzQwNiwKICAgICAgICAib2xkX2RpbSI6IDEzLAogICAgICAgICJuZXdfZGltIjogMTQKICAgICAgfSwKICAgICAgewogICAgICAgICJzbG90IjogMjMzNTQsCiAgICAgICAgIm9sZF9kaW0iOiAxMywKICAgICAgICAibmV3X2RpbSI6IDE0CiAgICAgIH0sCiAgICAgIHsKICAgICAgICAic2xvdCI6IDIzMzI4LAogICAgICAgICJvbGRfZGltIjogMTMsCiAgICAgICAgIm5ld19kaW0iOiAxNAogICAgICB9LAogICAgICB7CiAgICAgICAgInNsb3QiOiAyMzMyNywKICAgICAgICAib2xkX2RpbSI6IDEzLAogICAgICAgICJuZXdfZGltIjogMTQKICAgICAgfSwKICAgICAgewogICAgICAgICJzbG90IjogMjMzMjUsCiAgICAgICAgIm9sZF9kaW0iOiAxMywKICAgICAgICAibmV3X2RpbSI6IDE0CiAgICAgIH0sCiAgICAgIHsKICAgICAgICAic2xvdCI6IDIzMzI0LAogICAgICAgICJvbGRfZGltIjogMTMsCiAgICAgICAgIm5ld19kaW0iOiAxNAogICAgICB9LAogICAgICB7CiAgICAgICAgInNsb3QiOiAyMzI4MSwKICAgICAgICAib2xkX2RpbSI6IDEzLAogICAgICAgICJuZXdfZGltIjogMTQKICAgICAgfSwKICAgICAgewogICAgICAgICJzbG90IjogMjMyNzAsCiAgICAgICAgIm9sZF9kaW0iOiAxMywKICAgICAgICAibmV3X2RpbSI6IDE0CiAgICAgIH0sCiAgICAgIHsKICAgICAgICAic2xvdCI6IDIzMjY5LAogICAgICAgICJvbGRfZGltIjogMTMsCiAgICAgICAgIm5ld19kaW0iOiAxNAogICAgICB9LAogICAgICB7CiAgICAgICAgInNsb3QiOiAyMzI2NywKICAgICAgICAib2xkX2RpbSI6IDEzLAogICAgICAgICJuZXdfZGltIjogMTQKICAgICAgfSwKICAgICAgewogICAgICAgICJzbG90IjogMjM2NzEsCiAgICAgICAgIm9sZF9kaW0iOiAxMiwKICAgICAgICAibmV3X2RpbSI6IDEzCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAic2xvdCI6IDIzNTY2LAogICAgICAgICJvbGRfZGltIjogMTIsCiAgICAgICAgIm5ld19kaW0iOiAxNAogICAgICB9LAogICAgICB7CiAgICAgICAgInNsb3QiOiAyMzQ1MSwKICAgICAgICAib2xkX2RpbSI6IDEyLAogICAgICAgICJuZXdfZGltIjogMTQKICAgICAgfSwKICAgICAgewogICAgICAgICJzbG90IjogMjMyODQsCiAgICAgICAgIm9sZF9kaW0iOiAxMiwKICAgICAgICAibmV3X2RpbSI6IDE0CiAgICAgIH0sCiAgICAgIHsKICAgICAgICAic2xvdCI6IDIyOTgyLAogICAgICAgICJvbGRfZGltIjogMTIsCiAgICAgICAgIm5ld19kaW0iOiAxMwogICAgICB9LAogICAgICB7CiAgICAgICAgInNsb3QiOiAyMjk4MCwKICAgICAgICAib2xkX2RpbSI6IDEyLAogICAgICAgICJuZXdfZGltIjogMTMKICAgICAgfSwKICAgICAgewogICAgICAgICJzbG90IjogMjI5NzQsCiAgICAgICAgIm9sZF9kaW0iOiAxMiwKICAgICAgICAibmV3X2RpbSI6IDEzCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAic2xvdCI6IDIyOTcwLAogICAgICAgICJvbGRfZGltIjogMTIsCiAgICAgICAgIm5ld19kaW0iOiAxMwogICAgICB9LAogICAgICB7CiAgICAgICAgInNsb3QiOiAyMjk2NiwKICAgICAgICAib2xkX2RpbSI6IDEyLAogICAgICAgICJuZXdfZGltIjogMTMKICAgICAgfQogICAgXSwKICAgICJ1bmNoYW5nZWRfbWF4aW1hbF9zbG90cyI6IDExNTQwLAogICAgImRlZ2VuZXJhdGVfZmFsbGJhY2tzIjogMjQsCiAgICAiZGVnZW5lcmF0ZV9jYXNlcyI6IFsKICAgICAgewogICAgICAgICJzbG90IjogMjM3NTMsCiAgICAgICAgIm9sZF9kaW0iOiAxNCwKICAgICAgICAiY2FuZGlkYXRlX2RpbSI6IDE1LAogICAgICAgICJncmFtX3JhbmtfbW9kX3EiOiAxNCwKICAgICAgICAiZ3JhbV9yYW5rX2V4YWN0IjogMTQKICAgICAgfSwKICAgICAgewogICAgICAgICJzbG90IjogMjM3NDQsCiAgICAgICAgIm9sZF9kaW0iOiAxNCwKICAgICAgICAiY2FuZGlkYXRlX2RpbSI6IDE1LAogICAgICAgICJncmFtX3JhbmtfbW9kX3EiOiAxNCwKICAgICAgICAiZ3JhbV9yYW5rX2V4YWN0IjogMTQKICAgICAgfSwKICAgICAgewogICAgICAgICJzbG90IjogMjM3NDEsCiAgICAgICAgIm9sZF9kaW0iOiAxNCwKICAgICAgICAiY2FuZGlkYXRlX2RpbSI6IDE1LAogICAgICAgICJncmFtX3JhbmtfbW9kX3EiOiAxNCwKICAgICAgICAiZ3JhbV9yYW5rX2V4YWN0IjogMTQKICAgICAgfSwKICAgICAgewogICAgICAgICJzbG90IjogMjM0ODQsCiAgICAgICAgIm9sZF9kaW0iOiAxMywKICAgICAgICAiY2FuZGlkYXRlX2RpbSI6IDE1LAogICAgICAgICJncmFtX3JhbmtfbW9kX3EiOiAxNCwKICAgICAgICAiZ3JhbV9yYW5rX2V4YWN0IjogMTQKICAgICAgfSwKICAgICAgewogICAgICAgICJzbG90IjogMjM0NDUsCiAgICAgICAgIm9sZF9kaW0iOiAxMywKICAgICAgICAiY2FuZGlkYXRlX2RpbSI6IDE1LAogICAgICAgICJncmFtX3JhbmtfbW9kX3EiOiAxNCwKICAgICAgICAiZ3JhbV9yYW5rX2V4YWN0IjogMTQKICAgICAgfSwKICAgICAgewogICAgICAgICJzbG90IjogMjM0MzQsCiAgICAgICAgIm9sZF9kaW0iOiAxMywKICAgICAgICAiY2FuZGlkYXRlX2RpbSI6IDE1LAogICAgICAgICJncmFtX3JhbmtfbW9kX3EiOiAxNCwKICAgICAgICAiZ3JhbV9yYW5rX2V4YWN0IjogMTQKICAgICAgfSwKICAgICAgewogICAgICAgICJzbG90IjogMjM0MDYsCiAgICAgICAgIm9sZF9kaW0iOiAxMywKICAgICAgICAiY2FuZGlkYXRlX2RpbSI6IDE1LAogICAgICAgICJncmFtX3JhbmtfbW9kX3EiOiAxNCwKICAgICAgICAiZ3JhbV9yYW5rX2V4YWN0IjogMTQKICAgICAgfSwKICAgICAgewogICAgICAgICJzbG90IjogMjMzNTQsCiAgICAgICAgIm9sZF9kaW0iOiAxMywKICAgICAgICAiY2FuZGlkYXRlX2RpbSI6IDE1LAogICAgICAgICJncmFtX3JhbmtfbW9kX3EiOiAxNCwKICAgICAgICAiZ3JhbV9yYW5rX2V4YWN0IjogMTQKICAgICAgfSwKICAgICAgewogICAgICAgICJzbG90IjogMjMzMjgsCiAgICAgICAgIm9sZF9kaW0iOiAxMywKICAgICAgICAiY2FuZGlkYXRlX2RpbSI6IDE1LAogICAgICAgICJncmFtX3JhbmtfbW9kX3EiOiAxNCwKICAgICAgICAiZ3JhbV9yYW5rX2V4YWN0IjogMTQKICAgICAgfSwKICAgICAgewogICAgICAgICJzbG90IjogMjMzMjcsCiAgICAgICAgIm9sZF9kaW0iOiAxMywKICAgICAgICAiY2FuZGlkYXRlX2RpbSI6IDE1LAogICAgICAgICJncmFtX3JhbmtfbW9kX3EiOiAxNCwKICAgICAgICAiZ3JhbV9yYW5rX2V4YWN0IjogMTQKICAgICAgfSwKICAgICAgewogICAgICAgICJzbG90IjogMjMzMjUsCiAgICAgICAgIm9sZF9kaW0iOiAxMywKICAgICAgICAiY2FuZGlkYXRlX2RpbSI6IDE1LAogICAgICAgICJncmFtX3JhbmtfbW9kX3EiOiAxNCwKICAgICAgICAiZ3JhbV9yYW5rX2V4YWN0IjogMTQKICAgICAgfSwKICAgICAgewogICAgICAgICJzbG90IjogMjMzMjQsCiAgICAgICAgIm9sZF9kaW0iOiAxMywKICAgICAgICAiY2FuZGlkYXRlX2RpbSI6IDE1LAogICAgICAgICJncmFtX3JhbmtfbW9kX3EiOiAxNCwKICAgICAgICAiZ3JhbV9yYW5rX2V4YWN0IjogMTQKICAgICAgfSwKICAgICAgewogICAgICAgICJzbG90IjogMjMyODEsCiAgICAgICAgIm9sZF9kaW0iOiAxMywKICAgICAgICAiY2FuZGlkYXRlX2RpbSI6IDE1LAogICAgICAgICJncmFtX3JhbmtfbW9kX3EiOiAxNCwKICAgICAgICAiZ3JhbV9yYW5rX2V4YWN0IjogMTQKICAgICAgfSwKICAgICAgewogICAgICAgICJzbG90IjogMjMyNzAsCiAgICAgICAgIm9sZF9kaW0iOiAxMywKICAgICAgICAiY2FuZGlkYXRlX2RpbSI6IDE1LAogICAgICAgICJncmFtX3JhbmtfbW9kX3EiOiAxNCwKICAgICAgICAiZ3JhbV9yYW5rX2V4YWN0IjogMTQKICAgICAgfSwKICAgICAgewogICAgICAgICJzbG90IjogMjMyNjksCiAgICAgICAgIm9sZF9kaW0iOiAxMywKICAgICAgICAiY2FuZGlkYXRlX2RpbSI6IDE1LAogICAgICAgICJncmFtX3JhbmtfbW9kX3EiOiAxNCwKICAgICAgICAiZ3JhbV9yYW5rX2V4YWN0IjogMTQKICAgICAgfSwKICAgICAgewogICAgICAgICJzbG90IjogMjMyNjcsCiAgICAgICAgIm9sZF9kaW0iOiAxMywKICAgICAgICAiY2FuZGlkYXRlX2RpbSI6IDE1LAogICAgICAgICJncmFtX3JhbmtfbW9kX3EiOiAxNCwKICAgICAgICAiZ3JhbV9yYW5rX2V4YWN0IjogMTQKICAgICAgfSwKICAgICAgewogICAgICAgICJzbG90IjogMjM2NzEsCiAgICAgICAgIm9sZF9kaW0iOiAxMiwKICAgICAgICAiY2FuZGlkYXRlX2RpbSI6IDE0LAogICAgICAgICJncmFtX3JhbmtfbW9kX3EiOiAxMywKICAgICAgICAiZ3JhbV9yYW5rX2V4YWN0IjogMTMKICAgICAgfSwKICAgICAgewogICAgICAgICJzbG90IjogMjM1NjYsCiAgICAgICAgIm9sZF9kaW0iOiAxMiwKICAgICAgICAiY2FuZGlkYXRlX2RpbSI6IDE1LAogICAgICAgICJncmFtX3JhbmtfbW9kX3EiOiAxNCwKICAgICAgICAiZ3JhbV9yYW5rX2V4YWN0IjogMTQKICAgICAgfSwKICAgICAgewogICAgICAgICJzbG90IjogMjM0NTEsCiAgICAgICAgIm9sZF9kaW0iOiAxMiwKICAgICAgICAiY2FuZGlkYXRlX2RpbSI6IDE1LAogICAgICAgICJncmFtX3JhbmtfbW9kX3EiOiAxNCwKICAgICAgICAiZ3JhbV9yYW5rX2V4YWN0IjogMTQKICAgICAgfSwKICAgICAgewogICAgICAgICJzbG90IjogMjMyODQsCiAgICAgICAgIm9sZF9kaW0iOiAxMiwKICAgICAgICAiY2FuZGlkYXRlX2RpbSI6IDE1LAogICAgICAgICJncmFtX3JhbmtfbW9kX3EiOiAxNCwKICAgICAgICAiZ3JhbV9yYW5rX2V4YWN0IjogMTQKICAgICAgfSwKICAgICAgewogICAgICAgICJzbG90IjogMjI5ODIsCiAgICAgICAgIm9sZF9kaW0iOiAxMiwKICAgICAgICAiY2FuZGlkYXRlX2RpbSI6IDE0LAogICAgICAgICJncmFtX3JhbmtfbW9kX3EiOiAxMywKICAgICAgICAiZ3JhbV9yYW5rX2V4YWN0IjogMTMKICAgICAgfSwKICAgICAgewogICAgICAgICJzbG90IjogMjI5NzQsCiAgICAgICAgIm9sZF9kaW0iOiAxMiwKICAgICAgICAiY2FuZGlkYXRlX2RpbSI6IDE0LAogICAgICAgICJncmFtX3JhbmtfbW9kX3EiOiAxMywKICAgICAgICAiZ3JhbV9yYW5rX2V4YWN0IjogMTMKICAgICAgfSwKICAgICAgewogICAgICAgICJzbG90IjogMjI5NzAsCiAgICAgICAgIm9sZF9kaW0iOiAxMiwKICAgICAgICAiY2FuZGlkYXRlX2RpbSI6IDE0LAogICAgICAgICJncmFtX3JhbmtfbW9kX3EiOiAxMywKICAgICAgICAiZ3JhbV9yYW5rX2V4YWN0IjogMTMKICAgICAgfSwKICAgICAgewogICAgICAgICJzbG90IjogMjI5NjYsCiAgICAgICAgIm9sZF9kaW0iOiAxMiwKICAgICAgICAiY2FuZGlkYXRlX2RpbSI6IDE0LAogICAgICAgICJncmFtX3JhbmtfbW9kX3EiOiAxMywKICAgICAgICAiZ3JhbV9yYW5rX2V4YWN0IjogMTMKICAgICAgfQogICAgXSwKICAgICJyb290X2Zsb2F0IjogNi4zOTg2OTE0ODk2MzA2MDNlLTA1LAogICAgImhpc3RvZ3JhbSI6IHsKICAgICAgImgiOiAyMywKICAgICAgIm0iOiA1MjksCiAgICAgICJ2IjogMTc3MSwKICAgICAgIk4iOiAzMTM2NDQxLAogICAgICAiVyI6IDEwODUxNjI1NCwKICAgICAgIkwiOiAxNzkyMjUyLAogICAgICAicyI6IDU3NDAzNzU0MTc3LAogICAgICAiUiI6IDI4ODY2LAogICAgICAiaGlzdCI6IFsKICAgICAgICBbCiAgICAgICAgICAxLAogICAgICAgICAgMTY5MDEyMDIwMQogICAgICAgIF0sCiAgICAgICAgWwogICAgICAgICAgMywKICAgICAgICAgIDEzNTY1ODYKICAgICAgICBdLAogICAgICAgIFsKICAgICAgICAgIDUsCiAgICAgICAgICAzNTQyMDAKICAgICAgICBdLAogICAgICAgIFsKICAgICAgICAgIDcsCiAgICAgICAgICAzNTgwOTYyCiAgICAgICAgXSwKICAgICAgICBbCiAgICAgICAgICA5LAogICAgICAgICAgMTUyNjYwMgogICAgICAgIF0sCiAgICAgICAgWwogICAgICAgICAgMTEsCiAgICAgICAgICA1MDkzMzk2CiAgICAgICAgXSwKICAgICAgICBbCiAgICAgICAgICAxMywKICAgICAgICAgIDIxNjQxNjIKICAgICAgICBdLAogICAgICAgIFsKICAgICAgICAgIDE1LAogICAgICAgICAgNzk0ODI0OAogICAgICAgIF0sCiAgICAgICAgWwogICAgICAgICAgMTcsCiAgICAgICAgICA4NDc2MDA2CiAgICAgICAgXSwKICAgICAgICBbCiAgICAgICAgICAxOCwKICAgICAgICAgIDYyNzI4ODIKICAgICAgICBdLAogICAgICAgIFsKICAgICAgICAgIDE5LAogICAgICAgICAgMTYzOTk0NgogICAgICAgIF0sCiAgICAgICAgWwogICAgICAgICAgMjEsCiAgICAgICAgICA2OTA2OTAwCiAgICAgICAgXSwKICAgICAgICBbCiAgICAgICAgICAyMywKICAgICAgICAgIDYxMjgwMTQyCiAgICAgICAgXSwKICAgICAgICBbCiAgICAgICAgICA0MzksCiAgICAgICAgICA2MjcyODgyCiAgICAgICAgXSwKICAgICAgICBbCiAgICAgICAgICA0ODMsCiAgICAgICAgICA2MTI4MDE0MgogICAgICAgIF0sCiAgICAgICAgWwogICAgICAgICAgNDg1LAogICAgICAgICAgNTQ1NDY4CiAgICAgICAgXSwKICAgICAgICBbCiAgICAgICAgICA0ODcsCiAgICAgICAgICAxNzM1NTgKICAgICAgICBdLAogICAgICAgIFsKICAgICAgICAgIDQ4OSwKICAgICAgICAgIDI5Mzk4NgogICAgICAgIF0sCiAgICAgICAgWwogICAgICAgICAgNDkxLAogICAgICAgICAgNTgwODg4CiAgICAgICAgXSwKICAgICAgICBbCiAgICAgICAgICA0OTMsCiAgICAgICAgICAxNDE2OAogICAgICAgIF0sCiAgICAgICAgWwogICAgICAgICAgNDk1LAogICAgICAgICAgMzIyMzIyCiAgICAgICAgXSwKICAgICAgICBbCiAgICAgICAgICA0OTcsCiAgICAgICAgICAxNzcxMAogICAgICAgIF0sCiAgICAgICAgWwogICAgICAgICAgNDk5LAogICAgICAgICAgMTEyOTg5OAogICAgICAgIF0sCiAgICAgICAgWwogICAgICAgICAgNTAxLAogICAgICAgICAgMTI3NTEyCiAgICAgICAgXSwKICAgICAgICBbCiAgICAgICAgICA1MDMsCiAgICAgICAgICA0MTA4NzIKICAgICAgICBdLAogICAgICAgIFsKICAgICAgICAgIDUwNSwKICAgICAgICAgIDk5MTc2CiAgICAgICAgXSwKICAgICAgICBbCiAgICAgICAgICA1MDcsCiAgICAgICAgICAxMTU0NjkyCiAgICAgICAgXSwKICAgICAgICBbCiAgICAgICAgICA1MDksCiAgICAgICAgICAzMTUyMzgKICAgICAgICBdLAogICAgICAgIFsKICAgICAgICAgIDUxMSwKICAgICAgICAgIDM3ODk5NAogICAgICAgIF0sCiAgICAgICAgWwogICAgICAgICAgNTEzLAogICAgICAgICAgMTA2MjYwCiAgICAgICAgXSwKICAgICAgICBbCiAgICAgICAgICA1MTUsCiAgICAgICAgICAxNTgzMjc0CiAgICAgICAgXSwKICAgICAgICBbCiAgICAgICAgICA1MTcsCiAgICAgICAgICA2MjY5MzQKICAgICAgICBdLAogICAgICAgIFsKICAgICAgICAgIDUxOSwKICAgICAgICAgIDI4NTQ4NTIKICAgICAgICBdLAogICAgICAgIFsKICAgICAgICAgIDUyMSwKICAgICAgICAgIDEzNzExMDgyCiAgICAgICAgXSwKICAgICAgICBbCiAgICAgICAgICA1MjMsCiAgICAgICAgICA0NjI5Mzk0CiAgICAgICAgXSwKICAgICAgICBbCiAgICAgICAgICA1MjUsCiAgICAgICAgICA1NjUzMDMyCiAgICAgICAgXSwKICAgICAgICBbCiAgICAgICAgICA1MjcsCiAgICAgICAgICA2MjMzOTIwCiAgICAgICAgXQogICAgICBdCiAgICB9LAogICAgImZ1bGxfcGh5c2ljYWxfcXVhbGlmaWNhdGlvbiI6IGZhbHNlLAogICAgInJlYXNvbiI6ICJFeGFjdCBzdGFydC90YXJnZXQgY29udGFpbm1lbnQgYW5kIHJldmVyc2Utc3dlZXAgbmVzdGluZyB2ZXJpZmllZDsgZ2VuZXJpYy1waXZvdCBhbmQgY29tcGxldGUgZnJhbWUgY2hlY2tzIHN0aWxsIG5lZWRlZC4iLAogICAgImRhdGFfZmlsZSI6ICJleHBlcmltZW50cy9yb3VuZDctcmV2aWV3L3NhdHVyYXRlZC1aLmpzb24uZ3oiCiAgfSwKICAiRjIiOiB7CiAgICAiY2hhbmdlZF9zbG90cyI6IDIyLAogICAgImRpbWVuc2lvbl9pbmNyZWFzZSI6IDI1LAogICAgImNoYW5nZXMiOiBbCiAgICAgIHsKICAgICAgICAic2xvdCI6IDIzNDg0LAogICAgICAgICJvbGRfZGltIjogMTMsCiAgICAgICAgIm5ld19kaW0iOiAxNAogICAgICB9LAogICAgICB7CiAgICAgICAgInNsb3QiOiAyMzQ0NSwKICAgICAgICAib2xkX2RpbSI6IDEzLAogICAgICAgICJuZXdfZGltIjogMTQKICAgICAgfSwKICAgICAgewogICAgICAgICJzbG90IjogMjM0MzQsCiAgICAgICAgIm9sZF9kaW0iOiAxMywKICAgICAgICAibmV3X2RpbSI6IDE0CiAgICAgIH0sCiAgICAgIHsKICAgICAgICAic2xvdCI6IDIzNDA2LAogICAgICAgICJvbGRfZGltIjogMTMsCiAgICAgICAgIm5ld19kaW0iOiAxNAogICAgICB9LAogICAgICB7CiAgICAgICAgInNsb3QiOiAyMzM1NCwKICAgICAgICAib2xkX2RpbSI6IDEzLAogICAgICAgICJuZXdfZGltIjogMTQKICAgICAgfSwKICAgICAgewogICAgICAgICJzbG90IjogMjMzMjgsCiAgICAgICAgIm9sZF9kaW0iOiAxMywKICAgICAgICAibmV3X2RpbSI6IDE0CiAgICAgIH0sCiAgICAgIHsKICAgICAgICAic2xvdCI6IDIzMzI3LAogICAgICAgICJvbGRfZGltIjogMTMsCiAgICAgICAgIm5ld19kaW0iOiAxNAogICAgICB9LAogICAgICB7CiAgICAgICAgInNsb3QiOiAyMzMyNSwKICAgICAgICAib2xkX2RpbSI6IDEzLAogICAgICAgICJuZXdfZGltIjogMTQKICAgICAgfSwKICAgICAgewogICAgICAgICJzbG90IjogMjMzMjQsCiAgICAgICAgIm9sZF9kaW0iOiAxMywKICAgICAgICAibmV3X2RpbSI6IDE0CiAgICAgIH0sCiAgICAgIHsKICAgICAgICAic2xvdCI6IDIzMjgxLAogICAgICAgICJvbGRfZGltIjogMTMsCiAgICAgICAgIm5ld19kaW0iOiAxNAogICAgICB9LAogICAgICB7CiAgICAgICAgInNsb3QiOiAyMzI3MCwKICAgICAgICAib2xkX2RpbSI6IDEzLAogICAgICAgICJuZXdfZGltIjogMTQKICAgICAgfSwKICAgICAgewogICAgICAgICJzbG90IjogMjMyNjksCiAgICAgICAgIm9sZF9kaW0iOiAxMywKICAgICAgICAibmV3X2RpbSI6IDE0CiAgICAgIH0sCiAgICAgIHsKICAgICAgICAic2xvdCI6IDIzMjY3LAogICAgICAgICJvbGRfZGltIjogMTMsCiAgICAgICAgIm5ld19kaW0iOiAxNAogICAgICB9LAogICAgICB7CiAgICAgICAgInNsb3QiOiAyMzY3MSwKICAgICAgICAib2xkX2RpbSI6IDEyLAogICAgICAgICJuZXdfZGltIjogMTMKICAgICAgfSwKICAgICAgewogICAgICAgICJzbG90IjogMjM1NjYsCiAgICAgICAgIm9sZF9kaW0iOiAxMiwKICAgICAgICAibmV3X2RpbSI6IDE0CiAgICAgIH0sCiAgICAgIHsKICAgICAgICAic2xvdCI6IDIzNDUxLAogICAgICAgICJvbGRfZGltIjogMTIsCiAgICAgICAgIm5ld19kaW0iOiAxNAogICAgICB9LAogICAgICB7CiAgICAgICAgInNsb3QiOiAyMzI4NCwKICAgICAgICAib2xkX2RpbSI6IDEyLAogICAgICAgICJuZXdfZGltIjogMTQKICAgICAgfSwKICAgICAgewogICAgICAgICJzbG90IjogMjI5ODIsCiAgICAgICAgIm9sZF9kaW0iOiAxMiwKICAgICAgICAibmV3X2RpbSI6IDEzCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAic2xvdCI6IDIyOTgwLAogICAgICAgICJvbGRfZGltIjogMTIsCiAgICAgICAgIm5ld19kaW0iOiAxMwogICAgICB9LAogICAgICB7CiAgICAgICAgInNsb3QiOiAyMjk3NCwKICAgICAgICAib2xkX2RpbSI6IDEyLAogICAgICAgICJuZXdfZGltIjogMTMKICAgICAgfSwKICAgICAgewogICAgICAgICJzbG90IjogMjI5NzAsCiAgICAgICAgIm9sZF9kaW0iOiAxMiwKICAgICAgICAibmV3X2RpbSI6IDEzCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAic2xvdCI6IDIyOTY2LAogICAgICAgICJvbGRfZGltIjogMTIsCiAgICAgICAgIm5ld19kaW0iOiAxMwogICAgICB9CiAgICBdLAogICAgInVuY2hhbmdlZF9tYXhpbWFsX3Nsb3RzIjogMTE1NDAsCiAgICAiZGVnZW5lcmF0ZV9mYWxsYmFja3MiOiAyNCwKICAgICJkZWdlbmVyYXRlX2Nhc2VzIjogWwogICAgICB7CiAgICAgICAgInNsb3QiOiAyMzc1MywKICAgICAgICAib2xkX2RpbSI6IDE0LAogICAgICAgICJjYW5kaWRhdGVfZGltIjogMTUsCiAgICAgICAgImdyYW1fcmFua19tb2RfcSI6IDE0LAogICAgICAgICJncmFtX3JhbmtfZXhhY3QiOiAxNAogICAgICB9LAogICAgICB7CiAgICAgICAgInNsb3QiOiAyMzc0NCwKICAgICAgICAib2xkX2RpbSI6IDE0LAogICAgICAgICJjYW5kaWRhdGVfZGltIjogMTUsCiAgICAgICAgImdyYW1fcmFua19tb2RfcSI6IDE0LAogICAgICAgICJncmFtX3JhbmtfZXhhY3QiOiAxNAogICAgICB9LAogICAgICB7CiAgICAgICAgInNsb3QiOiAyMzc0MSwKICAgICAgICAib2xkX2RpbSI6IDE0LAogICAgICAgICJjYW5kaWRhdGVfZGltIjogMTUsCiAgICAgICAgImdyYW1fcmFua19tb2RfcSI6IDE0LAogICAgICAgICJncmFtX3JhbmtfZXhhY3QiOiAxNAogICAgICB9LAogICAgICB7CiAgICAgICAgInNsb3QiOiAyMzQ4NCwKICAgICAgICAib2xkX2RpbSI6IDEzLAogICAgICAgICJjYW5kaWRhdGVfZGltIjogMTUsCiAgICAgICAgImdyYW1fcmFua19tb2RfcSI6IDE0LAogICAgICAgICJncmFtX3JhbmtfZXhhY3QiOiAxNAogICAgICB9LAogICAgICB7CiAgICAgICAgInNsb3QiOiAyMzQ0NSwKICAgICAgICAib2xkX2RpbSI6IDEzLAogICAgICAgICJjYW5kaWRhdGVfZGltIjogMTUsCiAgICAgICAgImdyYW1fcmFua19tb2RfcSI6IDE0LAogICAgICAgICJncmFtX3JhbmtfZXhhY3QiOiAxNAogICAgICB9LAogICAgICB7CiAgICAgICAgInNsb3QiOiAyMzQzNCwKICAgICAgICAib2xkX2RpbSI6IDEzLAogICAgICAgICJjYW5kaWRhdGVfZGltIjogMTUsCiAgICAgICAgImdyYW1fcmFua19tb2RfcSI6IDE0LAogICAgICAgICJncmFtX3JhbmtfZXhhY3QiOiAxNAogICAgICB9LAogICAgICB7CiAgICAgICAgInNsb3QiOiAyMzQwNiwKICAgICAgICAib2xkX2RpbSI6IDEzLAogICAgICAgICJjYW5kaWRhdGVfZGltIjogMTUsCiAgICAgICAgImdyYW1fcmFua19tb2RfcSI6IDE0LAogICAgICAgICJncmFtX3JhbmtfZXhhY3QiOiAxNAogICAgICB9LAogICAgICB7CiAgICAgICAgInNsb3QiOiAyMzM1NCwKICAgICAgICAib2xkX2RpbSI6IDEzLAogICAgICAgICJjYW5kaWRhdGVfZGltIjogMTUsCiAgICAgICAgImdyYW1fcmFua19tb2RfcSI6IDE0LAogICAgICAgICJncmFtX3JhbmtfZXhhY3QiOiAxNAogICAgICB9LAogICAgICB7CiAgICAgICAgInNsb3QiOiAyMzMyOCwKICAgICAgICAib2xkX2RpbSI6IDEzLAogICAgICAgICJjYW5kaWRhdGVfZGltIjogMTUsCiAgICAgICAgImdyYW1fcmFua19tb2RfcSI6IDE0LAogICAgICAgICJncmFtX3JhbmtfZXhhY3QiOiAxNAogICAgICB9LAogICAgICB7CiAgICAgICAgInNsb3QiOiAyMzMyNywKICAgICAgICAib2xkX2RpbSI6IDEzLAogICAgICAgICJjYW5kaWRhdGVfZGltIjogMTUsCiAgICAgICAgImdyYW1fcmFua19tb2RfcSI6IDE0LAogICAgICAgICJncmFtX3JhbmtfZXhhY3QiOiAxNAogICAgICB9LAogICAgICB7CiAgICAgICAgInNsb3QiOiAyMzMyNSwKICAgICAgICAib2xkX2RpbSI6IDEzLAogICAgICAgICJjYW5kaWRhdGVfZGltIjogMTUsCiAgICAgICAgImdyYW1fcmFua19tb2RfcSI6IDE0LAogICAgICAgICJncmFtX3JhbmtfZXhhY3QiOiAxNAogICAgICB9LAogICAgICB7CiAgICAgICAgInNsb3QiOiAyMzMyNCwKICAgICAgICAib2xkX2RpbSI6IDEzLAogICAgICAgICJjYW5kaWRhdGVfZGltIjogMTUsCiAgICAgICAgImdyYW1fcmFua19tb2RfcSI6IDE0LAogICAgICAgICJncmFtX3JhbmtfZXhhY3QiOiAxNAogICAgICB9LAogICAgICB7CiAgICAgICAgInNsb3QiOiAyMzI4MSwKICAgICAgICAib2xkX2RpbSI6IDEzLAogICAgICAgICJjYW5kaWRhdGVfZGltIjogMTUsCiAgICAgICAgImdyYW1fcmFua19tb2RfcSI6IDE0LAogICAgICAgICJncmFtX3JhbmtfZXhhY3QiOiAxNAogICAgICB9LAogICAgICB7CiAgICAgICAgInNsb3QiOiAyMzI3MCwKICAgICAgICAib2xkX2RpbSI6IDEzLAogICAgICAgICJjYW5kaWRhdGVfZGltIjogMTUsCiAgICAgICAgImdyYW1fcmFua19tb2RfcSI6IDE0LAogICAgICAgICJncmFtX3JhbmtfZXhhY3QiOiAxNAogICAgICB9LAogICAgICB7CiAgICAgICAgInNsb3QiOiAyMzI2OSwKICAgICAgICAib2xkX2RpbSI6IDEzLAogICAgICAgICJjYW5kaWRhdGVfZGltIjogMTUsCiAgICAgICAgImdyYW1fcmFua19tb2RfcSI6IDE0LAogICAgICAgICJncmFtX3JhbmtfZXhhY3QiOiAxNAogICAgICB9LAogICAgICB7CiAgICAgICAgInNsb3QiOiAyMzI2NywKICAgICAgICAib2xkX2RpbSI6IDEzLAogICAgICAgICJjYW5kaWRhdGVfZGltIjogMTUsCiAgICAgICAgImdyYW1fcmFua19tb2RfcSI6IDE0LAogICAgICAgICJncmFtX3JhbmtfZXhhY3QiOiAxNAogICAgICB9LAogICAgICB7CiAgICAgICAgInNsb3QiOiAyMzY3MSwKICAgICAgICAib2xkX2RpbSI6IDEyLAogICAgICAgICJjYW5kaWRhdGVfZGltIjogMTQsCiAgICAgICAgImdyYW1fcmFua19tb2RfcSI6IDEzLAogICAgICAgICJncmFtX3JhbmtfZXhhY3QiOiAxMwogICAgICB9LAogICAgICB7CiAgICAgICAgInNsb3QiOiAyMzU2NiwKICAgICAgICAib2xkX2RpbSI6IDEyLAogICAgICAgICJjYW5kaWRhdGVfZGltIjogMTUsCiAgICAgICAgImdyYW1fcmFua19tb2RfcSI6IDE0LAogICAgICAgICJncmFtX3JhbmtfZXhhY3QiOiAxNAogICAgICB9LAogICAgICB7CiAgICAgICAgInNsb3QiOiAyMzQ1MSwKICAgICAgICAib2xkX2RpbSI6IDEyLAogICAgICAgICJjYW5kaWRhdGVfZGltIjogMTUsCiAgICAgICAgImdyYW1fcmFua19tb2RfcSI6IDE0LAogICAgICAgICJncmFtX3JhbmtfZXhhY3QiOiAxNAogICAgICB9LAogICAgICB7CiAgICAgICAgInNsb3QiOiAyMzI4NCwKICAgICAgICAib2xkX2RpbSI6IDEyLAogICAgICAgICJjYW5kaWRhdGVfZGltIjogMTUsCiAgICAgICAgImdyYW1fcmFua19tb2RfcSI6IDE0LAogICAgICAgICJncmFtX3JhbmtfZXhhY3QiOiAxNAogICAgICB9LAogICAgICB7CiAgICAgICAgInNsb3QiOiAyMjk4MiwKICAgICAgICAib2xkX2RpbSI6IDEyLAogICAgICAgICJjYW5kaWRhdGVfZGltIjogMTQsCiAgICAgICAgImdyYW1fcmFua19tb2RfcSI6IDEzLAogICAgICAgICJncmFtX3JhbmtfZXhhY3QiOiAxMwogICAgICB9LAogICAgICB7CiAgICAgICAgInNsb3QiOiAyMjk3NCwKICAgICAgICAib2xkX2RpbSI6IDEyLAogICAgICAgICJjYW5kaWRhdGVfZGltIjogMTQsCiAgICAgICAgImdyYW1fcmFua19tb2RfcSI6IDEzLAogICAgICAgICJncmFtX3JhbmtfZXhhY3QiOiAxMwogICAgICB9LAogICAgICB7CiAgICAgICAgInNsb3QiOiAyMjk3MCwKICAgICAgICAib2xkX2RpbSI6IDEyLAogICAgICAgICJjYW5kaWRhdGVfZGltIjogMTQsCiAgICAgICAgImdyYW1fcmFua19tb2RfcSI6IDEzLAogICAgICAgICJncmFtX3JhbmtfZXhhY3QiOiAxMwogICAgICB9LAogICAgICB7CiAgICAgICAgInNsb3QiOiAyMjk2NiwKICAgICAgICAib2xkX2RpbSI6IDEyLAogICAgICAgICJjYW5kaWRhdGVfZGltIjogMTQsCiAgICAgICAgImdyYW1fcmFua19tb2RfcSI6IDEzLAogICAgICAgICJncmFtX3JhbmtfZXhhY3QiOiAxMwogICAgICB9CiAgICBdLAogICAgInJvb3RfZmxvYXQiOiA2LjM5ODY5MTQ4OTYzMDYwM2UtMDUsCiAgICAiaGlzdG9ncmFtIjogewogICAgICAiaCI6IDIzLAogICAgICAibSI6IDUyOSwKICAgICAgInYiOiAxNzcxLAogICAgICAiTiI6IDMxMzY0NDEsCiAgICAgICJXIjogMTA4NTE2MjU0LAogICAgICAiTCI6IDE3OTIyNTIsCiAgICAgICJzIjogNTc0MDM3NTQxNzcsCiAgICAgICJSIjogMjg4NjYsCiAgICAgICJoaXN0IjogWwogICAgICAgIFsKICAgICAgICAgIDEsCiAgICAgICAgICAxNjkwMTIwMjAxCiAgICAgICAgXSwKICAgICAgICBbCiAgICAgICAgICAzLAogICAgICAgICAgMTM1NjU4NgogICAgICAgIF0sCiAgICAgICAgWwogICAgICAgICAgNSwKICAgICAgICAgIDM1NDIwMAogICAgICAgIF0sCiAgICAgICAgWwogICAgICAgICAgNywKICAgICAgICAgIDM1ODA5NjIKICAgICAgICBdLAogICAgICAgIFsKICAgICAgICAgIDksCiAgICAgICAgICAxNTI2NjAyCiAgICAgICAgXSwKICAgICAgICBbCiAgICAgICAgICAxMSwKICAgICAgICAgIDUwOTMzOTYKICAgICAgICBdLAogICAgICAgIFsKICAgICAgICAgIDEzLAogICAgICAgICAgMjE2NDE2MgogICAgICAgIF0sCiAgICAgICAgWwogICAgICAgICAgMTUsCiAgICAgICAgICA3OTQ4MjQ4CiAgICAgICAgXSwKICAgICAgICBbCiAgICAgICAgICAxNywKICAgICAgICAgIDg0NzYwMDYKICAgICAgICBdLAogICAgICAgIFsKICAgICAgICAgIDE4LAogICAgICAgICAgNjI3Mjg4MgogICAgICAgIF0sCiAgICAgICAgWwogICAgICAgICAgMTksCiAgICAgICAgICAxNjM5OTQ2CiAgICAgICAgXSwKICAgICAgICBbCiAgICAgICAgICAyMSwKICAgICAgICAgIDY5MDY5MDAKICAgICAgICBdLAogICAgICAgIFsKICAgICAgICAgIDIzLAogICAgICAgICAgNjEyODAxNDIKICAgICAgICBdLAogICAgICAgIFsKICAgICAgICAgIDQzOSwKICAgICAgICAgIDYyNzI4ODIKICAgICAgICBdLAogICAgICAgIFsKICAgICAgICAgIDQ4MywKICAgICAgICAgIDYxMjgwMTQyCiAgICAgICAgXSwKICAgICAgICBbCiAgICAgICAgICA0ODUsCiAgICAgICAgICA1NDU0NjgKICAgICAgICBdLAogICAgICAgIFsKICAgICAgICAgIDQ4NywKICAgICAgICAgIDE3MzU1OAogICAgICAgIF0sCiAgICAgICAgWwogICAgICAgICAgNDg5LAogICAgICAgICAgMjkzOTg2CiAgICAgICAgXSwKICAgICAgICBbCiAgICAgICAgICA0OTEsCiAgICAgICAgICA1ODA4ODgKICAgICAgICBdLAogICAgICAgIFsKICAgICAgICAgIDQ5MywKICAgICAgICAgIDE0MTY4CiAgICAgICAgXSwKICAgICAgICBbCiAgICAgICAgICA0OTUsCiAgICAgICAgICAzMjIzMjIKICAgICAgICBdLAogICAgICAgIFsKICAgICAgICAgIDQ5NywKICAgICAgICAgIDE3NzEwCiAgICAgICAgXSwKICAgICAgICBbCiAgICAgICAgICA0OTksCiAgICAgICAgICAxMTI5ODk4CiAgICAgICAgXSwKICAgICAgICBbCiAgICAgICAgICA1MDEsCiAgICAgICAgICAxMjc1MTIKICAgICAgICBdLAogICAgICAgIFsKICAgICAgICAgIDUwMywKICAgICAgICAgIDQxMDg3MgogICAgICAgIF0sCiAgICAgICAgWwogICAgICAgICAgNTA1LAogICAgICAgICAgOTkxNzYKICAgICAgICBdLAogICAgICAgIFsKICAgICAgICAgIDUwNywKICAgICAgICAgIDExNTQ2OTIKICAgICAgICBdLAogICAgICAgIFsKICAgICAgICAgIDUwOSwKICAgICAgICAgIDMxNTIzOAogICAgICAgIF0sCiAgICAgICAgWwogICAgICAgICAgNTExLAogICAgICAgICAgMzc4OTk0CiAgICAgICAgXSwKICAgICAgICBbCiAgICAgICAgICA1MTMsCiAgICAgICAgICAxMDYyNjAKICAgICAgICBdLAogICAgICAgIFsKICAgICAgICAgIDUxNSwKICAgICAgICAgIDE1ODMyNzQKICAgICAgICBdLAogICAgICAgIFsKICAgICAgICAgIDUxNywKICAgICAgICAgIDYyNjkzNAogICAgICAgIF0sCiAgICAgICAgWwogICAgICAgICAgNTE5LAogICAgICAgICAgMjg1NDg1MgogICAgICAgIF0sCiAgICAgICAgWwogICAgICAgICAgNTIxLAogICAgICAgICAgMTM3MTEwODIKICAgICAgICBdLAogICAgICAgIFsKICAgICAgICAgIDUyMywKICAgICAgICAgIDQ2MjkzOTQKICAgICAgICBdLAogICAgICAgIFsKICAgICAgICAgIDUyNSwKICAgICAgICAgIDU2NTMwMzIKICAgICAgICBdLAogICAgICAgIFsKICAgICAgICAgIDUyNywKICAgICAgICAgIDYyMzM5MjAKICAgICAgICBdCiAgICAgIF0KICAgIH0sCiAgICAiZnVsbF9waHlzaWNhbF9xdWFsaWZpY2F0aW9uIjogZmFsc2UsCiAgICAicmVhc29uIjogIkV4YWN0IHN0YXJ0L3RhcmdldCBjb250YWlubWVudCBhbmQgcmV2ZXJzZS1zd2VlcCBuZXN0aW5nIHZlcmlmaWVkOyBnZW5lcmljLXBpdm90IGFuZCBjb21wbGV0ZSBmcmFtZSBjaGVja3Mgc3RpbGwgbmVlZGVkLiIsCiAgICAiZGF0YV9maWxlIjogImV4cGVyaW1lbnRzL3JvdW5kNy1yZXZpZXcvc2F0dXJhdGVkLUYyLmpzb24uZ3oiCiAgfSwKICAic2Vjb25kcyI6IDcxLjUwOTM0MzM4NTY5NjQxCn0K" + }, + "1b2e0f1a21949cebba8a8525bf86a66f28313d2c": { + "type": "tree", + "base64": "NDAwMDAgcHI5OQBr69eUBrskU62it3Ya7OE9PlO2lA==" + }, + "1d9e657c3481c544bbef103c7685010dd27cde9d": { + "type": "tree", + "base64": "MTAwNjQ0IGF1ZGl0X2V2aWRlbmNlLnB5AKKOJDwLNPamcQvm1SrAYhSKxjbSMTAwNjQ0IGNoZWNrX2FyaXRobWV0aWMucHkAMDqobtf1YksHzsNivcVj0grDBYAxMDA2NDQgY2hlY2tfY2FuZGlkYXRlX2ZyYW1lcy5weQC/KwpXyj7yXvuwVf6p5sZWjH6TXTEwMDY0NCBoaXN0b2dyYW1fZW5naW5lLnB5AH8+FTSRgdGr0AOOt6vVpJOgqUQsMTAwNjQ0IHF1YWxpZmljYXRpb24uanNvbgC2LngQD7hqn9EzSXwBiFGPUFamaDEwMDY0NCBzYXR1cmF0ZV9yZWFkb3V0cy5weQCqxg5CQwdXNd4O31x3U9E6xbx1zDEwMDY0NCBzYXR1cmF0ZWQtWi5qc29uLmd6ACR7ZrA06Dp5/xsNwJMuHtCgF3oPMTAwNjQ0IHNhdHVyYXRpb24tcmVzdWx0cy5qc29uABYyYDJbuYnrBTiwTInhDXDrCi+IMTAwNjQ0IHNjYWxhcl9lbmdpbmUucHkA/1yJAdN5/zl/GqKesKiHXxLFGEg0MDAwMCB2ZW5kb3IAUd61pln5zPFOzTkQMgmqPdRNoSY=" + }, + "1eae4789cb057317db87c18893197c376ff520fb": { + "type": "tree", + "base64": "MTAwNjQ0IFJFUE9SVC5tZACL9+OMlAFmlXr84LzFkNPsZ94OxTEwMDY0NCBjYW5kaWRhdGUtZnJhbWVzLWNoZWNrLmxvZwD21AXr1MZxTQ9/P/n+kbW3c1gHZjEwMDY0NCBjYW5kaWRhdGUtc2NhbGFyLXJlc3VsdHMuanNvbgCRWV4hSsMr509tugn9HaGQTIrTFTEwMDY0NCBxdWFsaWZpY2F0aW9uLXNhdHVyYXRlZC5qc29uABKmjsc3uYTr9g4QfgerPit+t0rRMTAwNjQ0IHJlc3VsdHMuanNvbgDCi1iz/BnJe0Z1sfjps2UcWdUdDDEwMDY0NCBzYXR1cmF0ZWQtYmFsYW5jZWQtY29tcGF0aWJpbGl0eS5qc29uAD1QvkcEVVsSwEY8SrBhL9FS7lpx" + }, + "2387c7171d080b0f281358b8fc44c759fff95f7e": { + "type": "tree", + "base64": "MTAwNjQ0IC5naXRhdHRyaWJ1dGVzAEGu8pD9DPGDjLDLoo4EqXtQboaSNDAwMDAgLmdpdGh1YgBVPkdbJROfXpbVOZ1gEe0soQuB7TEwMDY0NCAuZ2l0aWdub3JlAAxe+/HUWqdKo4X1hrBTxw4XCoMkMTAwNjQ0IENJVEFUSU9OLmNmZgBLDmUzQf0oKRGoDOTYfWQSy9i97zEwMDY0NCBDT05UUklCVVRJTkcubWQAQd78kCIr4mbHEIy3tvhowkWuiOwxMDA2NDQgQ09OVFJJQlVUT1JTLm1kANSQsPPGrVpVcsH3rgVecCwEBoRPMTAwNjQ0IExJQ0VOU0UAJh7rnp+LK0sNEZNm3amcb9fTXGQxMDA2NDQgTWFrZWZpbGUAdr5k8m86Qb6M4pOYXqWvgLnijBwxMDA2NDQgTk9USUNFALVlY3dYjylBDOQn9qNF7sNj1/h5MTAwNjQ0IFBBVENISU5HLm1kALYPPxAbvSM6UES3ohI+VQSk6AFhMTAwNjQ0IFJFQURNRS5tZABkImFawoW6hsGhV2dogMqVdk2cgjEwMDY0NCBTT1VSQ0VTLmpzb24AYJbVr/kO3v1DgGr25HD8VNenedU0MDAwMCBhcnRpZmFjdHMAfXF6FhMg3zzeLRYitg2qINpxU380MDAwMCBjZXJ0aWZpY2F0ZXMAw8cxfxc3Q6ugfbkpEm7FzMPbVH40MDAwMCBkb2NzAKZhKOgaKfxkr34J1IyMn4bxnWVaNDAwMDAgZm9ybWFsAHEYL44HbJQjNV/d6r9FGwyt6MWuNDAwMDAgbm90ZXMANv93/GSdOYgtn0mfY6I/TBZIeVM0MDAwMCBwYXRjaGVzAJS/+lmD/emP5dXj9YxIw+xhsqRPNDAwMDAgcmVmZXJlbmNlcwCbAG3k4efRj5q0EYIj7LQ5g6RdhDQwMDAwIHJlc2VhcmNoAJw1KEz9ZREL70l1pxwWe5IfYcWMNDAwMDAgc2NyaXB0cwBym834jGR2jkE0fddRVovq+jo4ajQwMDAwIHRlc3RzADstXX6oBrc8AtDflMHUqx0KRd2kNDAwMDAgdXBzdHJlYW0A5E05YhtY4rNR+RB7n6Fw1qjU/hw=" + }, + "2c583f6e8f2e30a6e5a809f94f4c56a84ee13338": { + "type": "tree", + "base64": "MTAwNjQ0IC5naXRhdHRyaWJ1dGVzAEGu8pD9DPGDjLDLoo4EqXtQboaSNDAwMDAgLmdpdGh1YgD+gO6CB2mjX/3rgkAwZbJ/pGOtnDEwMDY0NCAuZ2l0aWdub3JlAAxe+/HUWqdKo4X1hrBTxw4XCoMkMTAwNjQ0IENJVEFUSU9OLmNmZgBLDmUzQf0oKRGoDOTYfWQSy9i97zEwMDY0NCBDT05UUklCVVRJTkcubWQAQd78kCIr4mbHEIy3tvhowkWuiOwxMDA2NDQgQ09OVFJJQlVUT1JTLm1kANSQsPPGrVpVcsH3rgVecCwEBoRPMTAwNjQ0IExJQ0VOU0UAJh7rnp+LK0sNEZNm3amcb9fTXGQxMDA2NDQgTWFrZWZpbGUAhP6CkPNT81NaATEZXDXsoDwolgkxMDA2NDQgTk9USUNFALVlY3dYjylBDOQn9qNF7sNj1/h5MTAwNjQ0IFBBVENISU5HLm1kALYPPxAbvSM6UES3ohI+VQSk6AFhMTAwNjQ0IFJFQURNRS5tZAADXCWbaPSkzdhLNEUw6RjKBdSmwTEwMDY0NCBTT1VSQ0VTLmpzb24AYJbVr/kO3v1DgGr25HD8VNenedU0MDAwMCBhcnRpZmFjdHMAfXF6FhMg3zzeLRYitg2qINpxU380MDAwMCBjZXJ0aWZpY2F0ZXMAYyb6JQMWZh84wizhWNDQ/lEEvmE0MDAwMCBkb2NzAKZhKOgaKfxkr34J1IyMn4bxnWVaNDAwMDAgZm9ybWFsAHEYL44HbJQjNV/d6r9FGwyt6MWuNDAwMDAgbm90ZXMANv93/GSdOYgtn0mfY6I/TBZIeVM0MDAwMCBwYXRjaGVzAJS/+lmD/emP5dXj9YxIw+xhsqRPNDAwMDAgcmVmZXJlbmNlcwCbAG3k4efRj5q0EYIj7LQ5g6RdhDQwMDAwIHJlc2VhcmNoAIDJIi4cqt0YN3zyfFFTLTL3OMZKNDAwMDAgc2NyaXB0cwBym834jGR2jkE0fddRVovq+jo4ajQwMDAwIHRlc3RzADstXX6oBrc8AtDflMHUqx0KRd2kNDAwMDAgdXBzdHJlYW0A5E05YhtY4rNR+RB7n6Fw1qjU/hw=" + }, + "3b0165efb5ba44bf2708af40a09c66d4c1f80271": { + "type": "tree", + "base64": "MTAwNjQ0IFJvdW5kNy5sZWFuAC/BY5QVfy0FeQAC/HkjDmMr+Q4VMTAwNjQ0IHJvdW5kNy1oaXN0b2dyYW1zLmpzb24AzqqMARGzSHhEPQ5WHQK49yqX0t8=" + }, + "48f38239c186db7e4bd90bbf8139cebfedd98148": { + "type": "tree", + "base64": "NDAwMDAgcm91bmQ3LXJldmlldwAdnmV8NIHFRLvvEDx2hQEN0nzenTQwMDAwIHNhdHVyYXRpb24tcmV2aWV3AJc6zWDHm13Bz8bqVEN1yHbm0sX4" + }, + "51deb5a659f9ccf14ecd39103209aa3dd44da126": { + "type": "tree", + "base64": "MTAwNjQ0IExJQ0VOU0UAV7yIoVoO6CZsJZsmZ+ZGCNP34pIxMDA2NDQgTk9USUNFAO3D7+ci7Rrmn6mGVV7AKQethUNMMTAwNjQ0IFJFQURNRS5tZAB0fHBTcbbWqqLHM/TyuHRg0kWEJzQwMDAwIGNlcnRpZmljYXRlcwBTJnqMuhqXTIPemZHHV0h5vZ/z7DQwMDAwIGluZGVwZW5kZW50AIwgBoxF5TQyxGp7sDbCJujex3+JNDAwMDAgbGVhbgA7AWXvtbpEvycIr0CgnGbUwfgCcTQwMDAwIG5vdGVzAOInVgi9md7cFialO8Fhses7/RsuNDAwMDAgc2NyaXB0cwBuwrwWZiAOeWDXHIE1wcQacNqLOA==" + }, + "53267a8cba1a974c83de9991c7574879bd9ff3ec": { + "type": "tree", + "base64": "NDAwMDAgcm91bmQ3AN4/zmjYylwpheOv6ptHdIJGJZbW" + }, + "56b66d58297deca1d7dd130247d720e960f77a37": { + "type": "commit", + "base64": "dHJlZSBkZTVhYjQ4OWNmOWYxNGI2OWRhYjQzZWI5OGY2ZjZhYjJlMDI4ODAwCnBhcmVudCA3ODFkYjdkMTUxOTZjYzgwZDRjMjdhZDk2YzkyYWRkYmEyNWZiZDNiCmF1dGhvciBEb3VnbGFzIFIuIENvbGtpdHQgPGRvdWdsYXMuY29sa2l0dEBnbWFpbC5jb20+IDE3OTE0ODYyMzcgLTA0MDAKY29tbWl0dGVyIERvdWdsYXMgUi4gQ29sa2l0dCA8ZG91Z2xhcy5jb2xraXR0QGdtYWlsLmNvbT4gMTc5MTQ4NjIzNyAtMDQwMAoKUmV2aWV3IGFuZCBjcmVkaXQgS29zdGVycyBhbmQgQWJlIGhpc3RvcmljYWwgY2FuZGlkYXRlcwo=" + }, + "5d7098743ed974e181564e14d01b120cbdbb11f5": { + "type": "tree", + "base64": "NDAwMDAgY2xpbWJlZC00OAAhDnoIV8m6QYNRG3L4s8y85eDy9jQwMDAwIGNvcGllZC1maXhlZC1yZXZlcnNlZABxmk57pJn99OKzO6sPBEiHHqRchDQwMDAwIGNvcGllZC1maXhlZADoL5O3sUT1FdUrAKjU2s2iaSm16zQwMDAwIGNvcGllZC1yZXZlcnNlZACTgQ6qxkQWtJfWi8uPV8gtpJ9CJTQwMDAwIGVubGFyZ2VkLXBvc2l0aXZlLWZyYW1lLW5ldHdvcmtzAMMLipaoF1Lq45bXfGJPxE0wzGH5NDAwMDAgZ2F1c3NpYW4tcGFyaXR5LXN5bnRoZXNpcwDs+8z54KmiDGGf8PPFa/aHoGkkmzQwMDAwIGdhdXNzaWFuLXBhcml0eQCfyoPokyVP2gA2l4nCGYbch2tN7DQwMDAwIGpvaW50LWR1YWwAK86zo2rJTlZZOpyJ+7Vx3MHMlyI0MDAwMCBtYXRyaXgtZXhwb25lbnQtc3ludGhlc2lzAKfDCxRiuG7mr383KzIkuRbMLPr+NDAwMDAgcGFpci1hc3NlbWJseQCDeS26n6jZmE/dzWTFoUu18G586jQwMDAwIHBhcmFsbGVsLWFubm91bmNlbWVudHMAIUlhL8XbfvY8R2i85NbcAiwokxo0MDAwMCBwb3NpdGl2ZS1za2lwAN1iqyjBwsBJN+g/k7LKqIsa9u2/NDAwMDAgc2tpcC1jbG9uZXMAsrAMU+jJbCIOO0zRMSYFC0uYoy40MDAwMCBza2lwLXN0cmlwcwAdXgzAt89dj25cLgWi9j/mIadrdTQwMDAwIHNraXAtc3VmZml4AG7crUvPhKk5bHvRGmLEkCkoJ0RvNDAwMDAgc3BsaXQtc2tpcAAomaMJJwlR02SAJft+QXOnhmvJ4TQwMDAwIHN3YXBuaWwtcGFyYWxsZWwAgC9GwQsviuqtUm3zrV14mjzy39Y=" + }, + "5fc6d40c1b1cf671787795ab3f987a74220014d6": { + "type": "tree", + "base64": "MTAwNjQ0IGNoZWNrX3Jlc2VhcmNoLnB5AG1pvxumygnpCc3pEYIgmd+vO4mt" + }, + "6bebd79406bb2453ada2b7761aece13d3e53b694": { + "type": "tree", + "base64": "MTAwNjQ0IC5naXRpZ25vcmUAI8Ywcvpx3Mz+jQSeAx29sW7eIaYxMDA2NDQgTElDRU5TRQBXvIihWg7oJmwlmyZn5kYI0/fikjEwMDY0NCBNQU5JRkVTVC5qc29uAL9c2XoPPSRimny6Gq8GH/Doe9wKMTAwNjQ0IE5PVElDRQDoaRzAfdU9z+dNoTInk7Joj8pNUTEwMDY0NCBQUk9WRU5BTkNFLmpzb24AGpPcq1QgL5JT9DvIX053xLa8F7QxMDA2NDQgUkVBRE1FLm1kAFIzID75vYfETp3SW3NgnqD2PVCfNDAwMDAgZXhwZXJpbWVudHMASPOCOcGG235L2Qu/gTnOv+3ZgUg0MDAwMCBoaXN0b3JpY2FsAB6uR4nLBXMX24fBiJMZfDdv9SD7NDAwMDAgc2NyaXB0cwBfxtQMGxz2cXh3las/mHp0IgAU1jEwMDY0NCB2ZXJpZnkucHkAYtpkLB7rpSq2BVbMVq9kmp2YP8g=" + }, + "6ec2bc1666200e7960d71c8135c1c41a70da8b38": { + "type": "tree", + "base64": "MTAwNjQ0IGNlcnRpZmljYXRlX3JvdW5kMy5weQD1rFQIKskqIaznMjqpSPZeMpr2VzEwMDY0NCBjZXJ0aWZpY2F0ZV9yb3VuZDcucHkAzoIlxZnovrM6LRYGE+G6RhjzHTM=" + }, + "75ab1f70d146c21c7611ce0df9eb5f645f51ac0e": { + "type": "commit", + "base64": "dHJlZSAyMzg3YzcxNzFkMDgwYjBmMjgxMzU4YjhmYzQ0Yzc1OWZmZjk1ZjdlCnBhcmVudCAwMWMzOWVlOWJkYzlkYTI5OGY2OGU4YTQyNGJiMmE4YWQ1NTc0ZDczCmF1dGhvciBSb2hhbiBBcnVuIDxyb2hhbmFydW5AZ21haWwuY29tPiAxNzkxNTA0ODk0IC0wNDAwCmNvbW1pdHRlciBSb2hhbiBBcnVuIDxyb2hhbmFydW5AZ21haWwuY29tPiAxNzkxNTA0ODk0IC0wNDAwCgpSZWNvcmQgc3VjY2Vzc2Z1bCBmdWxsIHZlcmlmaWNhdGlvbiBmb3IgUFIgMTAzCg==" + }, + "80c9222e1caadd18377cf27c51532d32f738c64a": { + "type": "tree", + "base64": "NDAwMDAgY2xpbWJlZC00OAAhDnoIV8m6QYNRG3L4s8y85eDy9jQwMDAwIGNvcGllZC1maXhlZC1yZXZlcnNlZABxmk57pJn99OKzO6sPBEiHHqRchDQwMDAwIGNvcGllZC1maXhlZADoL5O3sUT1FdUrAKjU2s2iaSm16zQwMDAwIGNvcGllZC1yZXZlcnNlZACTgQ6qxkQWtJfWi8uPV8gtpJ9CJTQwMDAwIGVubGFyZ2VkLXBvc2l0aXZlLWZyYW1lLW5ldHdvcmtzAMMLipaoF1Lq45bXfGJPxE0wzGH5NDAwMDAgZ2F1c3NpYW4tcGFyaXR5LXN5bnRoZXNpcwDs+8z54KmiDGGf8PPFa/aHoGkkmzQwMDAwIGdhdXNzaWFuLXBhcml0eQCfyoPokyVP2gA2l4nCGYbch2tN7DQwMDAwIGpvaW50LWR1YWwAK86zo2rJTlZZOpyJ+7Vx3MHMlyI0MDAwMCBtYXRyaXgtZXhwb25lbnQtc3ludGhlc2lzAKfDCxRiuG7mr383KzIkuRbMLPr+NDAwMDAgbm9uZGVnZW5lcmF0ZS1yZWFkb3V0LXNhdHVyYXRpb24Aa+vXlAa7JFOtord2GuzhPT5TtpQ0MDAwMCBwYWlyLWFzc2VtYmx5AIN5LbqfqNmYT93NZMWhS7XwbnzqNDAwMDAgcGFyYWxsZWwtYW5ub3VuY2VtZW50cwAhSWEvxdt+9jxHaLzk1twCLCiTGjQwMDAwIHBvc2l0aXZlLXNraXAA3WKrKMHCwEk36D+Tssqoixr27b80MDAwMCBza2lwLWNsb25lcwCysAxT6MlsIg47TNExJgULS5ijLjQwMDAwIHNraXAtc3RyaXBzAB1eDMC3z12PblwuBaL2P+Yhp2t1NDAwMDAgc2tpcC1zdWZmaXgAbtytS8+EqTlse9EaYsSQKSgnRG80MDAwMCBzcGxpdC1za2lwACiZowknCVHTZIAl+35Bc6eGa8nhNDAwMDAgc3dhcG5pbC1wYXJhbGxlbACAL0bBCy+K6q1SbfOtXXiaPPLf1g==" + }, + "8c20068c45e53432c46a7bb036c226e8dec77f89": { + "type": "tree", + "base64": "NDAwMDAgZGVmZXJyZWQtcmVhZG91dACetiZksas3AeJfO49HiyAWGx9IczQwMDAwIHR3by1zdGFnZS1iaXQA0TEPTqE/loJwQYYh2PvN8X5AY+k=" + }, + "973acd60c79b5dc1cfc6ea544375c876e6d2c5f8": { + "type": "tree", + "base64": "MTAwNjQ0IHJldmlldy5weQDbdtNeHvwwx+9H65hObJ3l65eKoA==" + }, + "9c35284cfd65110bef4975a71c167b921f61c58c": { + "type": "tree", + "base64": "NDAwMDAgY2xpbWJlZC00OAAhDnoIV8m6QYNRG3L4s8y85eDy9jQwMDAwIGNvcGllZC1maXhlZC1yZXZlcnNlZABxmk57pJn99OKzO6sPBEiHHqRchDQwMDAwIGNvcGllZC1maXhlZADoL5O3sUT1FdUrAKjU2s2iaSm16zQwMDAwIGNvcGllZC1yZXZlcnNlZACTgQ6qxkQWtJfWi8uPV8gtpJ9CJTQwMDAwIGRlZmVycmVkLWJhbGFuY2VkAPNBPGDsVB1yQ3s2w5//bHwhwHAqNDAwMDAgZGVmZXJyZWQtc2lnbmVkAO6IwIpdGEz5PJItR0/+b/i69vG7NDAwMDAgZW5sYXJnZWQtcG9zaXRpdmUtZnJhbWUtbmV0d29ya3MAwwuKlqgXUurjltd8Yk/ETTDMYfk0MDAwMCBnYXVzc2lhbi1wYXJpdHktc3ludGhlc2lzAOz7zPngqaIMYZ/w88Vr9oegaSSbNDAwMDAgZ2F1c3NpYW4tcGFyaXR5AJ/Kg+iTJU/aADaXicIZhtyHa03sNDAwMDAgam9pbnQtZHVhbADgurXKqzXYJ+mdFPXvCahTbvVsGjQwMDAwIG1hdHJpeC1leHBvbmVudC1zeW50aGVzaXMAp8MLFGK4buavfzcrMiS5Fsws+v40MDAwMCBwYWlyLWFzc2VtYmx5AIN5LbqfqNmYT93NZMWhS7XwbnzqNDAwMDAgcGFyYWxsZWwtYW5ub3VuY2VtZW50cwAhSWEvxdt+9jxHaLzk1twCLCiTGjQwMDAwIHBvc2l0aXZlLXNraXAA3WKrKMHCwEk36D+Tssqoixr27b80MDAwMCBzYXR1cmF0ZWQtYmFsYW5jZWQAtDUnH2O5dAJmMHHOcwRTF/HsPJs0MDAwMCBza2lwLWNsb25lcwCysAxT6MlsIg47TNExJgULS5ijLjQwMDAwIHNraXAtc3RyaXBzAB1eDMC3z12PblwuBaL2P+Yhp2t1NDAwMDAgc2tpcC1zdWZmaXgAbtytS8+EqTlse9EaYsSQKSgnRG80MDAwMCBzcGxpdC1za2lwACiZowknCVHTZIAl+35Bc6eGa8nhNDAwMDAgc3dhcG5pbC1wYXJhbGxlbACAL0bBCy+K6q1SbfOtXXiaPPLf1g==" + }, + "9eb62664b1ab3701e25f3b8f478b20161b1f4873": { + "type": "tree", + "base64": "MTAwNjQ0IGNoZWNrX2ZyYW1lcy5weQDssf304BTnzZZRV2vBeAZQ0UEtwjEwMDY0NCBjaGVja19saWZ0ZWQucHkAcAUU61stZ+q71MOSRIZf534pWd0xMDA2NDQgY2hlY2tfc3RhaXIucHkA9FxBzF9Hb1Wzmd0dQ08DB3+LlP4xMDA2NDQgY2hlY2tfd29yZC5weQBnRXHgBBw+ePEq2hO8bPOxQC6nmTEwMDY0NCBkZWZlcnJlZC5weQDQRRJiF2cNyC51FSMPncBVrJ3ERDEwMDY0NCBsaW5hbGcucHkABvV3Qs62+g2O5jIgCvWg6HXpPEo=" + }, + "aabf3d6fe36a0d3320e0081ef556bb94ed8bc31f": { + "type": "blob", + "base64": "ewogICJoIjogMjMsCiAgInJvbGVzIjogMjg4NjYsCiAgImZvcm1hbF9iYXNpcyI6IDMyNDA4LAogICJldmVudHMiOiAxMDgwNjE2LAogICJmcmFtZV9rZXlzIjogOTAxNzMsCiAgInJhbmtfaGlzdG9ncmFtcyI6IHsKICAgICJhdXgiOiB7CiAgICAgICIxIjogNTUzNDksCiAgICAgICI1IjogNjE1MSwKICAgICAgIjEwIjogMTYyLAogICAgICAiNCI6IDExMjQ1LAogICAgICAiMiI6IDY0ODk1LAogICAgICAiMyI6IDEzOTA3LAogICAgICAiNiI6IDE2MTcsCiAgICAgICI4IjogMTI0MywKICAgICAgIjkiOiA0NTgsCiAgICAgICIxMiI6IDIwOCwKICAgICAgIjE2IjogMjA4LAogICAgICAiMTgiOiA1OTksCiAgICAgICIyMSI6IDQxMywKICAgICAgIjciOiA4ODMsCiAgICAgICIxMSI6IDI5OSwKICAgICAgIjE0IjogMzgsCiAgICAgICIxNSI6IDY0OSwKICAgICAgIjEzIjogMjAyLAogICAgICAiMTciOiAxMzA5LAogICAgICAiMTkiOiA1MzMsCiAgICAgICIyMCI6IDIzMTAKICAgIH0sCiAgICAiZGF0YSI6IHsKICAgICAgIjQiOiAxOTk1LAogICAgICAiNSI6IDU2OSwKICAgICAgIjMiOiAxMTY2LAogICAgICAiMSI6IDExNDE0LAogICAgICAiMiI6IDI0MTYsCiAgICAgICI2IjogNDQzLAogICAgICAiNyI6IDI2MiwKICAgICAgIjgiOiAzODIsCiAgICAgICI5IjogMTMwLAogICAgICAiMTAiOiA4NiwKICAgICAgIjExIjogOTMsCiAgICAgICIxMiI6IDk3LAogICAgICAiMTMiOiA2NSwKICAgICAgIjE0IjogMjYsCiAgICAgICIxNSI6IDQzLAogICAgICAiMTYiOiAyMTgsCiAgICAgICIxNyI6IDM4LAogICAgICAiMTgiOiA4LAogICAgICAiMTkiOiAxNTQ3LAogICAgICAiMjEiOiAxLAogICAgICAiMjIiOiAyCiAgICB9LAogICAgImNlbnRlciI6IHsKICAgICAgIjIyIjogMjMKICAgIH0KICB9LAogICJmYW5fZ3JvdXBzX3Jlb3JkZXJlZF9pbnRlcm5hbGx5IjogWwogICAgNDU4NTksCiAgICA0NTg2MiwKICAgIDQ2MTM5LAogICAgNDYxNDIsCiAgICA0NjQwOSwKICAgIDQ2NDEyLAogICAgNDY2ODEsCiAgICA0NjY4NCwKICAgIDQ2OTQzLAogICAgNDY5NDYsCiAgICA0NzIwNywKICAgIDQ3MjEwLAogICAgNDc0NjEsCiAgICA0NzQ2NCwKICAgIDQ3NzE3LAogICAgNDc3MjAsCiAgICA0Nzk2MywKICAgIDQ3OTY2LAogICAgNDgyMTEsCiAgICA0ODIxNCwKICAgIDQ4NDQ5LAogICAgNDg0NTIsCiAgICA0ODY4OSwKICAgIDQ4NjkyLAogICAgNDg5MTksCiAgICA0ODkyMiwKICAgIDQ5MTUxLAogICAgNDkxNTQsCiAgICA0OTM3MywKICAgIDQ5Mzc2LAogICAgNDk1OTcsCiAgICA0OTYwMCwKICAgIDQ5ODExLAogICAgNDk4MTQsCiAgICA1MDAyNywKICAgIDUwMDMwLAogICAgNTAyMzMsCiAgICA1MDIzNiwKICAgIDUwNDQxLAogICAgNTA0NDQsCiAgICA1MDYzOSwKICAgIDUwNjQyLAogICAgNTA4MzksCiAgICA1MDg0MiwKICAgIDUxMDI5LAogICAgNTEwMzIsCiAgICA1ODEzNiwKICAgIDU4MTM4LAogICAgNTgxNDAsCiAgICA1ODE0MiwKICAgIDU4MTQ0LAogICAgNTg1NzIsCiAgICA1ODU3NCwKICAgIDU4NTc2LAogICAgNTg1NzgsCiAgICA1ODU4MCwKICAgIDU4OTg4LAogICAgNTg5OTAsCiAgICA1ODk5MiwKICAgIDU4OTk0LAogICAgNTg5OTYsCiAgICA1OTQyMCwKICAgIDU5NDIyLAogICAgNTk0MjQsCiAgICA1OTQyNiwKICAgIDU5NDI4LAogICAgNTk4MzIsCiAgICA1OTgzNCwKICAgIDU5ODM2LAogICAgNTk4MzgsCiAgICA1OTg0MCwKICAgIDYwMjYwLAogICAgNjAyNjIsCiAgICA2MDI2NCwKICAgIDYwMjY2LAogICAgNjAyNjgsCiAgICA2MDY2OCwKICAgIDYwNjcwLAogICAgNjA2NzIsCiAgICA2MDY3NCwKICAgIDYwNjc2LAogICAgNjEwOTIsCiAgICA2MTA5NCwKICAgIDYxMDk2LAogICAgNjEwOTgsCiAgICA2MTEwMCwKICAgIDYxNDk2LAogICAgNjE0OTgsCiAgICA2MTUwMCwKICAgIDYxNTAyLAogICAgNjE1MDQsCiAgICA2MTkxNiwKICAgIDYxOTE4LAogICAgNjE5MjAsCiAgICA2MTkyMiwKICAgIDYxOTI0LAogICAgNjIzMTYsCiAgICA2MjMxOCwKICAgIDYyMzIwLAogICAgNjIzMjIsCiAgICA2MjMyNCwKICAgIDYyNzMyLAogICAgNjI3MzQsCiAgICA2MjczNiwKICAgIDYyNzM4LAogICAgNjI3NDAsCiAgICA2MzEyOCwKICAgIDYzMTMwLAogICAgNjMxMzIsCiAgICA2MzEzNCwKICAgIDYzMTM2LAogICAgNjM1NDAsCiAgICA2MzU0MiwKICAgIDYzNTQ0LAogICAgNjM1NDYsCiAgICA2MzU0OCwKICAgIDYzOTMyLAogICAgNjM5MzQsCiAgICA2MzkzNiwKICAgIDYzOTM4LAogICAgNjM5NDAsCiAgICA2NDM0MCwKICAgIDY0MzQyLAogICAgNjQzNDQsCiAgICA2NDM0NiwKICAgIDY0MzQ4LAogICAgNjQ3MjgsCiAgICA2NDczMCwKICAgIDY0NzMyLAogICAgNjQ3MzQsCiAgICA2NDczNiwKICAgIDY1MTMyLAogICAgNjUxMzQsCiAgICA2NTEzNiwKICAgIDY1MTM4LAogICAgNjUxNDAsCiAgICA2NTUxNiwKICAgIDY1NTE4LAogICAgNjU1MjAsCiAgICA2NTUyMiwKICAgIDY1NTI0LAogICAgNjU5MTYsCiAgICA2NTkxOCwKICAgIDY1OTIwLAogICAgNjU5MjIsCiAgICA2NTkyNCwKICAgIDY2Mjk2LAogICAgNjYyOTgsCiAgICA2NjMwMCwKICAgIDY2MzAyLAogICAgNjYzMDQsCiAgICA2NjY5MiwKICAgIDY2Njk0LAogICAgNjY2OTYsCiAgICA2NjY5OCwKICAgIDY2NzAwLAogICAgNjcwNjgsCiAgICA2NzA3MCwKICAgIDY3MDcyLAogICAgNjcwNzQKICBdLAogICJjb21wbGV0ZV9mb3J3YXJkX0YyIjogdHJ1ZSwKICAiY29tcGxldGVfcmVmbGVjdGVkX0YyIjogdHJ1ZSwKICAicmVmbGVjdGVkX2ZyYW1lX2NvbnRpbnVpdHkiOiB0cnVlLAogICJhbGxfc2NhbGFyX2dhdGVzX2VxdWFsX2ZyYW1lX2tleXMiOiB0cnVlLAogICJleHRlcmlvcl9mb3JtdWxhIjogIkUxPUktSV90ZW5zb3JfUStzaWdtYV90ZW5zb3JfUTsgRTI9KEktUClfdGVuc29yX0krUF90ZW5zb3Jfc2lnbWE7IHJhbms9bS1oK2RpbShzaWdtYSkiLAogICJoaXN0b2dyYW1fbWF0Y2hlc19leHRlcm5hbCI6IHRydWUsCiAgImhpc3RvZ3JhbSI6IHsKICAgICIxIjogMTY5MDEyMDIwMSwKICAgICIzIjogMTM1NjU4NiwKICAgICIxOSI6IDE2Mzk5NDYsCiAgICAiMTciOiA4NDc2MDA2LAogICAgIjE1IjogNzk0ODI0OCwKICAgICIxMyI6IDIxNjQxNjIsCiAgICAiMTEiOiA1MDkzMzk2LAogICAgIjciOiAzNTgwOTYyLAogICAgIjIxIjogNjkwNjkwMCwKICAgICI5IjogMTUyNjYwMiwKICAgICI1IjogMzU0MjAwLAogICAgIjQ4MyI6IDYxMjgwMTQyLAogICAgIjIzIjogNjEyODAxNDIsCiAgICAiNTI1IjogNTY1MzAzMiwKICAgICI1MjciOiA2MjMzOTIwLAogICAgIjQ4OSI6IDI5Mzk4NiwKICAgICI1MjEiOiAxMzcxMTA4MiwKICAgICI1MjMiOiA0NjI5Mzk0LAogICAgIjQ5MSI6IDU4MDg4OCwKICAgICI0ODUiOiA1NDU0NjgsCiAgICAiNDg3IjogMTczNTU4LAogICAgIjQ5MyI6IDE0MTY4LAogICAgIjQ5OSI6IDExMjk4OTgsCiAgICAiNDk1IjogMzIyMzIyLAogICAgIjUwNSI6IDk5MTc2LAogICAgIjUwMyI6IDQxMDg3MiwKICAgICI1MDEiOiAxMjc1MTIsCiAgICAiNTA3IjogMTE1NDY5MiwKICAgICI1MDkiOiAzMTUyMzgsCiAgICAiNDk3IjogMTc3MTAsCiAgICAiNTEzIjogMTA2MjYwLAogICAgIjUxNyI6IDYyNjkzNCwKICAgICI1MTUiOiAxNTgzMjc0LAogICAgIjUxMSI6IDM3ODk5NCwKICAgICI1MTkiOiAyODU0ODUyLAogICAgIjQzOSI6IDYyNzI4ODIsCiAgICAiMTgiOiA2MjcyODgyCiAgfSwKICAicmVjdXJzaXZlX3JhbmsiOiA1NzQwMzc1NDE3NywKICAiZWxhcHNlZCI6IDEyLjMwMDQ2Njg3NDk2MzYwNCwKICAibGltaXRfc2Vjb25kcyI6IDE4MCwKICAiZXhhY3RfY2hhaW5fZ2VvbWV0cnkiOiAiUmVsaWVzIG9uIHNlcGFyYXRlbHkgcmVwbGF5ZWQgcGlubmVkIGNoZWNrX2ZyYW1lcyBhbmQgY2hlY2tfbGlmdGVkLiBSYW5rIGxhYmVscyBhbG9uZSBkbyBub3QgcHJvdmUgZ2VvbWV0cnkuIiwKICAic2NvcGUiOiAiRXhwbGljaXQgb25lLWF4aXMgZm9yd2FyZC9yZWZsZWN0ZWQgZXZlbnRzLCBzY2FsYXIgY29tcGxldGUgYmFzaXMgYW5kIGV4YWN0IGFjY291bnRpbmcuIFRlbnNvciBlbmRwb2ludCBpZGVudGl0aWVzIHByb3ZlZCBzZXBhcmF0ZWx5OyBmdWxsIGNvbXBsZXgvdGFwZS9wcmVjaXNpb24gYW5kIGZpbmFsIGFzc2VtYmx5IGludGVncmF0aW9uIG5vdCBlc3RhYmxpc2hlZC4iLAogICJuZXdfbXVsdGlwbGljYXRpb25fYm91bmQiOiBmYWxzZQp9Cg==" + }, + "b435271f63b97402663071ce73045317f1ec3c9b": { + "type": "tree", + "base64": "MTAwNjQ0IFBST09GLm1kAL1vUKvuXIwm0iY7fhzWOpIL0hRyMTAwNjQ0IFJFQURNRS5tZADEP4BCVBTY78crDEk3ObrlSHlIizEwMDY0NCBTT1VSQ0UuanNvbgAXd+JyxKEMdO5QI2lcCHKfFB3m/DEwMDY0NCBiaXQtbGVkZ2VyLmpzb24Aqr89b+NqDTMg4Age9Va7lO2Lwx8xMDA2NDQgY2VydGlmaWNhdGUuanNvbgAhIdMqXxnjruSIOnfss+Vu19J/tDEwMDY0NCBmb2N1c2VkLXZhbGlkYXRpb24uanNvbgCCCP38sqCuIeA84JEF2zh00F7WTDEwMDY0NCBpbmRlcGVuZGVudC1sZWRnZXItdmFsaWRhdGlvbi5qc29uAB0yQTpldWW5PIQZV4Az6edgJ9jiMTAwNjQ0IGluZGVwZW5kZW50LXByOTktdmFsaWRhdGlvbi5qc29uAAg5rzeppxEKZTOZwYk7wDnM5D3NMTAwNjQ0IHRlc3RfY29udHJvbHMucHkA72aStpZQ0WUWJXZejhkqYnaMXLExMDA2NDQgdmFsaWRhdGlvbi5qc29uAIIU3P9AfafIRGHvCAa91UMspDlDNDAwMDAgdmVuZG9yABsuDxohlJzruoqFJb+Gpm8oMT0sMTAwNjQ0IHZlcmlmeS5weQCSWcATkzCuCx99GLgK5kp95ekvGA==" + }, + "b62e78100fb86a9fd133497c0188518f5056a668": { + "type": "blob", + "base64": "ewogICJzY2hlbWEiOiAxLAogICJzdGF0dXMiOiAidmVyaWZpZWQgY29uZGl0aW9uYWwgZmluaXRlIHdpdG5lc3Mgd2l0aCBhcml0aG1ldGljIHJlZmluZW1lbnQiLAogICJzb3VyY2UiOiB7CiAgICAicmVwb3NpdG9yeSI6ICJTd2FwbmlsLWphaW4vaW50ZWdlci1tdWx0LWthcHBhIiwKICAgICJjb21taXQiOiAiNzQxZTdhYTA3ODM5MjU1MzgxNWRmNzkyNmVlMTdhYzVlMjVhOGMzOCIsCiAgICAiZ2l0X2Jsb2Jfc2hhMSI6IHsKICAgICAgIndpdG5lc3NfMjMuanNvbi5neiI6ICIzZDg2ZjgzYjg3MWJhMDdjM2IxNTYyYWE2ZDk1M2FlODZiOTc1MGJhIiwKICAgICAgImRlZmVycmVkXzIzLmpzb24uZ3oiOiAiNGE0NDMxYmQ0MjVhYTQ0OTlmMjVlNjdkZjRlMGQyY2RkZDdkZjE1YyIKICAgIH0KICB9LAogICJldmlkZW5jZSI6IHsKICAgICJleGFjdF9iYXNpc19yZXBsYXkiOiB0cnVlLAogICAgImV4YWN0X2Jhc2lzX2ZpZWxkIjogIkYyIiwKICAgICJiYXNpc19jb2x1bW5zIjogMzA2MzcsCiAgICAiZXhhY3RfZnJhbWVfcHJvZmlsZSI6IHRydWUsCiAgICAiZnJhbWVfY29udGFpbm1lbnRfZmllbGQiOiAiUSIsCiAgICAiZ2VuZXJpY19waXZvdHMiOiAidHdvIGNvbmp1Z2F0aW9ucyBhdCBhIGZpeGVkIGludGVnZXIgcG9pbnQsIHByb3ZlZCB2aWEgcmFuayBtb2R1bG8gMl4zMS0xIiwKICAgICJub25kZWdlbmVyYWN5IjogIkdyYW0gZGV0ZXJtaW5hbnQgbm9uemVybyBtb2R1bG8gMl4zMS0xIGltcGxpZXMgbm9uemVybyBvdmVyIFEiLAogICAgImhpc3RvZ3JhbV9lcXVhbHNfcGlubmVkIjogdHJ1ZSwKICAgICJleGFjdF9tb21lbnQiOiB0cnVlLAogICAgImV4YWN0X2Fzc2VtYmx5IjogdHJ1ZQogIH0sCiAgImhpc3RvZ3JhbSI6IHsKICAgICJoIjogMjMsCiAgICAibSI6IDUyOSwKICAgICJ2IjogMTc3MSwKICAgICJOIjogMzEzNjQ0MSwKICAgICJXIjogMTA4NTE2MjU0LAogICAgIkwiOiAxNzkyMjUyLAogICAgInMiOiA1NzQwMzc1NDE3NywKICAgICJSIjogMjg4NjYsCiAgICAiaGlzdCI6IFsKICAgICAgWwogICAgICAgIDEsCiAgICAgICAgMTY5MDI5NzMwMQogICAgICBdLAogICAgICBbCiAgICAgICAgMywKICAgICAgICAxMzU2NTg2CiAgICAgIF0sCiAgICAgIFsKICAgICAgICA1LAogICAgICAgIDM1NDIwMAogICAgICBdLAogICAgICBbCiAgICAgICAgNywKICAgICAgICAzNTgwOTYyCiAgICAgIF0sCiAgICAgIFsKICAgICAgICA5LAogICAgICAgIDE1MjY2MDIKICAgICAgXSwKICAgICAgWwogICAgICAgIDExLAogICAgICAgIDUwOTMzOTYKICAgICAgXSwKICAgICAgWwogICAgICAgIDEzLAogICAgICAgIDIxNjQxNjIKICAgICAgXSwKICAgICAgWwogICAgICAgIDE1LAogICAgICAgIDc5NDgyNDgKICAgICAgXSwKICAgICAgWwogICAgICAgIDE3LAogICAgICAgIDg0NzYwMDYKICAgICAgXSwKICAgICAgWwogICAgICAgIDE4LAogICAgICAgIDYyNzI4ODIKICAgICAgXSwKICAgICAgWwogICAgICAgIDE5LAogICAgICAgIDE2Mzk5NDYKICAgICAgXSwKICAgICAgWwogICAgICAgIDIxLAogICAgICAgIDY5MDY5MDAKICAgICAgXSwKICAgICAgWwogICAgICAgIDIzLAogICAgICAgIDYxMjgwMTQyCiAgICAgIF0sCiAgICAgIFsKICAgICAgICA0MzksCiAgICAgICAgNjI3Mjg4MgogICAgICBdLAogICAgICBbCiAgICAgICAgNDgzLAogICAgICAgIDYxMjgwMTQyCiAgICAgIF0sCiAgICAgIFsKICAgICAgICA0ODUsCiAgICAgICAgNTQ1NDY4CiAgICAgIF0sCiAgICAgIFsKICAgICAgICA0ODcsCiAgICAgICAgMTczNTU4CiAgICAgIF0sCiAgICAgIFsKICAgICAgICA0ODksCiAgICAgICAgMjkzOTg2CiAgICAgIF0sCiAgICAgIFsKICAgICAgICA0OTEsCiAgICAgICAgNTgwODg4CiAgICAgIF0sCiAgICAgIFsKICAgICAgICA0OTMsCiAgICAgICAgMTQxNjgKICAgICAgXSwKICAgICAgWwogICAgICAgIDQ5NSwKICAgICAgICAzMjIzMjIKICAgICAgXSwKICAgICAgWwogICAgICAgIDQ5NywKICAgICAgICAxNzcxMAogICAgICBdLAogICAgICBbCiAgICAgICAgNDk5LAogICAgICAgIDExMjk4OTgKICAgICAgXSwKICAgICAgWwogICAgICAgIDUwMSwKICAgICAgICAxMjc1MTIKICAgICAgXSwKICAgICAgWwogICAgICAgIDUwMywKICAgICAgICA0MTA4NzIKICAgICAgXSwKICAgICAgWwogICAgICAgIDUwNSwKICAgICAgICA5OTE3NgogICAgICBdLAogICAgICBbCiAgICAgICAgNTA3LAogICAgICAgIDExODY1NzAKICAgICAgXSwKICAgICAgWwogICAgICAgIDUwOSwKICAgICAgICAzNDAwMzIKICAgICAgXSwKICAgICAgWwogICAgICAgIDUxMSwKICAgICAgICAzMjIzMjIKICAgICAgXSwKICAgICAgWwogICAgICAgIDUxMywKICAgICAgICAxMDYyNjAKICAgICAgXSwKICAgICAgWwogICAgICAgIDUxNSwKICAgICAgICAxNTgzMjc0CiAgICAgIF0sCiAgICAgIFsKICAgICAgICA1MTcsCiAgICAgICAgNjI2OTM0CiAgICAgIF0sCiAgICAgIFsKICAgICAgICA1MTksCiAgICAgICAgMjg1NDg1MgogICAgICBdLAogICAgICBbCiAgICAgICAgNTIxLAogICAgICAgIDEzNzExMDgyCiAgICAgIF0sCiAgICAgIFsKICAgICAgICA1MjMsCiAgICAgICAgNDYyOTM5NAogICAgICBdLAogICAgICBbCiAgICAgICAgNTI1LAogICAgICAgIDU2NTMwMzIKICAgICAgXSwKICAgICAgWwogICAgICAgIDUyNywKICAgICAgICA2MjMzOTIwCiAgICAgIF0KICAgIF0KICB9LAogICJtb21lbnQiOiB7CiAgICAic2F2aW5nIjogIjE1OTk1NzUzMzEvMjUwMDAwMDAwMDAwMDAiLAogICAgIm1vbWVudF9sb3dlciI6ICIxOTk5OTk5OTk5OTk5OTk5OTY3NzQwMDQ3Mjg2MDkvMjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwKICAgICJtb21lbnRfdXBwZXIiOiAiNDk5OTk5OTk5OTk5OTk5OTkxOTM1MDExODIxNTIzLzUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsCiAgICAicG9zaXRpdmVfbW9tZW50X2dhcCI6ICI4MDY0OTg4MTc4NDc3LzUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsCiAgICAibmV4dF9ncmlkX3NhdmluZyI6ICI2Mzk4MzAxMzI0MS8xMDAwMDAwMDAwMDAwMDAwIiwKICAgICJuZXh0X2dyaWRfbW9tZW50X2xvd2VyIjogIjEwMDAwMDAwMDAwMDAwMDAzNDk4ODk0NDI5NDUwNzEvMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsCiAgICAibmV4dF9ncmlkX2NlcnRpZmllZF9mYWxzZSI6IHRydWUsCiAgICAiaW50ZXJ2YWxfY2FsbHMiOiA5LAogICAgImVuY2xvc3VyZV9yb3VuZGluZ19kZW5vbWluYXRvciI6IDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKICB9LAogICJhc3NlbWJseSI6IHsKICAgICJhX2JpdCI6ICIxNTk5NTc1MzMxLzI1MDAwMDAwMDAwMDAwIiwKICAgICJhX2NvbXBsZXgiOiAiMzY5MjYxMTEvNTAwMDAwMDAwMDAwIiwKICAgICJiZXRhIjogIjEvMTAwMCIsCiAgICAiZXBzIjogIjE5OTk4NzIwNDIxNjA2NDgxMy8yMDAwMDAwMDAwMDAwMDAwMDAiLAogICAgIngiOiAiMTQ2OTUiLAogICAgImMxIjogIjE0Njk0IiwKICAgICJkZWx0YSI6ICIxLzE0Njk1MDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsCiAgICAibGFtYmRhXyI6ICI5OTk5MzYwMTY5ODY3NjAwMDEvMTAwMDAwMDAwMDAwMDAwMDAwMCIsCiAgICAibGFtYmRhX3ByaW1lIjogIjQ5OTk2ODAwODQ5MzM4MDAwMS81MDAwMDAwMDAwMDAwMDAwMDAiLAogICAgImthcHBhIjogIjE1OTk0NzI5OTE4OTgzMzIzLzI1MDAwMDAwMDAwMDAwMDAwMDAwMCIsCiAgICAia2FwcGFfZmxvYXQiOiA2LjM5Nzg5MTk2NzU5MzMzZS0wNSwKICAgICJjb25zdHJhaW50cyI6IHsKICAgICAgImxhbWJkYV9hYm92ZV90YXVfc2lnbWFfY2hpIjogIjEvMTAwMDAwMDAwMDAwMDAwMDAwMCIsCiAgICAgICJsYW1iZGFfcHJpbWVfYWJvdmVfbGFtYmRhX2xlYWYiOiAiMS8xMDAwMDAwMDAwMDAwMDAwMDAwIiwKICAgICAgImxhbWJkYV9wcmltZV9iZWxvd19vbmUiOiAiMzE5OTE1MDY2MTk5OTkvNTAwMDAwMDAwMDAwMDAwMDAwIiwKICAgICAgImJldGFfcG9zaXRpdmUiOiAiMS8xMDAwIiwKICAgICAgImJldGFfYmVsb3dfb25lIjogIjk5OS8xMDAwIiwKICAgICAgImNydWRlX2d1YXJkIjogIjE4MTQ4ODA4Njg4NDExNTEyMjQyNzk2NzE0NjkxMjk4MDU2Mzg2MDM2NDA5OTY3NjM3MTM5NTkyNjM4NzMwOTg1ODg2MDI0MTAxNDYzNTMwOTQxOTU3Mzg4NzMyMjg1ODI3MDc5ODkyNjE4NzY3NTk3NTg4NzE1NTg4MjQ0ODg4Njc4MDIxOTExNjYyNzc5ODcyODc1OTQ2MTk1MDAxNDQ0NzIyNDY1NDcyMTcwNjY0MDU5Mzk1NTM1NTIzNjY3MzkzMjcyODM1OTYyNDk2MjU3MjQxODQ1MDIyODc0OTg5MTQ1NjMwMDY1MDk3MzYzMTQwNzk2OTc5MTEyMjg1MzQ4OTk1NzIyODk4MDk5NDM5MDExMTA3MzQzMTk2NzI0MzcwOTk3ODQ1NDA0NDYwNTgwNTc5NDQyMTk3MzI4MDE3NzAwNDAyNzkzMjA4MTE1NzkyOTI2MTk4NzI4OTU1MTgyNTE1MTM4Njk3MjUwNDMzMTQwNjc4ODk1NzgwMDc1NTYzMDE4ODY2MTg5NjU3MTIwODUxNjE1MjI0NzYzNzkxMTQ4MDEyNjgwNTE4NjkwMjQzNzUxNTk1ODc4Njc3MTYxODY1MzgxNDA2MjYwNjQzMjU2MzAyMzMzMDI5NzUwOTU4NTA4ODE3ODE1NzIyMzQyMjk3Mjk3ODIxNTA2MzY4NDAwMjk0MDg2MDE1NzE3MTM2NDE0MjQ4NDQzMDM2MTIzMTMzODA2NzY5MTg3ODMyMTUwNDI1Nzk3NjAyMTA1NjczODg5MDk1ODMyMTUxNjIwNTQ5OTIwOTY0NTIyNjYxODkzNTA2MDQxNDQ3Nzc1MTk4MjE4NTU2NDA1MTM3ODUyNjk2NzI3NTg4MDE0MzA4NjQyMzU5MTUyODEwOTczNTg5NzcxNjEzNTgwNzYyNzc2MTI2NTI5MTYwNDE3MTk4ODA2MjQyNjY2NjQ1Mjc2MzA4ODk0MDYzNjE4NDQyNTE4NTM2NTcxMTI4NTk2MzI5NDg2NTAxNTk2OTU0NDUyNDY4MjkxNzcyODQzNDgxMDUxNTE1Mjk0MDQyMDgxNjE3MTIxNzE2NzYwNDA3Nzk1MTY1MTcwMzY4NDExMzk5OTE5NTQ0OTE4ODQzNDc1NjIxMjg0NDAwNDE3NTA2MDY2MDE1NDkzMDUxODk5OS80MTc1OTkzOTY2MTUxNTkwMzMyNTg5NTk2NDcxNjA0NzI4NjMzODk5NDkwNjY4MjU2MjEyNjg5NTAxNTk4NjM4Nzk5NzcwOTg3ODg2ODc2NTgwNjA2MDYwMzI1ODc4NjcwNDYzNjg2MDM3OTUwMjExMjM1MzcyOTU5ODY5MzI5NjI5MTM3MjYwNTEzNzE1NDgwNDM4MTM1NjAzODYxOTY2MjU0NDUxNTYxMTQzNjkxODg2ODcwMTM0NDE3MDUzNjA4MjA2NDE0MTI3MDQ2NzgxNDQ0NTcwNjkwMzY3NzQxNDIzMzg2MTQzNzk1MTM2MjgxNjA3NTk5MTI0OTI4OTM3NzU0Mzk2MzE2ODUyODA0MTY2OTMxMzkwMDI1NzI3ODcxODcwMTY5NjY3MDY3NTI4NjQwNjc5NzgzODcyMTEwNDA5MTg4Njc0NTU2NjM5OTQzODQzNzE0MTY0OTQ3NTkxMTE2MDM0MzEzNjg4NDQ0MDE2NDAzMTU3NTg1NDkyMjEwMDE2MjY4MzkwNjYwMjc5MTc4OTYyOTEzODcyMjA1MTc4OTQxMDI5ODY1NTczMjY3NzIwNzAyMDg4Mzk5NjI3MjA4OTE0NzU5ODA5NTc5MjkxMTU2NzUzNjg4NzExNTM4Njc1MzgyOTM1MjY4Njk5MDgzNzcwMDgxODY4NzIzMTA5OTg1NjkwMDE1NjkyMDk2NDY3OTIxMzM4Mzk3NDQwNzE1MzQ5Njc2MTQ0MjAxNDk2MzgzMzEwMzk4MDc0MTk4NzcwMzc1OTM3ODMzMTAyNDUwOTA1NDM2NjY3MTU0NzEwNTMyODk0ODk0NjYxOTYxNDAwMzY0NTQyMzI1OTc2Mjc5NjM5NzU4MzczNDEyOTUyNzE2NTA1MzUyNjYzMTEzODAyODgwNTAwMTQ0Mjk1MjIyNTI4ODQ2Njk2MDc0Mjg0MTM1NDk1MTcyMDQ2MzUwMzM1MzU2NzIwOTUwNTAwMjYxNjk2ODAxMDI3NTk0NTA3NjM5NDU4NDg0MzgyNDAyNzg4MTExNTMwMDY1MzA3ODg0NDM1MTgwMDIzODIzNTQ5MjY5NjkwMTY3NzczMzgzMzkzNTIzNTQ1MjM3MjU4MDc2NjY3Nzg1NjQ0NTMxMjUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLAogICAgICAic2NhbGFyX2RlcHRoIjogIjI5NDAxMDYyNDU3MTgxODg4OS8xMDAwMDAwMDAwMDAwMDAwMDAiLAogICAgICAicHJlY2lzaW9uIjogIjI5Mzg2MDAwMzgzODczNTE4MDU1NjEvMjAwMDAwMDAwMDAwMDAwMDAwIiwKICAgICAgInN1Yl9ibG9ja19jb3VwbGluZyI6ICIxIiwKICAgICAgInJlc2VydmF0aW9uIjogIjE3MDYxMTc2NTY1NDAwNDgxMy85OTk5MzYwMjEwODAzMjQwNjUwMDAwMDAwMDAwMDAwMDAwMCIsCiAgICAgICJlcHNfcG9zaXRpdmUiOiAiMTk5OTg3MjA0MjE2MDY0ODEzLzIwMDAwMDAwMDAwMDAwMDAwMCIsCiAgICAgICJlcHNfYmVsb3dfb25lIjogIjEyNzk1NzgzOTM1MTg3LzIwMDAwMDAwMDAwMDAwMDAwMCIsCiAgICAgICJkZWx0YV9wb3NpdGl2ZSI6ICIxLzE0Njk1MDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsCiAgICAgICJkZWx0YV9iZWxvd19laWdodGgiOiAiMTgzNjg3NDk5OTk5OTk5OTk5OTk5OTk5OTkvMTQ2OTUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIgogICAgfSwKICAgICJtYXJnaW5zIjogewogICAgICAicHJlZml4IjogIjEyNzk1NzgzOTM1MTg3LzIwMDAwMDAwMDAwMDAwMDAwMCIsCiAgICAgICJidXR0ZXJmbHkiOiAiNjM5Nzg5MTk2NzU5MzMyOTM4ODIzNDM0NTk5NTE4Ny8xMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLAogICAgICAic21hbGxfZmllbGQiOiAiMTE3NTIxMjc4MDc5NzMzMTAyOTQxMy8xODM2ODc1MDAwMDAwMDAwMDAwMDAwMDAwMCIsCiAgICAgICJHYXVzc2lhbiI6ICIxMTc1MjEyNzgwNzk3MzMxMDI5NDEzLzE4MzY4NzUwMDAwMDAwMDAwMDAwMDAwMDAwIiwKICAgICAgImNoaXJwc190d2lzdHNfc2NhbGFyIjogIjExNzUyMTI3ODA3OTczMzEwMjk0MTMvMTgzNjg3NTAwMDAwMDAwMDAwMDAwMDAwMDAiLAogICAgICAicG9seW5vbWlhbCI6ICIxOTk5ODcyMDQyMTYwNjQ4MTMvMjAwMDAwMDAwMDAwMDAwMDAwIiwKICAgICAgInJlc2VydmVkX2F4ZXMiOiAiMTE3NTIxMjc4MDc5NzMzMTAyOTQxMy8xODM2ODc1MDAwMDAwMDAwMDAwMDAwMDAwMCIsCiAgICAgICJheGlzX3JldmVyc2UiOiAiMzE5ODk0NTk4Mzc5Njc2NDY4NzcxOTI4MTAzLzUwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiCiAgICB9LAogICAgImFic29ycHRpb25fZ2FwcyI6IHsKICAgICAgInByZWZpeCI6ICI0MjcvMjUwMDAwMDAwMDAwMDAwMDAwMDAwIiwKICAgICAgImJ1dHRlcmZseSI6ICIxODgyMzQzNDU5OTUxODcvMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwKICAgICAgInNtYWxsX2ZpZWxkIjogIjc4NDI5OTcvNDU5MjE4NzUwMDAwMDAwMDAwMDAwMDAwMCIsCiAgICAgICJHYXVzc2lhbiI6ICI3ODQyOTk3LzQ1OTIxODc1MDAwMDAwMDAwMDAwMDAwMDAiLAogICAgICAiY2hpcnBzX3R3aXN0c19zY2FsYXIiOiAiNzg0Mjk5Ny80NTkyMTg3NTAwMDAwMDAwMDAwMDAwMDAwIiwKICAgICAgInBvbHlub21pYWwiOiAiMjQ5OTY4MDEwNTQwMTYyMDMyOTI3LzI1MDAwMDAwMDAwMDAwMDAwMDAwMCIsCiAgICAgICJyZXNlcnZlZF9heGVzIjogIjc4NDI5OTcvNDU5MjE4NzUwMDAwMDAwMDAwMDAwMDAwMCIsCiAgICAgICJheGlzX3JldmVyc2UiOiAiMTAwMDg3NzE5MjgxMDMvNTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIKICAgIH0sCiAgICAiYmluZGluZyI6ICJidXR0ZXJmbHkiCiAgfSwKICAidGhyZXNob2xkIjogIjI2MjIyNTQwNDA5MDM3LzUwMDAwMDAwMDAwMDAwMDAwMCIsCiAgImV4Y2VlZHNfdXNlcl90aHJlc2hvbGQiOiB0cnVlLAogICJwdWJsaXNoZWRfa2FwcGEiOiAiMTU5OTI0NzY4OTcyMy8yNTAwMDAwMDAwMDAwMDAwMCIsCiAgImFyaXRobWV0aWNfZ2FpbiI6IDkuMDEyMDg3MDEzMjkyZS0wOSwKICAicGh5c2ljYWxfZ2FpbiI6IGZhbHNlLAogICJwaHlzaWNhbF9hYmxhdGlvbnMiOiB7CiAgICAidHJpYWxzIjogWwogICAgICB7CiAgICAgICAgInJlbW92ZWRfZGltZW5zaW9ucyI6IFtdLAogICAgICAgICJyb290X2Zsb2F0IjogNi4zOTgzMDEzMjM5ODI3NzdlLTA1LAogICAgICAgICJ3ZWlnaHRlZF9sb2dfY29zdCI6IDAuMzY1OTIwMDc1MDg4MzU2MQogICAgICB9LAogICAgICB7CiAgICAgICAgInJlbW92ZWRfZGltZW5zaW9ucyI6IFsKICAgICAgICAgIDEKICAgICAgICBdLAogICAgICAgICJyb290X2Zsb2F0IjogNi4zOTc2MzUyMzQ5OTg0ODhlLTA1LAogICAgICAgICJ3ZWlnaHRlZF9sb2dfY29zdCI6IDAuMzY1OTU4MTg3MzE3MzUxOQogICAgICB9LAogICAgICB7CiAgICAgICAgInJlbW92ZWRfZGltZW5zaW9ucyI6IFsKICAgICAgICAgIDEsCiAgICAgICAgICAyCiAgICAgICAgXSwKICAgICAgICAicm9vdF9mbG9hdCI6IDYuMzk3MjUwODA1NjE1OTQ3ZS0wNSwKICAgICAgICAid2VpZ2h0ZWRfbG9nX2Nvc3QiOiAwLjM2NTk4MDE4ODQwMDIxMDYKICAgICAgfSwKICAgICAgewogICAgICAgICJyZW1vdmVkX2RpbWVuc2lvbnMiOiBbCiAgICAgICAgICAxLAogICAgICAgICAgMiwKICAgICAgICAgIDMKICAgICAgICBdLAogICAgICAgICJyb290X2Zsb2F0IjogNi4zOTYxOTcyNTc2NjA2NDRlLTA1LAogICAgICAgICJ3ZWlnaHRlZF9sb2dfY29zdCI6IDAuMzY2MDQwNDk0OTc4OTg2NjYKICAgICAgfSwKICAgICAgewogICAgICAgICJyZW1vdmVkX2RpbWVuc2lvbnMiOiBbCiAgICAgICAgICAxLAogICAgICAgICAgMiwKICAgICAgICAgIDMsCiAgICAgICAgICA0CiAgICAgICAgXSwKICAgICAgICAicm9vdF9mbG9hdCI6IDYuMzkzOTMwNjEwOTcxMjk1ZS0wNSwKICAgICAgICAid2VpZ2h0ZWRfbG9nX2Nvc3QiOiAwLjM2NjE3MDMyMzMxMDA4NTIKICAgICAgfSwKICAgICAgewogICAgICAgICJyZW1vdmVkX2RpbWVuc2lvbnMiOiBbCiAgICAgICAgICAxLAogICAgICAgICAgMiwKICAgICAgICAgIDMsCiAgICAgICAgICA0LAogICAgICAgICAgNQogICAgICAgIF0sCiAgICAgICAgInJvb3RfZmxvYXQiOiA2LjM5Mzg5Nzk0NzE1NTcxOWUtMDUsCiAgICAgICAgIndlaWdodGVkX2xvZ19jb3N0IjogMC4zNjYxNzIxOTYxMzgwNDgzCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAicmVtb3ZlZF9kaW1lbnNpb25zIjogWwogICAgICAgICAgMSwKICAgICAgICAgIDIsCiAgICAgICAgICAzLAogICAgICAgICAgNCwKICAgICAgICAgIDUsCiAgICAgICAgICA2CiAgICAgICAgXSwKICAgICAgICAicm9vdF9mbG9hdCI6IDYuMzkxNzk4NzA2Mjk4NzE5ZS0wNSwKICAgICAgICAid2VpZ2h0ZWRfbG9nX2Nvc3QiOiAwLjM2NjI5MjUxMzc2MDQ1NDYKICAgICAgfSwKICAgICAgewogICAgICAgICJyZW1vdmVkX2RpbWVuc2lvbnMiOiBbCiAgICAgICAgICAxLAogICAgICAgICAgMiwKICAgICAgICAgIDMsCiAgICAgICAgICA0LAogICAgICAgICAgNSwKICAgICAgICAgIDYsCiAgICAgICAgICA3CiAgICAgICAgXSwKICAgICAgICAicm9vdF9mbG9hdCI6IDYuMzkxNjg2NTM1MDk3NjVlLTA1LAogICAgICAgICJ3ZWlnaHRlZF9sb2dfY29zdCI6IDAuMzY2Mjk4OTQ1NzkwMDE3ODcKICAgICAgfSwKICAgICAgewogICAgICAgICJyZW1vdmVkX2RpbWVuc2lvbnMiOiBbCiAgICAgICAgICAxLAogICAgICAgICAgMiwKICAgICAgICAgIDMsCiAgICAgICAgICA0LAogICAgICAgICAgNSwKICAgICAgICAgIDYsCiAgICAgICAgICA3LAogICAgICAgICAgOAogICAgICAgIF0sCiAgICAgICAgInJvb3RfZmxvYXQiOiA2LjM4MDc0NDIwODY4NzQ1NmUtMDUsCiAgICAgICAgIndlaWdodGVkX2xvZ19jb3N0IjogMC4zNjY5MjczNzk2OTY4NjgzCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAicmVtb3ZlZF9kaW1lbnNpb25zIjogWwogICAgICAgICAgMSwKICAgICAgICAgIDIsCiAgICAgICAgICAzLAogICAgICAgICAgNCwKICAgICAgICAgIDUsCiAgICAgICAgICA2LAogICAgICAgICAgNywKICAgICAgICAgIDgsCiAgICAgICAgICA5CiAgICAgICAgXSwKICAgICAgICAicm9vdF9mbG9hdCI6IDYuMzc5NDI2ODIyNTgzMzg4ZS0wNSwKICAgICAgICAid2VpZ2h0ZWRfbG9nX2Nvc3QiOiAwLjM2NzAwMzE4NzA2NjcwNTUKICAgICAgfSwKICAgICAgewogICAgICAgICJyZW1vdmVkX2RpbWVuc2lvbnMiOiBbCiAgICAgICAgICAxLAogICAgICAgICAgMiwKICAgICAgICAgIDMsCiAgICAgICAgICA0LAogICAgICAgICAgNSwKICAgICAgICAgIDYsCiAgICAgICAgICA3LAogICAgICAgICAgOCwKICAgICAgICAgIDksCiAgICAgICAgICAxMAogICAgICAgIF0sCiAgICAgICAgInJvb3RfZmxvYXQiOiA2LjM3NTkxMzQ3Mjg3NzcyZS0wNSwKICAgICAgICAid2VpZ2h0ZWRfbG9nX2Nvc3QiOiAwLjM2NzIwNTU0ODEwNzY1MzA1CiAgICAgIH0sCiAgICAgIHsKICAgICAgICAicmVtb3ZlZF9kaW1lbnNpb25zIjogWwogICAgICAgICAgMSwKICAgICAgICAgIDIsCiAgICAgICAgICAzLAogICAgICAgICAgNCwKICAgICAgICAgIDUsCiAgICAgICAgICA2LAogICAgICAgICAgNywKICAgICAgICAgIDgsCiAgICAgICAgICA5LAogICAgICAgICAgMTAsCiAgICAgICAgICAxMQogICAgICAgIF0sCiAgICAgICAgInJvb3RfZmxvYXQiOiA2LjM3NTk1Mzk1NTc1ODMyOWUtMDUsCiAgICAgICAgIndlaWdodGVkX2xvZ19jb3N0IjogMC4zNjcyMDMyNTQ0MzU2NTcxCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAicmVtb3ZlZF9kaW1lbnNpb25zIjogWwogICAgICAgICAgMSwKICAgICAgICAgIDIsCiAgICAgICAgICAzLAogICAgICAgICAgNCwKICAgICAgICAgIDUsCiAgICAgICAgICA2LAogICAgICAgICAgNywKICAgICAgICAgIDgsCiAgICAgICAgICA5LAogICAgICAgICAgMTAsCiAgICAgICAgICAxMSwKICAgICAgICAgIDEyCiAgICAgICAgXSwKICAgICAgICAicm9vdF9mbG9hdCI6IDYuMzY1NjI5ODE1MjIzMTU2ZS0wNSwKICAgICAgICAid2VpZ2h0ZWRfbG9nX2Nvc3QiOiAwLjM2Nzc5OTI3MTI2MzU0MjEKICAgICAgfSwKICAgICAgewogICAgICAgICJyZW1vdmVkX2RpbWVuc2lvbnMiOiBbCiAgICAgICAgICAxLAogICAgICAgICAgMiwKICAgICAgICAgIDMsCiAgICAgICAgICA0LAogICAgICAgICAgNSwKICAgICAgICAgIDYsCiAgICAgICAgICA3LAogICAgICAgICAgOCwKICAgICAgICAgIDksCiAgICAgICAgICAxMCwKICAgICAgICAgIDExLAogICAgICAgICAgMTIsCiAgICAgICAgICAxMwogICAgICAgIF0sCiAgICAgICAgInJvb3RfZmxvYXQiOiA2LjM2NDIyOTI1MjY5MDAxOWUtMDUsCiAgICAgICAgIndlaWdodGVkX2xvZ19jb3N0IjogMC4zNjc4ODAzNTc0MTIzNjUyCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAicmVtb3ZlZF9kaW1lbnNpb25zIjogWwogICAgICAgICAgMSwKICAgICAgICAgIDIsCiAgICAgICAgICAzLAogICAgICAgICAgNCwKICAgICAgICAgIDUsCiAgICAgICAgICA2LAogICAgICAgICAgNywKICAgICAgICAgIDgsCiAgICAgICAgICA5LAogICAgICAgICAgMTAsCiAgICAgICAgICAxMSwKICAgICAgICAgIDEyLAogICAgICAgICAgMTMsCiAgICAgICAgICAxNAogICAgICAgIF0sCiAgICAgICAgInJvb3RfZmxvYXQiOiA2LjM2MDE4ODQ4MDQ0NTc4N2UtMDUsCiAgICAgICAgIndlaWdodGVkX2xvZ19jb3N0IjogMC4zNjgxMTQyMTk3NzM3ODI0NQogICAgICB9LAogICAgICB7CiAgICAgICAgInJlbW92ZWRfZGltZW5zaW9ucyI6IFsKICAgICAgICAgIDEsCiAgICAgICAgICAyLAogICAgICAgICAgMywKICAgICAgICAgIDQsCiAgICAgICAgICA1LAogICAgICAgICAgNiwKICAgICAgICAgIDcsCiAgICAgICAgICA4LAogICAgICAgICAgOSwKICAgICAgICAgIDEwLAogICAgICAgICAgMTEsCiAgICAgICAgICAxMiwKICAgICAgICAgIDEzLAogICAgICAgICAgMTQsCiAgICAgICAgICAxNQogICAgICAgIF0sCiAgICAgICAgInJvb3RfZmxvYXQiOiA2LjM1Nzk4Mzc4MDY1NjI2NWUtMDUsCiAgICAgICAgIndlaWdodGVkX2xvZ19jb3N0IjogMC4zNjgyNDE5MTQyODE3MTc2NQogICAgICB9LAogICAgICB7CiAgICAgICAgInJlbW92ZWRfZGltZW5zaW9ucyI6IFsKICAgICAgICAgIDEsCiAgICAgICAgICAyLAogICAgICAgICAgMywKICAgICAgICAgIDQsCiAgICAgICAgICA1LAogICAgICAgICAgNiwKICAgICAgICAgIDcsCiAgICAgICAgICA4LAogICAgICAgICAgOSwKICAgICAgICAgIDEwLAogICAgICAgICAgMTEsCiAgICAgICAgICAxMiwKICAgICAgICAgIDEzLAogICAgICAgICAgMTQsCiAgICAgICAgICAxNSwKICAgICAgICAgIDE2CiAgICAgICAgXSwKICAgICAgICAicm9vdF9mbG9hdCI6IDYuMzEyMTQxMjYzNzkyOTQyZS0wNSwKICAgICAgICAid2VpZ2h0ZWRfbG9nX2Nvc3QiOiAwLjM3MDkxNzAyMDY1OTI4NgogICAgICB9LAogICAgICB7CiAgICAgICAgInJlbW92ZWRfZGltZW5zaW9ucyI6IFsKICAgICAgICAgIDEsCiAgICAgICAgICAyLAogICAgICAgICAgMywKICAgICAgICAgIDQsCiAgICAgICAgICA1LAogICAgICAgICAgNiwKICAgICAgICAgIDcsCiAgICAgICAgICA4LAogICAgICAgICAgOSwKICAgICAgICAgIDEwLAogICAgICAgICAgMTEsCiAgICAgICAgICAxMiwKICAgICAgICAgIDEzLAogICAgICAgICAgMTQsCiAgICAgICAgICAxNSwKICAgICAgICAgIDE2LAogICAgICAgICAgMTcKICAgICAgICBdLAogICAgICAgICJyb290X2Zsb2F0IjogNi4yOTE1Njg2Mzk2NTUyMjJlLTA1LAogICAgICAgICJ3ZWlnaHRlZF9sb2dfY29zdCI6IDAuMzcyMTMwMTY0MjUwNjMwOQogICAgICB9LAogICAgICB7CiAgICAgICAgInJlbW92ZWRfZGltZW5zaW9ucyI6IFsKICAgICAgICAgIDEsCiAgICAgICAgICAyLAogICAgICAgICAgMywKICAgICAgICAgIDQsCiAgICAgICAgICA1LAogICAgICAgICAgNiwKICAgICAgICAgIDcsCiAgICAgICAgICA4LAogICAgICAgICAgOSwKICAgICAgICAgIDEwLAogICAgICAgICAgMTEsCiAgICAgICAgICAxMiwKICAgICAgICAgIDEzLAogICAgICAgICAgMTQsCiAgICAgICAgICAxNSwKICAgICAgICAgIDE2LAogICAgICAgICAgMTcsCiAgICAgICAgICAxOAogICAgICAgIF0sCiAgICAgICAgInJvb3RfZmxvYXQiOiA2LjE3OTIxMzg2NjQ5Mzk1MWUtMDUsCiAgICAgICAgIndlaWdodGVkX2xvZ19jb3N0IjogMC4zNzg4OTc4NTQwMDkxNDA2CiAgICAgIH0sCiAgICAgIHsKICAgICAgICAicmVtb3ZlZF9kaW1lbnNpb25zIjogWwogICAgICAgICAgMSwKICAgICAgICAgIDIsCiAgICAgICAgICAzLAogICAgICAgICAgNCwKICAgICAgICAgIDUsCiAgICAgICAgICA2LAogICAgICAgICAgNywKICAgICAgICAgIDgsCiAgICAgICAgICA5LAogICAgICAgICAgMTAsCiAgICAgICAgICAxMSwKICAgICAgICAgIDEyLAogICAgICAgICAgMTMsCiAgICAgICAgICAxNCwKICAgICAgICAgIDE1LAogICAgICAgICAgMTYsCiAgICAgICAgICAxNywKICAgICAgICAgIDE4LAogICAgICAgICAgMTkKICAgICAgICBdLAogICAgICAgICJyb290X2Zsb2F0IjogNS42NDY3MTA2NTAwODAwOTJlLTA1LAogICAgICAgICJ3ZWlnaHRlZF9sb2dfY29zdCI6IDAuNDE0NjM1NjI5OTQ4MzIwMgogICAgICB9LAogICAgICB7CiAgICAgICAgInJlbW92ZWRfZGltZW5zaW9ucyI6IFsKICAgICAgICAgIDEsCiAgICAgICAgICAyLAogICAgICAgICAgMywKICAgICAgICAgIDQsCiAgICAgICAgICA1LAogICAgICAgICAgNiwKICAgICAgICAgIDcsCiAgICAgICAgICA4LAogICAgICAgICAgOSwKICAgICAgICAgIDEwLAogICAgICAgICAgMTEsCiAgICAgICAgICAxMiwKICAgICAgICAgIDEzLAogICAgICAgICAgMTQsCiAgICAgICAgICAxNSwKICAgICAgICAgIDE2LAogICAgICAgICAgMTcsCiAgICAgICAgICAxOCwKICAgICAgICAgIDE5LAogICAgICAgICAgMjAKICAgICAgICBdLAogICAgICAgICJyb290X2Zsb2F0IjogNS40Nzc1NDM0MDc2Nzc4MjU1ZS0wNSwKICAgICAgICAid2VpZ2h0ZWRfbG9nX2Nvc3QiOiAwLjQyNzQ0MzE1NjU1MDMzOTYKICAgICAgfSwKICAgICAgewogICAgICAgICJyZW1vdmVkX2RpbWVuc2lvbnMiOiBbCiAgICAgICAgICAxLAogICAgICAgICAgMiwKICAgICAgICAgIDMsCiAgICAgICAgICA0LAogICAgICAgICAgNSwKICAgICAgICAgIDYsCiAgICAgICAgICA3LAogICAgICAgICAgOCwKICAgICAgICAgIDksCiAgICAgICAgICAxMCwKICAgICAgICAgIDExLAogICAgICAgICAgMTIsCiAgICAgICAgICAxMywKICAgICAgICAgIDE0LAogICAgICAgICAgMTUsCiAgICAgICAgICAxNiwKICAgICAgICAgIDE3LAogICAgICAgICAgMTgsCiAgICAgICAgICAxOSwKICAgICAgICAgIDIwLAogICAgICAgICAgMjEKICAgICAgICBdLAogICAgICAgICJyb290X2Zsb2F0IjogNS4yNzQzMDMyMDQ3MTI3MzRlLTA1LAogICAgICAgICJ3ZWlnaHRlZF9sb2dfY29zdCI6IDAuNDQzOTE2NzA3MjEwMDgzNwogICAgICB9LAogICAgICB7CiAgICAgICAgInJlbW92ZWRfZGltZW5zaW9ucyI6IFsKICAgICAgICAgIDEsCiAgICAgICAgICAyLAogICAgICAgICAgMywKICAgICAgICAgIDQsCiAgICAgICAgICA1LAogICAgICAgICAgNiwKICAgICAgICAgIDcsCiAgICAgICAgICA4LAogICAgICAgICAgOSwKICAgICAgICAgIDEwLAogICAgICAgICAgMTEsCiAgICAgICAgICAxMiwKICAgICAgICAgIDEzLAogICAgICAgICAgMTQsCiAgICAgICAgICAxNSwKICAgICAgICAgIDE2LAogICAgICAgICAgMTcsCiAgICAgICAgICAxOCwKICAgICAgICAgIDE5LAogICAgICAgICAgMjAsCiAgICAgICAgICAyMSwKICAgICAgICAgIDIyCiAgICAgICAgXSwKICAgICAgICAicm9vdF9mbG9hdCI6IDUuMDQ5NzMzODMwMDgzOTQ1ZS0wNSwKICAgICAgICAid2VpZ2h0ZWRfbG9nX2Nvc3QiOiAwLjQ2MzY2MDk4Mjc1NjYwNTMKICAgICAgfSwKICAgICAgewogICAgICAgICJyZW1vdmVkX2RpbWVuc2lvbnMiOiBbCiAgICAgICAgICAyCiAgICAgICAgXSwKICAgICAgICAicm9vdF9mbG9hdCI6IDYuMzk3ODU5MTE2ODAyMjhlLTA1LAogICAgICAgICJ3ZWlnaHRlZF9sb2dfY29zdCI6IDAuMzY1OTQ1Mzc2MjEyODE0NAogICAgICB9LAogICAgICB7CiAgICAgICAgInJlbW92ZWRfZGltZW5zaW9ucyI6IFsKICAgICAgICAgIDIsCiAgICAgICAgICAzLAogICAgICAgICAgNCwKICAgICAgICAgIDUsCiAgICAgICAgICA2LAogICAgICAgICAgNywKICAgICAgICAgIDgsCiAgICAgICAgICA5LAogICAgICAgICAgMTAsCiAgICAgICAgICAxMSwKICAgICAgICAgIDEyLAogICAgICAgICAgMTMsCiAgICAgICAgICAxNCwKICAgICAgICAgIDE1LAogICAgICAgICAgMTYsCiAgICAgICAgICAxNywKICAgICAgICAgIDE4LAogICAgICAgICAgMTksCiAgICAgICAgICAyMCwKICAgICAgICAgIDIxLAogICAgICAgICAgMjIKICAgICAgICBdLAogICAgICAgICJyb290X2Zsb2F0IjogNS4wNDYyMjYzNDk2MTMxMzllLTA1LAogICAgICAgICJ3ZWlnaHRlZF9sb2dfY29zdCI6IDAuNDYzOTgzMjM3NDcyNTk2OTUKICAgICAgfSwKICAgICAgewogICAgICAgICJyZW1vdmVkX2RpbWVuc2lvbnMiOiBbCiAgICAgICAgICAzCiAgICAgICAgXSwKICAgICAgICAicm9vdF9mbG9hdCI6IDYuMzk3MTYxMzQ2ODI2NzhlLTA1LAogICAgICAgICJ3ZWlnaHRlZF9sb2dfY29zdCI6IDAuMzY1OTg1MzA2MjE0OTMzNgogICAgICB9LAogICAgICB7CiAgICAgICAgInJlbW92ZWRfZGltZW5zaW9ucyI6IFsKICAgICAgICAgIDMsCiAgICAgICAgICA0LAogICAgICAgICAgNSwKICAgICAgICAgIDYsCiAgICAgICAgICA3LAogICAgICAgICAgOCwKICAgICAgICAgIDksCiAgICAgICAgICAxMCwKICAgICAgICAgIDExLAogICAgICAgICAgMTIsCiAgICAgICAgICAxMywKICAgICAgICAgIDE0LAogICAgICAgICAgMTUsCiAgICAgICAgICAxNiwKICAgICAgICAgIDE3LAogICAgICAgICAgMTgsCiAgICAgICAgICAxOSwKICAgICAgICAgIDIwLAogICAgICAgICAgMjEsCiAgICAgICAgICAyMgogICAgICAgIF0sCiAgICAgICAgInJvb3RfZmxvYXQiOiA1LjA0NDg5NzY5NjI5MTY2ZS0wNSwKICAgICAgICAid2VpZ2h0ZWRfbG9nX2Nvc3QiOiAwLjQ2NDEwNTQyMjg1MDI4OTQ0CiAgICAgIH0sCiAgICAgIHsKICAgICAgICAicmVtb3ZlZF9kaW1lbnNpb25zIjogWwogICAgICAgICAgNAogICAgICAgIF0sCiAgICAgICAgInJvb3RfZmxvYXQiOiA2LjM5NTM1OTYyMDY0MTM2OGUtMDUsCiAgICAgICAgIndlaWdodGVkX2xvZ19jb3N0IjogMC4zNjYwODg0NTQxNzQxMzE1CiAgICAgIH0sCiAgICAgIHsKICAgICAgICAicmVtb3ZlZF9kaW1lbnNpb25zIjogWwogICAgICAgICAgNCwKICAgICAgICAgIDUsCiAgICAgICAgICA2LAogICAgICAgICAgNywKICAgICAgICAgIDgsCiAgICAgICAgICA5LAogICAgICAgICAgMTAsCiAgICAgICAgICAxMSwKICAgICAgICAgIDEyLAogICAgICAgICAgMTMsCiAgICAgICAgICAxNCwKICAgICAgICAgIDE1LAogICAgICAgICAgMTYsCiAgICAgICAgICAxNywKICAgICAgICAgIDE4LAogICAgICAgICAgMTksCiAgICAgICAgICAyMCwKICAgICAgICAgIDIxLAogICAgICAgICAgMjIKICAgICAgICBdLAogICAgICAgICJyb290X2Zsb2F0IjogNS4wMzY0MTA4MTIwMjIzNzZlLTA1LAogICAgICAgICJ3ZWlnaHRlZF9sb2dfY29zdCI6IDAuNDY0ODg3NDQyMTEzNDYxNwogICAgICB9LAogICAgICB7CiAgICAgICAgInJlbW92ZWRfZGltZW5zaW9ucyI6IFsKICAgICAgICAgIDUKICAgICAgICBdLAogICAgICAgICJyb290X2Zsb2F0IjogNi4zOTgyNjUwNTkzNzA2MTJlLTA1LAogICAgICAgICJ3ZWlnaHRlZF9sb2dfY29zdCI6IDAuMzY1OTIyMTUxMjc1NTA3CiAgICAgIH0sCiAgICAgIHsKICAgICAgICAicmVtb3ZlZF9kaW1lbnNpb25zIjogWwogICAgICAgICAgNSwKICAgICAgICAgIDYsCiAgICAgICAgICA3LAogICAgICAgICAgOCwKICAgICAgICAgIDksCiAgICAgICAgICAxMCwKICAgICAgICAgIDExLAogICAgICAgICAgMTIsCiAgICAgICAgICAxMywKICAgICAgICAgIDE0LAogICAgICAgICAgMTUsCiAgICAgICAgICAxNiwKICAgICAgICAgIDE3LAogICAgICAgICAgMTgsCiAgICAgICAgICAxOSwKICAgICAgICAgIDIwLAogICAgICAgICAgMjEsCiAgICAgICAgICAyMgogICAgICAgIF0sCiAgICAgICAgInJvb3RfZmxvYXQiOiA1LjAyODgzMjIzNjkyNjg2MWUtMDUsCiAgICAgICAgIndlaWdodGVkX2xvZ19jb3N0IjogMC40NjU1ODc5NjAyNjQ0MzU1NQogICAgICB9LAogICAgICB7CiAgICAgICAgInJlbW92ZWRfZGltZW5zaW9ucyI6IFsKICAgICAgICAgIDYKICAgICAgICBdLAogICAgICAgICJyb290X2Zsb2F0IjogNi4zOTU1MzQ5ODk5OTk3MzJlLTA1LAogICAgICAgICJ3ZWlnaHRlZF9sb2dfY29zdCI6IDAuMzY2MDc4NDA1NzIyNTk1NAogICAgICB9LAogICAgICB7CiAgICAgICAgInJlbW92ZWRfZGltZW5zaW9ucyI6IFsKICAgICAgICAgIDYsCiAgICAgICAgICA3LAogICAgICAgICAgOCwKICAgICAgICAgIDksCiAgICAgICAgICAxMCwKICAgICAgICAgIDExLAogICAgICAgICAgMTIsCiAgICAgICAgICAxMywKICAgICAgICAgIDE0LAogICAgICAgICAgMTUsCiAgICAgICAgICAxNiwKICAgICAgICAgIDE3LAogICAgICAgICAgMTgsCiAgICAgICAgICAxOSwKICAgICAgICAgIDIwLAogICAgICAgICAgMjEsCiAgICAgICAgICAyMgogICAgICAgIF0sCiAgICAgICAgInJvb3RfZmxvYXQiOiA1LjAyNzgyNjU3MTY4MDAwNWUtMDUsCiAgICAgICAgIndlaWdodGVkX2xvZ19jb3N0IjogMC40NjU2ODEwODE2MzczNDM3MwogICAgICB9LAogICAgICB7CiAgICAgICAgInJlbW92ZWRfZGltZW5zaW9ucyI6IFsKICAgICAgICAgIDcKICAgICAgICBdLAogICAgICAgICJyb290X2Zsb2F0IjogNi4zOTgxNjI4ODkwMTkwNTJlLTA1LAogICAgICAgICJ3ZWlnaHRlZF9sb2dfY29zdCI6IDAuMzY1OTI3OTk2MDcwNTgyNzQKICAgICAgfSwKICAgICAgewogICAgICAgICJyZW1vdmVkX2RpbWVuc2lvbnMiOiBbCiAgICAgICAgICA3LAogICAgICAgICAgOCwKICAgICAgICAgIDksCiAgICAgICAgICAxMCwKICAgICAgICAgIDExLAogICAgICAgICAgMTIsCiAgICAgICAgICAxMywKICAgICAgICAgIDE0LAogICAgICAgICAgMTUsCiAgICAgICAgICAxNiwKICAgICAgICAgIDE3LAogICAgICAgICAgMTgsCiAgICAgICAgICAxOSwKICAgICAgICAgIDIwLAogICAgICAgICAgMjEsCiAgICAgICAgICAyMgogICAgICAgIF0sCiAgICAgICAgInJvb3RfZmxvYXQiOiA1LjAyNDA1NDE3MjA2NjQ0M2UtMDUsCiAgICAgICAgIndlaWdodGVkX2xvZ19jb3N0IjogMC40NjYwMzA2ODYyMzc1OTA4CiAgICAgIH0sCiAgICAgIHsKICAgICAgICAicmVtb3ZlZF9kaW1lbnNpb25zIjogWwogICAgICAgICAgOAogICAgICAgIF0sCiAgICAgICAgInJvb3RfZmxvYXQiOiA2LjM4MjYyODA2ODYwNzE1OGUtMDUsCiAgICAgICAgIndlaWdodGVkX2xvZ19jb3N0IjogMC4zNjY4MTg4ODc0OTg1MzIxCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAicmVtb3ZlZF9kaW1lbnNpb25zIjogWwogICAgICAgICAgOCwKICAgICAgICAgIDksCiAgICAgICAgICAxMCwKICAgICAgICAgIDExLAogICAgICAgICAgMTIsCiAgICAgICAgICAxMywKICAgICAgICAgIDE0LAogICAgICAgICAgMTUsCiAgICAgICAgICAxNiwKICAgICAgICAgIDE3LAogICAgICAgICAgMTgsCiAgICAgICAgICAxOSwKICAgICAgICAgIDIwLAogICAgICAgICAgMjEsCiAgICAgICAgICAyMgogICAgICAgIF0sCiAgICAgICAgInJvb3RfZmxvYXQiOiA1LjAyMzgyMTM2NDg4MzEzNzZlLTA1LAogICAgICAgICJ3ZWlnaHRlZF9sb2dfY29zdCI6IDAuNDY2MDUyMjc4MzM5NjA4OQogICAgICB9LAogICAgICB7CiAgICAgICAgInJlbW92ZWRfZGltZW5zaW9ucyI6IFsKICAgICAgICAgIDkKICAgICAgICBdLAogICAgICAgICJyb290X2Zsb2F0IjogNi4zOTY0MzcyMTMxMTQwMjJlLTA1LAogICAgICAgICJ3ZWlnaHRlZF9sb2dfY29zdCI6IDAuMzY2MDI2NzQ4MzczNTQ1MwogICAgICB9LAogICAgICB7CiAgICAgICAgInJlbW92ZWRfZGltZW5zaW9ucyI6IFsKICAgICAgICAgIDksCiAgICAgICAgICAxMCwKICAgICAgICAgIDExLAogICAgICAgICAgMTIsCiAgICAgICAgICAxMywKICAgICAgICAgIDE0LAogICAgICAgICAgMTUsCiAgICAgICAgICAxNiwKICAgICAgICAgIDE3LAogICAgICAgICAgMTgsCiAgICAgICAgICAxOSwKICAgICAgICAgIDIwLAogICAgICAgICAgMjEsCiAgICAgICAgICAyMgogICAgICAgIF0sCiAgICAgICAgInJvb3RfZmxvYXQiOiA1LjAxODE5NTc5NDgzNzYyNWUtMDUsCiAgICAgICAgIndlaWdodGVkX2xvZ19jb3N0IjogMC40NjY1NzQ0ODc0NzcwMDEKICAgICAgfSwKICAgICAgewogICAgICAgICJyZW1vdmVkX2RpbWVuc2lvbnMiOiBbCiAgICAgICAgICAxMAogICAgICAgIF0sCiAgICAgICAgInJvb3RfZmxvYXQiOiA2LjM5MTMyMTYyODUyMDQzOGUtMDUsCiAgICAgICAgIndlaWdodGVkX2xvZ19jb3N0IjogMC4zNjYzMTk4MDE3MzY1MjAwNwogICAgICB9LAogICAgICB7CiAgICAgICAgInJlbW92ZWRfZGltZW5zaW9ucyI6IFsKICAgICAgICAgIDEwLAogICAgICAgICAgMTEsCiAgICAgICAgICAxMiwKICAgICAgICAgIDEzLAogICAgICAgICAgMTQsCiAgICAgICAgICAxNSwKICAgICAgICAgIDE2LAogICAgICAgICAgMTcsCiAgICAgICAgICAxOCwKICAgICAgICAgIDE5LAogICAgICAgICAgMjAsCiAgICAgICAgICAyMSwKICAgICAgICAgIDIyCiAgICAgICAgXSwKICAgICAgICAicm9vdF9mbG9hdCI6IDUuMDE4NzE3MTM1Nzc0MTVlLTA1LAogICAgICAgICJ3ZWlnaHRlZF9sb2dfY29zdCI6IDAuNDY2NTI1OTkyNjU1NjI1MgogICAgICB9LAogICAgICB7CiAgICAgICAgInJlbW92ZWRfZGltZW5zaW9ucyI6IFsKICAgICAgICAgIDExCiAgICAgICAgXSwKICAgICAgICAicm9vdF9mbG9hdCI6IDYuMzk2NDE2MzI2NjA3OTYxZS0wNSwKICAgICAgICAid2VpZ2h0ZWRfbG9nX2Nvc3QiOiAwLjM2NjAyNzk0MjY0MTcyMjA2CiAgICAgIH0sCiAgICAgIHsKICAgICAgICAicmVtb3ZlZF9kaW1lbnNpb25zIjogWwogICAgICAgICAgMTEsCiAgICAgICAgICAxMiwKICAgICAgICAgIDEzLAogICAgICAgICAgMTQsCiAgICAgICAgICAxNSwKICAgICAgICAgIDE2LAogICAgICAgICAgMTcsCiAgICAgICAgICAxOCwKICAgICAgICAgIDE5LAogICAgICAgICAgMjAsCiAgICAgICAgICAyMSwKICAgICAgICAgIDIyCiAgICAgICAgXSwKICAgICAgICAicm9vdF9mbG9hdCI6IDUuMDE4NTc4NzA3NzQ4MjgxNGUtMDUsCiAgICAgICAgIndlaWdodGVkX2xvZ19jb3N0IjogMC40NjY1Mzg3NDk3MjkzNjE4CiAgICAgIH0sCiAgICAgIHsKICAgICAgICAicmVtb3ZlZF9kaW1lbnNpb25zIjogWwogICAgICAgICAgMTIKICAgICAgICBdLAogICAgICAgICJyb290X2Zsb2F0IjogNi4zNjk3MTE1MzE1MjM2OTNlLTA1LAogICAgICAgICJ3ZWlnaHRlZF9sb2dfY29zdCI6IDAuMzY3NTYyODg0MDkzNTQ3MzcKICAgICAgfSwKICAgICAgewogICAgICAgICJyZW1vdmVkX2RpbWVuc2lvbnMiOiBbCiAgICAgICAgICAxMiwKICAgICAgICAgIDEzLAogICAgICAgICAgMTQsCiAgICAgICAgICAxNSwKICAgICAgICAgIDE2LAogICAgICAgICAgMTcsCiAgICAgICAgICAxOCwKICAgICAgICAgIDE5LAogICAgICAgICAgMjAsCiAgICAgICAgICAyMSwKICAgICAgICAgIDIyCiAgICAgICAgXSwKICAgICAgICAicm9vdF9mbG9hdCI6IDUuMDE5MTMzMDcwMzUxNzk1ZS0wNSwKICAgICAgICAid2VpZ2h0ZWRfbG9nX2Nvc3QiOiAwLjQ2NjQ4NzE5MzgzOTQ0ODUKICAgICAgfSwKICAgICAgewogICAgICAgICJyZW1vdmVkX2RpbWVuc2lvbnMiOiBbCiAgICAgICAgICAxMwogICAgICAgIF0sCiAgICAgICAgInJvb3RfZmxvYXQiOiA2LjM4OTIxNjYzMjk4NjU1MmUtMDUsCiAgICAgICAgIndlaWdodGVkX2xvZ19jb3N0IjogMC4zNjY0NDA0OTc4MTU1ODgzCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAicmVtb3ZlZF9kaW1lbnNpb25zIjogWwogICAgICAgICAgMTMsCiAgICAgICAgICAxNCwKICAgICAgICAgIDE1LAogICAgICAgICAgMTYsCiAgICAgICAgICAxNywKICAgICAgICAgIDE4LAogICAgICAgICAgMTksCiAgICAgICAgICAyMCwKICAgICAgICAgIDIxLAogICAgICAgICAgMjIKICAgICAgICBdLAogICAgICAgICJyb290X2Zsb2F0IjogNS4wMjg2NDg5NTQ3MjcwNzM1ZS0wNSwKICAgICAgICAid2VpZ2h0ZWRfbG9nX2Nvc3QiOiAwLjQ2NTYwNDEwODAzMzUwNDMKICAgICAgfSwKICAgICAgewogICAgICAgICJyZW1vdmVkX2RpbWVuc2lvbnMiOiBbCiAgICAgICAgICAxNAogICAgICAgIF0sCiAgICAgICAgInJvb3RfZmxvYXQiOiA2LjM4ODM5MTc5OTkzNjMxZS0wNSwKICAgICAgICAid2VpZ2h0ZWRfbG9nX2Nvc3QiOiAwLjM2NjQ4NzgxMTY1NTcxODg2CiAgICAgIH0sCiAgICAgIHsKICAgICAgICAicmVtb3ZlZF9kaW1lbnNpb25zIjogWwogICAgICAgICAgMTQsCiAgICAgICAgICAxNSwKICAgICAgICAgIDE2LAogICAgICAgICAgMTcsCiAgICAgICAgICAxOCwKICAgICAgICAgIDE5LAogICAgICAgICAgMjAsCiAgICAgICAgICAyMSwKICAgICAgICAgIDIyCiAgICAgICAgXSwKICAgICAgICAicm9vdF9mbG9hdCI6IDUuMDMyODkxMDM1NTI5Nzc1ZS0wNSwKICAgICAgICAid2VpZ2h0ZWRfbG9nX2Nvc3QiOiAwLjQ2NTIxMTU2NjAwMTg3MzYzCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAicmVtb3ZlZF9kaW1lbnNpb25zIjogWwogICAgICAgICAgMTUKICAgICAgICBdLAogICAgICAgICJyb290X2Zsb2F0IjogNi4zOTQzODI2MzAwNjQ2MzllLTA1LAogICAgICAgICJ3ZWlnaHRlZF9sb2dfY29zdCI6IDAuMzY2MTQ0MzY4MjA5MjU3ODMKICAgICAgfSwKICAgICAgewogICAgICAgICJyZW1vdmVkX2RpbWVuc2lvbnMiOiBbCiAgICAgICAgICAxNSwKICAgICAgICAgIDE2LAogICAgICAgICAgMTcsCiAgICAgICAgICAxOCwKICAgICAgICAgIDE5LAogICAgICAgICAgMjAsCiAgICAgICAgICAyMSwKICAgICAgICAgIDIyCiAgICAgICAgXSwKICAgICAgICAicm9vdF9mbG9hdCI6IDUuMDM4MjEzNzcxODU0NTQzNmUtMDUsCiAgICAgICAgIndlaWdodGVkX2xvZ19jb3N0IjogMC40NjQ3MTk5ODgyNDkyMTY0CiAgICAgIH0sCiAgICAgIHsKICAgICAgICAicmVtb3ZlZF9kaW1lbnNpb25zIjogWwogICAgICAgICAgMTYKICAgICAgICBdLAogICAgICAgICJyb290X2Zsb2F0IjogNi4zNDE0MjMxNjQ0NTY1NmUtMDUsCiAgICAgICAgIndlaWdodGVkX2xvZ19jb3N0IjogMC4zNjkyMDI4NDQzMzY2OTQ1NAogICAgICB9LAogICAgICB7CiAgICAgICAgInJlbW92ZWRfZGltZW5zaW9ucyI6IFsKICAgICAgICAgIDE2LAogICAgICAgICAgMTcsCiAgICAgICAgICAxOCwKICAgICAgICAgIDE5LAogICAgICAgICAgMjAsCiAgICAgICAgICAyMSwKICAgICAgICAgIDIyCiAgICAgICAgXSwKICAgICAgICAicm9vdF9mbG9hdCI6IDUuMDQwNTQ1NTcxODg3MTgzNWUtMDUsCiAgICAgICAgIndlaWdodGVkX2xvZ19jb3N0IjogMC40NjQ1MDQ5NzMyNTY2MzgKICAgICAgfSwKICAgICAgewogICAgICAgICJyZW1vdmVkX2RpbWVuc2lvbnMiOiBbCiAgICAgICAgICAxNwogICAgICAgIF0sCiAgICAgICAgInJvb3RfZmxvYXQiOiA2LjM3MzE4MDAzNTQwNTc2OGUtMDUsCiAgICAgICAgIndlaWdodGVkX2xvZ19jb3N0IjogMC4zNjczNjI3MzAwNTE2MTEzNQogICAgICB9LAogICAgICB7CiAgICAgICAgInJlbW92ZWRfZGltZW5zaW9ucyI6IFsKICAgICAgICAgIDE3LAogICAgICAgICAgMTgsCiAgICAgICAgICAxOSwKICAgICAgICAgIDIwLAogICAgICAgICAgMjEsCiAgICAgICAgICAyMgogICAgICAgIF0sCiAgICAgICAgInJvb3RfZmxvYXQiOiA1LjA3MjgwNDU0NDA5NDg3OTRlLTA1LAogICAgICAgICJ3ZWlnaHRlZF9sb2dfY29zdCI6IDAuNDYxNTUwNTcyODQ1MTI5NwogICAgICB9LAogICAgICB7CiAgICAgICAgInJlbW92ZWRfZGltZW5zaW9ucyI6IFsKICAgICAgICAgIDE4CiAgICAgICAgXSwKICAgICAgICAicm9vdF9mbG9hdCI6IDYuMjc4MDc1NTQ5NTYyMjIzZS0wNSwKICAgICAgICAid2VpZ2h0ZWRfbG9nX2Nvc3QiOiAwLjM3MjkyODkxODgzMTI4OTYKICAgICAgfSwKICAgICAgewogICAgICAgICJyZW1vdmVkX2RpbWVuc2lvbnMiOiBbCiAgICAgICAgICAxOCwKICAgICAgICAgIDE5LAogICAgICAgICAgMjAsCiAgICAgICAgICAyMSwKICAgICAgICAgIDIyCiAgICAgICAgXSwKICAgICAgICAicm9vdF9mbG9hdCI6IDUuMDg4NTcwNjM1MDMwMzk3ZS0wNSwKICAgICAgICAid2VpZ2h0ZWRfbG9nX2Nvc3QiOiAwLjQ2MDEyMDMyMzkzNzAzNDUKICAgICAgfSwKICAgICAgewogICAgICAgICJyZW1vdmVkX2RpbWVuc2lvbnMiOiBbCiAgICAgICAgICAxOQogICAgICAgIF0sCiAgICAgICAgInJvb3RfZmxvYXQiOiA1LjgxNDE3MjkwMTU1NTkzODRlLTA1LAogICAgICAgICJ3ZWlnaHRlZF9sb2dfY29zdCI6IDAuNDAyNjg5Nzk0MDM2NTU1MwogICAgICB9LAogICAgICB7CiAgICAgICAgInJlbW92ZWRfZGltZW5zaW9ucyI6IFsKICAgICAgICAgIDE5LAogICAgICAgICAgMjAsCiAgICAgICAgICAyMSwKICAgICAgICAgIDIyCiAgICAgICAgXSwKICAgICAgICAicm9vdF9mbG9hdCI6IDUuMTY2NzE1NzIwMDA0OTI2ZS0wNSwKICAgICAgICAid2VpZ2h0ZWRfbG9nX2Nvc3QiOiAwLjQ1MzE2MDExNTI0NDkyNzMzCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAicmVtb3ZlZF9kaW1lbnNpb25zIjogWwogICAgICAgICAgMjAKICAgICAgICBdLAogICAgICAgICJyb290X2Zsb2F0IjogNi4xNzA0OTMwMjc4OTY1NTVlLTA1LAogICAgICAgICJ3ZWlnaHRlZF9sb2dfY29zdCI6IDAuMzc5NDMyMDIyMDk2NDEyCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAicmVtb3ZlZF9kaW1lbnNpb25zIjogWwogICAgICAgICAgMjAsCiAgICAgICAgICAyMSwKICAgICAgICAgIDIyCiAgICAgICAgXSwKICAgICAgICAicm9vdF9mbG9hdCI6IDUuNjIyMjc1NzQ2ODA2ODUxZS0wNSwKICAgICAgICAid2VpZ2h0ZWRfbG9nX2Nvc3QiOiAwLjQxNjQzNjI0MTY1MjQ5NzQKICAgICAgfSwKICAgICAgewogICAgICAgICJyZW1vdmVkX2RpbWVuc2lvbnMiOiBbCiAgICAgICAgICAyMQogICAgICAgIF0sCiAgICAgICAgInJvb3RfZmxvYXQiOiA2LjExMDE0ODQxOTk2Mjk4ZS0wNSwKICAgICAgICAid2VpZ2h0ZWRfbG9nX2Nvc3QiOiAwLjM4MzE4MDAxOTA5NzkxOTkKICAgICAgfSwKICAgICAgewogICAgICAgICJyZW1vdmVkX2RpbWVuc2lvbnMiOiBbCiAgICAgICAgICAyMSwKICAgICAgICAgIDIyCiAgICAgICAgXSwKICAgICAgICAicm9vdF9mbG9hdCI6IDUuODEwNzg2NDY4NjE2OTYzNWUtMDUsCiAgICAgICAgIndlaWdodGVkX2xvZ19jb3N0IjogMC40MDI5MjQyOTQ2NDQ0NDE0NgogICAgICB9LAogICAgICB7CiAgICAgICAgInJlbW92ZWRfZGltZW5zaW9ucyI6IFsKICAgICAgICAgIDIyCiAgICAgICAgXSwKICAgICAgICAicm9vdF9mbG9hdCI6IDYuMDcwNzk2MDY5MDU0NDFlLTA1LAogICAgICAgICJ3ZWlnaHRlZF9sb2dfY29zdCI6IDAuMzg1NjY0MzUwNjM0ODc3NwogICAgICB9LAogICAgICB7CiAgICAgICAgInJlbW92ZWRfZGltZW5zaW9ucyI6IFsKICAgICAgICAgIDUsCiAgICAgICAgICA3CiAgICAgICAgXSwKICAgICAgICAicm9vdF9mbG9hdCI6IDYuMzk4MTI2NjI1OTY1NjE0ZS0wNSwKICAgICAgICAid2VpZ2h0ZWRfbG9nX2Nvc3QiOiAwLjM2NTkzMDA3MjI1NzczMzY2CiAgICAgIH0sCiAgICAgIHsKICAgICAgICAicmVtb3ZlZF9kaW1lbnNpb25zIjogWwogICAgICAgICAgMiwKICAgICAgICAgIDUKICAgICAgICBdLAogICAgICAgICJyb290X2Zsb2F0IjogNi4zOTc4MjI4NTcxNjgzNjFlLTA1LAogICAgICAgICJ3ZWlnaHRlZF9sb2dfY29zdCI6IDAuMzY1OTQ3NDUyMzk5OTY1MzUKICAgICAgfSwKICAgICAgewogICAgICAgICJyZW1vdmVkX2RpbWVuc2lvbnMiOiBbCiAgICAgICAgICAyLAogICAgICAgICAgNwogICAgICAgIF0sCiAgICAgICAgInJvb3RfZmxvYXQiOiA2LjM5NzczOTYyMTczNzg1NmUtMDUsCiAgICAgICAgIndlaWdodGVkX2xvZ19jb3N0IjogMC4zNjU5NTIyMTQ5NjA3NTMzCiAgICAgIH0sCiAgICAgIHsKICAgICAgICAicmVtb3ZlZF9kaW1lbnNpb25zIjogWwogICAgICAgICAgMiwKICAgICAgICAgIDUsCiAgICAgICAgICA3CiAgICAgICAgXSwKICAgICAgICAicm9vdF9mbG9hdCI6IDYuMzk3NzAzMzYzNDU0ODllLTA1LAogICAgICAgICJ3ZWlnaHRlZF9sb2dfY29zdCI6IDAuMzY1OTU0MjkxMTQ3OTA0MgogICAgICB9LAogICAgICB7CiAgICAgICAgInJlbW92ZWRfZGltZW5zaW9ucyI6IFsKICAgICAgICAgIDEsCiAgICAgICAgICA1CiAgICAgICAgXSwKICAgICAgICAicm9vdF9mbG9hdCI6IDYuMzk3NTk4OTc3OTE1NDc1ZS0wNSwKICAgICAgICAid2VpZ2h0ZWRfbG9nX2Nvc3QiOiAwLjM2NTk2MDI2MzUwNDUwMjg0CiAgICAgIH0sCiAgICAgIHsKICAgICAgICAicmVtb3ZlZF9kaW1lbnNpb25zIjogWwogICAgICAgICAgMSwKICAgICAgICAgIDcKICAgICAgICBdLAogICAgICAgICJyb290X2Zsb2F0IjogNi4zOTc0OTY4Mjg4NjAzMDllLTA1LAogICAgICAgICJ3ZWlnaHRlZF9sb2dfY29zdCI6IDAuMzY1OTY2MTA4Mjk5NTc4NTQKICAgICAgfSwKICAgICAgewogICAgICAgICJyZW1vdmVkX2RpbWVuc2lvbnMiOiBbCiAgICAgICAgICAxLAogICAgICAgICAgNSwKICAgICAgICAgIDcKICAgICAgICBdLAogICAgICAgICJyb290X2Zsb2F0IjogNi4zOTc0NjA1NzMzMzU1MzdlLTA1LAogICAgICAgICJ3ZWlnaHRlZF9sb2dfY29zdCI6IDAuMzY1OTY4MTg0NDg2NzI5NDYKICAgICAgfSwKICAgICAgewogICAgICAgICJyZW1vdmVkX2RpbWVuc2lvbnMiOiBbCiAgICAgICAgICAxLAogICAgICAgICAgMiwKICAgICAgICAgIDUKICAgICAgICBdLAogICAgICAgICJyb290X2Zsb2F0IjogNi4zOTcyMTQ1NTI4NTQ2MDVlLTA1LAogICAgICAgICJ3ZWlnaHRlZF9sb2dfY29zdCI6IDAuMzY1OTgyMjY0NTg3MzYxNTUKICAgICAgfSwKICAgICAgewogICAgICAgICJyZW1vdmVkX2RpbWVuc2lvbnMiOiBbCiAgICAgICAgICAxLAogICAgICAgICAgMiwKICAgICAgICAgIDcKICAgICAgICBdLAogICAgICAgICJyb290X2Zsb2F0IjogNi4zOTcxMzQ4ODgxMDc4MzhlLTA1LAogICAgICAgICJ3ZWlnaHRlZF9sb2dfY29zdCI6IDAuMzY1OTg2ODIzNzg4OTYxNzUKICAgICAgfSwKICAgICAgewogICAgICAgICJyZW1vdmVkX2RpbWVuc2lvbnMiOiBbCiAgICAgICAgICAzLAogICAgICAgICAgNQogICAgICAgIF0sCiAgICAgICAgInJvb3RfZmxvYXQiOiA2LjM5NzEyNTA5NTA5Njc1N2UtMDUsCiAgICAgICAgIndlaWdodGVkX2xvZ19jb3N0IjogMC4zNjU5ODczODI0MDIwODQ0NQogICAgICB9LAogICAgICB7CiAgICAgICAgInJlbW92ZWRfZGltZW5zaW9ucyI6IFsKICAgICAgICAgIDEsCiAgICAgICAgICAyLAogICAgICAgICAgNSwKICAgICAgICAgIDcKICAgICAgICBdLAogICAgICAgICJyb290X2Zsb2F0IjogNi4zOTcwOTg2MzY2NzYxMTJlLTA1LAogICAgICAgICJ3ZWlnaHRlZF9sb2dfY29zdCI6IDAuMzY1OTg4ODk5OTc2MTEyNgogICAgICB9LAogICAgICB7CiAgICAgICAgInJlbW92ZWRfZGltZW5zaW9ucyI6IFsKICAgICAgICAgIDMsCiAgICAgICAgICA3CiAgICAgICAgXSwKICAgICAgICAicm9vdF9mbG9hdCI6IDYuMzk3MDIyOTYxMjAwMmUtMDUsCiAgICAgICAgIndlaWdodGVkX2xvZ19jb3N0IjogMC4zNjU5OTMyMjcxOTcxNjAxNQogICAgICB9LAogICAgICB7CiAgICAgICAgInJlbW92ZWRfZGltZW5zaW9ucyI6IFsKICAgICAgICAgIDIsCiAgICAgICAgICAzCiAgICAgICAgXSwKICAgICAgICAicm9vdF9mbG9hdCI6IDYuMzk2NzMxOTQ0NTI2OTE5ZS0wNSwKICAgICAgICAid2VpZ2h0ZWRfbG9nX2Nvc3QiOiAwLjM2NjAwOTg4MzcxMDY0MDY0CiAgICAgIH0sCiAgICAgIHsKICAgICAgICAicmVtb3ZlZF9kaW1lbnNpb25zIjogWwogICAgICAgICAgMiwKICAgICAgICAgIDMsCiAgICAgICAgICA1CiAgICAgICAgXSwKICAgICAgICAicm9vdF9mbG9hdCI6IDYuMzk2Njk1Njk3Njc1MzQ5ZS0wNSwKICAgICAgICAid2VpZ2h0ZWRfbG9nX2Nvc3QiOiAwLjM2NjAxMTk1OTg5Nzc5MTUKICAgICAgfSwKICAgICAgewogICAgICAgICJyZW1vdmVkX2RpbWVuc2lvbnMiOiBbCiAgICAgICAgICAyLAogICAgICAgICAgMywKICAgICAgICAgIDcKICAgICAgICBdLAogICAgICAgICJyb290X2Zsb2F0IjogNi4zOTY2MTI0OTE1NDg3ODdlLTA1LAogICAgICAgICJ3ZWlnaHRlZF9sb2dfY29zdCI6IDAuMzY2MDE2NzIyNDU4NTc5NDcKICAgICAgfSwKICAgICAgewogICAgICAgICJyZW1vdmVkX2RpbWVuc2lvbnMiOiBbCiAgICAgICAgICAxLAogICAgICAgICAgMwogICAgICAgIF0sCiAgICAgICAgInJvb3RfZmxvYXQiOiA2LjM5NjU2ODkxMzY4NjYxZS0wNSwKICAgICAgICAid2VpZ2h0ZWRfbG9nX2Nvc3QiOiAwLjM2NjAxOTIxNzUyNDg3OTIKICAgICAgfSwKICAgICAgewogICAgICAgICJyZW1vdmVkX2RpbWVuc2lvbnMiOiBbCiAgICAgICAgICAxLAogICAgICAgICAgMywKICAgICAgICAgIDUKICAgICAgICBdLAogICAgICAgICJyb290X2Zsb2F0IjogNi4zOTY1MzYyMjI5MTM5MThlLTA1LAogICAgICAgICJ3ZWlnaHRlZF9sb2dfY29zdCI6IDAuMzY2MDIxMDkwMzUyODQyMwogICAgICB9LAogICAgICB7CiAgICAgICAgInJlbW92ZWRfZGltZW5zaW9ucyI6IFsKICAgICAgICAgIDEsCiAgICAgICAgICAzLAogICAgICAgICAgNwogICAgICAgIF0sCiAgICAgICAgInJvb3RfZmxvYXQiOiA2LjM5NjQzMDU1MzY1MzRlLTA1LAogICAgICAgICJ3ZWlnaHRlZF9sb2dfY29zdCI6IDAuMzY2MDI3MTM4NTA3MTA1OAogICAgICB9LAogICAgICB7CiAgICAgICAgInJlbW92ZWRfZGltZW5zaW9ucyI6IFsKICAgICAgICAgIDUsCiAgICAgICAgICA5CiAgICAgICAgXSwKICAgICAgICAicm9vdF9mbG9hdCI6IDYuMzk2NDAwOTY5NTkwNzExZS0wNSwKICAgICAgICAid2VpZ2h0ZWRfbG9nX2Nvc3QiOiAwLjM2NjAyODgyNDU2MDY5NjI0CiAgICAgIH0sCiAgICAgIHsKICAgICAgICAicmVtb3ZlZF9kaW1lbnNpb25zIjogWwogICAgICAgICAgMSwKICAgICAgICAgIDMsCiAgICAgICAgICA1LAogICAgICAgICAgNwogICAgICAgIF0sCiAgICAgICAgInJvb3RfZmxvYXQiOiA2LjM5NjM5Nzg2NDMxNjg3N2UtMDUsCiAgICAgICAgIndlaWdodGVkX2xvZ19jb3N0IjogMC4zNjYwMjkwMTEzMzUwNjg5CiAgICAgIH0KICAgIF0sCiAgICAiZGlzdGluY3RfcGh5c2ljYWxfcHJvZmlsZXNfdGVzdGVkIjogNTc3NjQsCiAgICAicmFuZG9tX3NlZWQiOiAyMDI2MTAwOSwKICAgICJ0YXJnZXRfbGV2ZWxfcGF0dGVybnMiOiA5MjQsCiAgICAiYmVzdF9yZW1vdmVkX2RpbWVuc2lvbnMiOiBbXSwKICAgICJiZXN0X3Jvb3RfZmxvYXQiOiA2LjM5ODMwMTMyMzk4Mjc3N2UtMDUsCiAgICAiYmFzZV9yb290X2Zsb2F0IjogNi4zOTgzMDEzMjM5ODI3NzdlLTA1LAogICAgInF1YWxpZmllZF9uZXdfcGh5c2ljYWxfd2l0bmVzcyI6IGZhbHNlLAogICAgInJlYXNvbiI6ICJBbnkgbm9udHJpdmlhbCBhYmxhdGlvbiBuZWVkcyB0aGUgbmV3IGhpZ2gtcmFuayBnZW5lcmljLXBpdm90IGNoZWNrOyBWIHJlbGVhc2Ugb3JkZXIgcHJlc2VydmVkLiIKICB9LAogICJsaW1pdGF0aW9ucyI6IFsKICAgICJTdGFnZSB0d28gYXMgdGhlIGNvbXBsZW1lbnQgdGltZSByZXZlcnNhbCBvZiBzdGFnZSBvbmUgaXMgaW5oZXJpdGVkIGFuZCBub3QgbWFjaGluZSBjaGVja2VkIGhlcmUuIiwKICAgICJGaW5pdGUgYWxwaGFiZXQgdGFwZSBjb21waWxhdGlvbiBhbmQgdGhlIGdlbmVyYWwgYmFzaXMvYWxnb3JpdGhtaWMgaW50ZXJmYWNlcyByZW1haW4gaW5oZXJpdGVkIGxlbW1hcy4iLAogICAgIlRoZSBjb21wbGV4IHByb2ZpbGUgYW5kIGl0cyBmdWxsIGltcGxlbWVudGF0aW9uIGFyZSBpbmhlcml0ZWQgZnJvbSB1cHN0cmVhbSByb3VuZCBzaXg7IGl0cyBtb21lbnQgYXJpdGhtZXRpYyBpcyBhdWRpdGVkIGxvY2FsbHkuIiwKICAgICJUaGlzIGlzIGFuIGFzeW1wdG90aWMgZXhwb25lbnQgY2VydGlmaWNhdGUsIG5vdCBhIHJ1bm5hYmxlIGZhc3QgaW50ZWdlciBtdWx0aXBsaWVyIG9yIGEgcHJhY3RpY2FsIHNwZWVkIGJlbmNobWFyay4iLAogICAgIlogcmVwbGF5IHVzZXMgZm91ciByYW5kb20gc2FtcGxlczsgdGhlIGFjdHVhbCBGMiBjaXJjdWl0IGlzIGNoZWNrZWQgb24gaXRzIGVudGlyZSBkYXRhIGFuZCBkaXJ0eSBzY3JhdGNoIGJhc2lzLiIKICBdCn0K" + }, + "b91de239a64d24d8aee409a0f4ac3e00710ae5c1": { + "type": "commit", + "base64": "dHJlZSA3MzE5NjY2MjEwZDE5MzA4ODFhZTAyYWZjOWFkY2M1Njk1MDAxMjg4CnBhcmVudCBkM2QzNzBjMzQ5Mzc1MDNiZDNmYTYzYzgzZDUwNWEwNWU4ZTUwODkzCnBhcmVudCA1MDE1MDExYmQ5YTY1NWRhMDM4OTEwMTcxZWVlOWY0MzFmNDU5MGZmCnBhcmVudCA2NzI1YzZhMTdiMTc4NzFhMzUzNTNmZDI5MTU3ZjRlZDg1MWJjMTE0CnBhcmVudCAzZWYyNDZmYTRmNjljODdlYmZlZDc4Mzc2NDE4YWZhOWZmY2FkMTQ1CnBhcmVudCAxZmE1YjlhOWFhY2NiZWJiM2ViMjlhYzdlYTU1ODExZjQ2NDY0ZWVlCnBhcmVudCBhMTdjYWIzOTZjZTFjNzljMjg4YmRlOWQwNjAwMmNlZmRjMGFmOGU2CnBhcmVudCBhODBmNWU2NzZjODRiNTlkZWY5NzkxNDk1ZGYwNjU1ZWZlODlhMDRmCnBhcmVudCBjOTE1YjQxMTc2MjZhNTEyZGQ0NzBhZGJkYmQ3Njk2MzEwOGY1Y2IzCnBhcmVudCA4MTdhZWI3YjEyMjU3MTdkMWI3ODRkNTA3NTcwYmYwMmVkODkyOTRjCnBhcmVudCA1YmE2Y2YwYmZiNjhmMmJlOGQxNTYxMGU3OTcyMjA3YzUwMjU0ZDZhCnBhcmVudCBjMmYwM2VkNDg2MzdmYmU2OTgwM2I2Y2VjZGNkNTA2ODZlMzI3NGFmCnBhcmVudCA2NjFlYmFiYzEwNzZjOWY1MjVkN2NlNDk2N2M4NzZiMjAzZmE5ODI3CnBhcmVudCAwMDNmMzY2Y2ZhOTllMTlmYmVhY2Q5MzAwYTIxOWYyZDQ0YzhjZmYwCnBhcmVudCBjMjk3MjMzZTc4OGEyM2U5ODMzYWQxZWUwN2ZjODUxN2FjY2QwZjQyCnBhcmVudCBiYjExNDNkMDcxNGJmMzE1YTAwNDNjZWJlYWJlOTZiOTg3YWY5MzVlCnBhcmVudCA5ZDk2MzI3NTA3NWZhOThmMWRhODIxZTI3NzU3YjIzOGRhZmQ2YjNjCnBhcmVudCAxMjJlNjQ1M2U4MDMzMDYzM2FmNzAxZWFiZDFhNmE3MmRmZWZkMjg2CnBhcmVudCBhNDk5YTM0NWMwNDBhYTE1YjY4ZTk4NGEwOTA0ZWFkYzQ4NWM3YTdlCnBhcmVudCA3ZmVjYmUzNjUxZTA5NWZiMGY0NTA3NTZhZmRlZWZkMmE5ZWU4MGEyCnBhcmVudCA5YzM0NWEyYTExZTVmNGYzNjQ5ZjdjNjgyMTRiZjlhMmEwYTNmZTljCnBhcmVudCA2MDUzMjNiYWI0YmEzMzBkZTNkMTc4NWRjNWIzZWNiMTRlOGFiNzQ3CnBhcmVudCBlM2JmM2FiMGNiMWVjNDg1ODhlMjc5YjMxYTk3ZTdhNDljNzJmOTllCnBhcmVudCAwM2JkZTcwYzBjMmE0NTNmMWNlYWUyMGM2MTliNjAyODQxNDA1NDY3CnBhcmVudCBhOTJmYzk4YzQ1NmY2Yzg4NjNiOGJiYTkwMDc5YmE3MWI5N2QyZGMwCnBhcmVudCAxYTIxNzk0ZWI1Mzg0ZGIwZTk2ZDdiYzJiMTFhYTZmMjhjZmY3YTg1CnBhcmVudCAxMTdjYWYxNjRlM2IyMzVlZjIwMTg4YWEyZGMxYjQ5NjE3ZTkyNTVjCnBhcmVudCA1ZTQyZjkxM2U4Mjc5OTBmMzBkMGYwOTE4ZTU0YTgwM2Q4MzBmMTNlCnBhcmVudCBiMGNlYTA2ZDdmZDVhYzEwZjc2MTY5YjAxZDMxMTRmMjA4ZmM3NDQ4CnBhcmVudCA3MDFiMTI0NmUyZGVmOGIwMjJhMTQzMDliNTE3MTEzOGYyYjEyYTUyCnBhcmVudCA0Njk5MWEyMWQxM2YzN2ZhZjIzNTA1OTFkZTdkNzk0Y2ZhYTQ0NTVlCnBhcmVudCBiMWIyYWYzNDE1ZWNiNDk0YTA1NTJiMTZjMTgwNDViZjNlZTA1ZTk1CnBhcmVudCAxMWE0ZTMxNzY1MTFlY2U4NDBkNTdiN2RiMDQ1NzcyOTQ1ZDk3MDNjCnBhcmVudCBmNTljYjlmNTRkMTJhMmEwMmI2NjVhZmVmMjRhOWJiNTA2MWFlMDExCnBhcmVudCBkYTliNmNiZWJiMzNlOGI4MjkzYTYwNGRkZTBlYWNlOWRlNTM0MDZiCnBhcmVudCAxN2M5NzllYjZkY2Q0YzMwMGU2MjYzYzY2MTExZjIyMGE5ZTkyNmU3CnBhcmVudCA3YzM3OTMxMzExNTVmYTU3OTU5MjBlZmYzNTA1NzY3MmJlMzg4MzNhCnBhcmVudCA3OWRkNmUxMzQ4NTViYzhhN2I4OTUwYzNhYTBlYjI3OWZlMTQ4Y2ViCnBhcmVudCA0ZmI1MGI2NWUzNTQyNTkyYmIxNjc0YTAyMTFiMGI1ZmFhM2VkOTIwCnBhcmVudCBhY2FlNDk2NGFlZjQxYzY5ZjNjNTdlNzJhNDVlNzZhZmM0ZDQ5MzRkCnBhcmVudCA2N2I0NDZjY2RiOWQyM2NhZTk2ODNmNjA1OWZiNjA3YjUyMjg1MDA0CnBhcmVudCAxODMwNzdiN2IzYWUxMmU5NmViM2E4N2MxZGMwODAyM2U2NDk0ZGNhCnBhcmVudCA0MjRlZjQ0NjA5ZWRhMzc3MjUwYjI5ODVhNTIxMGNiMzM2YWRlMTllCnBhcmVudCBkZDc2OTBhNWE3YTMwMjdhZmNiMDAyYWE4ZWY0MWQwZTI5YmRlNThmCnBhcmVudCBmMGZlNDQ1M2EwODhjNjJhZjNlZTc5NTY5MWZhOTJjNTAyZWQ4YjU3CnBhcmVudCA0NjZmYzk5ZTY3ZDg3MjgzMWQxZDE5MjM5NGYzNDZhMjhlOTA5ZTA5CnBhcmVudCBkNWE1YjkzNjg0NDEwNGRiMThjNWJkZDg3MWY4OWRhMmZiZjk5NTUxCnBhcmVudCA2ZTNkNjY3ZWUxMTljYzYzMGViNWZmYzY5ZWE0YzIyMmY5NjdjZTJkCnBhcmVudCA4ZDFhMDgzOGYzZTkwNmQzNzI4MThkZjAyYjM1NjRjOGIzNjQ5NWNjCnBhcmVudCAyYjRkY2E4NDNiN2E3MTk1MTI1OTU4OTZhYWIyOWRlMjhiYzRlYTFmCnBhcmVudCBmNWY1ZWJkZmM5MmZhNjAwMWQyMDlhYWZiYTQzMmEzNmZmOWQ4NmY1CnBhcmVudCAwYzQ0MGU0MGM5ZDRhNWEwMmNhNWJkMDI4YTJlYmI1ZWJiY2E1NWQ3CnBhcmVudCA2NDFhYWU3YmFmMTRhZTIxYjY5MTQ1ZDU0ZTgyMzJiZjIwMDc2ZmNlCnBhcmVudCBlMTUzNTBiNjZlNGJmNzk2MTUzYTY4YzI0MGE2Y2MxYjc4OGFiZTNlCnBhcmVudCA2ODYyYzQ3ZjVmY2I2OWRmYjQyNGUxYmI3ZjMyZjQxNWQ4NjU5MDYzCnBhcmVudCAyMmRjMTlkZDcxMjNkZDU4MjExMGE5MTJhNmNhNjg3ZTMxZTIyNDNmCnBhcmVudCAzZmM1NGViYWNiMWZiYmQxZjBlMGU2NmY5ZGJkMzIyMDI5MzQ2NjFjCnBhcmVudCA3NWFiMWY3MGQxNDZjMjFjNzYxMWNlMGRmOWViNWY2NDVmNTFhYzBlCnBhcmVudCAzNGMwNjYzOTBiOWIwMDI2Nzg5ZDhjZTliMGUwNDRiYzMwMjUzYjJiCnBhcmVudCBlYjIzMWI3YjYzZjdmYzk5ZDUxZmZjMTZlMDM1NjgzMWMzYWYxYzIyCnBhcmVudCA0OTc0ODk1ZGFmOTJiNTFkMmNjNGE5NTRiYzZiNzdiZTJkN2ZmNGM0CnBhcmVudCA0NTM4OWIzODNiMzEwOTJkODNkMTkwMDdkZDZmYWFhODU0M2RiOTYxCnBhcmVudCAwOTc3NWU5ZjNmYmYxOTAwMTc1MDEwYmNkMGMzZDZkMWRiZjY1ZmZlCnBhcmVudCA1YjNhZGQ5NDE1YmY3ZWYxOWUxZGZlNzM5OTAzZDA5ZDY2YzFkOWNhCnBhcmVudCA1MDI3NjFlN2UwMmUyNWM3MzdmNjFiZTcxOGUyOWJjYTNmMzkxZDE5CnBhcmVudCA3NzIyNzU1MDk4N2E0OWVlYzVmMzM1YjYxYWIyMzNmYzVjOTNkYmU4CnBhcmVudCAyOTVhNDhhM2I5NjY0Mjg4OTYwNTdhOThjNmI0ODM0YzBiNGI3NDE2CnBhcmVudCBjYmIwNWNlNTA0ZDU3MTU0NmQ5Yjc3OTRjMTg2YTYxM2M2NTljM2JmCnBhcmVudCA1MWZkMWJiZmY5YjczZTNhZDZlOGJjNmQ1MzMxODkwOWMzNzg1NDg0CnBhcmVudCA0NDZkZDA3ZGJlMTRmNmRjZmNjYTYyOWYzYTljYjAxY2IxNDhmMDAzCnBhcmVudCBiMWE2ZjI0ZTU3MTQxNjM3YjNmZjA0MGQ2ZjJjZTlkODk2ZmZiOWJiCnBhcmVudCA0NjM0ZTExMTYyNjkxNDc4NTU2YzFlZjg4ZmE2YTM2OWMyNjIyYWJmCnBhcmVudCAzNjU3YjVkNjJmYWJjMGJkMmIxYzU5NmFkODZiOTcwMDJlNDM3ZWE4CnBhcmVudCBkZGE1MzViZGNmYzMyMWExM2ExZWJkM2MyZDcwZTJiNWJiNzIzNjhlCnBhcmVudCA1MzA1ODhhMDE5YjRhNzRmMDkxODA2ODBjOWUzOTYxYmY2NDllYzg5CnBhcmVudCA1OWZhZGUxZjc3OTBkYjYxYTU2YjY5ZTBkMzk3NGMwYTk3YjQxZjRkCnBhcmVudCAzYWNmMmY5NDRhYmQwNjkzMDE2MDBjZTQ2OGYxNmYxZGQ4ZjFmOWU0CnBhcmVudCAyYzk3ZThhYjE1NzhkMDVkMGFhY2YwMzkwM2Y0NThiMDg4YzdkZDUwCnBhcmVudCBjMjA1YjdkOWRmMGFiOTMzYzRiNzM5MmVhNjYyNWMwNWRiZDVlNGMwCnBhcmVudCBjNWE0OGMzZWQwYjFmMTZjZGRhNzYwMWVhMDU1NWI5OTk4ZTllNzM0CnBhcmVudCAzZGRjNGRjZjczMTJlYzVhYjNiZmY4NDNmZDNlOGMxMGNjZTA0MWRjCnBhcmVudCAyZmM2Y2Y1NDg1MjNmYjIyYmJhMWQ4OGFhYWRjMzY3ZmQwYTBiNDk5CnBhcmVudCA4MDNiMjhhNWUzNzM0NDI5NzQzODUzOTZlOWQ0ZDNmNmU3NWZkNWU3CnBhcmVudCBjZTdhODZmNjc0YzZmODNhMGZlMzMzNDhjMGEwNDYwNjRmZWZlOTAxCnBhcmVudCA3MDM1NWEzMTkyMDI4ODUyNTk4ZTk2NjI0YWUyOWIzODllNjY0NDUxCnBhcmVudCBmNTcxYmNiZDZlMDY2MThhZWFlMGI4Mjc5ZGE0ODA2MDAzMmRjNzRiCnBhcmVudCAyNzliMmZmNmQzZjBhMWFiZTRhNjFjMWYyZWE0OTQ0YmNhN2NmM2RkCnBhcmVudCAwYmZmZGZhNWFhZmRjMjNlNjY4ZTAzNWFlMmIxNzkyMTJiNGIzZDlhCnBhcmVudCBhZjkwYjk0NzgzZjdkMTA0YTBiZTc1Yzc2MmFkZTc1OGJlYzc1ODU1CnBhcmVudCA1NjFkNmVjYmJlYjk0YTExYjY3ODYyY2NlZGQzMmJmY2JhZDJjYWUwCnBhcmVudCAyMDE3MzdhMWVjNGY5MzZlMTY2ZTI0ODFmYjllODgxMDRjYjJjY2M3CnBhcmVudCBjNmVlYTNlOGE0NmJmMTIyODc4YjUxMjU5MGY5ZjkxYTIwMjYwODAwCnBhcmVudCAwYTQwOTExNzViMzk4MTI2N2E5N2E2MmFiNzQ5MmNiOWJhNTI4OTE2CmF1dGhvciBEb3VnbGFzIFIuIENvbGtpdHQgPGRvdWdsYXMuY29sa2l0dEBnbWFpbC5jb20+IDE3OTE5Mjc0MzIgLTA0MDAKY29tbWl0dGVyIERvdWdsYXMgUi4gQ29sa2l0dCA8ZG91Z2xhcy5jb2xraXR0QGdtYWlsLmNvbT4gMTc5MTkyNzQzMiAtMDQwMAoKUHJlc2VydmUgOTIgcmV2aWV3ZWQgaGlzdG9yaWNhbCBQUiBzb3VyY2UgaGVhZHMgZm9yIHJlY29uY2lsaWF0aW9uMTAwCgpTb3VyY2UtcmV0ZW50aW9uIHRhZyBvbmx5LiBUaGlzIGlzIE5PVCBhbiBpbnRlZ3JhdGlvbiBtZXJnZSBvciBhcHByb3ZhbCBvZiBhbGwgY2xhaW1zLgpUaGUgdW5jaGFuZ2VkIHRyZWUgaXMgdGhlIGJhc2VsaW5lIG1haW47IGNvbnN1bHQgY29tbXVuaXR5LXJlY29uY2lsaWF0aW9uOTItYXVkaXQgZm9yIHNjb3BlZCBkaXNwb3NpdGlvbnMuCg==" + }, + "c28b58b3fc19c97b4675b1f8e9b3651c59d51d0c": { + "type": "blob", + "base64": "ewogICJzdGF0dXMiOiAiUEFTUyIsCiAgImNoYW5nZWRfZnJhbWVzIjogWwogICAgewogICAgICAic2xvdCI6IDIyOTY2LAogICAgICAib2xkX2RpbSI6IDEyLAogICAgICAibmV3X2RpbSI6IDEzLAogICAgICAibmV3X3JhbmtfZXhhY3QiOiAxMywKICAgICAgImdyYW1fZGV0ZXJtaW5hbnQiOiAiMzU1ODYxMjE1OTY2MDYiLAogICAgICAib2xkX2NvbnRhaW5lZCI6IHRydWUsCiAgICAgICJzdGFydF9jb250YWluZWQiOiB0cnVlLAogICAgICAidGFyZ2V0X2NvbnRhaW5lZCI6IHRydWUsCiAgICAgICJjYXBfZGltZW5zaW9uIjogMTQsCiAgICAgICJjYXBfZ3JhbV9yYW5rX2V4YWN0IjogMTMsCiAgICAgICJtYXhpbWFsX2Zvcl9maXhlZF9sYXRlcl9mcmFtZXMiOiB0cnVlCiAgICB9LAogICAgewogICAgICAic2xvdCI6IDIyOTcwLAogICAgICAib2xkX2RpbSI6IDEyLAogICAgICAibmV3X2RpbSI6IDEzLAogICAgICAibmV3X3JhbmtfZXhhY3QiOiAxMywKICAgICAgImdyYW1fZGV0ZXJtaW5hbnQiOiAiMzU1ODYxMjE1OTY2MDYiLAogICAgICAib2xkX2NvbnRhaW5lZCI6IHRydWUsCiAgICAgICJzdGFydF9jb250YWluZWQiOiB0cnVlLAogICAgICAidGFyZ2V0X2NvbnRhaW5lZCI6IHRydWUsCiAgICAgICJjYXBfZGltZW5zaW9uIjogMTQsCiAgICAgICJjYXBfZ3JhbV9yYW5rX2V4YWN0IjogMTMsCiAgICAgICJtYXhpbWFsX2Zvcl9maXhlZF9sYXRlcl9mcmFtZXMiOiB0cnVlCiAgICB9LAogICAgewogICAgICAic2xvdCI6IDIyOTc0LAogICAgICAib2xkX2RpbSI6IDEyLAogICAgICAibmV3X2RpbSI6IDEzLAogICAgICAibmV3X3JhbmtfZXhhY3QiOiAxMywKICAgICAgImdyYW1fZGV0ZXJtaW5hbnQiOiAiMzU1ODYxMjE1OTY2MDYiLAogICAgICAib2xkX2NvbnRhaW5lZCI6IHRydWUsCiAgICAgICJzdGFydF9jb250YWluZWQiOiB0cnVlLAogICAgICAidGFyZ2V0X2NvbnRhaW5lZCI6IHRydWUsCiAgICAgICJjYXBfZGltZW5zaW9uIjogMTQsCiAgICAgICJjYXBfZ3JhbV9yYW5rX2V4YWN0IjogMTMsCiAgICAgICJtYXhpbWFsX2Zvcl9maXhlZF9sYXRlcl9mcmFtZXMiOiB0cnVlCiAgICB9LAogICAgewogICAgICAic2xvdCI6IDIyOTgwLAogICAgICAib2xkX2RpbSI6IDEyLAogICAgICAibmV3X2RpbSI6IDEzLAogICAgICAibmV3X3JhbmtfZXhhY3QiOiAxMywKICAgICAgImdyYW1fZGV0ZXJtaW5hbnQiOiAiMTQyMzQ0NDg2Mzg2NDI0IiwKICAgICAgIm9sZF9jb250YWluZWQiOiB0cnVlLAogICAgICAic3RhcnRfY29udGFpbmVkIjogdHJ1ZSwKICAgICAgInRhcmdldF9jb250YWluZWQiOiB0cnVlLAogICAgICAiY2FwX2RpbWVuc2lvbiI6IDEzLAogICAgICAiY2FwX2dyYW1fcmFua19leGFjdCI6IDEzLAogICAgICAibWF4aW1hbF9mb3JfZml4ZWRfbGF0ZXJfZnJhbWVzIjogdHJ1ZQogICAgfSwKICAgIHsKICAgICAgInNsb3QiOiAyMjk4MiwKICAgICAgIm9sZF9kaW0iOiAxMiwKICAgICAgIm5ld19kaW0iOiAxMywKICAgICAgIm5ld19yYW5rX2V4YWN0IjogMTMsCiAgICAgICJncmFtX2RldGVybWluYW50IjogIjE0MjM0NDQ4NjM4NjQyNCIsCiAgICAgICJvbGRfY29udGFpbmVkIjogdHJ1ZSwKICAgICAgInN0YXJ0X2NvbnRhaW5lZCI6IHRydWUsCiAgICAgICJ0YXJnZXRfY29udGFpbmVkIjogdHJ1ZSwKICAgICAgImNhcF9kaW1lbnNpb24iOiAxNCwKICAgICAgImNhcF9ncmFtX3JhbmtfZXhhY3QiOiAxMywKICAgICAgIm1heGltYWxfZm9yX2ZpeGVkX2xhdGVyX2ZyYW1lcyI6IHRydWUKICAgIH0sCiAgICB7CiAgICAgICJzbG90IjogMjMyNjcsCiAgICAgICJvbGRfZGltIjogMTMsCiAgICAgICJuZXdfZGltIjogMTQsCiAgICAgICJuZXdfcmFua19leGFjdCI6IDE0LAogICAgICAiZ3JhbV9kZXRlcm1pbmFudCI6ICIyNTYyMjAwNzU0OTU1NjMyIiwKICAgICAgIm9sZF9jb250YWluZWQiOiB0cnVlLAogICAgICAic3RhcnRfY29udGFpbmVkIjogdHJ1ZSwKICAgICAgInRhcmdldF9jb250YWluZWQiOiB0cnVlLAogICAgICAiY2FwX2RpbWVuc2lvbiI6IDE1LAogICAgICAiY2FwX2dyYW1fcmFua19leGFjdCI6IDE0LAogICAgICAibWF4aW1hbF9mb3JfZml4ZWRfbGF0ZXJfZnJhbWVzIjogdHJ1ZQogICAgfSwKICAgIHsKICAgICAgInNsb3QiOiAyMzI2OSwKICAgICAgIm9sZF9kaW0iOiAxMywKICAgICAgIm5ld19kaW0iOiAxNCwKICAgICAgIm5ld19yYW5rX2V4YWN0IjogMTQsCiAgICAgICJncmFtX2RldGVybWluYW50IjogIjI1NjIyMDA3NTQ5NTU2MzIiLAogICAgICAib2xkX2NvbnRhaW5lZCI6IHRydWUsCiAgICAgICJzdGFydF9jb250YWluZWQiOiB0cnVlLAogICAgICAidGFyZ2V0X2NvbnRhaW5lZCI6IHRydWUsCiAgICAgICJjYXBfZGltZW5zaW9uIjogMTUsCiAgICAgICJjYXBfZ3JhbV9yYW5rX2V4YWN0IjogMTQsCiAgICAgICJtYXhpbWFsX2Zvcl9maXhlZF9sYXRlcl9mcmFtZXMiOiB0cnVlCiAgICB9LAogICAgewogICAgICAic2xvdCI6IDIzMjcwLAogICAgICAib2xkX2RpbSI6IDEzLAogICAgICAibmV3X2RpbSI6IDE0LAogICAgICAibmV3X3JhbmtfZXhhY3QiOiAxNCwKICAgICAgImdyYW1fZGV0ZXJtaW5hbnQiOiAiMjU2MjIwMDc1NDk1NTYzMiIsCiAgICAgICJvbGRfY29udGFpbmVkIjogdHJ1ZSwKICAgICAgInN0YXJ0X2NvbnRhaW5lZCI6IHRydWUsCiAgICAgICJ0YXJnZXRfY29udGFpbmVkIjogdHJ1ZSwKICAgICAgImNhcF9kaW1lbnNpb24iOiAxNSwKICAgICAgImNhcF9ncmFtX3JhbmtfZXhhY3QiOiAxNCwKICAgICAgIm1heGltYWxfZm9yX2ZpeGVkX2xhdGVyX2ZyYW1lcyI6IHRydWUKICAgIH0sCiAgICB7CiAgICAgICJzbG90IjogMjMyODEsCiAgICAgICJvbGRfZGltIjogMTMsCiAgICAgICJuZXdfZGltIjogMTQsCiAgICAgICJuZXdfcmFua19leGFjdCI6IDE0LAogICAgICAiZ3JhbV9kZXRlcm1pbmFudCI6ICIyNTYyMjAwNzU0OTU1NjMyIiwKICAgICAgIm9sZF9jb250YWluZWQiOiB0cnVlLAogICAgICAic3RhcnRfY29udGFpbmVkIjogdHJ1ZSwKICAgICAgInRhcmdldF9jb250YWluZWQiOiB0cnVlLAogICAgICAiY2FwX2RpbWVuc2lvbiI6IDE1LAogICAgICAiY2FwX2dyYW1fcmFua19leGFjdCI6IDE0LAogICAgICAibWF4aW1hbF9mb3JfZml4ZWRfbGF0ZXJfZnJhbWVzIjogdHJ1ZQogICAgfSwKICAgIHsKICAgICAgInNsb3QiOiAyMzI4NCwKICAgICAgIm9sZF9kaW0iOiAxMiwKICAgICAgIm5ld19kaW0iOiAxNCwKICAgICAgIm5ld19yYW5rX2V4YWN0IjogMTQsCiAgICAgICJncmFtX2RldGVybWluYW50IjogIjY0MDU1MDE4ODczODkwOCIsCiAgICAgICJvbGRfY29udGFpbmVkIjogdHJ1ZSwKICAgICAgInN0YXJ0X2NvbnRhaW5lZCI6IHRydWUsCiAgICAgICJ0YXJnZXRfY29udGFpbmVkIjogdHJ1ZSwKICAgICAgImNhcF9kaW1lbnNpb24iOiAxNSwKICAgICAgImNhcF9ncmFtX3JhbmtfZXhhY3QiOiAxNCwKICAgICAgIm1heGltYWxfZm9yX2ZpeGVkX2xhdGVyX2ZyYW1lcyI6IHRydWUKICAgIH0sCiAgICB7CiAgICAgICJzbG90IjogMjMzMjQsCiAgICAgICJvbGRfZGltIjogMTMsCiAgICAgICJuZXdfZGltIjogMTQsCiAgICAgICJuZXdfcmFua19leGFjdCI6IDE0LAogICAgICAiZ3JhbV9kZXRlcm1pbmFudCI6ICIyNTYyMjAwNzU0OTU1NjMyIiwKICAgICAgIm9sZF9jb250YWluZWQiOiB0cnVlLAogICAgICAic3RhcnRfY29udGFpbmVkIjogdHJ1ZSwKICAgICAgInRhcmdldF9jb250YWluZWQiOiB0cnVlLAogICAgICAiY2FwX2RpbWVuc2lvbiI6IDE1LAogICAgICAiY2FwX2dyYW1fcmFua19leGFjdCI6IDE0LAogICAgICAibWF4aW1hbF9mb3JfZml4ZWRfbGF0ZXJfZnJhbWVzIjogdHJ1ZQogICAgfSwKICAgIHsKICAgICAgInNsb3QiOiAyMzMyNSwKICAgICAgIm9sZF9kaW0iOiAxMywKICAgICAgIm5ld19kaW0iOiAxNCwKICAgICAgIm5ld19yYW5rX2V4YWN0IjogMTQsCiAgICAgICJncmFtX2RldGVybWluYW50IjogIjI1NjIyMDA3NTQ5NTU2MzIiLAogICAgICAib2xkX2NvbnRhaW5lZCI6IHRydWUsCiAgICAgICJzdGFydF9jb250YWluZWQiOiB0cnVlLAogICAgICAidGFyZ2V0X2NvbnRhaW5lZCI6IHRydWUsCiAgICAgICJjYXBfZGltZW5zaW9uIjogMTUsCiAgICAgICJjYXBfZ3JhbV9yYW5rX2V4YWN0IjogMTQsCiAgICAgICJtYXhpbWFsX2Zvcl9maXhlZF9sYXRlcl9mcmFtZXMiOiB0cnVlCiAgICB9LAogICAgewogICAgICAic2xvdCI6IDIzMzI3LAogICAgICAib2xkX2RpbSI6IDEzLAogICAgICAibmV3X2RpbSI6IDE0LAogICAgICAibmV3X3JhbmtfZXhhY3QiOiAxNCwKICAgICAgImdyYW1fZGV0ZXJtaW5hbnQiOiAiMjU2MjIwMDc1NDk1NTYzMiIsCiAgICAgICJvbGRfY29udGFpbmVkIjogdHJ1ZSwKICAgICAgInN0YXJ0X2NvbnRhaW5lZCI6IHRydWUsCiAgICAgICJ0YXJnZXRfY29udGFpbmVkIjogdHJ1ZSwKICAgICAgImNhcF9kaW1lbnNpb24iOiAxNSwKICAgICAgImNhcF9ncmFtX3JhbmtfZXhhY3QiOiAxNCwKICAgICAgIm1heGltYWxfZm9yX2ZpeGVkX2xhdGVyX2ZyYW1lcyI6IHRydWUKICAgIH0sCiAgICB7CiAgICAgICJzbG90IjogMjMzMjgsCiAgICAgICJvbGRfZGltIjogMTMsCiAgICAgICJuZXdfZGltIjogMTQsCiAgICAgICJuZXdfcmFua19leGFjdCI6IDE0LAogICAgICAiZ3JhbV9kZXRlcm1pbmFudCI6ICIyNTYyMjAwNzU0OTU1NjMyIiwKICAgICAgIm9sZF9jb250YWluZWQiOiB0cnVlLAogICAgICAic3RhcnRfY29udGFpbmVkIjogdHJ1ZSwKICAgICAgInRhcmdldF9jb250YWluZWQiOiB0cnVlLAogICAgICAiY2FwX2RpbWVuc2lvbiI6IDE1LAogICAgICAiY2FwX2dyYW1fcmFua19leGFjdCI6IDE0LAogICAgICAibWF4aW1hbF9mb3JfZml4ZWRfbGF0ZXJfZnJhbWVzIjogdHJ1ZQogICAgfSwKICAgIHsKICAgICAgInNsb3QiOiAyMzM1NCwKICAgICAgIm9sZF9kaW0iOiAxMywKICAgICAgIm5ld19kaW0iOiAxNCwKICAgICAgIm5ld19yYW5rX2V4YWN0IjogMTQsCiAgICAgICJncmFtX2RldGVybWluYW50IjogIjI1NjIyMDA3NTQ5NTU2MzIiLAogICAgICAib2xkX2NvbnRhaW5lZCI6IHRydWUsCiAgICAgICJzdGFydF9jb250YWluZWQiOiB0cnVlLAogICAgICAidGFyZ2V0X2NvbnRhaW5lZCI6IHRydWUsCiAgICAgICJjYXBfZGltZW5zaW9uIjogMTUsCiAgICAgICJjYXBfZ3JhbV9yYW5rX2V4YWN0IjogMTQsCiAgICAgICJtYXhpbWFsX2Zvcl9maXhlZF9sYXRlcl9mcmFtZXMiOiB0cnVlCiAgICB9LAogICAgewogICAgICAic2xvdCI6IDIzNDA2LAogICAgICAib2xkX2RpbSI6IDEzLAogICAgICAibmV3X2RpbSI6IDE0LAogICAgICAibmV3X3JhbmtfZXhhY3QiOiAxNCwKICAgICAgImdyYW1fZGV0ZXJtaW5hbnQiOiAiMjU2MjIwMDc1NDk1NTYzMiIsCiAgICAgICJvbGRfY29udGFpbmVkIjogdHJ1ZSwKICAgICAgInN0YXJ0X2NvbnRhaW5lZCI6IHRydWUsCiAgICAgICJ0YXJnZXRfY29udGFpbmVkIjogdHJ1ZSwKICAgICAgImNhcF9kaW1lbnNpb24iOiAxNSwKICAgICAgImNhcF9ncmFtX3JhbmtfZXhhY3QiOiAxNCwKICAgICAgIm1heGltYWxfZm9yX2ZpeGVkX2xhdGVyX2ZyYW1lcyI6IHRydWUKICAgIH0sCiAgICB7CiAgICAgICJzbG90IjogMjM0MzQsCiAgICAgICJvbGRfZGltIjogMTMsCiAgICAgICJuZXdfZGltIjogMTQsCiAgICAgICJuZXdfcmFua19leGFjdCI6IDE0LAogICAgICAiZ3JhbV9kZXRlcm1pbmFudCI6ICIyNTYyMjAwNzU0OTU1NjMyIiwKICAgICAgIm9sZF9jb250YWluZWQiOiB0cnVlLAogICAgICAic3RhcnRfY29udGFpbmVkIjogdHJ1ZSwKICAgICAgInRhcmdldF9jb250YWluZWQiOiB0cnVlLAogICAgICAiY2FwX2RpbWVuc2lvbiI6IDE1LAogICAgICAiY2FwX2dyYW1fcmFua19leGFjdCI6IDE0LAogICAgICAibWF4aW1hbF9mb3JfZml4ZWRfbGF0ZXJfZnJhbWVzIjogdHJ1ZQogICAgfSwKICAgIHsKICAgICAgInNsb3QiOiAyMzQ0NSwKICAgICAgIm9sZF9kaW0iOiAxMywKICAgICAgIm5ld19kaW0iOiAxNCwKICAgICAgIm5ld19yYW5rX2V4YWN0IjogMTQsCiAgICAgICJncmFtX2RldGVybWluYW50IjogIjI1NjIyMDA3NTQ5NTU2MzIiLAogICAgICAib2xkX2NvbnRhaW5lZCI6IHRydWUsCiAgICAgICJzdGFydF9jb250YWluZWQiOiB0cnVlLAogICAgICAidGFyZ2V0X2NvbnRhaW5lZCI6IHRydWUsCiAgICAgICJjYXBfZGltZW5zaW9uIjogMTUsCiAgICAgICJjYXBfZ3JhbV9yYW5rX2V4YWN0IjogMTQsCiAgICAgICJtYXhpbWFsX2Zvcl9maXhlZF9sYXRlcl9mcmFtZXMiOiB0cnVlCiAgICB9LAogICAgewogICAgICAic2xvdCI6IDIzNDUxLAogICAgICAib2xkX2RpbSI6IDEyLAogICAgICAibmV3X2RpbSI6IDE0LAogICAgICAibmV3X3JhbmtfZXhhY3QiOiAxNCwKICAgICAgImdyYW1fZGV0ZXJtaW5hbnQiOiAiNjQwNTUwMTg4NzM4OTA4IiwKICAgICAgIm9sZF9jb250YWluZWQiOiB0cnVlLAogICAgICAic3RhcnRfY29udGFpbmVkIjogdHJ1ZSwKICAgICAgInRhcmdldF9jb250YWluZWQiOiB0cnVlLAogICAgICAiY2FwX2RpbWVuc2lvbiI6IDE1LAogICAgICAiY2FwX2dyYW1fcmFua19leGFjdCI6IDE0LAogICAgICAibWF4aW1hbF9mb3JfZml4ZWRfbGF0ZXJfZnJhbWVzIjogdHJ1ZQogICAgfSwKICAgIHsKICAgICAgInNsb3QiOiAyMzQ4NCwKICAgICAgIm9sZF9kaW0iOiAxMywKICAgICAgIm5ld19kaW0iOiAxNCwKICAgICAgIm5ld19yYW5rX2V4YWN0IjogMTQsCiAgICAgICJncmFtX2RldGVybWluYW50IjogIjI1NjIyMDA3NTQ5NTU2MzIiLAogICAgICAib2xkX2NvbnRhaW5lZCI6IHRydWUsCiAgICAgICJzdGFydF9jb250YWluZWQiOiB0cnVlLAogICAgICAidGFyZ2V0X2NvbnRhaW5lZCI6IHRydWUsCiAgICAgICJjYXBfZGltZW5zaW9uIjogMTUsCiAgICAgICJjYXBfZ3JhbV9yYW5rX2V4YWN0IjogMTQsCiAgICAgICJtYXhpbWFsX2Zvcl9maXhlZF9sYXRlcl9mcmFtZXMiOiB0cnVlCiAgICB9LAogICAgewogICAgICAic2xvdCI6IDIzNTY2LAogICAgICAib2xkX2RpbSI6IDEyLAogICAgICAibmV3X2RpbSI6IDE0LAogICAgICAibmV3X3JhbmtfZXhhY3QiOiAxNCwKICAgICAgImdyYW1fZGV0ZXJtaW5hbnQiOiAiMTAyNDg4MDMwMTk4MjI1MjgiLAogICAgICAib2xkX2NvbnRhaW5lZCI6IHRydWUsCiAgICAgICJzdGFydF9jb250YWluZWQiOiB0cnVlLAogICAgICAidGFyZ2V0X2NvbnRhaW5lZCI6IHRydWUsCiAgICAgICJjYXBfZGltZW5zaW9uIjogMTUsCiAgICAgICJjYXBfZ3JhbV9yYW5rX2V4YWN0IjogMTQsCiAgICAgICJtYXhpbWFsX2Zvcl9maXhlZF9sYXRlcl9mcmFtZXMiOiB0cnVlCiAgICB9LAogICAgewogICAgICAic2xvdCI6IDIzNjcxLAogICAgICAib2xkX2RpbSI6IDEyLAogICAgICAibmV3X2RpbSI6IDEzLAogICAgICAibmV3X3JhbmtfZXhhY3QiOiAxMywKICAgICAgImdyYW1fZGV0ZXJtaW5hbnQiOiAiMTQ5MjU5MDEyMTU3MTMwOTMyMjI0IiwKICAgICAgIm9sZF9jb250YWluZWQiOiB0cnVlLAogICAgICAic3RhcnRfY29udGFpbmVkIjogdHJ1ZSwKICAgICAgInRhcmdldF9jb250YWluZWQiOiB0cnVlLAogICAgICAiY2FwX2RpbWVuc2lvbiI6IDE0LAogICAgICAiY2FwX2dyYW1fcmFua19leGFjdCI6IDEzLAogICAgICAibWF4aW1hbF9mb3JfZml4ZWRfbGF0ZXJfZnJhbWVzIjogdHJ1ZQogICAgfQogIF0sCiAgImNoYW5nZWRfY291bnQiOiAyMiwKICAiZGltZW5zaW9uX2luY3JlYXNlIjogMjUsCiAgInNjaGVkdWxlX2ZpZWxkc19pZGVudGljYWwiOiBbCiAgICAiaCIsCiAgICAiUiIsCiAgICAiZGVzY3JpcHRpb24iLAogICAgIm9wcyIsCiAgICAiaG9sZCIsCiAgICAic3RhcnQiLAogICAgIm91dCIsCiAgICAicmV0IiwKICAgICJub2RlX2RpbXMiLAogICAgImxhdGVfZGltcyIsCiAgICAidmxlYWZfc2xvdHMiLAogICAgInZsZWFmX3N0YXJ0IiwKICAgICJ4c19vcmRlciIsCiAgICAiZGVmZXJyZWRfdl9vcmRlciIsCiAgICAiY2xhaW1lZCIKICBdLAogICJpbmRlcGVuZGVudF9leGFjdF90YXJnZXRfZWRnZXNfY2hlY2tlZCI6IDExOSwKICAiaW5oZXJpdGVkX3RhcmdldF9lZGdlcyI6IDE3OTAyLAogICJpbmRlcGVuZGVudGx5X3JlY29tcHV0ZWRfY29tcG9uZW50X2RlbHRhcyI6IHsKICAgICJhdXhpbGlhcnkiOiB7CiAgICAgICI1MDkiOiAtMjQ3OTQsCiAgICAgICI1MTEiOiA1NjY3MiwKICAgICAgIjUwNyI6IC0zMTg3OAogICAgfSwKICAgICJzbG90X2Nvcm5lcnMiOiB7CiAgICAgICIxIjogLTg4NTUwCiAgICB9LAogICAgInNsb3RfY2hhaW5zIjogewogICAgICAiMSI6IC04ODU1MAogICAgfSwKICAgICJ0YXJnZXRzIjoge30KICB9LAogICJ0b3RhbF9oaXN0b2dyYW1fZGVsdGEiOiB7CiAgICAiNTA5IjogLTI0Nzk0LAogICAgIjUxMSI6IDU2NjcyLAogICAgIjUwNyI6IC0zMTg3OCwKICAgICIxIjogLTE3NzEwMAogIH0sCiAgInByZXNlcnZlZF9yYW5rIjogdHJ1ZSwKICAic291cmNlX2hhc2hlcyI6IHsKICAgICJleHBlcmltZW50cy9yb3VuZDctcmV2aWV3L3ZlbmRvci9jZXJ0aWZpY2F0ZXMvcm91bmQ3L2RlZmVycmVkXzIzLmpzb24uZ3oiOiAiOGMzOGU5NDdmZjllMDIxZTMwODAwMGRkODJiYjVlMjE5NGViMjY1ZDhiNzUxOTRlMjJjZTc4M2QzZTc1MzE3YyIsCiAgICAiZXhwZXJpbWVudHMvcm91bmQ3LXJldmlldy9zYXR1cmF0ZWQtWi5qc29uLmd6IjogIjk3ZGY5NDgxZTVhZTcwNjQ1YjgzMjUzMTU2MTZhYTAzMzRlZTk5MDQ4MGUzNTdiZjBlMjFmZWIwYTY2NDQ3ZjQiCiAgfSwKICAic2Vjb25kcyI6IDQ2LjQwMDEyNTk4MDM3NzIsCiAgImxpbWl0YXRpb25zIjogWwogICAgIlN0YXJ0LWZyYW1lIGV4dHJhY3Rpb24gdXNlcyBwaW5uZWQgbGlmdGVkLWZyYW1lIGhlbHBlcjsgYWxsIG90aGVyIG1hdHJpeCBhcml0aG1ldGljIGluIHRoaXMgcmV2aWV3IGlzIGxvY2FsLiIsCiAgICAiVW5jaGFuZ2VkIGZyYW1lIGNvbnRhaW5tZW50IGFuZCBnZW5lcmljIHBpdm90cyBpbmhlcml0IHNlcGFyYXRlIGNvbXBsZXRlIGJhc2VsaW5lL2NhbmRpZGF0ZSBhdWRpdHMuIiwKICAgICJTdGFnZS10d28gY29tcGxlbWVudGFyeSB0aW1lIHJldmVyc2FsIGFuZCBhbGwtc2l6ZSB0YXBlL2FuYWx5dGljIHRyYW5zZmVyIHJldGFpbiB1cHN0cmVhbSBwcm9vZiBhc3N1bXB0aW9ucy4iCiAgXQp9Cg==" + }, + "d1310f4ea13f968270418621d8fbcdf17e4063e9": { + "type": "tree", + "base64": "MTAwNjQ0IGJydWhhdDgucHkA7OqNDYKsWPMccNujmsH1hk/Z2RsxMDA2NDQgY29ybmVycy5weQC3hog6vYwEXN+Ub16KyrAg504zpTEwMDY0NCBmbGFnX2V4aXN0ZW5jZS5weQDGm8bSBCG7v/9DITaXg8zViX6XFzEwMDY0NCBmbGFnYmFzaXMucHkAklCQo7k6iiCH2rqvcSn2Ps/dmjAxMDA2NDQgbW9tZW50LnB5AFg92ZfmLJLPP0MyDptjU3qxlYjl" + }, + "de3fce68d8ca5c2985e3afea9b477482462596d6": { + "type": "tree", + "base64": "MTAwNjQ0IGRlZmVycmVkXzIzLmpzb24uZ3oASkQxvUJapEmfJeZ99ODSzd198VwxMDA2NDQgd2l0bmVzc18yMy5qc29uLmd6AD2G+DuHG6B8OxViqm2VOuhrl1C6" + }, + "de5ab489cf9f14b69dab43eb98f6f6ab2e028800": { + "type": "tree", + "base64": "MTAwNjQ0IC5naXRhdHRyaWJ1dGVzAEGu8pD9DPGDjLDLoo4EqXtQboaSNDAwMDAgLmdpdGh1YgD+gO6CB2mjX/3rgkAwZbJ/pGOtnDEwMDY0NCAuZ2l0aWdub3JlAAxe+/HUWqdKo4X1hrBTxw4XCoMkMTAwNjQ0IENJVEFUSU9OLmNmZgBLDmUzQf0oKRGoDOTYfWQSy9i97zEwMDY0NCBDT05UUklCVVRJTkcubWQAQd78kCIr4mbHEIy3tvhowkWuiOwxMDA2NDQgQ09OVFJJQlVUT1JTLm1kANSQsPPGrVpVcsH3rgVecCwEBoRPMTAwNjQ0IExJQ0VOU0UAJh7rnp+LK0sNEZNm3amcb9fTXGQxMDA2NDQgTWFrZWZpbGUAhP6CkPNT81NaATEZXDXsoDwolgkxMDA2NDQgTk9USUNFALVlY3dYjylBDOQn9qNF7sNj1/h5MTAwNjQ0IFBBVENISU5HLm1kALYPPxAbvSM6UES3ohI+VQSk6AFhMTAwNjQ0IFJFQURNRS5tZAADXCWbaPSkzdhLNEUw6RjKBdSmwTEwMDY0NCBTT1VSQ0VTLmpzb24AYJbVr/kO3v1DgGr25HD8VNenedU0MDAwMCBhcnRpZmFjdHMAfXF6FhMg3zzeLRYitg2qINpxU380MDAwMCBjZXJ0aWZpY2F0ZXMAYyb6JQMWZh84wizhWNDQ/lEEvmE0MDAwMCBkb2NzAKZhKOgaKfxkr34J1IyMn4bxnWVaNDAwMDAgZm9ybWFsAHEYL44HbJQjNV/d6r9FGwyt6MWuNDAwMDAgbm90ZXMANv93/GSdOYgtn0mfY6I/TBZIeVM0MDAwMCBwYXRjaGVzAJS/+lmD/emP5dXj9YxIw+xhsqRPNDAwMDAgcmVmZXJlbmNlcwCbAG3k4efRj5q0EYIj7LQ5g6RdhDQwMDAwIHJlc2VhcmNoAF1wmHQ+2XThgVZOFNAbEgy9uxH1NDAwMDAgc2NyaXB0cwBym834jGR2jkE0fddRVovq+jo4ajQwMDAwIHRlc3RzADstXX6oBrc8AtDflMHUqx0KRd2kNDAwMDAgdXBzdHJlYW0A5E05YhtY4rNR+RB7n6Fw1qjU/hw=" + }, + "e2275608bd99dedc1626a53bc161b1eb3bfd1b2e": { + "type": "tree", + "base64": "MTAwNjQ0IGRlZmVycmVkLXJlYWRvdXQudGV4ANeavqd6W2WZGT00oJGfl3UzTSErMTAwNjQ0IHBhcnRpYWwtc3dhcC1iYXRjaGluZy50ZXgAyWR7oQB9UPyC1x7zvQ97d5EAXUQ=" + }, + "e8691cc07dd53dcfe74da1322793b2688fca4d51": { + "type": "blob", + "base64": "UGFzdCB0aGUgYV9iLzIgY2VpbGluZyBmb3IgaW50ZWdlciBtdWx0aXBsaWNhdGlvbgpDb3B5cmlnaHQgMjAyNiBTd2FwbmlsIEphaW4KClRoaXMgd29yayBidWlsZHMgb24sIGFuZCBkb2VzIG5vdCBtb2RpZnksIHRoZSBmb2xsb3dpbmc6CgotIE9wZW5BSSwgIkludGVnZXIgbXVsdGlwbGljYXRpb24gYmVsb3cgbiBsb2cgbiIgKFNlcHRlbWJlciAyMywgMjAyNiksIHBpbm5lZCBhdAogIGNvbW1pdCBhZGM3ZjEyNDFiNDJlMzIyYTY0NTE4NTRhYjdlNGI0YzE0NmJmNzhhIG9mIGdpdGh1Yi5jb20vb3BlbmFpL21hdGguCi0gRG91Z2xhcyBDb2xraXR0LCBnaXRodWIuY29tL0Nyb2NTd2FwL2ludGVnZXItbXVsdC1ib3VuZHMgKEFwYWNoZS0yLjApLCBjb21taXQKICA2ZTU2NDg3OWY1MWFlMTZmMjNkMzkyZTllMTk2YzYwNWYzNmQ5MGRmOiBjb21wYWN0IGNvbnRyb2xzIGFuZCB0aGUgY29uZGl0aW9uYWwKICA4My8xMF4xMiB3aXRuZXNzLgotIFByaW9yIHB1Ymxpc2hlZCByZXN1bHRzIHRoaXMgd2l0bmVzcyBhc3N1bWVzIGFuZCBjaXRlcyAoY2l0YXRpb25zIG9mIHByaW9yIHdvcmssCiAgbm90IGNvbGxhYm9yYXRvcnMpLCBmcm9tIG9wZW4gcHVsbCByZXF1ZXN0cyBvbiB0aGF0IHJlcG9zaXRvcnk6CiAgIzMgYW5kICM1IChldW1lbWljOiBjb21wcmVzc2VkIGNvbXBsZXggbmV0d29yaywgZmFzdCBHYXVzc2lhbiByZXNhbXBsaW5nKSwKICAjNCAoZGxlZW4pLCAjNiAoZXVtZW1pYyksICM3IChaaGloYW8gQ2hlbiAvIGphY2tsaWdodENoZW46IHRlcm5hcnkgZml2ZS1zdWJzZXQKICBuZXR3b3JrcywgYV9iID0gMy8oNCoxMF44KSwgYV9jID0gMzkvMTBeOSksCiAgIzEwIChpY2VreWxpbng6IGJhdGNoZWQgcmVjdXJzaW9uLCBjb250cm9sbGVkIHByb2plY3RvciBiYXNpcywgd2hvbGUtcmVzaWR1YWwKICBjb21wbGV4IGNoaWxkcmVuLCBHYXVzc2lhbiBpbnB1dC1lcnJvciBjb3JyZWN0aW9uKSwKICAjMTMgKGV1bWVtaWM6IGF1eGlsaWFyeSBzb3VyY2UgZnJhbWVzLCB0aGlyZCB3aG9sZS1yZXNpZHVhbCBjb21wbGV4IGNsYXNzKSwKICAjMTUgKGV1bWVtaWMsIGhlYWQgYTE3Y2FiMzogZnVsbCBjb21wbGV4IGJhdGNoaW5nIG9mIGV2ZXJ5IHJlc2lkdWFsIHJhbmspLAogICMxOCAoaWNla3lsaW54LCBoZWFkIGYyYWI0MWE6IHBhcnRpYWwtc3dhcCBuZXR3b3JrcywgcHJvZHVjZXJzIGFuZCBjb21tb24gcmF0aW9uYWwgYmFzaXMpLAogICMyMSAoamFja2xpZ2h0Q2hlbiwgaGVhZCA1YmE2Y2YwOiB0cmFuc2xhdGVkIHBhcnRpYWwtc3dhcCBmcmFtZXM7IGl0IGFsc28gY29udGFpbnMsIGluZGVwZW5kZW50bHkKICBhbmQgZWFybGllciBpbiBwdWJsaWMsIHRoZSBjb21wbGV4IHNvdXJjZS1mcmFtZSB0cmFuc2xhdGlvbiB3ZSB1c2UpLAogICMxNiAoamFja2xpZ2h0Q2hlbjogbmVzdGVkIGNvbnRyb2xsZWQgYmFzZXMpIGFuZCAjMjkgKGphY2tsaWdodENoZW46IGNvbnRyb2xsZWQgaW5uZXIgYmFzaXMgY29tcGlsaW5nIGxvY2FsCiAgZWRnZXMgYXMgYmxvY2tzKSwgcmVsYXRlZCB0byBvdXIgZmxhZyBiYXNpcyBhbmQgc2lkZS1yb2xlIGJhdGNoaW5nLCB3aGljaCB3ZXJlIGRldmVsb3BlZCBpbmRlcGVuZGVudGx5LAogICMzNiAoaWNla3lsaW54OiBjb3BpZWQgcmV0YWluZWQgY2VudHJlcywgdXNlZCBvbiBib3RoIG91ciBpbnRlcmNoYW5nZXMgaW4gcm91bmRzIHNpeCBhbmQgc2V2ZW4pLAogICM2MiAoaWtlYm95OiBpbnRlcnZhbCBzdHJpcHMgYW5kIGNvcmUtYXdhcmUgcGFpciBhc3NlbWJseTsgaXRzIHByb2R1Y2VyIGJ1aWxkcyBvdXIgcm91bmQtc2V2ZW4gc2lkZSBwcm9ncmFtKSwKICAjNDEgKFJhRCAvIGhpcG90dXJlczogdGhlIGFsdGVybmF0aW5nIG9yZGVyIGFuZCBsaW5rcywgdXNlZCBpbiB0aGF0IHNpZGUgcHJvZ3JhbSksCiAgIzQ0IChyb2hhbmFydW46IHdlaWdodGVkIG1hdGNoaW5nLCB3aGljaCBvdXIgbW9tZW50LXdlaWdodGVkIGNob2ljZSBvZiBsaW5rcyBmb2xsb3dzKSwKICAjMjQgKGljZWt5bGlueCwgaGVhZCBlZDkwZmQ5OiBlbmRwb2ludC1nYXVnZSBiaXQgbmV0d29yazsgY2VydGlmaWNhdGVzL2V4dGVybmFsL3ByMjQtYml0LW5ldHdvcmsuanNvbgogIGV4dHJhY3RzIGl0cyBwdWJsaXNoZWQgY291bnRzIGFuZCBjaGlsZC13aWR0aCBtdWx0aXBsaWNpdGllcywgQXBhY2hlLTIuMCkuCi0gQXVyZWwgUHJvc3ogKFBhdXJlZWwpLCBnaXRodWIuY29tL1BhdXJlZWwvaW50ZWdlci1tdWx0LWJvdW5kcyBjb21taXQgYzgyZDA5ZToKICB0aGUgdHdvLXN0YWdlIG1vdGlmIHdpdGggcGFydGlhbC1zd2FwIGZyYW1lcyBhbmQgY2hhcmdlZCBlbmRwb2ludCBjb3JyZWN0aW9uLCBhbmQgaXRzIGNvbXBsZW1lbnQtZnJhbWUKICBjb25zdHJ1Y3Rpb24sIHdoaWNoIG91ciBsaWZ0ZWQgZnJhbWVzIGZvbGxvdyBpbiByb3VuZCBzZXZlbi4KClJlc2VhcmNoLCBpbXBsZW1lbnRhdGlvbiBhbmQgZHJhZnRpbmcgd2VyZSBkb25lIHdpdGggYXNzaXN0YW5jZSBmcm9tIENsYXVkZQooQW50aHJvcGljKS4gQUkgYXNzaXN0YW5jZSBpcyBub3QgaW5kZXBlbmRlbnQgcmV2aWV3LgoKCk5vbmRlZ2VuZXJhdGUgcmVhZG91dCBzYXR1cmF0aW9uIHJlc2VhcmNoIGV4dGVuc2lvbgpDb3B5cmlnaHQgMjAyNiBkanNtYW5jaGFuZGEgYW5kIGNvbnRyaWJ1dG9ycwpTdWJzdGFudGlhbCBPcGVuQUkgQ29kZXggYXNzaXN0YW5jZSB3YXMgdXNlZCBmb3IgZXhwbG9yYXRpb24sIGltcGxlbWVudGF0aW9uLAp2ZXJpZmljYXRpb24gYW5kIGRyYWZ0aW5nLiBBSSBjcm9zcy1jaGVja3MgYXJlIG5vdCBpbmRlcGVuZGVudCBodW1hbiByZXZpZXcuCgpaaGloYW8gQ2hlbiAvIGphY2tsaWdodENoZW4gUFI5NyBpcyBjcmVkaXRlZCBmb3IgcmVmbGVjdGVkL2dhdWdlZCBiaXQgbGVkZ2VycywKc2lnbmVkIGNvbXBsZXggZW5kcG9pbnQgY29udHJvbHMgYW5kIHJldGFpbmVkLW1haW4tYXNzZW1ibHkgaW50ZWdyYXRpb24gdXNlZAppbiB0aGUgc2VwYXJhdGUgY29tcGF0aWJpbGl0eSBleHBlcmltZW50LCBub3QgcmVwcm9kdWNlZCBieSB0aGUgcXVpY2sgY2hlY2suCmh0dHBzOi8vZ2l0aHViLmNvbS9Dcm9jU3dhcC9pbnRlZ2VyLW11bHQtYm91bmRzL3B1bGwvOTcK" + } + }, + "files": { + ".gitignore": { + "mode": "100644", + "blob": "23c63072fa71dcccfe8d049e031dbdb16ede21a6" + }, + "LICENSE": { + "mode": "100644", + "blob": "57bc88a15a0ee8266c259b2667e64608d3f7e292" + }, + "MANIFEST.json": { + "mode": "100644", + "blob": "bf5cd97a0f3d24629a7cba1aaf061ff0e87bdc0a" + }, + "NOTICE": { + "mode": "100644", + "blob": "e8691cc07dd53dcfe74da1322793b2688fca4d51" + }, + "PROVENANCE.json": { + "mode": "100644", + "blob": "1a93dcab54202f9253f43bc85f4e77c4b6bc17b4" + }, + "README.md": { + "mode": "100644", + "blob": "5233203ef9bd87c44e9dd25b73609ea0f63d509f" + }, + "experiments/round7-review/audit_evidence.py": { + "mode": "100644", + "blob": "a28e243c0b34f6a6710be6d52ac062148ac636d2" + }, + "experiments/round7-review/check_arithmetic.py": { + "mode": "100644", + "blob": "303aa86ed7f5624b07cec362bdc563d20ac30580" + }, + "experiments/round7-review/check_candidate_frames.py": { + "mode": "100644", + "blob": "bf2b0a57ca3ef25efbb055fea9e6c6568c7e935d" + }, + "experiments/round7-review/histogram_engine.py": { + "mode": "100644", + "blob": "7f3e15349181d1abd0038eb7abd5a493a0a9442c" + }, + "experiments/round7-review/qualification.json": { + "mode": "100644", + "blob": "b62e78100fb86a9fd133497c0188518f5056a668" + }, + "experiments/round7-review/saturate_readouts.py": { + "mode": "100644", + "blob": "aac60e4243075735de0edf5c7753d13ac5bc75cc" + }, + "experiments/round7-review/saturated-Z.json.gz": { + "mode": "100644", + "blob": "247b66b034e83a79ff1b0dc0932e1ed0a0177a0f" + }, + "experiments/round7-review/saturation-results.json": { + "mode": "100644", + "blob": "163260325bb989eb0538b04c89e10d70eb0a2f88" + }, + "experiments/round7-review/scalar_engine.py": { + "mode": "100644", + "blob": "ff5c8901d379ff397f1aa29eb0a8875f12c51848" + }, + "experiments/round7-review/vendor/LICENSE": { + "mode": "100644", + "blob": "57bc88a15a0ee8266c259b2667e64608d3f7e292" + }, + "experiments/round7-review/vendor/NOTICE": { + "mode": "100644", + "blob": "edc3efe722ed1ae69fa986555ec02907ad85434c" + }, + "experiments/round7-review/vendor/README.md": { + "mode": "100644", + "blob": "747c705371b6d6aaa2c733f4f2b87460d2458427" + }, + "experiments/round7-review/vendor/certificates/round7/deferred_23.json.gz": { + "mode": "100644", + "blob": "4a4431bd425aa4499f25e67df4e0d2cddd7df15c" + }, + "experiments/round7-review/vendor/certificates/round7/witness_23.json.gz": { + "mode": "100644", + "blob": "3d86f83b871ba07c3b1562aa6d953ae86b9750ba" + }, + "experiments/round7-review/vendor/independent/deferred-readout/check_frames.py": { + "mode": "100644", + "blob": "ecb1fdf4e014e7cd9651576bc1780650d1412dc2" + }, + "experiments/round7-review/vendor/independent/deferred-readout/check_lifted.py": { + "mode": "100644", + "blob": "700514eb5b2d67eabbd4c39244865fe77e2959dd" + }, + "experiments/round7-review/vendor/independent/deferred-readout/check_stair.py": { + "mode": "100644", + "blob": "f45c41cc5f476f55b399dd1d434f03077f8b94fe" + }, + "experiments/round7-review/vendor/independent/deferred-readout/check_word.py": { + "mode": "100644", + "blob": "674571e0041c3e78f12ada13bc6cf3b1402ea799" + }, + "experiments/round7-review/vendor/independent/deferred-readout/deferred.py": { + "mode": "100644", + "blob": "d045126217670dc82e7515230f9dc055ac9dc444" + }, + "experiments/round7-review/vendor/independent/deferred-readout/linalg.py": { + "mode": "100644", + "blob": "06f57742ceb6fa0d8ee632200af5a0e875e93c4a" + }, + "experiments/round7-review/vendor/independent/two-stage-bit/bruhat8.py": { + "mode": "100644", + "blob": "ecea8d0d82ac58f31c70dba39ac1f5864fd9d91b" + }, + "experiments/round7-review/vendor/independent/two-stage-bit/corners.py": { + "mode": "100644", + "blob": "b786883abd8c045cdf946f5e8acab020e74e33a5" + }, + "experiments/round7-review/vendor/independent/two-stage-bit/flag_existence.py": { + "mode": "100644", + "blob": "c69bc6d20421bbbfff4321369783ccd5897e9717" + }, + "experiments/round7-review/vendor/independent/two-stage-bit/flagbasis.py": { + "mode": "100644", + "blob": "925090a3b93a8a2087dabaaf7129f63ecfdd9a30" + }, + "experiments/round7-review/vendor/independent/two-stage-bit/moment.py": { + "mode": "100644", + "blob": "583dd997e62c92cf3f43320e9b63537ab19588e5" + }, + "experiments/round7-review/vendor/lean/Round7.lean": { + "mode": "100644", + "blob": "2fc16394157f2d05790002fc79230e632bf90e15" + }, + "experiments/round7-review/vendor/lean/round7-histograms.json": { + "mode": "100644", + "blob": "ceaa8c0111b34878443d0e561d02b8f72a97d2df" + }, + "experiments/round7-review/vendor/notes/deferred-readout.tex": { + "mode": "100644", + "blob": "d79abea77a5b6599193d34a0919f9775334d212b" + }, + "experiments/round7-review/vendor/notes/partial-swap-batching.tex": { + "mode": "100644", + "blob": "c9647ba1007d50fc82d71ef3bd0f7b7791005d44" + }, + "experiments/round7-review/vendor/scripts/certificate_round3.py": { + "mode": "100644", + "blob": "f5ac54082ac92a21ace7323aa948f65e329af657" + }, + "experiments/round7-review/vendor/scripts/certificate_round7.py": { + "mode": "100644", + "blob": "ce8225c599e8beb33a2d160613e1ba4618f31d33" + }, + "experiments/saturation-review/review.py": { + "mode": "100644", + "blob": "db76d35e1efc30c7ef47eb984e6c9de5eb978aa0" + }, + "historical/REPORT.md": { + "mode": "100644", + "blob": "8bf7e38c940166957afce0bcc590d3ec67de0ec5" + }, + "historical/candidate-frames-check.log": { + "mode": "100644", + "blob": "f6d405ebd4c6714d0f7f3ff9fe91b5b773580766" + }, + "historical/candidate-scalar-results.json": { + "mode": "100644", + "blob": "91595e214ac32be74f6dba09fd1da1904c8ad315" + }, + "historical/qualification-saturated.json": { + "mode": "100644", + "blob": "12a68ec737b984ebf60e107e07ab3e2b7eb74ad1" + }, + "historical/results.json": { + "mode": "100644", + "blob": "c28b58b3fc19c97b4675b1f8e9b3651c59d51d0c" + }, + "historical/saturated-balanced-compatibility.json": { + "mode": "100644", + "blob": "3d50be4704555b12c0463c4ab0612fd152ee5a71" + }, + "scripts/check_research.py": { + "mode": "100644", + "blob": "6d69bf1ba6ca09e909cde911822099dfaf3b89ad" + }, + "verify.py": { + "mode": "100644", + "blob": "62da642c1eeba52ab60556cc56af649a9d983fc8" + } + } +} diff --git a/research/pr99-retention-seed99/SOURCES.json b/research/pr99-retention-seed99/SOURCES.json new file mode 100644 index 0000000000..22d66ed017 --- /dev/null +++ b/research/pr99-retention-seed99/SOURCES.json @@ -0,0 +1,42 @@ +{ + "schema_version": 1, + "base_commit": "bce54fb3f895cbe5cd4c0eb477c3afeed100190f", + "files": [ + { + "path": "certificates/selected-result.json", + "usage": "provenance", + "git_blob": "ae6a99f28aa468649eb66a361e764d769363bf11", + "sha256": "10b9e340fd8e354a37a0c4813c90e5de1dd42044b5f6aca4a3fc5a42b685fa32" + }, + { + "path": "docs/research/agent-task-catalog.json", + "usage": "provenance", + "git_blob": "c05fafaa25ba95b2d5af86b1800427198e3d20eb", + "sha256": "89b5928bc92c81e2647b6d702a7ad85a6795b8f44e2eb267b2ff3145d8f2b2ce" + }, + { + "path": "research/community-reconciliation92-audit/ARCHIVE.json", + "usage": "input", + "git_blob": "2aeeb50a033c9b72ca5536cc3473263d08e24248", + "sha256": "3de2b360ce5cee8a0dc68a322c7db81a2bd3ca714d76aed57156cc889103b890" + }, + { + "path": "research/community-reconciliation92-audit/REVIEW.json", + "usage": "input", + "git_blob": "a398bea6a26bccf7c7f86ad3477bd5b2489d52ae", + "sha256": "e38ce3a9fc5b3cc788e618885b6ba5c54a2b00f272cdfdfcd6accf66a20faf8f" + }, + { + "path": "docs/research/pr-ledger.json", + "usage": "provenance", + "git_blob": "466e1ba17030149e42fa8acefced4359b97728a2", + "sha256": "6063d9227279dcc91f03fab89f5d93a9cb66c0719b394ff9a03ce58239bfd454" + }, + { + "path": "CONTRIBUTORS.md", + "usage": "provenance", + "git_blob": "dc9d4f5de07725f56d90a7a2673f82af52e2c44b", + "sha256": "c37caf0a5783aef24f981cb0110bd1764bc5ec9535a58bc62af7170c10b3a8ae" + } + ] +} diff --git a/research/pr99-retention-seed99/TASK.json b/research/pr99-retention-seed99/TASK.json new file mode 100644 index 0000000000..6e71054d53 --- /dev/null +++ b/research/pr99-retention-seed99/TASK.json @@ -0,0 +1,138 @@ +{ + "schema_version": 1, + "task_id": "overlap-receipt", + "priority_revision": 2, + "base_commit": "bce54fb3f895cbe5cd4c0eb477c3afeed100190f", + "original_card": { + "id": "overlap-receipt", + "question": "What exact content and credit of a small named PR set has already been retained?", + "starting_points": [ + "docs/research/pr-ledger.md", + "CONTRIBUTORS.md" + ], + "methods": [ + "Compare exact heads and retained artifacts to write a source-bound disposition receipt.", + "Audit an existing receipt for missing content or predecessor attribution." + ], + "acceptance_gate": "Separate complete integration, partial retention and changed heads; make no autonomous closures.", + "first_step": { + "command": [ + "python3", + "-B", + "scripts/research_baseline.py" + ], + "expected": "PASS_RESEARCH_BASELINE_BINDINGS_ONLY", + "inspect": "Read one small PR set in the ledger and identify exact reviewed heads and unresolved content.", + "scope": "Positive control / source-bound orientation only; this is not a new construction or full cold replay." + }, + "first_experiment": "Compare that set to retained artifacts; produce a complete or explicitly partial disposition receipt.", + "bottleneck_link": "Reliable overlap evidence preserves credit and prevents repeated review of already-retained material.", + "allowed_variations": [ + "One small related PR family or one existing integration receipt." + ], + "scope_change_triggers": [ + "Treating matching titles or one shared blob as proof of full incorporation." + ], + "overlap_terms": [ + "overlap receipt", + "partial integration", + "attribution" + ] + }, + "scope_status": "refined", + "actual_scope": "Authenticate complete PR99 source retention through incorporated PR103 and reconcile its saved rank-profile delta.", + "scope_change_reason": "Narrow the overlap-receipt card to one parent contribution and its retained vendor subtree; no selected-frontier change or new physical replay.", + "bottleneck_link": "Resolve a concrete missing retention and individual-credit link so review can reuse the exact historical package without confusing retention with proof acceptance.", + "budget_minutes": 45, + "stop_rule": "Stop after the complete 46-file identity, original commit-diff coverage, saved-profile reconciliation and failure controls are established; do not rerun the historical full construction or search for a new circuit.", + "outcome": "completed", + "evidence": "SOURCE-PROOF.json, RESULT.json, verify.py, test_verify.py; source retention and saved-report accounting only.", + "author": "Hanson Sun (@bbMisk)", + "ai_assistance": "Substantial OpenAI Codex assistance in investigation, implementation, verification and writing; no independent human review claimed.", + "open_questions": [], + "assignment_seed": 99, + "seed_source": "Python secrets.randbelow(100), using operating-system randomness", + "seed_use": "Select historical PR99 as the concrete provenance object within the assigned consolidation track.", + "no_open_questions_reason": "The complete original change is retained; no further source-retention experiment is justified. Mathematical acceptance and inherited physical/compiler/analytic obligations remain outside this receipt.", + "claim_url": "https://github.com/CrocSwap/integer-mult-bounds/discussions/1166#discussioncomment-18912011", + "candidates": [ + { + "object": "PR99 through PR103", + "decision": "chosen: complete source retention has no ledger integration pointer and individual credit is absent from root CONTRIBUTORS; seed 99 diversifies to this older source" + }, + { + "object": "PR279 parent source closure", + "decision": "deferred: PR1190 already provides complete closure; discussion1336 independently audits it" + }, + { + "object": "historical current-result routing", + "decision": "deferred: PR1232 and PR1285 already cover the relevant navigation gaps" + } + ], + "overlap_at_entry": { + "searched_at": "2026-10-14T00:23:00.134424+00:00", + "terms": [ + "PR99", + "nondegenerate readout", + "saturated-balanced" + ], + "coverage": { + "open_prs": { + "fetched_at": "2026-10-14T00:22:41.848563+00:00", + "complete_pagination": true, + "records": 873 + }, + "discussions": { + "fetched_at": "2026-10-14T00:23:00.090065+00:00", + "complete_pagination": true, + "records": 132 + } + }, + "local_records": 325, + "warnings": [], + "limits": "Remote PR scope is open PRs including drafts. Closed work is searched through local READMEs, TASK metadata and ledger only. No code diffs or arbitrary package files are searched. Recheck relevant heads before submission.", + "finding": "No same-object PR99 retention claim found. Literal PR99 matches mostly refer to PR99x. All returned leads were inspected; no absence-of-novelty proof claimed." + }, + "overlap_before_submission": { + "searched_at": "2026-10-14T00:34:24.904990+00:00", + "terms": [ + "nondegenerate readout", + "nondegenerate-readout-saturation", + "saturated-balanced", + "PR99 retention" + ], + "coverage": { + "open_prs": { + "fetched_at": "2026-10-14T00:34:10.047124+00:00", + "complete_pagination": true, + "records": 785 + }, + "discussions": { + "fetched_at": "2026-10-14T00:34:24.865859+00:00", + "complete_pagination": true, + "records": 144 + } + }, + "local_records": 327, + "warnings": [], + "limits": "Remote PR scope is open PRs including drafts. Closed work is searched through local READMEs, TASK metadata and ledger only. No code diffs or arbitrary package files are searched. Recheck relevant heads before submission.", + "finding": "The only three matches were this package README, its TASK metadata and its own coordination claim; no same-object competing contribution was observed." + }, + "submission_base_commit": "410026dc5513b87db92ae98571d1d5984c69a983", + "verification": { + "python_versions": [ + "3.12.13", + "3.14.6" + ], + "registered_python312_replay": "passed; read-only checker plus 18 tests (1 positive, 17 rejection controls), optimized mode", + "source_export": "passed with no .git directory and PATH=/nonexistent", + "independent_git_native_comparison": "all 46 paths/modes/blobs and the full 46-addition original commit diff agree", + "collector_reproduction": "SOURCE-PROOF.json byte-identical on recollection; all 46 original and retained payloads compared directly", + "selected_record_check": "passed; selected kappa remains 0.001672660197076918", + "not_run": [ + "historical PR99 or PR103 physical/native/full construction replay", + "selected frontier1094 cold replay", + "Lean proof build" + ] + } +} diff --git a/research/pr99-retention-seed99/UPSTREAM-NOTICE b/research/pr99-retention-seed99/UPSTREAM-NOTICE new file mode 100644 index 0000000000..e8691cc07d --- /dev/null +++ b/research/pr99-retention-seed99/UPSTREAM-NOTICE @@ -0,0 +1,47 @@ +Past the a_b/2 ceiling for integer multiplication +Copyright 2026 Swapnil Jain + +This work builds on, and does not modify, the following: + +- OpenAI, "Integer multiplication below n log n" (September 23, 2026), pinned at + commit adc7f1241b42e322a6451854ab7e4b4c146bf78a of github.com/openai/math. +- Douglas Colkitt, github.com/CrocSwap/integer-mult-bounds (Apache-2.0), commit + 6e564879f51ae16f23d392e9e196c605f36d90df: compact controls and the conditional + 83/10^12 witness. +- Prior published results this witness assumes and cites (citations of prior work, + not collaborators), from open pull requests on that repository: + #3 and #5 (eumemic: compressed complex network, fast Gaussian resampling), + #4 (dleen), #6 (eumemic), #7 (Zhihao Chen / jacklightChen: ternary five-subset + networks, a_b = 3/(4*10^8), a_c = 39/10^9), + #10 (icekylinx: batched recursion, controlled projector basis, whole-residual + complex children, Gaussian input-error correction), + #13 (eumemic: auxiliary source frames, third whole-residual complex class), + #15 (eumemic, head a17cab3: full complex batching of every residual rank), + #18 (icekylinx, head f2ab41a: partial-swap networks, producers and common rational basis), + #21 (jacklightChen, head 5ba6cf0: translated partial-swap frames; it also contains, independently + and earlier in public, the complex source-frame translation we use), + #16 (jacklightChen: nested controlled bases) and #29 (jacklightChen: controlled inner basis compiling local + edges as blocks), related to our flag basis and side-role batching, which were developed independently, + #36 (icekylinx: copied retained centres, used on both our interchanges in rounds six and seven), + #62 (ikeboy: interval strips and core-aware pair assembly; its producer builds our round-seven side program), + #41 (RaD / hipotures: the alternating order and links, used in that side program), + #44 (rohanarun: weighted matching, which our moment-weighted choice of links follows), + #24 (icekylinx, head ed90fd9: endpoint-gauge bit network; certificates/external/pr24-bit-network.json + extracts its published counts and child-width multiplicities, Apache-2.0). +- Aurel Prosz (Paureel), github.com/Paureel/integer-mult-bounds commit c82d09e: + the two-stage motif with partial-swap frames and charged endpoint correction, and its complement-frame + construction, which our lifted frames follow in round seven. + +Research, implementation and drafting were done with assistance from Claude +(Anthropic). AI assistance is not independent review. + + +Nondegenerate readout saturation research extension +Copyright 2026 djsmanchanda and contributors +Substantial OpenAI Codex assistance was used for exploration, implementation, +verification and drafting. AI cross-checks are not independent human review. + +Zhihao Chen / jacklightChen PR97 is credited for reflected/gauged bit ledgers, +signed complex endpoint controls and retained-main-assembly integration used +in the separate compatibility experiment, not reproduced by the quick check. +https://github.com/CrocSwap/integer-mult-bounds/pull/97 diff --git a/research/pr99-retention-seed99/VERIFY.json b/research/pr99-retention-seed99/VERIFY.json new file mode 100644 index 0000000000..f85feaca49 --- /dev/null +++ b/research/pr99-retention-seed99/VERIFY.json @@ -0,0 +1,34 @@ +{ + "schema_version": 1, + "status": "ready", + "python": "3.12", + "requirements": [], + "inputs": [ + "research/community-reconciliation92-audit/ARCHIVE.json", + "research/community-reconciliation92-audit/REVIEW.json" + ], + "commands": [ + { + "argv": [ + "{python}", + "-I", + "-O", + "-B", + "{package}/verify.py" + ], + "timeout_seconds": 30, + "checks": "Authenticate both package trees and complete PR99 commit difference, archive ancestry, exact review head and four saved accounting reports." + }, + { + "argv": [ + "{python}", + "-I", + "-O", + "-B", + "{package}/test_verify.py" + ], + "timeout_seconds": 30, + "checks": "One real-evidence positive case and 17 source coverage, corruption, provenance and accounting failure controls." + } + ] +} diff --git a/research/pr99-retention-seed99/collect.py b/research/pr99-retention-seed99/collect.py new file mode 100644 index 0000000000..baeca78664 --- /dev/null +++ b/research/pr99-retention-seed99/collect.py @@ -0,0 +1,102 @@ +#!/usr/bin/env python3 +"""Recollect the bounded raw-Git proof. Needs the pinned source objects locally. + +Fetch missing objects with `git fetch origin refs/pull/99/head` and +`git fetch origin tag archive/pr-reconciliation100-20261013`. +No network request or execution of archived code is made by this collector. +Hanson Sun, with substantial OpenAI Codex assistance. Apache-2.0. +""" +import argparse +import base64 +import json +from pathlib import Path +import subprocess +import sys + +sys.path.insert(0, str(Path(__file__).resolve().parent)) +from verify import ARCHIVE, BLOBS, ORIGINAL, PARENT, PR99, PR103, RETAINED, ROOT + + +def git(*args): + return subprocess.check_output(["git", *args], cwd=ROOT) + + +def collect(): + objects = {} + + def save(kind, oid): + raw = git("cat-file", kind, oid) + objects[oid] = {"type": kind, "base64": base64.b64encode(raw).decode("ascii")} + return raw + + def tree(oid): + save("tree", oid) + result = {} + for record in git("ls-tree", "-z", oid).split(b"\0"): + if not record: + continue + meta, name = record.split(b"\t", 1) + mode, kind, child = meta.decode("ascii").split() + result[name.decode("utf-8")] = ("40000" if kind == "tree" else mode, kind, child) + return result + + def commit(oid): + save("commit", oid) + return git("rev-parse", oid + "^{tree}").decode().strip() + + def resolve(oid, path): + node = commit(oid) + for part in path.split("/"): + _, kind, node = tree(node)[part] + return kind, node + + def inventory(oid, prefix=""): + result = {} + for name, (mode, kind, child) in tree(oid).items(): + path = prefix + name + if kind == "tree": + result.update(inventory(child, path + "/")) + else: + result[path] = {"mode": mode, "blob": child} + return result + + def changed_trees(a, b): + if a == b: + return + left, right = tree(a), tree(b) + for name in set(left) | set(right): + x, y = left.get(name), right.get(name) + if x != y and x and y and x[1] == y[1] == "tree": + changed_trees(x[2], y[2]) + + source = resolve(PR99, ORIGINAL)[1] + retained = resolve(PR103, RETAINED)[1] + if source != retained: + raise ValueError("source and retained subtree differ") + files = inventory(source) + changed_trees(commit(PARENT), commit(PR99)) + commit(ARCHIVE) + for _, (head, path) in BLOBS.items(): + kind, oid = resolve(head, path) + save(kind, oid) + # Git-native full-file comparison is a separate collection-time check. + # The offline checker proves identity through the authenticated tree DAG. + for path in files: + original = git("show", PR99 + ":" + ORIGINAL + "/" + path) + retained_raw = git("show", PR103 + ":" + RETAINED + "/" + path) + if original != retained_raw: + raise ValueError("payload mismatch: " + path) + return {"schema_version": 1, "objects": dict(sorted(objects.items())), "files": dict(sorted(files.items()))} + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--output", type=Path, required=True) + args = parser.parse_args() + document = collect() + args.output.write_text(json.dumps(document, indent=2) + "\n") + print(f"COLLECTED_PR99_RETENTION files={len(document['files'])} objects={len(document['objects'])}") + + +if __name__ == "__main__": + main() diff --git a/research/pr99-retention-seed99/test_verify.py b/research/pr99-retention-seed99/test_verify.py new file mode 100644 index 0000000000..b8cea1a945 --- /dev/null +++ b/research/pr99-retention-seed99/test_verify.py @@ -0,0 +1,149 @@ +#!/usr/bin/env python3 +"""Corruption, coverage and accounting controls on the real pinned evidence. + +Hanson Sun, with substantial OpenAI Codex assistance. Apache-2.0. +""" +import base64 +from copy import deepcopy +from pathlib import Path +import sys +import unittest + +sys.path.insert(0, str(Path(__file__).resolve().parent)) +import verify as v + + +class RetentionControls(unittest.TestCase): + @classmethod + def setUpClass(cls): + cls.document = v.loads((v.HERE / "SOURCE-PROOF.json").read_bytes()) + cls.archive, cls.reviews = v.external_inputs() + proof = v.Proof(cls.document) + cls.data = {role: v.loads(proof.blob(role)) for role in v.BLOBS if role != "original_notice"} + + def check(self, document=None, archive=None, reviews=None): + return v.verify(self.document if document is None else document, + self.archive if archive is None else archive, + self.reviews if reviews is None else reviews) + + def test_complete_positive_case(self): + self.assertEqual(self.check(), v.loads((v.HERE / "RESULT.json").read_bytes())) + + def test_omitted_package_file(self): + doc = deepcopy(self.document) + del doc["files"]["experiments/round7-review/saturated-Z.json.gz"] + with self.assertRaisesRegex(ValueError, "inventory"): + self.check(document=doc) + + def test_same_count_file_substitution(self): + doc = deepcopy(self.document) + row = doc["files"].pop("NOTICE") + doc["files"]["unrelated-NOTICE"] = row + with self.assertRaisesRegex(ValueError, "inventory"): + self.check(document=doc) + + def test_mode_substitution(self): + doc = deepcopy(self.document) + doc["files"]["README.md"]["mode"] = "100755" + with self.assertRaisesRegex(ValueError, "inventory"): + self.check(document=doc) + + def test_commit_byte_corruption(self): + doc = deepcopy(self.document) + obj = doc["objects"][v.PR99] + obj["base64"] = base64.b64encode(base64.b64decode(obj["base64"]) + b"\n").decode() + with self.assertRaisesRegex(ValueError, "digest mismatch"): + self.check(document=doc) + + def test_missing_comparison_parent(self): + doc = deepcopy(self.document) + del doc["objects"][v.PARENT] + with self.assertRaisesRegex(ValueError, "missing Git object"): + self.check(document=doc) + + def test_missing_descendant_tree(self): + doc = deepcopy(self.document) + proof = v.Proof(doc) + _, oid = proof.resolve(v.PR99, v.ORIGINAL + "/experiments/round7-review/vendor/lean") + del doc["objects"][oid] + with self.assertRaisesRegex(ValueError, "missing Git object"): + self.check(document=doc) + + def test_accounting_blob_corruption(self): + doc = deepcopy(self.document) + proof = v.Proof(doc) + _, oid = proof.resolve(*v.BLOBS["bit_ledger"]) + doc["objects"][oid]["base64"] = base64.b64encode(b"{}").decode() + with self.assertRaisesRegex(ValueError, "digest mismatch"): + self.check(document=doc) + + def test_archive_omits_retaining_parent(self): + archive = deepcopy(self.archive) + archive["parents"].remove(v.PR103) + with self.assertRaisesRegex(ValueError, "archive receipt"): + self.check(archive=archive) + + def test_review_head_substitution(self): + reviews = deepcopy(self.reviews) + reviews["103"]["head"] = v.PR99 + with self.assertRaisesRegex(ValueError, "different head"): + self.check(reviews=reviews) + + def test_duplicate_json_key(self): + with self.assertRaisesRegex(ValueError, "duplicate JSON key"): + v.loads('{"files":{},"files":{"NOTICE":{}}}') + + def test_duplicate_histogram_rank(self): + data = deepcopy(self.data) + hist = data["candidate"]["Z"]["histogram"]["hist"] + hist.append(hist[0]) + with self.assertRaisesRegex(ValueError, "duplicate histogram rank"): + v.check_accounting(**data) + + def test_duplicate_changed_slot(self): + data = deepcopy(self.data) + changes = data["candidate"]["Z"]["changes"] + changes[1]["slot"] = changes[0]["slot"] + with self.assertRaisesRegex(ValueError, "duplicate changed slot"): + v.check_accounting(**data) + + def test_omitted_double_extension(self): + data = deepcopy(self.data) + changes = data["candidate"]["Z"]["changes"] + next(c for c in changes if c["new_dim"] - c["old_dim"] == 2)["new_dim"] -= 1 + with self.assertRaisesRegex(ValueError, "dimension increase"): + v.check_accounting(**data) + + def test_changed_width(self): + data = deepcopy(self.data) + data["candidate"]["Z"]["histogram"]["W"] += 1 + with self.assertRaisesRegex(ValueError, "common parameter"): + v.check_accounting(**data) + + def test_mass_preserving_wrong_profile(self): + data = deepcopy(self.data) + hist = data["candidate"]["Z"]["histogram"]["hist"] + # -3 H1 + H3 preserves total rank, but is not the retained profile. + for entry in hist: + if entry[0] == 1: + entry[1] -= 3 + if entry[0] == 3: + entry[1] += 1 + with self.assertRaisesRegex(ValueError, "22 recorded mergers"): + v.check_accounting(**data) + + def test_component_charge_omission(self): + data = deepcopy(self.data) + data["prior_review"]["independently_recomputed_component_deltas"]["slot_chains"] = {} + with self.assertRaisesRegex(ValueError, "component accounting"): + v.check_accounting(**data) + + def test_pr103_histogram_substitution(self): + data = deepcopy(self.data) + data["bit_ledger"]["histogram"] = {str(k): n for k, n in data["baseline"]["histogram"]["hist"]} + with self.assertRaisesRegex(ValueError, "exact candidate histogram"): + v.check_accounting(**data) + + +if __name__ == "__main__": + unittest.main(verbosity=2) diff --git a/research/pr99-retention-seed99/verify.py b/research/pr99-retention-seed99/verify.py new file mode 100644 index 0000000000..c3b24130fb --- /dev/null +++ b/research/pr99-retention-seed99/verify.py @@ -0,0 +1,277 @@ +#!/usr/bin/env python3 +"""Offline PR99 source-retention proof and saved-profile reconciliation. + +Hanson Sun, with substantial OpenAI Codex assistance. Apache-2.0. +This checks source identity and recorded accounting, not physical execution. +""" +import argparse +import base64 +from collections import Counter +import hashlib +import json +from pathlib import Path +import re + +HERE = Path(__file__).resolve().parent +ROOT = HERE.parents[1] +BASE = "bce54fb3f895cbe5cd4c0eb477c3afeed100190f" +PARENT = "56b66d58297deca1d7dd130247d720e960f77a37" +PR99 = "0622dcce6a897567e4eb6bdfedc7def66ab21346" +PR103 = "75ab1f70d146c21c7611ce0df9eb5f645f51ac0e" +ARCHIVE = "b91de239a64d24d8aee409a0f4ac3e00710ae5c1" +ORIGINAL = "research/nondegenerate-readout-saturation" +RETAINED = "research/saturated-balanced/vendor/pr99" +COMMON_TREE = "6bebd79406bb2453ada2b7761aece13d3e53b694" +INPUTS = ( + "research/community-reconciliation92-audit/ARCHIVE.json", + "research/community-reconciliation92-audit/REVIEW.json", +) +BLOBS = { + "baseline": (PR99, ORIGINAL + "/experiments/round7-review/qualification.json"), + "candidate": (PR99, ORIGINAL + "/experiments/round7-review/saturation-results.json"), + "prior_review": (PR99, ORIGINAL + "/historical/results.json"), + "bit_ledger": (PR103, "research/saturated-balanced/bit-ledger.json"), + "original_notice": (PR99, ORIGINAL + "/NOTICE"), +} + + +def require(condition, message): + if not condition: + raise ValueError(message) + + +def no_duplicate_keys(pairs): + result = {} + for key, value in pairs: + require(key not in result, "duplicate JSON key: " + key) + result[key] = value + return result + + +def loads(raw): + return json.loads(raw, object_pairs_hook=no_duplicate_keys) + + +def git_id(kind, raw): + return hashlib.sha1(kind.encode() + b" " + str(len(raw)).encode() + b"\0" + raw).hexdigest() + + +class Proof: + def __init__(self, document): + require(document["schema_version"] == 1, "unsupported proof schema") + self.objects = document["objects"] + self.used = set() + + def raw(self, oid, kind): + require(re.fullmatch(r"[0-9a-f]{40}", oid) is not None, "invalid Git id") + require(oid in self.objects, "missing Git object: " + oid) + obj = self.objects[oid] + require(obj["type"] == kind, "Git object type mismatch") + raw = base64.b64decode(obj["base64"], validate=True) + require(git_id(kind, raw) == oid, "Git object digest mismatch: " + oid) + self.used.add(oid) + return raw + + def commit(self, oid): + header = self.raw(oid, "commit").split(b"\n\n", 1)[0].decode("utf-8").splitlines() + trees = [line[5:] for line in header if line.startswith("tree ")] + require(len(trees) == 1, "commit needs one tree") + return trees[0], [line[7:] for line in header if line.startswith("parent ")] + + def tree(self, oid): + raw, offset, entries = self.raw(oid, "tree"), 0, {} + while offset < len(raw): + space = raw.find(b" ", offset) + zero = raw.find(b"\0", space + 1) + require(space > offset and zero > space + 1 and zero + 21 <= len(raw), + "malformed Git tree") + mode = raw[offset:space].decode("ascii") + name = raw[space + 1:zero].decode("utf-8") + require(mode in ("40000", "100644", "100755", "120000"), "unsupported tree mode") + require(name not in (".", "..") and "/" not in name and name not in entries, + "invalid or duplicate tree path") + entries[name] = (mode, raw[zero + 1:zero + 21].hex()) + offset = zero + 21 + return entries + + def resolve(self, commit, path, expected_mode=None): + parts = path.split("/") + require(all(p and p not in (".", "..") for p in parts), "invalid requested path") + oid, _ = self.commit(commit) + mode = "40000" + for part in parts: + require(mode == "40000", "path traverses a non-directory") + entries = self.tree(oid) + require(part in entries, "missing path component: " + part) + mode, oid = entries[part] + if expected_mode is not None: + require(mode == expected_mode, "path mode mismatch: " + path) + return mode, oid + + def inventory(self, tree, prefix=""): + result = {} + for name, (mode, oid) in self.tree(tree).items(): + path = prefix + name + if mode == "40000": + result.update(self.inventory(oid, path + "/")) + else: + result[path] = {"mode": mode, "blob": oid} + return result + + def difference(self, before, after, prefix=""): + """Walk every changed subtree; equal Git trees are skipped exactly.""" + if before == after: + return {} + left, right = self.tree(before), self.tree(after) + changed = {} + for name in sorted(set(left) | set(right)): + a, b = left.get(name), right.get(name) + path = prefix + name + if a == b: + continue + if a is None and b[0] == "40000": + changed.update({p: {"before": None, "after": row} + for p, row in self.inventory(b[1], path + "/").items()}) + elif a is not None and b is not None and a[0] == b[0] == "40000": + changed.update(self.difference(a[1], b[1], path + "/")) + else: + changed[path] = { + "before": None if a is None else {"mode": a[0], "blob": a[1]}, + "after": None if b is None else {"mode": b[0], "blob": b[1]}, + } + return changed + + def blob(self, role): + commit, path = BLOBS[role] + _, oid = self.resolve(commit, path, "100644") + return self.raw(oid, "blob") + + +def histogram(pairs, width): + out = {} + for rank, count in pairs: + require(type(rank) is int and type(count) is int and 0 < rank <= width and count > 0, + "invalid histogram entry") + require(rank not in out, "duplicate histogram rank") + out[rank] = count + require(bool(out), "empty histogram") + return out + + +def nonzero(counter): + return {str(k): v for k, v in sorted(counter.items()) if v} + + +def check_accounting(baseline, candidate, prior_review, bit_ledger): + """Reconcile authenticated saved reports; do not call their producer code.""" + old, candidate = baseline["histogram"], candidate["Z"] + new = candidate["histogram"] + for key in ("h", "m", "v", "N", "W", "L", "s", "R"): + require(type(old[key]) is int and old[key] == new[key], "changed common parameter: " + key) + require((old["h"], old["m"], old["v"]) == (23, 529, 1771), "wrong historical instance") + before, after = histogram(old["hist"], old["m"]), histogram(new["hist"], new["m"]) + changes = candidate["changes"] + require(len({c["slot"] for c in changes}) == len(changes), "duplicate changed slot") + require(len(changes) == candidate["changed_slots"] == 22, "changed-slot count mismatch") + steps, expected, types = 0, Counter(), Counter() + for c in changes: + a, b = c["old_dim"], c["new_dim"] + require(type(a) is int and type(b) is int and 0 <= a < b <= old["h"], + "invalid frame extension") + steps += b - a + types[a, b] += 1 + r0, r1 = old["m"] - 2 * (old["h"] - a), old["m"] - 2 * (old["h"] - b) + multiplicity = 2 * old["v"] + expected[r0] -= multiplicity + expected[r1] += multiplicity + expected[1] -= multiplicity * (r1 - r0) + require(steps == candidate["dimension_increase"] == 25, "dimension increase mismatch") + delta = Counter(after) + delta.subtract(before) + require(nonzero(delta) == nonzero(expected), "saved delta differs from the 22 recorded mergers") + require(nonzero(delta) == prior_review["total_histogram_delta"], "prior delta receipt mismatch") + require(prior_review["changed_count"] == 22 and prior_review["dimension_increase"] == 25, + "prior frame count mismatch") + recorded_components = Counter() + for component in prior_review["independently_recomputed_component_deltas"].values(): + recorded_components.update({int(k): v for k, v in component.items()}) + require(nonzero(recorded_components) == nonzero(delta), "prior component accounting mismatch") + for hist in (before, after): + require(sum(rank * count for rank, count in hist.items()) == old["s"], "recursive mass mismatch") + retained = histogram([(int(k), v) for k, v in bit_ledger["histogram"].items()], new["m"]) + require(retained == after, "PR103 does not retain the exact candidate histogram") + require(bit_ledger["recursive_rank"] == old["s"], "PR103 recursive mass mismatch") + require(bit_ledger["roles"] == old["R"], "PR103 auxiliary role mismatch") + return { + "changed_frames": len(changes), "dimension_increase": steps, + "frame_extension_counts": {f"{a}->{b}": n for (a, b), n in sorted(types.items())}, + "histogram_delta": nonzero(delta), "rank_mass_delta": sum(k * v for k, v in delta.items()), + "recursive_rank": old["s"], "width": old["W"], "auxiliary_roles": old["R"], + "pr103_saved_histogram_matches": True, + } + + +def external_inputs(): + pins = loads((HERE / "SOURCES.json").read_bytes()) + require(pins["base_commit"] == BASE, "wrong research base") + rows = {row["path"]: row for row in pins["files"] if row["usage"] == "input"} + require(set(rows) == set(INPUTS), "external input coverage changed") + result = [] + for path in INPUTS: + raw = (ROOT / path).read_bytes() + require(hashlib.sha256(raw).hexdigest() == rows[path]["sha256"], "external source drift: " + path) + require(git_id("blob", raw) == rows[path]["git_blob"], "external blob drift: " + path) + result.append(loads(raw)) + return result + + +def verify(document, archive, reviews): + proof = Proof(document) + original_tree, original_parents = proof.commit(PR99) + require(original_parents == [PARENT], "PR99 comparison parent changed") + parent_tree, _ = proof.commit(PARENT) + _, source = proof.resolve(PR99, ORIGINAL, "40000") + _, retained = proof.resolve(PR103, RETAINED, "40000") + require(source == retained == COMMON_TREE, "complete package trees differ") + files = proof.inventory(source) + require(len(files) == 46 and files == document["files"], "incomplete or changed package inventory") + difference = proof.difference(parent_tree, original_tree) + expected = {ORIGINAL + "/" + path: {"before": None, "after": row} for path, row in files.items()} + require(difference == expected, "PR99 has changes outside the retained package") + archive_tree, archive_parents = proof.commit(ARCHIVE) + require(archive["commit"] == ARCHIVE and archive["tree"] == archive_tree + and archive["parents"] == archive_parents, "archive receipt does not match its Git commit") + require(PR103 in archive_parents, "PR103 is absent from the retained archive parents") + require(reviews["103"]["head"] == PR103, "historical review refers to a different head") + require(reviews["103"]["contributor"]["login"] == "rohanarun", "historical integration credit mismatch") + data = {role: loads(proof.blob(role)) for role in BLOBS if role != "original_notice"} + require(proof.blob("original_notice") == (HERE / "UPSTREAM-NOTICE").read_bytes(), + "original notice was not retained exactly") + accounting = check_accounting(**data) + require(proof.used == set(proof.objects), "unused evidence objects") + return { + "status": "PASS_PR99_RETENTION_AND_SAVED_ACCOUNTING", + "base_commit": BASE, "original_head": PR99, "retained_head": PR103, + "archive_commit": ARCHIVE, "common_package_tree": COMMON_TREE, + "retained_files": len(files), "original_changes": {"added": len(difference), "modified": 0, "deleted": 0}, + "authenticated_git_objects": len(proof.used), "accounting": accounting, + "fresh_physical_replay": False, "new_kappa_claim": False, + "scope": "Complete historical source retention and saved-report accounting; no new construction acceptance.", + } + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--proof", type=Path, default=HERE / "SOURCE-PROOF.json") + parser.add_argument("--write-result", type=Path, help="write a newly recomputed receipt instead of comparing RESULT.json") + args = parser.parse_args() + result = verify(loads(args.proof.read_bytes()), *external_inputs()) + if args.write_result: + args.write_result.write_text(json.dumps(result, indent=2) + "\n") + else: + require(result == loads((HERE / "RESULT.json").read_bytes()), "saved result differs from recomputation") + print(result["status"] + f" files={result['retained_files']} singleton_delta={result['accounting']['histogram_delta']['1']} mass_delta=0") + + +if __name__ == "__main__": + main()