From 25c38dddbfc4523ff3d920bbcbfd0c9b8103186c Mon Sep 17 00:00:00 2001 From: verytactical <186486509+verytactical@users.noreply.github.com> Date: Tue, 14 Jan 2025 20:11:36 +0400 Subject: [PATCH] refactor: split build scripts --- .eslintignore | 1 + .github/workflows/tact.yml | 2 +- .prettierignore | 2 +- cspell.json | 23 +- package.json | 16 +- scripts/pack.ts | 47 - scripts/set-next-version.sh | 31 - scripts/tsconfig.json | 3 - src/func/copy.build.ts | 21 + src/func/func.build.ts | 9 + src/func/funcCompile.spec.ts | 2 +- .../grammar/prev/copy.build.ts | 1 - src/imports/stdlib.ts | 853 ------------------ src/node.ts | 6 +- src/pipeline/build.ts | 2 +- src/stdlib/copy.build.ts | 28 + src/stdlib/path.ts | 3 + src/stdlib/stdlib.build.ts | 39 + src/stdlib/stdlib.ts | 853 ++++++++++++++++++ .../stdlib/stdlib}/libs/config.tact | 0 .../stdlib/stdlib}/libs/content.tact | 0 .../stdlib/stdlib}/libs/deploy.tact | 0 {stdlib => src/stdlib/stdlib}/libs/dns.fc | 0 {stdlib => src/stdlib/stdlib}/libs/dns.tact | 0 .../stdlib/stdlib}/libs/ownable.tact | 0 .../stdlib/stdlib}/libs/stoppable.tact | 0 {stdlib => src/stdlib/stdlib}/std/base.tact | 0 {stdlib => src/stdlib/stdlib}/std/cells.tact | 0 {stdlib => src/stdlib/stdlib}/std/config.tact | 0 .../stdlib/stdlib}/std/context.tact | 0 .../stdlib/stdlib}/std/contract.tact | 0 {stdlib => src/stdlib/stdlib}/std/crypto.tact | 0 {stdlib => src/stdlib/stdlib}/std/debug.tact | 0 {stdlib => src/stdlib/stdlib}/std/math.tact | 0 .../stdlib/stdlib}/std/primitives.tact | 0 .../stdlib/stdlib}/std/reserve.tact | 0 {stdlib => src/stdlib/stdlib}/std/send.tact | 0 {stdlib => src/stdlib/stdlib}/std/text.tact | 0 {stdlib => src/stdlib/stdlib}/stdlib.fc | 0 {stdlib => src/stdlib/stdlib}/stdlib.tact | 0 {stdlib => src/stdlib/stdlib}/stdlib_ex.fc | 0 src/storage/resolveAllocation.spec.ts | 7 +- version.build.ts | 45 + 43 files changed, 1031 insertions(+), 963 deletions(-) delete mode 100644 scripts/pack.ts delete mode 100755 scripts/set-next-version.sh delete mode 100644 scripts/tsconfig.json create mode 100644 src/func/copy.build.ts create mode 100644 src/func/func.build.ts rename scripts/copy-files.ts => src/grammar/prev/copy.build.ts (89%) delete mode 100644 src/imports/stdlib.ts create mode 100644 src/stdlib/copy.build.ts create mode 100644 src/stdlib/path.ts create mode 100644 src/stdlib/stdlib.build.ts create mode 100644 src/stdlib/stdlib.ts rename {stdlib => src/stdlib/stdlib}/libs/config.tact (100%) rename {stdlib => src/stdlib/stdlib}/libs/content.tact (100%) rename {stdlib => src/stdlib/stdlib}/libs/deploy.tact (100%) rename {stdlib => src/stdlib/stdlib}/libs/dns.fc (100%) rename {stdlib => src/stdlib/stdlib}/libs/dns.tact (100%) rename {stdlib => src/stdlib/stdlib}/libs/ownable.tact (100%) rename {stdlib => src/stdlib/stdlib}/libs/stoppable.tact (100%) rename {stdlib => src/stdlib/stdlib}/std/base.tact (100%) rename {stdlib => src/stdlib/stdlib}/std/cells.tact (100%) rename {stdlib => src/stdlib/stdlib}/std/config.tact (100%) rename {stdlib => src/stdlib/stdlib}/std/context.tact (100%) rename {stdlib => src/stdlib/stdlib}/std/contract.tact (100%) rename {stdlib => src/stdlib/stdlib}/std/crypto.tact (100%) rename {stdlib => src/stdlib/stdlib}/std/debug.tact (100%) rename {stdlib => src/stdlib/stdlib}/std/math.tact (100%) rename {stdlib => src/stdlib/stdlib}/std/primitives.tact (100%) rename {stdlib => src/stdlib/stdlib}/std/reserve.tact (100%) rename {stdlib => src/stdlib/stdlib}/std/send.tact (100%) rename {stdlib => src/stdlib/stdlib}/std/text.tact (100%) rename {stdlib => src/stdlib/stdlib}/stdlib.fc (100%) rename {stdlib => src/stdlib/stdlib}/stdlib.tact (100%) rename {stdlib => src/stdlib/stdlib}/stdlib_ex.fc (100%) create mode 100644 version.build.ts diff --git a/.eslintignore b/.eslintignore index 1ee328705..bfc3b2620 100644 --- a/.eslintignore +++ b/.eslintignore @@ -10,3 +10,4 @@ src/grammar/next/grammar.ts jest.setup.js jest.teardown.js /docs +version.build.ts diff --git a/.github/workflows/tact.yml b/.github/workflows/tact.yml index 943c887d4..e1aabd2e8 100644 --- a/.github/workflows/tact.yml +++ b/.github/workflows/tact.yml @@ -70,7 +70,7 @@ jobs: yarn gen yarn build - - name: Check there are no errors to be fixed in package.json and no uncommited changes + - name: Check there are no errors to be fixed in package.json and no uncommitted changes run: | npm pkg fix && git diff --exit-code diff --git a/.prettierignore b/.prettierignore index 7c95c4b4c..303248c75 100644 --- a/.prettierignore +++ b/.prettierignore @@ -4,6 +4,6 @@ /src/grammar/prev/grammar.ohm-bundle.d.ts /src/grammar/prev/grammar.ohm-bundle.js src/grammar/next/grammar.ts -/src/imports/stdlib.ts +/src/stdlib/stdlib.ts /grammar /docs diff --git a/cspell.json b/cspell.json index 233921bb1..04b91b224 100644 --- a/cspell.json +++ b/cspell.json @@ -25,9 +25,9 @@ "Brujin", "cleanall", "codegen", - "comptime", - "Compilables", "compilables", + "Compilables", + "comptime", "Daniil", "decompilation", "decompile", @@ -44,10 +44,10 @@ "elseifnot", "forall", "formedness", + "frontmatter", "funcfiftlib", "funcid", "funs", - "frontmatter", "Georgiy", "getsimpleforwardfee", "gettest", @@ -56,6 +56,7 @@ "infixl", "infixr", "initof", + "Ints", "ipfs", "ipld", "Jesús", @@ -109,6 +110,7 @@ "stdlib", "stmts", "Ston", + "storer", "struct", "structs", "styleguide", @@ -116,10 +118,10 @@ "supertypes", "Tarjan", "testdata", - "Topup", "Toncoin", "Toncoins", "tonstudio", + "Topup", "Trunov", "typechecker", "uintptr", @@ -127,10 +129,9 @@ "uninit", "unixfs", "untypable", - "varuint", "varint", - "storer", - "Ints", + "varuint", + "viiii", "workchain", "xffff", "привет" @@ -149,9 +150,9 @@ "*.spec.ts.snap", "node_modules", "dist", - "func", "grammar/sample.json", "src/generator/writers/writeStdlib.ts", + "src/func/funcfiftlib.*", "src/grammar/grammar.ohm-bundle.d.ts", "src/grammar/test/items-native-fun-funcid.tact", "src/grammar/test/items-asm-funs.tact", @@ -159,8 +160,9 @@ "src/grammar/test-failed/funcid-*.tact", "src/grammar/next/grammar.gg", "src/grammar/next/grammar.ts", - "src/imports/stdlib.ts", - "/src/test/compilation-failed/const-eval-failed.spec.ts", + "src/stdlib/stdlib.ts", + "src/stdlib/stdlib/stdlib.fc", + "src/test/compilation-failed/const-eval-failed.spec.ts", "src/test/e2e-emulated/address.spec.ts", "src/test/e2e-emulated/intrinsics.spec.ts", "src/test/e2e-emulated/optionals.spec.ts", @@ -171,7 +173,6 @@ "src/test/compilation-fail/fail-const-eval.spec.ts", "src/test/e2e-emulated/getter-names-conflict.spec.ts", "src/test/exit-codes/contracts/compute-phase-errors.tact", - "stdlib/stdlib.fc", "/docs" ] } diff --git a/package.json b/package.json index 8edad5e45..1c34162bd 100644 --- a/package.json +++ b/package.json @@ -13,14 +13,18 @@ "gen:grammar:old": "ohm generateBundles --withTypes src/grammar/prev/*.ohm", "gen:grammar:new": "pgen src/grammar/next/grammar.gg -o src/grammar/next/grammar.ts", "gen:grammar": "yarn gen:grammar:old && yarn gen:grammar:new", - "gen:pack": "ts-node ./scripts/pack.ts", + "gen:stdlib": "ts-node src/stdlib/stdlib.build.ts", + "gen:func-js": "ts-node src/func/func.build.ts", "gen:contracts:examples": "ts-node examples/contracts.build.ts", "gen:contracts:test": "ts-node src/test/contracts.build.ts", - "gen": "yarn gen:grammar && yarn gen:pack && yarn gen:contracts:examples && yarn gen:contracts:test", + "gen": "yarn gen:grammar && yarn gen:stdlib && yarn gen:func-js && yarn gen:contracts:examples && yarn gen:contracts:test", "clean": "rm -fr dist", "cleanall": "rm -fr dist node_modules", - "build": "tsc && node --no-warnings=ExperimentalWarning -r ts-node/register ./scripts/copy-files", - "test": "yarn gen:grammar && jest", + "copy:stdlib": "ts-node src/stdlib/copy.build.ts", + "copy:grammar": "ts-node src/grammar/prev/copy.build.ts", + "copy:func": "ts-node src/func/copy.build.ts", + "build": "tsc && yarn copy:stdlib && yarn copy:grammar && yarn copy:func", + "test": "jest", "coverage": "cross-env COVERAGE=true jest", "release": "yarn clean && yarn build && yarn coverage && yarn release-it --npm.yarn1", "type": "tsc --noEmit", @@ -35,11 +39,11 @@ "all": "yarn clean && yarn gen && yarn build && yarn coverage && yarn lint:all", "postinstall": "node .husky/install.mjs || true", "prepack": "pinst --disable", - "postpack": "pinst --enable" + "postpack": "pinst --enable", + "next-version": "ts-node version.build.ts" }, "files": [ "dist/**/*", - "src/**/*", "bin/**/*", "stdlib/**/*", "!**/test", diff --git a/scripts/pack.ts b/scripts/pack.ts deleted file mode 100644 index a98072c20..000000000 --- a/scripts/pack.ts +++ /dev/null @@ -1,47 +0,0 @@ -import fs from "fs"; -import path from "path"; -import glob from "glob"; -import { posixNormalize } from "../src/utils/filePath"; - -// Pack func -const wasmBase64 = fs - .readFileSync( - path.resolve(__dirname, "..", "src", "func", "funcfiftlib.wasm"), - ) - .toString("base64"); -const wasmBase64js = `module.exports = { FuncFiftLibWasm: '${wasmBase64}' };`; -fs.writeFileSync( - path.resolve(__dirname, "..", "src", "func", "funcfiftlib.wasm.js"), - wasmBase64js, -); - -// Pack stdlib -const stdlibFiles = glob.sync( - path.resolve(__dirname, "..", "stdlib", "**", "*.@(tact|fc)"), - { windowsPathsNoEscape: true }, -); -const dirPrefixToRemove = - posixNormalize(path.resolve(__dirname, "..", "stdlib")) + "/"; // Remove also the leading slash -let output: string = ""; -output = "const files: Record = {};\n"; -for (const f of stdlibFiles) { - let code = fs.readFileSync(f).toString("base64"); - const name = f.replace(dirPrefixToRemove, ""); - output += `files['${name}'] =\n`; - let first = true; - while (code.length > 0) { - if (first) { - first = false; - } else { - output += " +\n"; - } - output += ` '${code.slice(0, 128)}'`; - code = code.slice(128); - } - output += `;\n`; -} -output += "export default files;"; -fs.writeFileSync( - path.resolve(__dirname, "..", "src", "imports", "stdlib.ts"), - output, -); diff --git a/scripts/set-next-version.sh b/scripts/set-next-version.sh deleted file mode 100755 index 898ad1cc8..000000000 --- a/scripts/set-next-version.sh +++ /dev/null @@ -1,31 +0,0 @@ -#!/usr/bin/env sh - -# Call the script with a new dev version as its argument. -# If the argument is not provided a new version will be -# automatically generated from package.json and current date, -# plus a gitHead field with the current Git commit hash -# will be added to package.json. -# -# The version format should be as follows: -# ..-dev. -# e.g. something like 1.4.0-dev.20240711 - -FILE=package.json -COMMIT=$(git rev-parse HEAD) - -if [ ! -f "$FILE" ]; then - echo "Error: $FILE not found!" - exit 1 -fi - -VERSION=$1 -if [ -z "$VERSION" ]; then - VERSION=$(jq -r '.version' $FILE)-dev.$(date +"%Y%m%d") -fi - -TMP=$(mktemp) -jq ".version = \"$VERSION\" | .gitHead = \"$COMMIT\"" "$FILE" > "$TMP" -mv "$TMP" "$FILE" -rm "$TMP" -yarn prettier -w "$FILE" - diff --git a/scripts/tsconfig.json b/scripts/tsconfig.json deleted file mode 100644 index 4eb37fee0..000000000 --- a/scripts/tsconfig.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "../tsconfig.base.json" -} diff --git a/src/func/copy.build.ts b/src/func/copy.build.ts new file mode 100644 index 000000000..7bf43cbce --- /dev/null +++ b/src/func/copy.build.ts @@ -0,0 +1,21 @@ +import * as fs from "node:fs/promises"; +import * as path from "node:path"; +import * as glob from "glob"; + +const cp = async (fromGlob: string, toPath: string) => { + const files = glob.sync(fromGlob); + for (const file of files) { + await fs.copyFile(file, path.join(toPath, path.basename(file))); + } +}; + +const main = async () => { + try { + await cp("./src/func/funcfiftlib.*", "./dist/func/"); + } catch (e) { + console.error(e); + process.exit(1); + } +}; + +void main(); diff --git a/src/func/func.build.ts b/src/func/func.build.ts new file mode 100644 index 000000000..b785f8b86 --- /dev/null +++ b/src/func/func.build.ts @@ -0,0 +1,9 @@ +import fs from "fs"; +import path from "path"; + +const sourcePath = path.resolve(__dirname, "funcfiftlib.wasm"); +const targetPath = path.resolve(__dirname, "funcfiftlib.wasm.js"); + +const wasmBase64 = fs.readFileSync(sourcePath).toString("base64"); +const wasmBase64js = `module.exports = { FuncFiftLibWasm: '${wasmBase64}' };`; +fs.writeFileSync(targetPath, wasmBase64js); diff --git a/src/func/funcCompile.spec.ts b/src/func/funcCompile.spec.ts index 9ed451e8c..ebe019459 100644 --- a/src/func/funcCompile.spec.ts +++ b/src/func/funcCompile.spec.ts @@ -2,7 +2,7 @@ import fs from "fs"; import path from "path"; import { Logger } from "../context/logger"; import { funcCompile } from "./funcCompile"; -import files from "../imports/stdlib"; +import files from "../stdlib/stdlib"; describe("funcCompile", () => { it("should compile small contract", async () => { diff --git a/scripts/copy-files.ts b/src/grammar/prev/copy.build.ts similarity index 89% rename from scripts/copy-files.ts rename to src/grammar/prev/copy.build.ts index 39fd923c3..70d8d15b1 100644 --- a/scripts/copy-files.ts +++ b/src/grammar/prev/copy.build.ts @@ -12,7 +12,6 @@ const cp = async (fromGlob: string, toPath: string) => { const main = async () => { try { await cp("./src/grammar/prev/grammar.ohm*", "./dist/grammar/prev/"); - await cp("./src/func/funcfiftlib.*", "./dist/func/"); } catch (e) { console.error(e); process.exit(1); diff --git a/src/imports/stdlib.ts b/src/imports/stdlib.ts deleted file mode 100644 index 27563ec77..000000000 --- a/src/imports/stdlib.ts +++ /dev/null @@ -1,853 +0,0 @@ -const files: Record = {}; -files['libs/config.tact'] = - 'ZnVuIGdldENvbmZpZ0FkZHJlc3MoKTogQWRkcmVzcyB7CiAgICBsZXQgY2VsbDogQ2VsbCA9IGdldENvbmZpZ1BhcmFtKDApISE7CiAgICBsZXQgc2M6IFNsaWNlID0g' + - 'Y2VsbC5iZWdpblBhcnNlKCk7CiAgICByZXR1cm4gbmV3QWRkcmVzcygtMSwgc2MubG9hZFVpbnQoMjU2KSk7Cn0KCmZ1biBnZXRFbGVjdG9yQWRkcmVzcygpOiBBZGRy' + - 'ZXNzIHsKICAgIGxldCBjZWxsOiBDZWxsID0gZ2V0Q29uZmlnUGFyYW0oMSkhITsKICAgIGxldCBzYzogU2xpY2UgPSBjZWxsLmJlZ2luUGFyc2UoKTsKICAgIHJldHVy' + - 'biBuZXdBZGRyZXNzKC0xLCBzYy5sb2FkVWludCgyNTYpKTsKfQ=='; -files['libs/content.tact'] = - 'ZnVuIGNyZWF0ZU9mZmNoYWluQ29udGVudChsaW5rOiBTdHJpbmcpOiBDZWxsIHsKICAgIGxldCBidWlsZGVyOiBTdHJpbmdCdWlsZGVyID0gYmVnaW5TdHJpbmdGcm9t' + - 'QnVpbGRlcihiZWdpbkNlbGwoKS5zdG9yZVVpbnQoMHgwMSwgOCkpOwogICAgYnVpbGRlci5hcHBlbmQobGluayk7CiAgICByZXR1cm4gYnVpbGRlci50b0NlbGwoKTsK' + - 'fQ=='; -files['libs/deploy.tact'] = - 'Cm1lc3NhZ2UgRGVwbG95IHsKICAgIHF1ZXJ5SWQ6IEludCBhcyB1aW50NjQ7Cn0KCm1lc3NhZ2UgRGVwbG95T2sgewogICAgcXVlcnlJZDogSW50IGFzIHVpbnQ2NDsK' + - 'fQoKdHJhaXQgRGVwbG95YWJsZSB7CiAgICByZWNlaXZlKGRlcGxveTogRGVwbG95KSB7CiAgICAgICAgc2VsZi5ub3RpZnkoRGVwbG95T2t7cXVlcnlJZDogZGVwbG95' + - 'LnF1ZXJ5SWR9LnRvQ2VsbCgpKTsKICAgIH0KfQoKbWVzc2FnZSBGYWN0b3J5RGVwbG95IHsKICAgIHF1ZXJ5SWQ6IEludCBhcyB1aW50NjQ7CiAgICBjYXNoYmFjazog' + - 'QWRkcmVzczsKfQoKdHJhaXQgRmFjdG9yeURlcGxveWFibGUgIHsKICAgIHJlY2VpdmUoZGVwbG95OiBGYWN0b3J5RGVwbG95KSB7CiAgICAgICAgc2VsZi5mb3J3YXJk' + - 'KGRlcGxveS5jYXNoYmFjaywgRGVwbG95T2t7cXVlcnlJZDogZGVwbG95LnF1ZXJ5SWR9LnRvQ2VsbCgpLCBmYWxzZSwgbnVsbCk7CiAgICB9Cn0='; -files['libs/dns.fc'] = - 'c2xpY2UgZG5zX3N0cmluZ190b19pbnRlcm5hbChzbGljZSBkb21haW4pIGlubGluZV9yZWYgewoKICAgIDs7IFNwZWNpYWwgY2FzZSBmb3Igcm9vdCBkb21haW4KICAg' + - 'IGlmICgoZG9tYWluLnNsaWNlX2JpdHMoKSA9PSA4KSAmIChkb21haW4uc2xpY2VfcmVmcygpID09IDApKSB7CiAgICAgICAgaWYgKGRvbWFpbi5wcmVsb2FkX3VpbnQo' + - 'OCkgPT0gNDYpIHsKICAgICAgICAgICAgcmV0dXJuIGJlZ2luX2NlbGwoKS5zdG9yZV91aW50KDAsIDgpLmVuZF9jZWxsKCkuYmVnaW5fcGFyc2UoKTsKICAgICAgICB9' + - 'CiAgICB9CiAgICAKICAgIDs7IFNwbGl0IGRvbWFpbiBpbnRvIHNlZ21lbnRzCiAgICB0dXBsZSBzZWdtZW50cyA9IG51bGwoKTsKICAgIGJ1aWxkZXIgY3VycmVudCA9' + - 'IGJlZ2luX2NlbGwoKTsKICAgIGludCBpc0N1cnJlbnRFbXB0eSA9IHRydWU7CiAgICBpbnQgaXNGaXJzdCA9IHRydWU7CiAgICBpbnQgaXNIeXBoZW4gPSBmYWxzZTsK' + - 'ICAgIHNsaWNlIGNzID0gZG9tYWluOwogICAgaW50IGNvbnRpbnVlID0gdHJ1ZTsKICAgIGRvIHsKCiAgICAgICAgOzsgUHJlcGFyZSBmb3IgbG9hZGluZyBuZXh0IGNo' + - 'YXJhY3RlcgogICAgICAgIGlmIChjcy5zbGljZV9iaXRzKCkgPT0gMCkgewogICAgICAgICAgICBpbnQgcmVmcyA9IGNzLnNsaWNlX3JlZnMoKTsKICAgICAgICAgICAg' + - 'aWYgKHJlZnMgPT0gMSkgewogICAgICAgICAgICAgICAgY3MgPSBjc35sb2FkX3JlZigpLmJlZ2luX3BhcnNlKCk7CiAgICAgICAgICAgIH0gZWxzZWlmIChyZWZzID4g' + - 'MSkgewogICAgICAgICAgICAgICAgcmV0dXJuIG51bGwoKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlID0gZmFsc2U7CiAgICAg' + - 'ICAgICAgIH0KICAgICAgICAgICAgY29udGludWUgPSBmYWxzZTsKICAgICAgICB9CgogICAgICAgIDs7IENvbnRpbnVlIGxvYWRpbmcgbmV4dCBjaGFyYWN0ZXIKICAg' + - 'ICAgICBpZiAoY29udGludWUpIHsKICAgICAgICAgICAgaW50IGNoYXIgPSBjc35sb2FkX3VpbnQoOCk7CiAgICAgICAgICAgIDs7IHdlIGNhbiBkbyBpdCBiZWNhdXNl' + - 'IGFkZGl0aW9uYWwgVVRGLTggY2hhcmFjdGVyJ3Mgb2N0ZXRzID49IDEyOCAtLSBodHRwczovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMzYyOS50eHQKICAgICAgICAgICAg' + - 'aW50IGlzX2h5cGhlbiA9IChjaGFyID09IDQ1KTsKICAgICAgICAgICAgaW50IGlzX2RvdCAgPSAoY2hhciA9PSA0Nik7CiAgICAgICAgICAgIGludCB2YWxpZF9jaGFy' + - 'ID0gaXNfaHlwaGVuIHwgaXNfZG90IHwgKChjaGFyID49IDQ4KSAmIChjaGFyIDw9IDU3KSkgfCAoKGNoYXIgPj0gOTcpICYgKGNoYXIgPD0gMTIyKSk7IDs7ICctJyBv' + - 'ciAwLTkgb3IgYS16CiAgICAgICAgICAgIGlmICh+IHZhbGlkX2NoYXIgfCAoaXNGaXJzdCAmIGlzX2h5cGhlbikpIHsKICAgICAgICAgICAgICAgIHJldHVybiBudWxs' + - 'KCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaXNIeXBoZW4gPSBpc19oeXBoZW47CiAgICAgICAgICAgIGlmIChpc19kb3QpIHsKICAgICAgICAgICAgICAgIGlm' + - 'IChpc0ZpcnN0IHwgaXNIeXBoZW4pIHsgOzsgRW1wdHkgb3IgZW5kcyB3aXRoIGh5cGhlbgogICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsKCk7CiAgICAgICAg' + - 'ICAgICAgICB9CiAgICAgICAgICAgICAgICBzZWdtZW50cyA9IGNvbnMoY3VycmVudCwgc2VnbWVudHMpOwogICAgICAgICAgICAgICAgY3VycmVudCA9IGJlZ2luX2Nl' + - 'bGwoKTsKICAgICAgICAgICAgICAgIGlzSHlwaGVuID0gZmFsc2U7CiAgICAgICAgICAgICAgICBpc0ZpcnN0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGlzQ3VycmVu' + - 'dEVtcHR5ID0gdHJ1ZTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlzRmlyc3QgPSBmYWxzZTsKICAgICAgICAgICAgICAgIGlzQ3VycmVudEVt' + - 'cHR5ID0gZmFsc2U7CiAgICAgICAgICAgICAgICBjdXJyZW50fnN0b3JlX3VpbnQoY2hhciwgOCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgfSB1bnRpbCAo' + - 'fiBjb250aW51ZSk7CiAgICBpZiAoaXNIeXBoZW4pIHsgOzsgZW5kcyB3aXRoIGh5cGhlbgogICAgICAgIHJldHVybiBudWxsKCk7CiAgICB9CiAgICBpZiAofiBpc0N1' + - 'cnJlbnRFbXB0eSkgewogICAgICAgIHNlZ21lbnRzID0gY29ucyhjdXJyZW50LCBzZWdtZW50cyk7CiAgICB9CgogICAgOzsgQ29uY2F0ZW5hdGUgc2VnbWVudHMKICAg' + - 'IGJ1aWxkZXIgcmVzID0gYmVnaW5fY2VsbCgpOwogICAgKGJ1aWxkZXIgYiwgdHVwbGUgdGFpbCkgPSB1bmNvbnMoc2VnbWVudHMpOwogICAgcmVzID0gcmVzLnN0b3Jl' + - 'X2J1aWxkZXIoYik7CiAgICB3aGlsZSh+IG51bGw/KHRhaWwpKSB7CiAgICAgICAgKGIsIHRhaWwpID0gdW5jb25zKHRhaWwpOwogICAgICAgIHJlcyA9IHJlcy5zdG9y' + - 'ZV91aW50KDAsIDgpOyA7OyBBZGQgXDAgc2VwYXJhdG9yCiAgICAgICAgcmVzID0gcmVzLnN0b3JlX2J1aWxkZXIoYik7CiAgICB9CiAgICByZXMgPSByZXMuc3RvcmVf' + - 'dWludCgwLCA4KTsgOzsgQWRkIFwwIHNlcGFyYXRvcgogICAgcmV0dXJuIHJlcy5lbmRfY2VsbCgpLmJlZ2luX3BhcnNlKCk7Cn0KCmludCBkbnNfaW50ZXJuYWxfdmVy' + - 'aWZ5KHNsaWNlIHNjKSBpbmxpbmVfcmVmIHsKICAgIGlmIChzYy5zbGljZV9yZWZzKCkgIT0gMCkgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIGludCBi' + - 'aXRzID0gc2Muc2xpY2VfYml0cygpOwogICAgaWYgKGJpdHMgJSA4ICE9IDApIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICBpZiAoYml0cyA9PSAwKSB7' + - 'IDs7IENhc2UgZm9yIHJvb3QgZG9tYWluCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CiAgICBpbnQgbGVuID0gYml0cyAvIDg7CiAgICBpbnQgY291bnRlciA9IDA7' + - 'CiAgICBpbnQgaXNGaXJzdCA9IHRydWU7CiAgICBpbnQgaXNIeXBoZW4gPSBmYWxzZTsKICAgIHJlcGVhdChsZW4pIHsKICAgICAgICBpbnQgY2hhciA9IHNjfmxvYWRf' + - 'dWludCg4KTsKICAgICAgICBpZiAoY2hhciA9PSAwKSB7CiAgICAgICAgICAgIGlmIChjb3VudGVyID09IDApIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK' + - 'ICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoaXNIeXBoZW4pIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAg' + - 'ICBjb3VudGVyID0gMDsKICAgICAgICAgICAgaXNIeXBoZW4gPSBmYWxzZTsKICAgICAgICAgICAgaXNGaXJzdCA9IHRydWU7CiAgICAgICAgfSBlbHNlIHsKICAgICAg' + - 'ICAgICAgaW50IGNoYXJJc0h5cGhlbiA9IChjaGFyID09IDQ1KTsKICAgICAgICAgICAgaW50IGlzVmFsaWQgPSBjaGFySXNIeXBoZW4gfCAoKGNoYXIgPj0gNDgpICYg' + - 'KGNoYXIgPD0gNTcpKSB8ICgoY2hhciA+PSA5NykgJiAoY2hhciA8PSAxMjIpKTsKICAgICAgICAgICAgaWYgKH4gaXNWYWxpZCkgewogICAgICAgICAgICAgICAgcmV0' + - 'dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChjaGFySXNIeXBoZW4gJiBpc0ZpcnN0KSAgewogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl' + - 'OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlzSHlwaGVuID0gY2hhcklzSHlwaGVuOwogICAgICAgICAgICBpc0ZpcnN0ID0gZmFsc2U7CiAgICAgICAgICAgIGNv' + - 'dW50ZXIgPSBjb3VudGVyICsgMTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gY291bnRlciA9PSAwICYgfiBpc0h5cGhlbjsKfQoKc2xpY2UgZG5zX2ludGVybmFs' + - 'X25vcm1hbGl6ZShzbGljZSBzcmMpIGltcHVyZSBpbmxpbmVfcmVmIHsKICAgIHRocm93X3VubGVzcygxMzQsIHNyYy5zbGljZV9yZWZzKCkgPT0gMCk7IDs7IEludmFs' + - 'aWQgYXJndW1lbnQgZXJyb3IKICAgIGJ1aWxkZXIgdGFyZ2V0ID0gYmVnaW5fY2VsbCgpOwogICAgcmVwZWF0KHNyYy5zbGljZV9iaXRzKCkgLyA4KSB7CiAgICAgICAg' + - 'aW50IGNoYXIgPSBzcmN+bG9hZF91aW50KDgpOwoKICAgICAgICA7OyBiID0+IDYKICAgICAgICBpZiAoY2hhciA9PSA5OCkgewogICAgICAgICAgICBjaGFyID0gNTQ7' + - 'CiAgICAgICAgfQoKICAgICAgICA7OyBnLCBxID0+IDkKICAgICAgICBpZiAoKGNoYXIgPT0gMTAzKSB8IChjaGFyID09IDExMykpIHsKICAgICAgICAgICAgY2hhciA9' + - 'IDU3OyAgICAKICAgICAgICB9CgogICAgICAgIDs7IGwgPT4gMQogICAgICAgIGlmIChjaGFyID09IDEwOCkgewogICAgICAgICAgICBjaGFyID0gNDk7CiAgICAgICAg' + - 'fQoKICAgICAgICA7OyBvID0+IDAKICAgICAgICBpZiAoY2hhciA9PSAxMTEpIHsKICAgICAgICAgICAgY2hhciA9IDQ4OwogICAgICAgIH0KCiAgICAgICAgOzsgcyA9' + - 'PiA1CiAgICAgICAgaWYgKGNoYXIgPT0gMTE1KSB7CiAgICAgICAgICAgIGNoYXIgPSA1MzsKICAgICAgICB9CgogICAgICAgIDs7IHUgPT4gdgogICAgICAgIGlmIChj' + - 'aGFyID09IDExNykgewogICAgICAgICAgICBjaGFyID0gMTE4OwogICAgICAgIH0KCiAgICAgICAgOzsgeiA9PiAyCiAgICAgICAgaWYgKGNoYXIgPT0gMTIyKSB7CiAg' + - 'ICAgICAgICAgIGNoYXIgPSA1MDsKICAgICAgICB9CgogICAgICAgIHRhcmdldCA9IHRhcmdldC5zdG9yZV91aW50KGNoYXIsIDgpOwogICAgfQogICAgcmV0dXJuIHRh' + - 'cmdldC5lbmRfY2VsbCgpLmJlZ2luX3BhcnNlKCk7Cn0K'; -files['libs/dns.tact'] = - 'aW1wb3J0ICIuL2Rucy5mYyI7CgpzdHJ1Y3QgRE5TUmVzb2x2ZVJlc3VsdCB7CiAgICBwcmVmaXg6IEludDsgCiAgICByZWNvcmQ6IENlbGw/OyAKfQoKQG5hbWUoZG5z' + - 'X3N0cmluZ190b19pbnRlcm5hbCkKbmF0aXZlIGRuc1N0cmluZ1RvSW50ZXJuYWwoc3RyOiBTdHJpbmcpOiBTbGljZT87CgpAbmFtZShkbnNfaW50ZXJuYWxfbm9ybWFs' + - 'aXplKQpuYXRpdmUgZG5zSW50ZXJuYWxOb3JtYWxpemUoc3JjOiBTbGljZSk6IFNsaWNlOwoKQG5hbWUoZG5zX2ludGVybmFsX3ZlcmlmeSkKbmF0aXZlIGRuc0ludGVy' + - 'bmFsVmVyaWZ5KHN1YmRvbWFpbjogU2xpY2UpOiBCb29sOwoKZnVuIGRuc0V4dHJhY3RUb3BEb21haW5MZW5ndGgoc3ViZG9tYWluOiBTbGljZSk6IEludCB7CiAgICBs' + - 'ZXQgaTogSW50ID0gMDsKICAgIGxldCBuZWVkQnJlYWs6IEJvb2wgPSBmYWxzZTsKICAgIGRvIHsKICAgICAgICBsZXQgY2hhcjogSW50ID0gc3ViZG9tYWluLmxvYWRV' + - 'aW50KDgpOyAvLyB3ZSBkbyBub3QgY2hlY2sgZG9tYWluLmxlbmd0aCBiZWNhdXNlIGl0IE1VU1QgY29udGFpbnMgXDAgY2hhcmFjdGVyCiAgICAgICAgbmVlZEJyZWFr' + - 'ID0gY2hhciA9PSAwOwogICAgICAgIGlmICghbmVlZEJyZWFrKSB7CiAgICAgICAgICAgIGkgPSBpICsgODsKICAgICAgICB9CiAgICB9IHVudGlsIChuZWVkQnJlYWsp' + - 'OwogICAgcmVxdWlyZShpICE9IDAsICJJbnZhbGlkIEROUyBuYW1lIik7CiAgICByZXR1cm4gaTsKfQoKZnVuIGRuc0V4dHJhY3RUb3BEb21haW4oc3ViZG9tYWluOiBT' + - 'bGljZSk6IFNsaWNlIHsKICAgIGxldCBsZW46IEludCA9IGRuc0V4dHJhY3RUb3BEb21haW5MZW5ndGgoc3ViZG9tYWluKTsKICAgIHJldHVybiBzdWJkb21haW4ubG9h' + - 'ZEJpdHMobGVuKTsKfQoKZnVuIGRuc1Jlc29sdmVOZXh0KGFkZHJlc3M6IEFkZHJlc3MpOiBDZWxsIHsKICAgIHJldHVybiBiZWdpbkNlbGwoKQogICAgICAgIC5zdG9y' + - 'ZVVpbnQoMHhiYTkzLCAxNikKICAgICAgICAuc3RvcmVBZGRyZXNzKGFkZHJlc3MpCiAgICAgICAgLmVuZENlbGwoKTsKfQoKZnVuIGRuc1Jlc29sdmVXYWxsZXQoYWRk' + - 'cmVzczogQWRkcmVzcyk6IENlbGwgewogICAgcmV0dXJuIGJlZ2luQ2VsbCgpCiAgICAgICAgLnN0b3JlVWludCgweDlmZDMsIDE2KQogICAgICAgIC5zdG9yZUFkZHJl' + - 'c3MoYWRkcmVzcykKICAgICAgICAuc3RvcmVVaW50KDAsIDgpCiAgICAgICAgLmVuZENlbGwoKTsKfQoKdHJhaXQgRE5TUmVzb2x2ZXIgewoKICAgIGdldCBmdW4gZG5z' + - 'cmVzb2x2ZShzdWJkb21haW46IFNsaWNlLCBjYXRlZ29yeTogSW50KTogRE5TUmVzb2x2ZVJlc3VsdCB7CgogICAgICAgIC8vIE5vcm1hbGl6ZQogICAgICAgIGxldCBk' + - 'ZWx0YTogSW50ID0gMDsKICAgICAgICBpZiAoc3ViZG9tYWluLnByZWxvYWRVaW50KDgpID09IDApIHsKICAgICAgICAgICAgc3ViZG9tYWluLmxvYWRVaW50KDgpOyAv' + - 'LyBTa2lwIGZpcnN0IGJ5dGUKICAgICAgICAgICAgZGVsdGEgPSBkZWx0YSArIDg7CiAgICAgICAgfQoKICAgICAgICAvLyBDaGVja3MgY29ycmVjdG5lc3MKICAgICAg' + - 'ICByZXF1aXJlKGRuc0ludGVybmFsVmVyaWZ5KHN1YmRvbWFpbiksICJJbnZhbGlkIEROUyBuYW1lIik7CgogICAgICAgIC8vIFJlc29sdmUKICAgICAgICBsZXQgcmVz' + - 'OiBETlNSZXNvbHZlUmVzdWx0ID0gc2VsZi5kb1Jlc29sdmVETlMoc3ViZG9tYWluLCBjYXRlZ29yeSk7CiAgICAgICAgcmV0dXJuIEROU1Jlc29sdmVSZXN1bHR7cHJl' + - 'Zml4OiByZXMucHJlZml4ICsgZGVsdGEsIHJlY29yZDogcmVzLnJlY29yZH07CiAgICB9CgogICAgdmlydHVhbCBmdW4gZG9SZXNvbHZlRE5TKHN1YmRvbWFpbjogU2xp' + - 'Y2UsIGNhdGVnb3J5OiBJbnQpOiBETlNSZXNvbHZlUmVzdWx0IHsKICAgICAgICByZXR1cm4gRE5TUmVzb2x2ZVJlc3VsdHtwcmVmaXg6IHN1YmRvbWFpbi5iaXRzKCks' + - 'IHJlY29yZDogbnVsbH07CiAgICB9Cn0='; -files['libs/ownable.tact'] = - 'bWVzc2FnZSBDaGFuZ2VPd25lciB7CiAgICBxdWVyeUlkOiBJbnQgYXMgdWludDY0OwogICAgbmV3T3duZXI6IEFkZHJlc3M7Cn0KCm1lc3NhZ2UgQ2hhbmdlT3duZXJP' + - 'ayB7CiAgICBxdWVyeUlkOiBJbnQgYXMgdWludDY0OwogICAgbmV3T3duZXI6IEFkZHJlc3M7Cn0KCkBpbnRlcmZhY2UoIm9yZy50b24ub3duYWJsZSIpCnRyYWl0IE93' + - 'bmFibGUgewogICAgb3duZXI6IEFkZHJlc3M7CgogICAgZnVuIHJlcXVpcmVPd25lcigpIHsKICAgICAgICBuYXRpdmVUaHJvd1VubGVzcygxMzIsIHNlbmRlcigpID09' + - 'IHNlbGYub3duZXIpOwogICAgfQoKICAgIGdldCBmdW4gb3duZXIoKTogQWRkcmVzcyB7CiAgICAgICAgcmV0dXJuIHNlbGYub3duZXI7CiAgICB9Cn0KCkBpbnRlcmZh' + - 'Y2UoIm9yZy50b24ub3duYWJsZS50cmFuc2ZlcmFibGUudjIiKQp0cmFpdCBPd25hYmxlVHJhbnNmZXJhYmxlIHdpdGggT3duYWJsZSB7CgogICAgb3duZXI6IEFkZHJl' + - 'c3M7CgogICAgcmVjZWl2ZShtc2c6IENoYW5nZU93bmVyKSB7CiAgICAgICAgCiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIHNlbmRlciBpcyB0aGUgb3duZXIKICAgICAg' + - 'ICBzZWxmLnJlcXVpcmVPd25lcigpOwoKICAgICAgICAvLyBVcGRhdGUgb3duZXIKICAgICAgICBzZWxmLm93bmVyID0gbXNnLm5ld093bmVyOwoKICAgICAgICAvLyBS' + - 'ZXBseSByZXN1bHQKICAgICAgICBzZWxmLnJlcGx5KENoYW5nZU93bmVyT2t7IHF1ZXJ5SWQ6IG1zZy5xdWVyeUlkLCBuZXdPd25lcjptc2cubmV3T3duZXIgfS50b0Nl' + - 'bGwoKSk7CiAgICB9Cn0='; -files['libs/stoppable.tact'] = - 'aW1wb3J0ICIuL293bmFibGUiOwoKQGludGVyZmFjZSgib3JnLnRvbi5zdG9wcGFibGUiKQp0cmFpdCBTdG9wcGFibGUgd2l0aCBPd25hYmxlIHsKICAgIAogICAgc3Rv' + - 'cHBlZDogQm9vbDsKICAgIG93bmVyOiBBZGRyZXNzOwoKICAgIGZ1biByZXF1aXJlTm90U3RvcHBlZCgpIHsKICAgICAgICByZXF1aXJlKCFzZWxmLnN0b3BwZWQsICJD' + - 'b250cmFjdCBzdG9wcGVkIik7CiAgICB9CgogICAgZnVuIHJlcXVpcmVTdG9wcGVkKCkgewogICAgICAgIHJlcXVpcmUoc2VsZi5zdG9wcGVkLCAiQ29udHJhY3Qgbm90' + - 'IHN0b3BwZWQiKTsKICAgIH0KCiAgICByZWNlaXZlKCJTdG9wIikgewogICAgICAgIHNlbGYucmVxdWlyZU93bmVyKCk7CiAgICAgICAgc2VsZi5yZXF1aXJlTm90U3Rv' + - 'cHBlZCgpOwogICAgICAgIHNlbGYuc3RvcHBlZCA9IHRydWU7CiAgICAgICAgc2VsZi5yZXBseSgiU3RvcHBlZCIuYXNDb21tZW50KCkpOwogICAgfQoKICAgIGdldCBm' + - 'dW4gc3RvcHBlZCgpOiBCb29sIHsKICAgICAgICByZXR1cm4gc2VsZi5zdG9wcGVkOwogICAgfQp9CgpAaW50ZXJmYWNlKCJvcmcudG9uLnJlc3VtYWJsZSIpCnRyYWl0' + - 'IFJlc3VtYWJsZSB3aXRoIFN0b3BwYWJsZSB7CiAgICBzdG9wcGVkOiBCb29sOwogICAgb3duZXI6IEFkZHJlc3M7CgogICAgcmVjZWl2ZSgiUmVzdW1lIikgewogICAg' + - 'ICAgIHNlbGYucmVxdWlyZU93bmVyKCk7CiAgICAgICAgc2VsZi5yZXF1aXJlU3RvcHBlZCgpOwogICAgICAgIHNlbGYuc3RvcHBlZCA9IGZhbHNlOwogICAgICAgIHNl' + - 'bGYucmVwbHkoIlJlc3VtZWQiLmFzQ29tbWVudCgpKTsKICAgIH0KfQ=='; -files['std/base.tact'] = - 'dHJhaXQgQmFzZVRyYWl0IHsKICAgIHZpcnR1YWwgY29uc3Qgc3RvcmFnZVJlc2VydmU6IEludCA9IDA7CiAgICAKICAgIHZpcnR1YWwgaW5saW5lIGZ1biByZXBseShi' + - 'b2R5OiBDZWxsPykgewogICAgICAgIHNlbGYuZm9yd2FyZChzZW5kZXIoKSwgYm9keSwgdHJ1ZSwgbnVsbCk7CiAgICB9CgogICAgdmlydHVhbCBpbmxpbmUgZnVuIG5v' + - 'dGlmeShib2R5OiBDZWxsPykgewogICAgICAgIHNlbGYuZm9yd2FyZChzZW5kZXIoKSwgYm9keSwgZmFsc2UsIG51bGwpOwogICAgfQoKICAgIHZpcnR1YWwgZnVuIGZv' + - 'cndhcmQodG86IEFkZHJlc3MsIGJvZHk6IENlbGw/LCBib3VuY2U6IEJvb2wsIGluaXQ6IFN0YXRlSW5pdD8pIHsKCiAgICAgICAgbGV0IGNvZGU6IENlbGw/ID0gbnVs' + - 'bDsKICAgICAgICBsZXQgZGF0YTogQ2VsbD8gPSBudWxsOwogICAgICAgIGlmIChpbml0ICE9IG51bGwpIHsKICAgICAgICAgICAgbGV0IGluaXQyOiBTdGF0ZUluaXQg' + - 'PSBpbml0ISE7CiAgICAgICAgICAgIGNvZGUgPSBpbml0Mi5jb2RlOwogICAgICAgICAgICBkYXRhID0gaW5pdDIuZGF0YTsKICAgICAgICB9CgogICAgICAgIC8vIExv' + - 'Y2sgc3RvcmFnZSBpZiBuZWVkZWQKICAgICAgICBpZiAoc2VsZi5zdG9yYWdlUmVzZXJ2ZSA+IDApIHsgLy8gT3B0aW1pemVkIGluIGNvbXBpbGUtdGltZQogICAgICAg' + - 'ICAgICBsZXQgY3R4OiBDb250ZXh0ID0gY29udGV4dCgpOwogICAgICAgICAgICBsZXQgYmFsYW5jZTogSW50ID0gbXlCYWxhbmNlKCk7CiAgICAgICAgICAgIGxldCBi' + - 'YWxhbmNlQmVmb3JlTWVzc2FnZTogSW50ID0gYmFsYW5jZSAtIGN0eC52YWx1ZTsKICAgICAgICAgICAgaWYgKGJhbGFuY2VCZWZvcmVNZXNzYWdlIDwgc2VsZi5zdG9y' + - 'YWdlUmVzZXJ2ZSkgewogICAgICAgICAgICAgICAgbmF0aXZlUmVzZXJ2ZShzZWxmLnN0b3JhZ2VSZXNlcnZlLCBSZXNlcnZlRXhhY3QpOwogICAgICAgICAgICAgICAg' + - 'c2VuZChTZW5kUGFyYW1ldGVyc3tib3VuY2U6IGJvdW5jZSwgdG86IHRvLCB2YWx1ZTogMCwgbW9kZTogU2VuZFJlbWFpbmluZ0JhbGFuY2UgfCBTZW5kSWdub3JlRXJy' + - 'b3JzLCBib2R5OiBib2R5LCBjb2RlOiBjb2RlLCBkYXRhOiBkYXRhIH0pOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAg' + - 'ICAgICAvLyBKdXN0IHNlbmQgd2l0aCByZW1haW5pbmcgYmFsYW5jZQogICAgICAgIHNlbmQoU2VuZFBhcmFtZXRlcnN7Ym91bmNlOiBib3VuY2UsIHRvOiB0bywgdmFs' + - 'dWU6IDAsIG1vZGU6IFNlbmRSZW1haW5pbmdWYWx1ZSB8IFNlbmRJZ25vcmVFcnJvcnMsIGJvZHk6IGJvZHksIGNvZGU6IGNvZGUsIGRhdGE6IGRhdGEgfSk7CiAgICB9' + - 'Cn0='; -files['std/cells.tact'] = - 'Ly8KLy8gQnVpbGRlcgovLwoKYXNtIGZ1biBiZWdpbkNlbGwoKTogQnVpbGRlciB7IE5FV0MgfQoKLy8gc3BlY2lhbCB0cmVhdG1lbnQgaW4gRnVuYyBjb21waWxlciwg' + - 'c28gbm90IHJlcGxhY2VkIHdpdGggYXNtICJTVElYIgpAbmFtZShzdG9yZV9pbnQpCmV4dGVuZHMgbmF0aXZlIHN0b3JlSW50KHNlbGY6IEJ1aWxkZXIsIHZhbHVlOiBJ' + - 'bnQsIGJpdHM6IEludCk6IEJ1aWxkZXI7CgovLyBzcGVjaWFsIHRyZWF0bWVudCBpbiBGdW5jIGNvbXBpbGVyLCBzbyBub3QgcmVwbGFjZWQgd2l0aCBhc20gIlNUVVgi' + - 'CkBuYW1lKHN0b3JlX3VpbnQpCmV4dGVuZHMgbmF0aXZlIHN0b3JlVWludChzZWxmOiBCdWlsZGVyLCB2YWx1ZTogSW50LCBiaXRzOiBJbnQpOiBCdWlsZGVyOwoKQG5h' + - 'bWUoX190YWN0X3N0b3JlX2Jvb2wpCmV4dGVuZHMgbmF0aXZlIHN0b3JlQm9vbChzZWxmOiBCdWlsZGVyLCB2YWx1ZTogQm9vbCk6IEJ1aWxkZXI7CgovLy8gRXh0ZW5z' + - 'aW9uIGZ1bmN0aW9uIGZvciB0aGUgYEJ1aWxkZXJgLiBBbGlhcyB0byBgQnVpbGRlci5zdG9yZUJvb2woKWAuIEF2YWlsYWJsZSBzaW5jZSBUYWN0IDEuNS4wLgovLy8K' + - 'Ly8vIGBgYHRhY3QKLy8vIGZ1biBleGFtcGxlKCkgewovLy8gICAgIGxldCBiOiBCdWlsZGVyID0gYmVnaW5DZWxsKCk7Ci8vLyAgICAgbGV0IGZpeno6IEJ1aWxkZXIg' + - 'PSBiLnN0b3JlQml0KHRydWUpOyAgLy8gd3JpdGVzIDEKLy8vICAgICBsZXQgYnV6ejogQnVpbGRlciA9IGIuc3RvcmVCaXQoZmFsc2UpOyAvLyB3cml0ZXMgMAovLy8g' + - 'fQovLy8gYGBgCi8vLwovLy8gU2VlOiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9yZWYvY29yZS1jZWxscyNidWlsZGVyc3RvcmViaXQKLy8vCkBuYW1lKF9fdGFj' + - 'dF9zdG9yZV9ib29sKQpleHRlbmRzIG5hdGl2ZSBzdG9yZUJpdChzZWxmOiBCdWlsZGVyLCB2YWx1ZTogQm9vbCk6IEJ1aWxkZXI7Cgphc20gZXh0ZW5kcyBmdW4gc3Rv' + - 'cmVDb2lucyhzZWxmOiBCdWlsZGVyLCB2YWx1ZTogSW50KTogQnVpbGRlciB7IFNUVkFSVUlOVDE2IH0KCmFzbSBleHRlbmRzIGZ1biBzdG9yZVZhckludDE2KHNlbGY6' + - 'IEJ1aWxkZXIsIHZhbHVlOiBJbnQpOiBCdWlsZGVyIHsgU1RWQVJJTlQxNiB9Cgphc20gZXh0ZW5kcyBmdW4gc3RvcmVWYXJJbnQzMihzZWxmOiBCdWlsZGVyLCB2YWx1' + - 'ZTogSW50KTogQnVpbGRlciB7IFNUVkFSSU5UMzIgfQoKYXNtIGV4dGVuZHMgZnVuIHN0b3JlVmFyVWludDE2KHNlbGY6IEJ1aWxkZXIsIHZhbHVlOiBJbnQpOiBCdWls' + - 'ZGVyIHsgU1RWQVJVSU5UMTYgfQoKYXNtIGV4dGVuZHMgZnVuIHN0b3JlVmFyVWludDMyKHNlbGY6IEJ1aWxkZXIsIHZhbHVlOiBJbnQpOiBCdWlsZGVyIHsgU1RWQVJV' + - 'SU5UMzIgfQoKYXNtKGNlbGwgc2VsZikgZXh0ZW5kcyBmdW4gc3RvcmVSZWYoc2VsZjogQnVpbGRlciwgY2VsbDogQ2VsbCk6IEJ1aWxkZXIgeyBTVFJFRiB9Cgphc20g' + - 'ZXh0ZW5kcyBmdW4gc3RvcmVTbGljZShzZWxmOiBCdWlsZGVyLCBjZWxsOiBTbGljZSk6IEJ1aWxkZXIgeyBTVFNMSUNFUiB9CgovLy8gRXh0ZW5zaW9uIGZ1bmN0aW9u' + - 'IGZvciB0aGUgYEJ1aWxkZXJgLiBBdmFpbGFibGUgc2luY2UgVGFjdCAxLjUuMC4KLy8vCi8vLyBBcHBlbmRzIGFsbCBkYXRhIGZyb20gYSBgQnVpbGRlcmAgYGNlbGxg' + - 'IHRvIHRoZSBjb3B5IG9mIHRoZSBgQnVpbGRlcmAuIFJldHVybnMgdGhhdCBjb3B5LgovLy8KLy8vIGBgYHRhY3QKLy8vIGZ1biBleGFtcGxlKCkgewovLy8gICAgIGxl' + - 'dCBiOiBCdWlsZGVyID0gYmVnaW5DZWxsKCkuc3RvcmVDb2lucyg0Mik7Ci8vLyAgICAgbGV0IGZpeno6IEJ1aWxkZXIgPSBiZWdpbkNlbGwoKS5zdG9yZUJ1aWxkZXIo' + - 'Yik7Ci8vLyAgICAgYi5lbmRDZWxsKCkgPT0gZml6ei5lbmRDZWxsKCk7IC8vIHRydWUKLy8vIH0KLy8vIGBgYAovLy8KLy8vIFNlZTogaHR0cHM6Ly9kb2NzLnRhY3Qt' + - 'bGFuZy5vcmcvcmVmL2NvcmUtY2VsbHMjYnVpbGRlcnN0b3JlYnVpbGRlcgovLy8KYXNtIGV4dGVuZHMgZnVuIHN0b3JlQnVpbGRlcihzZWxmOiBCdWlsZGVyLCBjZWxs' + - 'OiBCdWlsZGVyKTogQnVpbGRlciB7IFNUQlIgfQoKQG5hbWUoX190YWN0X3N0b3JlX2FkZHJlc3MpCmV4dGVuZHMgbmF0aXZlIHN0b3JlQWRkcmVzcyhzZWxmOiBCdWls' + - 'ZGVyLCBhZGRyZXNzOiBBZGRyZXNzKTogQnVpbGRlcjsKCi8vLyBFeHRlbnNpb24gZnVuY3Rpb24gZm9yIHRoZSBgQnVpbGRlcmAuIEF2YWlsYWJsZSBzaW5jZSBUYWN0' + - 'IDEuNS4wLgovLy8KLy8vIElmIHRoZSBgY2VsbGAgaXMgbm90IGBudWxsYCwgc3RvcmVzIDEgYXMgYSBzaW5nbGUgYml0IGFuZCB0aGVuIHJlZmVyZW5jZSBgY2VsbGAg' + - 'aW50byB0aGUgY29weSBvZiB0aGUgYEJ1aWxkZXJgLiBSZXR1cm5zIHRoYXQgY29weS4KLy8vCi8vLyBJZiB0aGUgYGNlbGxgIGlzIGBudWxsYCwgb25seSBzdG9yZXMg' + - 'MCBhcyBhIHNpbmdsZSBiaXQgaW50byB0aGUgY29weSBvZiB0aGUgYEJ1aWxkZXJgLiBSZXR1cm5zIHRoYXQgY29weS4KLy8vCi8vLyBBcyBhIHNpbmdsZSBgQ2VsbGAg' + - 'Y2FuIHN0b3JlIHVwIHRvIDQgcmVmZXJlbmNlcywgYXR0ZW1wdHMgdG8gc3RvcmUgbW9yZSB0aHJvdyBhbiBleGNlcHRpb24gd2l0aCBleGl0IGNvZGUgODogYENlbGwg' + - 'b3ZlcmZsb3dgLgovLy8KLy8vIGBgYHRhY3QKLy8vIGZ1biBleGFtcGxlKCkgewovLy8gICAgIGxldCBiOiBCdWlsZGVyID0gYmVnaW5DZWxsKCk7Ci8vLyAgICAgbGV0' + - 'IGZpeno6IEJ1aWxkZXIgPSBiCi8vLyAgICAgICAgIC5zdG9yZU1heWJlUmVmKGVtcHR5Q2VsbCgpKSAvLyAxLCB0aGVuIGVtcHR5IGNlbGwKLy8vICAgICAgICAgLnN0' + - 'b3JlTWF5YmVSZWYobnVsbCk7ICAgICAgIC8vIDAKLy8vIH0KLy8vIGBgYAovLy8KLy8vIFNlZTogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvcmVmL2NvcmUtY2Vs' + - 'bHMjYnVpbGRlcnN0b3JlbWF5YmVyZWYKLy8vCmFzbShjZWxsIHNlbGYpIGV4dGVuZHMgZnVuIHN0b3JlTWF5YmVSZWYoc2VsZjogQnVpbGRlciwgY2VsbDogQ2VsbD8p' + - 'OiBCdWlsZGVyIHsgU1RPUFRSRUYgfQoKYXNtIGV4dGVuZHMgZnVuIGVuZENlbGwoc2VsZjogQnVpbGRlcik6IENlbGwgeyBFTkRDIH0KCmFzbSBleHRlbmRzIGZ1biBy' + - 'ZWZzKHNlbGY6IEJ1aWxkZXIpOiBJbnQgeyBCUkVGUyB9Cgphc20gZXh0ZW5kcyBmdW4gYml0cyhzZWxmOiBCdWlsZGVyKTogSW50IHsgQkJJVFMgfQoKLy8KLy8gU2xp' + - 'Y2UKLy8KCmFzbSBleHRlbmRzIGZ1biBiZWdpblBhcnNlKHNlbGY6IENlbGwpOiBTbGljZSB7IENUT1MgfQoKYXNtKC0+IDEgMCkgZXh0ZW5kcyBtdXRhdGVzIGZ1biBs' + - 'b2FkUmVmKHNlbGY6IFNsaWNlKTogQ2VsbCB7IExEUkVGIH0KCi8vLyBFeHRlbnNpb24gZnVuY3Rpb24gZm9yIHRoZSBgU2xpY2VgLiBBdmFpbGFibGUgc2luY2UgVGFj' + - 'dCAxLjUuMC4KLy8vCi8vLyBQcmVsb2FkcyB0aGUgbmV4dCByZWZlcmVuY2UgZnJvbSB0aGUgYFNsaWNlYCBhcyBhIGBDZWxsYC4gRG9lc24ndCBtb2RpZnkgdGhlIG9y' + - 'aWdpbmFsIGBTbGljZWAuCi8vLwovLy8gQXR0ZW1wdHMgdG8gcHJlbG9hZCBzdWNoIHJlZmVyZW5jZSBgQ2VsbGAgd2hlbiBgU2xpY2VgIGRvZXNuJ3QgY29udGFpbiBp' + - 'dCB0aHJvdyBhbiBleGNlcHRpb24gd2l0aCBleGl0IGNvZGUgODogYENlbGwgb3ZlcmZsb3dgLgovLy8KLy8vIEF0dGVtcHRzIHRvIHByZWxvYWQgbW9yZSBkYXRhIHRo' + - 'YW4gYFNsaWNlYCBjb250YWlucyB0aHJvdyBhbiBleGNlcHRpb24gd2l0aCBleGl0IGNvZGUgOTogYENlbGwgdW5kZXJmbG93YC4KLy8vCi8vLyBgYGB0YWN0Ci8vLyBm' + - 'dW4gZXhhbXBsZXMoKSB7Ci8vLyAgICAgbGV0IHMxOiBTbGljZSA9IGJlZ2luQ2VsbCgpLnN0b3JlUmVmKGVtcHR5Q2VsbCgpKS5hc1NsaWNlKCk7Ci8vLyAgICAgbGV0' + - 'IGZpeno6IENlbGwgPSBzMS5wcmVsb2FkUmVmKCk7IC8vIGRpZG4ndCBtb2RpZnkgczEKLy8vCi8vLyAgICAgbGV0IHMyOiBTbGljZSA9IGJlZ2luQ2VsbCgpCi8vLyAg' + - 'ICAgICAgIC5zdG9yZVJlZihlbXB0eUNlbGwoKSkKLy8vICAgICAgICAgLnN0b3JlUmVmKHMxLmFzQ2VsbCgpKQovLy8gICAgICAgICAuYXNTbGljZSgpOwovLy8gICAg' + - 'IGxldCByZWYxOiBDZWxsID0gczIucHJlbG9hZFJlZigpOwovLy8gICAgIGxldCByZWYyOiBDZWxsID0gczIucHJlbG9hZFJlZigpOwovLy8gICAgIHJlZjEgPT0gcmVm' + - 'MjsgLy8gdHJ1ZQovLy8gfQovLy8gYGBgCi8vLwovLy8gU2VlOgovLy8gKiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9yZWYvY29yZS1jZWxscyNzbGljZXByZWxv' + - 'YWRyZWYKLy8vICogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvYm9vay9leGl0LWNvZGVzCi8vLwphc20gZXh0ZW5kcyBmdW4gcHJlbG9hZFJlZihzZWxmOiBTbGlj' + - 'ZSk6IENlbGwgeyBQTERSRUYgfQoKLy8gc3BlY2lhbCB0cmVhdG1lbnQgaW4gRnVuYyBjb21waWxlciwgc28gbm90IHJlcGxhY2VkIHdpdGggYXNtICJMRFNMSUNFWCIK' + - 'QG5hbWUobG9hZF9iaXRzKQpleHRlbmRzIG11dGF0ZXMgbmF0aXZlIGxvYWRCaXRzKHNlbGY6IFNsaWNlLCBsOiBJbnQpOiBTbGljZTsKCi8vIHNwZWNpYWwgdHJlYXRt' + - 'ZW50IGluIEZ1bmMgY29tcGlsZXIsIHNvIG5vdCByZXBsYWNlZCB3aXRoIGFzbSAiUExEU0xJQ0VYIgpAbmFtZShwcmVsb2FkX2JpdHMpCmV4dGVuZHMgbmF0aXZlIHBy' + - 'ZWxvYWRCaXRzKHNlbGY6IFNsaWNlLCBsOiBJbnQpOiBTbGljZTsKCi8vIHNwZWNpYWwgdHJlYXRtZW50IGluIEZ1bmMgY29tcGlsZXIsIHNvIG5vdCByZXBsYWNlZCB3' + - 'aXRoIGFzbSAiTERJWCIKQG5hbWUobG9hZF9pbnQpCmV4dGVuZHMgbXV0YXRlcyBuYXRpdmUgbG9hZEludChzZWxmOiBTbGljZSwgbDogSW50KTogSW50OwoKLy8gc3Bl' + - 'Y2lhbCB0cmVhdG1lbnQgaW4gRnVuYyBjb21waWxlciwgc28gbm90IHJlcGxhY2VkIHdpdGggYXNtICJQTERJWCIKQG5hbWUocHJlbG9hZF9pbnQpCmV4dGVuZHMgbmF0' + - 'aXZlIHByZWxvYWRJbnQoc2VsZjogU2xpY2UsIGw6IEludCk6IEludDsKCi8vIHNwZWNpYWwgdHJlYXRtZW50IGluIEZ1bmMgY29tcGlsZXIsIHNvIG5vdCByZXBsYWNl' + - 'ZCB3aXRoIGFzbSAiTERVWCIKQG5hbWUobG9hZF91aW50KQpleHRlbmRzIG11dGF0ZXMgbmF0aXZlIGxvYWRVaW50KHNlbGY6IFNsaWNlLCBsOiBJbnQpOiBJbnQ7Cgov' + - 'LyBzcGVjaWFsIHRyZWF0bWVudCBpbiBGdW5jIGNvbXBpbGVyLCBzbyBub3QgcmVwbGFjZWQgd2l0aCBhc20gIlBMRFVYIgpAbmFtZShwcmVsb2FkX3VpbnQpCmV4dGVu' + - 'ZHMgbmF0aXZlIHByZWxvYWRVaW50KHNlbGY6IFNsaWNlLCBsOiBJbnQpOiBJbnQ7Cgphc20oLT4gMSAwKSBleHRlbmRzIG11dGF0ZXMgZnVuIGxvYWRCb29sKHNlbGY6' + - 'IFNsaWNlKTogQm9vbCB7IDEgTERJIH0KCi8vLyBFeHRlbnNpb24gbXV0YXRpb24gZnVuY3Rpb24gZm9yIHRoZSBgU2xpY2VgLiBBbGlhcyB0byBgU2xpY2UubG9hZEJv' + - 'b2woKWAuIEF2YWlsYWJsZSBzaW5jZSBUYWN0IDEuNS4wLgovLy8KLy8vIGBgYHRhY3QKLy8vIGZ1biBleGFtcGxlKCkgewovLy8gICAgIGxldCBzOiBTbGljZSA9IGJl' + - 'Z2luQ2VsbCgpLnN0b3JlQm9vbCh0cnVlKS5hc1NsaWNlKCk7Ci8vLyAgICAgbGV0IGZpeno6IEJvb2wgPSBzLmxvYWRCaXQoKTsgLy8gdHJ1ZQovLy8gfQovLy8gYGBg' + - 'Ci8vLwovLy8gU2VlOiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9yZWYvY29yZS1jZWxscyNzbGljZWxvYWRiaXQKLy8vCmFzbSgtPiAxIDApIGV4dGVuZHMgbXV0' + - 'YXRlcyBmdW4gbG9hZEJpdChzZWxmOiBTbGljZSk6IEJvb2wgeyAxIExESSB9Cgphc20oIC0+IDEgMCkgZXh0ZW5kcyBtdXRhdGVzIGZ1biBsb2FkQ29pbnMoc2VsZjog' + - 'U2xpY2UpOiBJbnQgeyBMRFZBUlVJTlQxNiB9CgpAbmFtZShfX3RhY3RfbG9hZF9hZGRyZXNzKQpleHRlbmRzIG11dGF0ZXMgbmF0aXZlIGxvYWRBZGRyZXNzKHNlbGY6' + - 'IFNsaWNlKTogQWRkcmVzczsKCmFzbSBleHRlbmRzIG11dGF0ZXMgZnVuIHNraXBCaXRzKHNlbGY6IFNsaWNlLCBsOiBJbnQpIHsgU0RTS0lQRklSU1QgfQoKYXNtIGV4' + - 'dGVuZHMgZnVuIGVuZFBhcnNlKHNlbGY6IFNsaWNlKSB7IEVORFMgfQoKLy8KLy8gU2xpY2Ugc2l6ZQovLwoKYXNtIGV4dGVuZHMgZnVuIHJlZnMoc2VsZjogU2xpY2Up' + - 'OiBJbnQgeyBTUkVGUyB9Cgphc20gZXh0ZW5kcyBmdW4gYml0cyhzZWxmOiBTbGljZSk6IEludCB7IFNCSVRTIH0KCmFzbSBleHRlbmRzIGZ1biBlbXB0eShzZWxmOiBT' + - 'bGljZSk6IEJvb2wgeyBTRU1QVFkgfQoKYXNtIGV4dGVuZHMgZnVuIGRhdGFFbXB0eShzZWxmOiBTbGljZSk6IEJvb2wgeyBTREVNUFRZIH0KCmFzbSBleHRlbmRzIGZ1' + - 'biByZWZzRW1wdHkoc2VsZjogU2xpY2UpOiBCb29sIHsgU1JFTVBUWSB9CgovLwovLyBDb252ZXJzaW9ucwovLwoKaW5saW5lIGV4dGVuZHMgZnVuIGFzU2xpY2Uoc2Vs' + - 'ZjogQnVpbGRlcik6IFNsaWNlIHsKICAgIHJldHVybiBzZWxmLmVuZENlbGwoKS5iZWdpblBhcnNlKCk7Cn0KCmlubGluZSBleHRlbmRzIGZ1biBhc1NsaWNlKHNlbGY6' + - 'IENlbGwpOiBTbGljZSB7CiAgICByZXR1cm4gc2VsZi5iZWdpblBhcnNlKCk7Cn0KCmlubGluZSBleHRlbmRzIGZ1biBhc0NlbGwoc2VsZjogU2xpY2UpOiBDZWxsIHsK' + - 'ICAgIHJldHVybiBiZWdpbkNlbGwoKQogICAgICAgIC5zdG9yZVNsaWNlKHNlbGYpCiAgICAgICAgLmVuZENlbGwoKTsKfQoKaW5saW5lIGV4dGVuZHMgZnVuIGFzQ2Vs' + - 'bChzZWxmOiBCdWlsZGVyKTogQ2VsbCB7CiAgICByZXR1cm4gc2VsZi5lbmRDZWxsKCk7Cn0KCmlubGluZSBmdW4gZW1wdHlDZWxsKCk6IENlbGwgewogICAgcmV0dXJu' + - 'IGJlZ2luQ2VsbCgpLmVuZENlbGwoKTsKfQoKaW5saW5lIGZ1biBlbXB0eVNsaWNlKCk6IFNsaWNlIHsKICAgIHJldHVybiBlbXB0eUNlbGwoKS5hc1NsaWNlKCk7Cn0K'; -files['std/config.tact'] = - 'YXNtIGZ1biBnZXRDb25maWdQYXJhbShpZDogSW50KTogQ2VsbD8geyBDT05GSUdPUFRQQVJBTSB9Cg=='; -files['std/context.tact'] = - 'c3RydWN0IENvbnRleHQgewogICAgYm91bmNlZDogQm9vbDsKICAgIHNlbmRlcjogQWRkcmVzczsKICAgIHZhbHVlOiBJbnQ7CiAgICByYXc6IFNsaWNlOwp9CgpAbmFt' + - 'ZShfX3RhY3RfY29udGV4dF9nZXQpCm5hdGl2ZSBjb250ZXh0KCk6IENvbnRleHQ7CgpAbmFtZShfX3RhY3RfY29udGV4dF9nZXRfc2VuZGVyKQpuYXRpdmUgc2VuZGVy' + - 'KCk6IEFkZHJlc3M7CgpleHRlbmRzIGZ1biByZWFkRm9yd2FyZEZlZShzZWxmOiBDb250ZXh0KTogSW50IHsKICAgIGxldCBzYzogU2xpY2UgPSBzZWxmLnJhdzsKICAg' + - 'IHNjLmxvYWRBZGRyZXNzKCk7IC8vIFNraXAgZGVzdGluYXRpb24KICAgIHNjLmxvYWRDb2lucygpOyAvLyBTa2lwIHZhbHVlCiAgICBzYy5za2lwQml0cygxKTsgLy8g' + - 'U2tpcCBleHRyYSBjdXJyZW5jeSBjb2xsZWN0aW9uCiAgICBzYy5sb2FkQ29pbnMoKTsgLy8gU2tpcCBpaHJfZmVlCiAgICByZXR1cm4gKHNjLmxvYWRDb2lucygpICog' + - 'MykgLyAyOwp9'; -files['std/contract.tact'] = - 'c3RydWN0IFN0YXRlSW5pdCB7CiAgICBjb2RlOiBDZWxsOwogICAgZGF0YTogQ2VsbDsKfQoKQG5hbWUoX190YWN0X2NvbXB1dGVfY29udHJhY3RfYWRkcmVzcykKbmF0' + - 'aXZlIGNvbnRyYWN0QWRkcmVzc0V4dChjaGFpbjogSW50LCBjb2RlOiBDZWxsLCBkYXRhOiBDZWxsKTogQWRkcmVzczsKCmlubGluZSBmdW4gY29udHJhY3RBZGRyZXNz' + - 'KHM6IFN0YXRlSW5pdCk6IEFkZHJlc3MgewogICAgcmV0dXJuIGNvbnRyYWN0QWRkcmVzc0V4dCgwLCBzLmNvZGUsIHMuZGF0YSk7Cn0KCkBuYW1lKF9fdGFjdF9hZGRy' + - 'ZXNzX3RvX3NsaWNlKQpleHRlbmRzIG5hdGl2ZSBhc1NsaWNlKHNlbGY6IEFkZHJlc3MpOiBTbGljZTsKCkBuYW1lKF9fdGFjdF9jcmVhdGVfYWRkcmVzcykKbmF0aXZl' + - 'IG5ld0FkZHJlc3MoY2hhaW46IEludCwgaGFzaDogSW50KTogQWRkcmVzczsKCmFzbSBmdW4gbXlBZGRyZXNzKCk6IEFkZHJlc3MgeyBNWUFERFIgfQoKYXNtIGZ1biBt' + - 'eUJhbGFuY2UoKTogSW50IHsgQkFMQU5DRSBGSVJTVCB9CgovLy8gR2xvYmFsIGZ1bmN0aW9uLiBBdmFpbGFibGUgc2luY2UgVGFjdCAxLjUuMC4KLy8vCi8vLyBSZXR1' + - 'cm5zIHRoZSBuYW5vVG9uY29pbiBgSW50YCBhbW91bnQgb2YgZ2FzIGNvbnN1bWVkIGJ5IFRWTSBpbiB0aGUgY3VycmVudCB0cmFuc2FjdGlvbiBzbyBmYXIuIFRoZSBy' + - 'ZXN1bHRpbmcgdmFsdWUgaW5jbHVkZXMgdGhlIGNvc3Qgb2YgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLgovLy8KLy8vIGBgYHRhY3QKLy8vIGZ1biBleGFtcGxlKCkgewov' + - 'Ly8gICAgIGxldCBnYXM6IEludCA9IGdhc0NvbnN1bWVkKCk7Ci8vLyB9Ci8vLyBgYGAKLy8vCi8vLyBTZWU6IGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL3JlZi9j' + - 'b3JlLWFkdmFuY2VkI2dhc2NvbnN1bWVkCi8vLwphc20gZnVuIGdhc0NvbnN1bWVkKCk6IEludCB7IEdBU0NPTlNVTUVEIH0KCi8vLyBHbG9iYWwgZnVuY3Rpb24uIEF2' + - 'YWlsYWJsZSBzaW5jZSBUYWN0IDEuNS4wLgovLy8KLy8vIFJldHVybnMgdGhlIG5hbm9Ub25jb2luIGBJbnRgIGFtb3VudCBvZiB0aGUgYWNjdW11bGF0ZWQgc3RvcmFn' + - 'ZSBmZWUgZGVidC4gU3RvcmFnZSBmZWVzIGFyZSBkZWR1Y3RlZCBmcm9tIHRoZSBpbmNvbWluZyBtZXNzYWdlIHZhbHVlIGJlZm9yZSB0aGUgbmV3IGNvbnRyYWN0IGJh' + - 'bGFuY2UgaXMgY2FsY3VsYXRlZC4KLy8vCi8vLyBgYGB0YWN0Ci8vLyBmdW4gZXhhbXBsZSgpIHsKLy8vICAgICBsZXQgZGVidDogSW50ID0gbXlTdG9yYWdlRHVlKCk7' + - 'Ci8vLyB9Ci8vLyBgYGAKLy8vCi8vLyBTZWU6IGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL3JlZi9jb3JlLWFkdmFuY2VkI215c3RvcmFnZWR1ZQovLy8KYXNtIGZ1' + - 'biBteVN0b3JhZ2VEdWUoKTogSW50IHsgRFVFUEFZTUVOVCB9CgovLy8gR2xvYmFsIGZ1bmN0aW9uLiBBdmFpbGFibGUgc2luY2UgVGFjdCAxLjUuMC4KLy8vCi8vLyBD' + - 'YWxjdWxhdGVzIGFuZCByZXR1cm5zIHRoZSBzdG9yYWdlIGZlZSBpbiBuYW5vVG9uY29pbnMgYEludGAgZm9yIHN0b3JpbmcgYSBjb250cmFjdCB3aXRoIGEgZ2l2ZW4g' + - 'bnVtYmVyIG9mIGBjZWxsc2AgYW5kIGBiaXRzYCBmb3IgYSBudW1iZXIgb2YgYHNlY29uZHNgLiBVc2VzIHRoZSBwcmljZXMgb2YgdGhlIG1hc3RlcmNoYWluIGlmIGBp' + - 'c01hc3RlcmNoYWluYCBpcyBgdHJ1ZWAsIG90aGVyd2lzZSB0aGUgcHJpY2VzIG9mIHRoZSBiYXNlY2hhaW4uIFRoZSBjdXJyZW50IHByaWNlcyBhcmUgb2J0YWluZWQg' + - 'ZnJvbSB0aGUgY29uZmlnIHBhcmFtIDE4IG9mIFRPTiBCbG9ja2NoYWluLgovLy8KLy8vIE5vdGUsIHRoYXQgdGhlIHZhbHVlcyBvZiBgY2VsbHNgIGFuZCBgYml0c2Ag' + - 'YXJlIHRha2VuIG1vZHVsbyB0aGVpciBtYXhpbXVtIHZhbHVlcyBwbHVzIDEuIFRoYXQgaXMsIHNwZWNpZnlpbmcgdmFsdWVzIGhpZ2hlciB0aGFuIHRob3NlIGxpc3Rl' + - 'ZCBpbiBhY2NvdW50IHN0YXRlIGxpbWl0cyAoYG1heF9hY2Nfc3RhdGVfY2VsbHNgIGFuZCBgbWF4X2FjY19zdGF0ZV9iaXRzYCkgd2lsbCBoYXZlIHRoZSBzYW1lIHJl' + - 'c3VsdCBhcyB3aXRoIHNwZWNpZnlpbmcgdGhlIGV4YWN0IGxpbWl0cy4gSW4gYWRkaXRpb24sIG1ha2Ugc3VyZSB5b3UgdGFrZSBpbnRvIGFjY291bnQgdGhlIGRlZHVw' + - 'bGljYXRpb24gb2YgY2VsbHMgd2l0aCB0aGUgc2FtZSBoYXNoLgovLy8KLy8vIEF0dGVtcHRzIHRvIHNwZWNpZnkgbmVnYXRpdmUgbnVtYmVyIG9mIGBjZWxsc2AsIGBi' + - 'aXRzYCBvciBgc2Vjb25kc2AgdGhyb3cgYW4gZXhjZXB0aW9uIHdpdGggZXhpdCBjb2RlIDU6IGBJbnRlZ2VyIG91dCBvZiBleHBlY3RlZCByYW5nZWAuCi8vLwovLy8g' + - 'YGBgdGFjdAovLy8gZnVuIGV4YW1wbGUoKSB7Ci8vLyAgICAgbGV0IGZlZTogSW50ID0gZ2V0U3RvcmFnZUZlZSgxXzAwMCwgMV8wMDAsIDFfMDAwLCBmYWxzZSk7Ci8v' + - 'LyB9Ci8vLyBgYGAKLy8vCi8vLyBTZWU6Ci8vLyAqIGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL3JlZi9jb3JlLWFkdmFuY2VkI2dldHN0b3JhZ2VmZWUKLy8vICog' + - 'aHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvcmVmL2NvcmUtYWR2YW5jZWQjZ2V0c2ltcGxlc3RvcmFnZWZlZQovLy8KYXNtIGZ1biBnZXRTdG9yYWdlRmVlKGNlbGxz' + - 'OiBJbnQsIGJpdHM6IEludCwgc2Vjb25kczogSW50LCBpc01hc3RlcmNoYWluOiBCb29sKTogSW50IHsgR0VUU1RPUkFHRUZFRSB9CgovLy8gR2xvYmFsIGZ1bmN0aW9u' + - 'LiBBdmFpbGFibGUgc2luY2UgVGFjdCAxLjUuMC4KLy8vCi8vLyBDYWxjdWxhdGVzIGFuZCByZXR1cm5zIHRoZSBjb21wdXRlIGZlZSBpbiBuYW5vVG9uY29pbnMgYElu' + - 'dGAgZm9yIGEgdHJhbnNhY3Rpb24gdGhhdCBjb25zdW1lZCBgZ2FzVXNlZGAgYW1vdW50IG9mIGdhcy4gVXNlcyB0aGUgcHJpY2VzIG9mIHRoZSBtYXN0ZXJjaGFpbiBp' + - 'ZiBgaXNNYXN0ZXJjaGFpbmAgaXMgYHRydWVgLCBvdGhlcndpc2UgdGhlIHByaWNlcyBvZiB0aGUgYmFzZWNoYWluLiBUaGUgY3VycmVudCBwcmljZXMgYXJlIG9idGFp' + - 'bmVkIGZyb20gdGhlIGNvbmZpZyBwYXJhbSAyMCBmb3IgdGhlIG1hc3RlcmNoYWluIGFuZCBjb25maWcgcGFyYW0gMjEgZm9yIHRoZSBiYXNlY2hhaW4gb2YgVE9OIEJs' + - 'b2NrY2hhaW4uCi8vLwovLy8gV2hlbiB0aGUgYGdhc1VzZWRgIGlzIGxlc3MgdGhhbiBhIGNlcnRhaW4gdGhyZXNob2xkIGNhbGxlZCBgZmxhdF9nYXNfbGltaXRgLCB0' + - 'aGVyZSdzIGEgbWluaW11bSBwcmljZSB0byBwYXkgYmFzZWQgb24gdGhlIHZhbHVlIG9mIGBmbGF0X2dhc19wcmljZWAuIFRoZSBsZXNzIGdhcyBpcyB1c2VkIGJlbG93' + - 'IHRoaXMgdGhyZXNob2xkLCB0aGUgaGlnaGVyIHRoZSBtaW5pbXVtIHByaWNlIHdpbGwgYmUuIFNlZSB0aGUgZXhhbXBsZSBmb3IgYGdldFNpbXBsZUNvbXB1dGVGZWUo' + - 'KWAgdG8gZGVyaXZlIHRoYXQgdGhyZXNob2xkLgovLy8KLy8vIEF0dGVtcHRzIHRvIHNwZWNpZnkgbmVnYXRpdmUgdmFsdWUgb2YgYGdhc1VzZWRgIHRocm93IGFuIGV4' + - 'Y2VwdGlvbiB3aXRoIGV4aXQgY29kZSA1OiBgSW50ZWdlciBvdXQgb2YgZXhwZWN0ZWQgcmFuZ2VgLgovLy8KLy8vIGBgYHRhY3QKLy8vIGZ1biBleGFtcGxlKCkgewov' + - 'Ly8gICAgIGxldCBmZWU6IEludCA9IGdldENvbXB1dGVGZWUoMV8wMDAsIGZhbHNlKTsKLy8vIH0KLy8vIGBgYAovLy8KLy8vIFNlZTogaHR0cHM6Ly9kb2NzLnRhY3Qt' + - 'bGFuZy5vcmcvcmVmL2NvcmUtYWR2YW5jZWQjZ2V0Y29tcHV0ZWZlZQovLy8KYXNtIGZ1biBnZXRDb21wdXRlRmVlKGdhc1VzZWQ6IEludCwgaXNNYXN0ZXJjaGFpbjog' + - 'Qm9vbCk6IEludCB7IEdFVEdBU0ZFRSB9CgovLy8gR2xvYmFsIGZ1bmN0aW9uLiBBdmFpbGFibGUgc2luY2UgVGFjdCAxLjUuMC4KLy8vCi8vLyBTaW1pbGFyIHRvIGBn' + - 'ZXRDb21wdXRlRmVlKClgLCBidXQgd2l0aG91dCB0aGUgYGZsYXRfZ2FzX3ByaWNlYCwgaS5lLiB3aXRob3V0IGEgbWluaW11bSBwcmljZSB0byBwYXkgaWYgdGhlIGBn' + - 'YXNVc2VkYCBpcyBsZXNzIHRoYW4gYSBjZXJ0YWluIHRocmVzaG9sZCBjYWxsZWQgYGZsYXRfZ2FzX2xpbWl0YC4gQ2FsY3VsYXRlcyBhbmQgcmV0dXJucyBvbmx5IHRo' + - 'ZSBgZ2FzVXNlZGAgdGltZXMgdGhlIGN1cnJlbnQgZ2FzIHByaWNlLgovLy8KLy8vIEF0dGVtcHRzIHRvIHNwZWNpZnkgbmVnYXRpdmUgbnVtYmVyIG9mIGBjZWxsc2As' + - 'IGBiaXRzYCBvciBgc2Vjb25kc2AgdGhyb3cgYW4gZXhjZXB0aW9uIHdpdGggZXhpdCBjb2RlIDU6IGBJbnRlZ2VyIG91dCBvZiBleHBlY3RlZCByYW5nZWAuCi8vLwov' + - 'Ly8gYGBgdGFjdAovLy8gZnVuIGV4YW1wbGUoKSB7Ci8vLyAgICAgbGV0IGZlZSA9IGdldENvbXB1dGVGZWUoMCwgZmFsc2UpOwovLy8gICAgIGxldCBmZWVOb0ZsYXQg' + - 'PSBnZXRTaW1wbGVDb21wdXRlRmVlKDAsIGZhbHNlKTsKLy8vICAgICBsZXQgbWF4RmxhdFByaWNlID0gZmVlIC0gZmVlTm9GbGF0OwovLy8gfQovLy8gYGBgCi8vLwov' + - 'Ly8gU2VlOgovLy8gKiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9yZWYvY29yZS1hZHZhbmNlZCNnZXRzaW1wbGVzdG9yYWdlZmVlCi8vLyAqIGh0dHBzOi8vZG9j' + - 'cy50YWN0LWxhbmcub3JnL3JlZi9jb3JlLWFkdmFuY2VkI2dldHN0b3JhZ2VmZWUKLy8vCmFzbSBmdW4gZ2V0U2ltcGxlQ29tcHV0ZUZlZShnYXNVc2VkOiBJbnQsIGlz' + - 'TWFzdGVyY2hhaW46IEJvb2wpOiBJbnQgeyBHRVRHQVNGRUVTSU1QTEUgfQoKLy8vIEdsb2JhbCBmdW5jdGlvbi4gQXZhaWxhYmxlIHNpbmNlIFRhY3QgMS41LjAuCi8v' + - 'LwovLy8gQ2FsY3VsYXRlcyBhbmQgcmV0dXJucyB0aGUgZm9yd2FyZCBmZWUgaW4gbmFub1RvbmNvaW5zIGBJbnRgIGZvciBhbiBvdXRnb2luZyBtZXNzYWdlIGNvbnNp' + - 'c3Rpbmcgb2YgYSBnaXZlbiBudW1iZXIgb2YgYGNlbGxzYCBhbmQgYGJpdHNgLiBVc2VzIHRoZSBwcmljZXMgb2YgdGhlIG1hc3RlcmNoYWluIGlmIGBpc01hc3RlcmNo' + - 'YWluYCBpcyBgdHJ1ZXs6dGFjdH1gLCBvdGhlcndpc2UgdGhlIHByaWNlcyBvZiB0aGUgYmFzZWNoYWluLiBUaGUgY3VycmVudCBwcmljZXMgYXJlIG9idGFpbmVkIGZy' + - 'b20gdGhlIGNvbmZpZyBwYXJhbSAyNCBmb3IgdGhlIG1hc3RlcmNoYWluIGFuZCBjb25maWcgcGFyYW0gMjUgZm9yIHRoZSBiYXNlY2hhaW4gb2YgVE9OIEJsb2NrY2hh' + - 'aW4uCi8vLwovLy8gSWYgYm90aCB0aGUgc291cmNlIGFuZCB0aGUgZGVzdGluYXRpb24gYWRkcmVzc2VzIGFyZSBpbiB0aGUgYmFzZWNoYWluLCB0aGVuIHNwZWNpZnkg' + - 'YGlzTWFzdGVyY2hhaW5gIGFzIGBmYWxzZWAuIE90aGVyd2lzZSwgc3BlY2lmeSBgdHJ1ZWAuCi8vLwovLy8gTm90ZSwgdGhhdCB0aGUgdmFsdWVzIG9mIGBjZWxsc2Ag' + - 'YW5kIGBiaXRzYCBhcmUgdGFrZW4gbW9kdWxvIHRoZWlyIG1heGltdW0gdmFsdWVzIHBsdXMgMS4gVGhhdCBpcywgc3BlY2lmeWluZyB2YWx1ZXMgaGlnaGVyIHRoYW4g' + - 'dGhvc2UgbGlzdGVkIGluIGFjY291bnQgc3RhdGUgbGltaXRzIChgbWF4X21zZ19jZWxsc2AgYW5kIGBtYXhfbXNnX2JpdHNgKSB3aWxsIGhhdmUgdGhlIHNhbWUgcmVz' + - 'dWx0IGFzIHdpdGggc3BlY2lmeWluZyB0aGUgZXhhY3QgbGltaXRzLgovLy8KLy8vIEhvd2V2ZXIsIHJlZ2FyZGxlc3Mgb2YgdGhlIHZhbHVlcyBvZiBgY2VsbHNgIGFu' + - 'ZCBgYml0c2AsIHRoaXMgZnVuY3Rpb24gYWx3YXlzIGFkZHMgdGhlIG1pbmltdW0gcHJpY2UgYmFzZWQgb24gdGhlIHZhbHVlIG9mIGBsdW1wX3ByaWNlYC4gU2VlIHRo' + - 'ZSBleGFtcGxlIGZvciBbYGdldFNpbXBsZUZvcndhcmRGZWUoKXs6dGFjdH1gXSgjZ2V0c2ltcGxlZm9yd2FyZGZlZSkgdG8gZGVyaXZlIGl0LiBJbiBhZGRpdGlvbiwg' + - 'bWFrZSBzdXJlIHlvdSB0YWtlIGludG8gYWNjb3VudCB0aGUgZGVkdXBsaWNhdGlvbiBvZiBjZWxscyB3aXRoIHRoZSBzYW1lIGhhc2gsIHNpbmNlIGZvciBleGFtcGxl' + - 'IHRoZSByb290IGNlbGwgYW5kIGl0cyBkYXRhIGJpdHMgZG9uJ3QgY291bnQgdG93YXJkcyB0aGUgZm9yd2FyZCBmZWUgYW5kIGFyZSBjb3ZlcmVkIGJ5IHRoZSBgbHVt' + - 'cF9wcmljZWAuCi8vLwovLy8gQXR0ZW1wdHMgdG8gc3BlY2lmeSBuZWdhdGl2ZSBudW1iZXIgb2YgYGNlbGxzYCBvciBgYml0c2AgdGhyb3cgYW4gZXhjZXB0aW9uIHdp' + - 'dGggZXhpdCBjb2RlIDU6IGBJbnRlZ2VyIG91dCBvZiBleHBlY3RlZCByYW5nZWAuCi8vLwovLy8gYGBgdGFjdAovLy8gZnVuIGV4YW1wbGUoKSB7Ci8vLyAgICAgbGV0' + - 'IGZlZTogSW50ID0gZ2V0Rm9yd2FyZEZlZSgxXzAwMCwgMV8wMDAsIGZhbHNlKTsKLy8vIH0KLy8vIGBgYAovLy8KLy8vIFNlZToKLy8vICogaHR0cHM6Ly9kb2NzLnRh' + - 'Y3QtbGFuZy5vcmcvcmVmL2NvcmUtYWR2YW5jZWQjZ2V0Zm9yd2FyZGZlZQovLy8gKiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9yZWYvY29yZS1hZHZhbmNlZCNn' + - 'ZXRzaW1wbGVmb3J3YXJkZmVlCi8vLyAqIGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL3JlZi9jb3JlLWFkdmFuY2VkI2dldG9yaWdpbmFsZndkZmVlCi8vLwphc20g' + - 'ZnVuIGdldEZvcndhcmRGZWUoY2VsbHM6IEludCwgYml0czogSW50LCBpc01hc3RlcmNoYWluOiBCb29sKTogSW50IHsgR0VURk9SV0FSREZFRSB9CgovLy8gR2xvYmFs' + - 'IGZ1bmN0aW9uLiBBdmFpbGFibGUgc2luY2UgVGFjdCAxLjUuMC4KLy8vCi8vLyBTaW1pbGFyIHRvIGBnZXRGb3J3YXJkRmVlKClgLCBidXQgd2l0aG91dCB0aGUgYGx1' + - 'bXBfcHJpY2VgLCBpLmUuIHdpdGhvdXQgdGhlIG1pbmltdW0gcHJpY2UgdG8gcGF5IHJlZ2FyZGxlc3Mgb2YgdGhlIGFtb3VudCBvZiBgY2VsbHNgIG9yIGBiaXRzYC4g' + - 'Q2FsY3VsYXRlcyBhbmQgcmV0dXJucyBvbmx5IHRoZSBgY2VsbHNgIHRpbWVzIHRoZSBjdXJyZW50IGNlbGwgcHJpY2UgcGx1cyBgYml0c2AgdGltZXMgdGhlIGN1cnJl' + - 'bnQgYml0IHByaWNlLgovLy8KLy8vIEF0dGVtcHRzIHRvIHNwZWNpZnkgbmVnYXRpdmUgbnVtYmVyIG9mIGBjZWxsc2Agb3IgYGJpdHNgIHRocm93IGFuIGV4Y2VwdGlv' + - 'biB3aXRoIGV4aXQgY29kZSA1OiBgSW50ZWdlciBvdXQgb2YgZXhwZWN0ZWQgcmFuZ2VgLgovLy8KLy8vIGBgYHRhY3QKLy8vIGZ1biBleGFtcGxlKCkgewovLy8gICAg' + - 'IGxldCBmZWUgPSBnZXRGb3J3YXJkRmVlKDFfMDAwLCAxXzAwMCwgZmFsc2UpOwovLy8gICAgIGxldCBmZWVOb0x1bXAgPSBnZXRTaW1wbGVGb3J3YXJkRmVlKDFfMDAw' + - 'LCAxXzAwMCwgZmFsc2UpOwovLy8gICAgIGxldCBsdW1wUHJpY2UgPSBmZWUgLSBmZWVOb0x1bXA7Ci8vLyB9Ci8vLyBgYGAKLy8vCi8vLyBTZWU6Ci8vLyAqIGh0dHBz' + - 'Oi8vZG9jcy50YWN0LWxhbmcub3JnL3JlZi9jb3JlLWFkdmFuY2VkI2dldHNpbXBsZWZvcndhcmRmZWUKLy8vICogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvcmVm' + - 'L2NvcmUtYWR2YW5jZWQjZ2V0Zm9yd2FyZGZlZQovLy8KYXNtIGZ1biBnZXRTaW1wbGVGb3J3YXJkRmVlKGNlbGxzOiBJbnQsIGJpdHM6IEludCwgaXNNYXN0ZXJjaGFp' + - 'bjogQm9vbCk6IEludCB7IEdFVEZPUldBUkRGRUVTSU1QTEUgfQoKLy8vIEdsb2JhbCBmdW5jdGlvbi4gQXZhaWxhYmxlIHNpbmNlIFRhY3QgMS41LjAuCi8vLwovLy8g' + - 'Q2FsY3VsYXRlcyBhbmQgcmV0dXJucyB0aGUgc28tY2FsbGVkIF9vcmlnaW5hbF8gZm9yd2FyZCBmZWUgaW4gbmFub1RvbmNvaW5zIGBJbnRgIGZvciBhbiBvdXRnb2lu' + - 'ZyBtZXNzYWdlIGJhc2VkIG9uIHRoZSBgZndkRmVlYCBvYnRhaW5lZCBmcm9tIHRoZSBpbmNvbWluZyBtZXNzYWdlLiBJZiBib3RoIHRoZSBzb3VyY2UgYW5kIHRoZSBk' + - 'ZXN0aW5hdGlvbiBhZGRyZXNzZXMgYXJlIGluIHRoZSBiYXNlY2hhaW4sIHRoZW4gc3BlY2lmeSBgaXNNYXN0ZXJjaGFpbmAgYXMgYGZhbHNlYC4gT3RoZXJ3aXNlLCBz' + - 'cGVjaWZ5IGB0cnVlYC4KLy8vCi8vLyBUaGlzIGZ1bmN0aW9uIGlzIHVzZWZ1bCB3aGVuIHRoZSBvdXRnb2luZyBtZXNzYWdlIGRlcGVuZHMgaGVhdmlseSBvbiB0aGUg' + - 'c3RydWN0dXJlIG9mIHRoZSBpbmNvbWluZyBtZXNzYWdlLCBzbyBtdWNoIHNvIHRoYXQgeW91IGNhbm5vdCBmdWxseSBwcmVkaWN0IHRoZSBmZWUgdXNpbmcgYGdldEZv' + - 'cndhcmRGZWUoKWAgYWxvbmUuIEV2ZW4gaWYgeW91IGNvdWxkLCBjYWxjdWxhdGluZyB0aGUgZXhhY3QgZmVlIHdpdGggbmFub1RvbmNvaW4tbGV2ZWwgcHJlY2lzaW9u' + - 'IGNhbiBiZSB2ZXJ5IGV4cGVuc2l2ZSwgc28gdGhlIGFwcHJveGltYXRlIHZhbHVlIGdpdmVuIGJ5IHRoaXMgZnVuY3Rpb24gaXMgb2Z0ZW4gZ29vZCBlbm91Z2guCi8v' + - 'LwovLy8gQXR0ZW1wdHMgdG8gc3BlY2lmeSBhIG5lZ2F0aXZlIHZhbHVlIG9mIGBmd2RGZWVgIHRocm93IGFuIGV4Y2VwdGlvbiB3aXRoIGV4aXQgY29kZSA1OiBgSW50' + - 'ZWdlciBvdXQgb2YgZXhwZWN0ZWQgcmFuZ2VgLgovLy8KLy8vIGBgYHRhY3QKLy8vIGZ1biBleGFtcGxlKCkgewovLy8gICAgIGxldCBmd2RGZWU6IEludCA9IGNvbnRl' + - 'eHQoKS5yZWFkRm9yd2FyZEZlZSgpOwovLy8gICAgIGxldCBvcmlnRmVlOiBJbnQgPSBnZXRPcmlnaW5hbEZ3ZEZlZShmZWUsIGZhbHNlKTsKLy8vIH0KLy8vIGBgYAov' + - 'Ly8KLy8vIFNlZToKLy8vICogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvcmVmL2NvcmUtYWR2YW5jZWQjZ2V0b3JpZ2luYWxmd2RmZWUKLy8vICogaHR0cHM6Ly9k' + - 'b2NzLnRhY3QtbGFuZy5vcmcvcmVmL2NvcmUtYWR2YW5jZWQjZ2V0Zm9yd2FyZGZlZQovLy8gKiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9yZWYvY29yZS1hZHZh' + - 'bmNlZCNjb250ZXh0cmVhZGZvcndhcmRmZWUKLy8vCmFzbSBmdW4gZ2V0T3JpZ2luYWxGd2RGZWUoZndkRmVlOiBJbnQsIGlzTWFzdGVyY2hhaW46IEJvb2wpOiBJbnQg' + - 'eyBHRVRPUklHSU5BTEZXREZFRSB9CgovLy8gU3RydWN0IHJlcHJlc2VudGluZyB0aGUgc3RhbmRhcmQgYWRkcmVzcyBvbiBUT04gQmxvY2tjaGFpbiB3aXRoIHNpZ25l' + - 'ZCA4LWJpdCBgd29ya2NoYWluYCBJRCBhbmQgYW4gdW5zaWduZWQgMjU2LWJpdCBgYWRkcmVzc2AgaW4gdGhlIHNwZWNpZmllZCBgd29ya2NoYWluYC4gQXZhaWxhYmxl' + - 'IHNpbmNlIFRhY3QgMS41LjAuCi8vLwovLy8gQXQgdGhlIG1vbWVudCwgb25seSBgd29ya2NoYWluYCBJRHMgdXNlZCBvbiBUT04gYXJlIDAgb2YgdGhlIGJhc2VjaGFp' + - 'biBhbmQgLTEgb2YgdGhlIG1hc3RlcmNoYWluLgovLy8KLy8vIFNlZToKLy8vICogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvcmVmL2NvcmUtYWR2YW5jZWQjcGFy' + - 'c2VzdGRhZGRyZXNzCi8vLyAqIGh0dHBzOi8vZ2l0aHViLmNvbS90b24tYmxvY2tjaGFpbi90b24vYmxvYi9tYXN0ZXIvY3J5cHRvL2Jsb2NrL2Jsb2NrLnRsYiNMMTA1' + - 'LUwxMDYKLy8vCnN0cnVjdCBTdGRBZGRyZXNzIHsKICAgIHdvcmtjaGFpbjogSW50IGFzIGludDg7CiAgICBhZGRyZXNzOiBJbnQgYXMgdWludDI1NjsKfQoKLy8vIFN0' + - 'cnVjdCByZXByZXNlbnRpbmcgdGhlIGFkZHJlc3Mgb2YgdmFyaWFibGUgbGVuZ3RoIHdpdGggc2lnbmVkIDMyLWJpdCBgd29ya2NoYWluYCBJRCBhbmQgYSBgU2xpY2Vg' + - 'IGNvbnRhaW5pbmcgdW5zaWduZWQgYGFkZHJlc3NgIGluIHRoZSBzcGVjaWZpZWQgYHdvcmtjaGFpbmAuIEF2YWlsYWJsZSBzaW5jZSBUYWN0IDEuNS4wLgovLy8KLy8v' + - 'IFZhcmlhYmxlLWxlbmd0aCBhZGRyZXNzZXMgYXJlIGludGVuZGVkIGZvciBmdXR1cmUgZXh0ZW5zaW9ucywgYW5kIHdoaWxlIHZhbGlkYXRvcnMgbXVzdCBiZSByZWFk' + - 'eSB0byBhY2NlcHQgdGhlbSBpbiBpbmJvdW5kIG1lc3NhZ2VzLCB0aGUgc3RhbmRhcmQgKG5vbi12YXJpYWJsZSkgYWRkcmVzc2VzIGFyZSB1c2VkIHdoZW5ldmVyIHBv' + - 'c3NpYmxlLgovLy8KLy8vIFNlZToKLy8vICogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvcmVmL2NvcmUtYWR2YW5jZWQjcGFyc2V2YXJhZGRyZXNzCi8vLyAqIGh0' + - 'dHBzOi8vZ2l0aHViLmNvbS90b24tYmxvY2tjaGFpbi90b24vYmxvYi9tYXN0ZXIvY3J5cHRvL2Jsb2NrL2Jsb2NrLnRsYiNMMTA3LUwxMDgKLy8vCnN0cnVjdCBWYXJB' + - 'ZGRyZXNzIHsKICAgIHdvcmtjaGFpbjogSW50IGFzIGludDMyOwogICAgYWRkcmVzczogU2xpY2U7Cn0KCi8vLyBBc3NlbWJseSBmdW5jdGlvbi4gQXZhaWxhYmxlIHNp' + - 'bmNlIFRhY3QgMS41LjAuCi8vLwovLy8gQ29udmVydHMgYSBgU2xpY2VgIGNvbnRhaW5pbmcgYW4gYWRkcmVzcyBpbnRvIHRoZSBgU3RkQWRkcmVzc2AgU3RydWN0IGFu' + - 'ZCByZXR1cm5zIGl0LgovLy8KLy8vIGBgYHRhY3QKLy8vIGZ1biBleGFtcGxlKCkgewovLy8gICAgIGxldCBhZGRyID0gYWRkcmVzcygiRVFEdEZwRXdjRkFFY1JlNW1M' + - 'VmgyTjZDMHgtX2hKRU03VzYxX0pMblNGNzRwNHEyIik7Ci8vLyAgICAgbGV0IHBhcnNlZEFkZHIgPSBwYXJzZVN0ZEFkZHJlc3MoYWRkci5hc1NsaWNlKCkpOwovLy8K' + - 'Ly8vICAgICBwYXJzZWRBZGRyLndvcmtjaGFpbjsgLy8gMAovLy8gICAgIHBhcnNlZEFkZHIuYWRkcmVzczsgICAvLyAxMDcuLi4yODcKLy8vIH0KLy8vIGBgYAovLy8K' + - 'Ly8vIFNlZTogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvcmVmL2NvcmUtYWR2YW5jZWQjcGFyc2VzdGRhZGRyZXNzCi8vLwphc20gZnVuIHBhcnNlU3RkQWRkcmVz' + - 'cyhzbGljZTogU2xpY2UpOiBTdGRBZGRyZXNzIHsgUkVXUklURVNUREFERFIgfQoKLy8vIEFzc2VtYmx5IGZ1bmN0aW9uLiBBdmFpbGFibGUgc2luY2UgVGFjdCAxLjUu' + - 'MC4KLy8vCi8vLyBDb252ZXJ0cyBhIGBTbGljZWAgY29udGFpbmluZyBhbiBhZGRyZXNzIG9mIHZhcmlhYmxlIGxlbmd0aCBpbnRvIHRoZSBgVmFyQWRkcmVzc2AgU3Ry' + - 'dWN0IGFuZCByZXR1cm5zIGl0LgovLy8KLy8vIGBgYHRhY3QKLy8vIGZ1biBleGFtcGxlKCkgewovLy8gICAgIGxldCB2YXJBZGRyU2xpY2UgPSBiZWdpbkNlbGwoKQov' + - 'Ly8gICAgICAgICAuc3RvcmVVaW50KDYsIDMpICAgICAvLyB0byByZWNvZ25pemUgdGhlIGZvbGxvd2luZyBhcyBhIFZhckFkZHJlc3MKLy8vICAgICAgICAgLnN0b3Jl' + - 'VWludCgxMjMsIDkpICAgLy8gbWFrZSBhZGRyZXNzIG9jY3VweSAxMjMgYml0cwovLy8gICAgICAgICAuc3RvcmVVaW50KDIzNCwgMzIpICAvLyBzcGVjaWZ5IHdvcmtj' + - 'aGFpbiBJRCBvZiAyMzQKLy8vICAgICAgICAgLnN0b3JlVWludCgzNDUsIDEyMykgLy8gc3BlY2lmeSBhZGRyZXNzIG9mIDM0NQovLy8gICAgICAgICAuYXNTbGljZSgp' + - 'OwovLy8gICAgIGxldCBwYXJzZWRWYXJBZGRyID0gcGFyc2VWYXJBZGRyZXNzKHZhckFkZHJTbGljZSk7Ci8vLwovLy8gICAgIHBhcnNlZFZhckFkZHIud29ya2NoYWlu' + - 'OyAgICAgICAgICAgICAvLyAyMzQKLy8vICAgICBwYXJzZWRWYXJBZGRyLmFkZHJlc3M7ICAgICAgICAgICAgICAgLy8gQ1N7Q2VsbHswMDIuLi4yYjN9IGJpdHM6IDQ0' + - 'Li4xNjc7IHJlZnM6IDAuLjB9Ci8vLyAgICAgcGFyc2VkVmFyQWRkci5hZGRyZXNzLmxvYWRVaW50KDEyMyk7IC8vIDM0NQovLy8gfQovLy8gYGBgCi8vLwovLy8gU2Vl' + - 'OiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9yZWYvY29yZS1hZHZhbmNlZCNwYXJzZXZhcmFkZHJlc3MKLy8vCmFzbSBmdW4gcGFyc2VWYXJBZGRyZXNzKHNsaWNl' + - 'OiBTbGljZSk6IFZhckFkZHJlc3MgeyBSRVdSSVRFVkFSQUREUiB9Cg=='; -files['std/crypto.tact'] = - 'YXNtIGV4dGVuZHMgZnVuIGhhc2goc2VsZjogQ2VsbCk6IEludCB7IEhBU0hDVSB9Cgphc20gZXh0ZW5kcyBmdW4gaGFzaChzZWxmOiBTbGljZSk6IEludCB7IEhBU0hT' + - 'VSB9Cgphc20gZnVuIGNoZWNrU2lnbmF0dXJlKGhhc2g6IEludCwgc2lnbmF0dXJlOiBTbGljZSwgcHVibGljX2tleTogSW50KTogQm9vbCB7IENIS1NJR05VIH0KCmFz' + - 'bSBmdW4gY2hlY2tEYXRhU2lnbmF0dXJlKGRhdGE6IFNsaWNlLCBzaWduYXR1cmU6IFNsaWNlLCBwdWJsaWNfa2V5OiBJbnQpOiBCb29sIHsgQ0hLU0lHTlMgfQo='; -files['std/debug.tact'] = - 'Ly8gdGhlc2UgYXJlIGJ1aWx0aW4gZnVuY3Rpb25zLCB0aGVzZSBnZXQgc3BlY2lhbCB0cmVhdG1lbnQgZnJvbSBGdW5DCi8vIGhlbmNlLCBubyBhc20gaGVyZQoKQG5h' + - 'bWUodGhyb3cpCm5hdGl2ZSBuYXRpdmVUaHJvdyhjb2RlOiBJbnQpOwoKQG5hbWUodGhyb3dfaWYpCm5hdGl2ZSBuYXRpdmVUaHJvd0lmKGNvZGU6IEludCwgY29uZGl0' + - 'aW9uOiBCb29sKTsKCkBuYW1lKHRocm93KQpuYXRpdmUgdGhyb3coY29kZTogSW50KTsKCkBuYW1lKHRocm93X3VubGVzcykKbmF0aXZlIG5hdGl2ZVRocm93VW5sZXNz' + - 'KGNvZGU6IEludCwgY29uZGl0aW9uOiBCb29sKTs='; -files['std/math.tact'] = - 'Ly8gUHJlcGFyZSByYW5kb20KCi8vIE1peGVzIHVuc2lnbmVkIDI1Ni1iaXQgaW50ZWdlciB4IGludG8gdGhlIHJhbmRvbSBzZWVkIHIgYnkgc2V0dGluZyB0aGUgcmFu' + - 'ZG9tIHNlZWQKLy8gdG8gc2hhMjU2IG9mIHRoZSBjb25jYXRlbmF0aW9uIG9mIHR3byAzMi1ieXRlIHN0cmluZ3M6Ci8vIHRoZSBmaXJzdCB3aXRoIHRoZSBiaWctZW5k' + - 'aWFuIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBvbGQgc2VlZCByLCBhbmQKLy8gdGhlIHNlY29uZCB3aXRoIHRoZSBiaWctZW5kaWFuIHJlcHJlc2VudGF0aW9uIG9mIHgu' + - 'CmFzbSBmdW4gbmF0aXZlUmFuZG9taXplKHg6IEludCkgeyBBRERSQU5EIH0KCi8vLyBFcXVpdmFsZW50IHRvIGBuYXRpdmVSYW5kb21pemUoY3VyX2x0KCkpYCwKLy8v' + - 'IHdoZXJlIGBjdXJfbHQoKWAgaXMgdGhlIGxvZ2ljYWwgdGltZSBvZiB0aGUgY3VycmVudCB0cmFuc2FjdGlvbgphc20gZnVuIG5hdGl2ZVJhbmRvbWl6ZUx0KCkgeyBM' + - 'VElNRSBBRERSQU5EIH0KCkBuYW1lKF9fdGFjdF9wcmVwYXJlX3JhbmRvbSkKbmF0aXZlIG5hdGl2ZVByZXBhcmVSYW5kb20oKTsKCi8vIFJhbmRvbQoKLy8gR2VuZXJh' + - 'dGVzIGEgbmV3IHBzZXVkby1yYW5kb20gdW5zaWduZWQgMjU2LWJpdCBpbnRlZ2VyIHguCi8vIFRoZSBhbGdvcml0aG0gaXMgYXMgZm9sbG93czogaWYgciBpcyB0aGUg' + - 'b2xkIHZhbHVlIG9mIHRoZSByYW5kb20gc2VlZCwKLy8gY29uc2lkZXJlZCBhcyBhIDMyLWJ5dGUgYXJyYXkgKGJ5IGNvbnN0cnVjdGluZyB0aGUgYmlnLWVuZGlhbiBy' + - 'ZXByZXNlbnRhdGlvbgovLyBvZiBhbiB1bnNpZ25lZCAyNTYtYml0IGludGVnZXIpLCB0aGVuIGl0cyBzaGE1MTIocikgaXMgY29tcHV0ZWQ7Ci8vIHRoZSBmaXJzdCAz' + - 'MiBieXRlcyBvZiB0aGlzIGhhc2ggYXJlIHN0b3JlZCBhcyB0aGUgbmV3IHZhbHVlIHInIG9mIHRoZSByYW5kb20gc2VlZCwKLy8gYW5kIHRoZSByZW1haW5pbmcgMzIg' + - 'Ynl0ZXMgYXJlIHJldHVybmVkIGFzIHRoZSBuZXh0IHJhbmRvbSB2YWx1ZSB4Lgphc20gZnVuIG5hdGl2ZVJhbmRvbSgpOiBJbnQgeyBSQU5EVTI1NiB9CgovLyBHZW5l' + - 'cmF0ZXMgYSBuZXcgcHNldWRvLXJhbmRvbSBpbnRlZ2VyIHogaW4gdGhlIHJhbmdlIDAuLnJhbmdl4oiSMQovLyAob3IgcmFuZ2UuLuKIkjEsIGlmIHJhbmdlIDwgMCku' + - 'Ci8vIE1vcmUgcHJlY2lzZWx5LCBhbiB1bnNpZ25lZCByYW5kb20gdmFsdWUgeCBpcyBnZW5lcmF0ZWQgYXMgaW4gYG5hdGl2ZVJhbmRvbWA7Ci8vIHRoZW4geiA6PSB4' + - 'ICogcmFuZ2UgLyAyXjI1NiBpcyBjb21wdXRlZC4KYXNtIGZ1biBuYXRpdmVSYW5kb21JbnRlcnZhbChtYXg6IEludCk6IEludCB7IFJBTkQgfQoKaW5saW5lIGZ1biBy' + - 'YW5kb21JbnQoKTogSW50IHsKICAgIG5hdGl2ZVByZXBhcmVSYW5kb20oKTsKICAgIHJldHVybiBuYXRpdmVSYW5kb20oKTsKfQoKaW5saW5lIGZ1biByYW5kb20obWlu' + - 'OiBJbnQsIG1heDogSW50KTogSW50IHsKICAgIG5hdGl2ZVByZXBhcmVSYW5kb20oKTsKICAgIHJldHVybiBtaW4gKyBuYXRpdmVSYW5kb21JbnRlcnZhbChtYXggLSBt' + - 'aW4pOwp9CgovLyBNYXRoCgphc20gZnVuIG1pbih4OiBJbnQsIHk6IEludCk6IEludCB7IE1JTiB9Cgphc20gZnVuIG1heCh4OiBJbnQsIHk6IEludCk6IEludCB7IE1B' + - 'WCB9Cgphc20gZnVuIGFicyh4OiBJbnQpOiBJbnQgeyBBQlMgfQoKYXNtIGZ1biBub3coKTogSW50IHsgTk9XIH0KCmFzbSBmdW4gbG9nMihudW06IEludCk6IEludCB7' + - 'CiAgICBEVVAgNSBUSFJPV0lGTk9UIFVCSVRTSVpFIERFQwp9CgpAbmFtZShfX3RhY3RfbG9nKQpuYXRpdmUgbG9nKG51bTogSW50LCBiYXNlOiBJbnQpOiBJbnQ7CgpA' + - 'bmFtZShfX3RhY3RfcG93KQpuYXRpdmUgcG93KGJhc2U6IEludCwgZXhwOiBJbnQpOiBJbnQ7Cgphc20gZnVuIHBvdzIoZXhwOiBJbnQpOiBJbnQgeyBQT1cyIH0='; -files['std/primitives.tact'] = - 'cHJpbWl0aXZlIEludDsKcHJpbWl0aXZlIEJvb2w7CnByaW1pdGl2ZSBCdWlsZGVyOwpwcmltaXRpdmUgU2xpY2U7CnByaW1pdGl2ZSBDZWxsOwpwcmltaXRpdmUgQWRk' + - 'cmVzczsKcHJpbWl0aXZlIFN0cmluZzsKcHJpbWl0aXZlIFN0cmluZ0J1aWxkZXI7'; -files['std/reserve.tact'] = - 'YXNtIGZ1biBuYXRpdmVSZXNlcnZlKGFtb3VudDogSW50LCBtb2RlOiBJbnQpIHsgUkFXUkVTRVJWRSB9Cgpjb25zdCBSZXNlcnZlRXhhY3Q6IEludCA9IDA7CmNvbnN0' + - 'IFJlc2VydmVBbGxFeGNlcHQ6IEludCA9IDE7CmNvbnN0IFJlc2VydmVBdE1vc3Q6IEludCA9IDI7CmNvbnN0IFJlc2VydmVBZGRPcmlnaW5hbEJhbGFuY2U6IEludCA9' + - 'IDQ7CmNvbnN0IFJlc2VydmVJbnZlcnRTaWduOiBJbnQgPSA4Owpjb25zdCBSZXNlcnZlQm91bmNlSWZBY3Rpb25GYWlsOiBJbnQgPSAxNjs='; -files['std/send.tact'] = - 'YXNtIGZ1biBuYXRpdmVTZW5kTWVzc2FnZShjZWxsOiBDZWxsLCBtb2RlOiBJbnQpIHsgU0VORFJBV01TRyB9Cgphc20gZnVuIG5hdGl2ZVNlbmRNZXNzYWdlUmV0dXJu' + - 'Rm9yd2FyZEZlZShtc2c6IENlbGwsIG1vZGU6IEludCk6IEludCB7IFNFTkRNU0cgfQoKY29uc3QgU2VuZFJlbWFpbmluZ0JhbGFuY2U6IEludCA9IDEyODsKY29uc3Qg' + - 'U2VuZFJlbWFpbmluZ1ZhbHVlOiBJbnQgPSA2NDsKY29uc3QgU2VuZERlZmF1bHRNb2RlOiBJbnQgPSAwOwpjb25zdCBTZW5kSWdub3JlRXJyb3JzOiBJbnQgPSAyOwpj' + - 'b25zdCBTZW5kUGF5R2FzU2VwYXJhdGVseTogSW50ID0gMTsKY29uc3QgU2VuZERlc3Ryb3lJZlplcm86IEludCA9IDMyOwpjb25zdCBTZW5kQm91bmNlSWZBY3Rpb25G' + - 'YWlsOiBJbnQgPSAxNjsKY29uc3QgU2VuZE9ubHlFc3RpbWF0ZUZlZTogSW50ID0gMTAyNDsKCnN0cnVjdCBTZW5kUGFyYW1ldGVycyB7CiAgICBib3VuY2U6IEJvb2wg' + - 'PSB0cnVlOwogICAgdG86IEFkZHJlc3M7CiAgICB2YWx1ZTogSW50OwogICAgbW9kZTogSW50ID0gMDsKICAgIGJvZHk6IENlbGw/ID0gbnVsbDsKICAgIGNvZGU6IENl' + - 'bGw/ID0gbnVsbDsKICAgIGRhdGE6IENlbGw/ID0gbnVsbDsKfQoKZnVuIHNlbmQocGFyYW1zOiBTZW5kUGFyYW1ldGVycyk6IEludCB7IC8vIHJldHVybnMgZm9yd2Fy' + - 'ZCBmZWUKICAgIGxldCBiOiBCdWlsZGVyID0gYmVnaW5DZWxsKCk7CiAgICBiID0gYi5zdG9yZUludCgxLCAyKTsgLy8gaW50ZXJuYWxfbWVzc2FnZSArIGloZF9kaXNh' + - 'YmxlZAogICAgYiA9IGIuc3RvcmVCb29sKHBhcmFtcy5ib3VuY2UpOyAvLyBib3VuY2UKICAgIGIgPSBiLnN0b3JlSW50KDAsIDMpOyAvLyBib3VuY2VkICsgZnJvbQog' + - 'ICAgYiA9IGIuc3RvcmVBZGRyZXNzKHBhcmFtcy50byk7IC8vIFRvCiAgICBiID0gYi5zdG9yZUNvaW5zKHBhcmFtcy52YWx1ZSk7IC8vIFZhbHVlCiAgICBiID0gYi5z' + - 'dG9yZUludCgwLCAxICsgNCArIDQgKyA2NCArIDMyKTsgLy8gY3VycmVuY3lfY29sbGVjdGlvbiArIElIUiBmZWVzICsgRndkIGZlZXMgKyBDcmVhdGVkTFQgKyBDcmVh' + - 'dGVkQXQKCiAgICAvLyBTdGF0ZWluaXQKICAgIGlmIChwYXJhbXMuY29kZSAhPSBudWxsIHx8IHBhcmFtcy5kYXRhICE9IG51bGwpIHsKICAgICAgICBiID0gYi5zdG9y' + - 'ZUJvb2wodHJ1ZSk7IC8vIFN0YXRlIGluaXQKCiAgICAgICAgLy8gQXNzZW1ibGUgc3RhdGUgaW5pdCBjZWxsCiAgICAgICAgbGV0IGJjOiBCdWlsZGVyID0gYmVnaW5D' + - 'ZWxsKCk7CiAgICAgICAgYmMgPSBiYy5zdG9yZUJvb2woZmFsc2UpOyAvLyBTcGxpdERlcHRoCiAgICAgICAgYmMgPSBiYy5zdG9yZUJvb2woZmFsc2UpOyAvLyBUaWNr' + - 'VG9jawogICAgICAgIGlmIChwYXJhbXMuY29kZSAhPSBudWxsKSB7CiAgICAgICAgICAgIGJjID0gYmMuc3RvcmVCb29sKHRydWUpOyAvLyBDb2RlIHByZXNlbmNlCiAg' + - 'ICAgICAgICAgIGJjID0gYmMuc3RvcmVSZWYocGFyYW1zLmNvZGUhISk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgYmMgPSBiYy5zdG9yZUJvb2woZmFsc2Up' + - 'OyAvLyBDb2RlIHByZXNlbmNlCiAgICAgICAgfQogICAgICAgIGlmIChwYXJhbXMuZGF0YSAhPSBudWxsKSB7CiAgICAgICAgICAgIGJjID0gYmMuc3RvcmVCb29sKHRy' + - 'dWUpOyAvLyBEYXRhIHByZXNlbmNlCiAgICAgICAgICAgIGJjID0gYmMuc3RvcmVSZWYocGFyYW1zLmRhdGEhISk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg' + - 'YmMgPSBiYy5zdG9yZUJvb2woZmFsc2UpOyAvLyBEYXRhIHByZXNlbmNlCiAgICAgICAgfQogICAgICAgIGJjID0gYmMuc3RvcmVCb29sKGZhbHNlKTsgLy8gTGlicmFy' + - 'eQoKICAgICAgICBiID0gYi5zdG9yZUJvb2wodHJ1ZSk7IC8vIFN0b3JlIGFzIHJlZgogICAgICAgIGIgPSBiLnN0b3JlUmVmKGJjLmVuZENlbGwoKSk7CiAgICB9IGVs' + - 'c2UgewogICAgICAgIGIgPSBiLnN0b3JlQm9vbChmYWxzZSk7IC8vIE5vIHN0YXRlIGluaXQKICAgIH0KCiAgICAvLyBCb2R5CiAgICBsZXQgYm9keTogQ2VsbD8gPSBw' + - 'YXJhbXMuYm9keTsKICAgIGlmIChib2R5ICE9IG51bGwpIHsKICAgICAgICBiID0gYi5zdG9yZUJvb2wodHJ1ZSk7CiAgICAgICAgYiA9IGIuc3RvcmVSZWYoYm9keSEh' + - 'KTsKICAgIH0gZWxzZSB7CiAgICAgICAgYiA9IGIuc3RvcmVCb29sKGZhbHNlKTsgLy8gTm8gYm9keQogICAgfQoKICAgIC8vIFNlbmQKICAgIGxldCBjOiBDZWxsID0g' + - 'Yi5lbmRDZWxsKCk7CiAgICByZXR1cm4gbmF0aXZlU2VuZE1lc3NhZ2VSZXR1cm5Gb3J3YXJkRmVlKGMsIHBhcmFtcy5tb2RlKTsKfQoKaW5saW5lIGZ1biBlbWl0KGJv' + - 'ZHk6IENlbGwpIHsKICAgIC8vIGV4dF9vdXRfbXNnX2luZm8kMTEgc3JjOk1zZ0FkZHJlc3NJbnQgZGVzdDpNc2dBZGRyZXNzRXh0IGNyZWF0ZWRfbHQ6dWludDY0IGNy' + - 'ZWF0ZWRfYXQ6dWludDMyCiAgICAvLyAgICAgICAgICAgICAgICAgICAgIG1heWJlOiBzdGF0ZUluaXQgKGZhbHNlKSBib2R5UmVmOiBib29sICh0cnVlKQogICAgbGV0' + - 'IGM6IENlbGwgPSBiZWdpbkNlbGwoKQogICAgICAgIC5zdG9yZVVpbnQoMTUyMTE4MDcyMDI3Mzg3NTI4MTc5NjA0Mzg0NjQ1MTMsIDEwNCkKICAgICAgICAuc3RvcmVS' + - 'ZWYoYm9keSkKICAgICAgICAuZW5kQ2VsbCgpOwogICAgbmF0aXZlU2VuZE1lc3NhZ2UoYywgMCk7Cn0KCmFzbSBmdW4gYWNjZXB0TWVzc2FnZSgpIHsgQUNDRVBUIH0K' + - 'CmFzbSBmdW4gY29tbWl0KCkgeyBDT01NSVQgfQo='; -files['std/text.tact'] = - 'Ly8KLy8gU3RyaW5nIGJ1aWxkZXIKLy8KCkBuYW1lKF9fdGFjdF9zdHJpbmdfYnVpbGRlcl9zdGFydF9zdHJpbmcpCm5hdGl2ZSBiZWdpblN0cmluZygpOiBTdHJpbmdC' + - 'dWlsZGVyOwoKQG5hbWUoX190YWN0X3N0cmluZ19idWlsZGVyX3N0YXJ0X2NvbW1lbnQpCm5hdGl2ZSBiZWdpbkNvbW1lbnQoKTogU3RyaW5nQnVpbGRlcjsKCkBuYW1l' + - 'KF9fdGFjdF9zdHJpbmdfYnVpbGRlcl9zdGFydF90YWlsX3N0cmluZykKbmF0aXZlIGJlZ2luVGFpbFN0cmluZygpOiBTdHJpbmdCdWlsZGVyOwoKQG5hbWUoX190YWN0' + - 'X3N0cmluZ19idWlsZGVyX3N0YXJ0KQpuYXRpdmUgYmVnaW5TdHJpbmdGcm9tQnVpbGRlcihiOiBCdWlsZGVyKTogU3RyaW5nQnVpbGRlcjsKCkBuYW1lKF9fdGFjdF9z' + - 'dHJpbmdfYnVpbGRlcl9hcHBlbmQpCmV4dGVuZHMgbXV0YXRlcyBuYXRpdmUgYXBwZW5kKHNlbGY6IFN0cmluZ0J1aWxkZXIsIHM6IFN0cmluZyk7CgpAbmFtZShfX3Rh' + - 'Y3Rfc3RyaW5nX2J1aWxkZXJfYXBwZW5kX25vdF9tdXQpCmV4dGVuZHMgbmF0aXZlIGNvbmNhdChzZWxmOiBTdHJpbmdCdWlsZGVyLCBzOiBTdHJpbmcpOiBTdHJpbmdC' + - 'dWlsZGVyOwoKQG5hbWUoX190YWN0X3N0cmluZ19idWlsZGVyX2VuZCkKZXh0ZW5kcyBuYXRpdmUgdG9DZWxsKHNlbGY6IFN0cmluZ0J1aWxkZXIpOiBDZWxsOwoKQG5h' + - 'bWUoX190YWN0X3N0cmluZ19idWlsZGVyX2VuZF9zbGljZSkKZXh0ZW5kcyBuYXRpdmUgdG9TdHJpbmcoc2VsZjogU3RyaW5nQnVpbGRlcik6IFN0cmluZzsKCkBuYW1l' + - 'KF9fdGFjdF9zdHJpbmdfYnVpbGRlcl9lbmRfc2xpY2UpCmV4dGVuZHMgbmF0aXZlIHRvU2xpY2Uoc2VsZjogU3RyaW5nQnVpbGRlcik6IFNsaWNlOwoKLy8KLy8gU3Ry' + - 'aW5nIGNvbnZlcnNpb24KLy8KCkBuYW1lKF9fdGFjdF9pbnRfdG9fc3RyaW5nKQpleHRlbmRzIG5hdGl2ZSB0b1N0cmluZyhzZWxmOiBJbnQpOiBTdHJpbmc7CgpAbmFt' + - 'ZShfX3RhY3RfZmxvYXRfdG9fc3RyaW5nKQpleHRlbmRzIG5hdGl2ZSB0b0Zsb2F0U3RyaW5nKHNlbGY6IEludCwgZGlnaXRzOiBJbnQpOiBTdHJpbmc7CgppbmxpbmUg' + - 'ZXh0ZW5kcyBmdW4gdG9Db2luc1N0cmluZyhzZWxmOiBJbnQpOiBTdHJpbmcgewogICAgcmV0dXJuIHNlbGYudG9GbG9hdFN0cmluZyg5KTsKfQoKZXh0ZW5kcyBmdW4g' + - 'YXNDb21tZW50KHNlbGY6IFN0cmluZyk6IENlbGwgewogICAgbGV0IGI6IFN0cmluZ0J1aWxkZXIgPSBiZWdpbkNvbW1lbnQoKTsKICAgIGIuYXBwZW5kKHNlbGYpOwog' + - 'ICAgcmV0dXJuIGIudG9DZWxsKCk7Cn0KCkBuYW1lKF9fdGFjdF9zdHJfdG9fc2xpY2UpCmV4dGVuZHMgbmF0aXZlIGFzU2xpY2Uoc2VsZjogU3RyaW5nKTogU2xpY2U7' + - 'CgpAbmFtZShfX3RhY3Rfc2xpY2VfdG9fc3RyKQpleHRlbmRzIG5hdGl2ZSBhc1N0cmluZyhzZWxmOiBTbGljZSk6IFN0cmluZzsKCmlubGluZSBleHRlbmRzIGZ1biBm' + - 'cm9tQmFzZTY0KHNlbGY6IFN0cmluZyk6IFNsaWNlIHsKICAgIHJldHVybiBzZWxmLmFzU2xpY2UoKS5mcm9tQmFzZTY0KCk7Cn0KCmV4dGVuZHMgZnVuIGZyb21CYXNl' + - 'NjQoc2VsZjogU2xpY2UpOiBTbGljZSB7CiAgICBsZXQgc2l6ZTogSW50ID0gc2VsZi5iaXRzKCkgLyA4OwogICAgbGV0IHJlc3VsdDogQnVpbGRlciA9IGJlZ2luQ2Vs' + - 'bCgpOwoKICAgIHJlcGVhdCAoc2l6ZSkgewogICAgICAgIGxldCBjb2RlOiBJbnQgPSBzZWxmLmxvYWRVaW50KDgpOwogICAgICAgIGlmIChjb2RlID49IDY1ICYmIGNv' + - 'ZGUgPD0gOTApIHsgLy8gQS1aCiAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5zdG9yZVVpbnQoY29kZSAtIDY1LCA2KTsKICAgICAgICB9IGVsc2UgaWYgKGNvZGUg' + - 'Pj0gOTcgJiYgY29kZSA8PSAxMjIpIHsgLy8gYS16CiAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5zdG9yZVVpbnQoY29kZSAtICg5NyAtIDI2KSwgNik7CiAgICAg' + - 'ICAgfSBlbHNlIGlmIChjb2RlID49IDQ4ICYmIGNvZGUgPD0gNTcpIHsgLy8gMC05CiAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5zdG9yZVVpbnQoY29kZSArICg1' + - 'MiAtIDQ4KSwgNik7CiAgICAgICAgfSBlbHNlIGlmIChjb2RlID09IDQ1IHx8IGNvZGUgPT0gNDMpIHsgLy8gLSBvciArCiAgICAgICAgICAgIHJlc3VsdCA9IHJlc3Vs' + - 'dC5zdG9yZVVpbnQoNjIsIDYpOwogICAgICAgIH0gZWxzZSBpZiAoY29kZSA9PSA5NSB8fCBjb2RlID09IDQ3KSB7IC8vIF8gb3IgLwogICAgICAgICAgICByZXN1bHQg' + - 'PSByZXN1bHQuc3RvcmVVaW50KDYzLCA2KTsKICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPT0gNjEpIHsgLy8gPQogICAgICAgICAgICAvLyBTa2lwCiAgICAgICAgfSBl' + - 'bHNlIHsKICAgICAgICAgICAgdGhyb3coMTM0KTsKICAgICAgICB9CiAgICB9CgogICAgLy8gUGFkZGluZwogICAgbGV0IHRvdGFsOiBJbnQgPSByZXN1bHQuYml0cygp' + - 'OwogICAgbGV0IHBhZGRpbmc6IEludCA9IHRvdGFsICUgODsKICAgIGlmIChwYWRkaW5nICE9IDApIHsKICAgICAgICBsZXQgczogU2xpY2UgPSByZXN1bHQuYXNTbGlj' + - 'ZSgpOwogICAgICAgIHJldHVybiBzLmxvYWRCaXRzKHRvdGFsIC0gcGFkZGluZyk7CiAgICB9IGVsc2UgewogICAgICAgIHJldHVybiByZXN1bHQuYXNTbGljZSgpOwog' + - 'ICAgfQp9CgovLwovLyBBZGRyZXNzIGNvbnZlcnNpb24KLy8KCkBuYW1lKF9fdGFjdF9hZGRyZXNzX3RvX3VzZXJfZnJpZW5kbHkpCmV4dGVuZHMgbmF0aXZlIHRvU3Ry' + - 'aW5nKHNlbGY6IEFkZHJlc3MpOiBTdHJpbmc7'; -files['stdlib_ex.fc'] = - 'Zm9yYWxsIFggLT4gdHVwbGUgX190YWN0X3NldCh0dXBsZSB4LCBYIHYsIGludCBpKSBhc20gIlNFVElOREVYVkFSUSI7CigpIF9fdGFjdF9ub3AoKSBhc20gIk5PUCI7' + - 'CnNsaWNlIF9fdGFjdF9zdHJfdG9fc2xpY2Uoc2xpY2UgcykgYXNtICJOT1AiOwpzbGljZSBfX3RhY3Rfc2xpY2VfdG9fc3RyKHNsaWNlIHMpIGFzbSAiTk9QIjsKc2xp' + - 'Y2UgX190YWN0X2FkZHJlc3NfdG9fc2xpY2Uoc2xpY2UgcykgYXNtICJOT1AiOw=='; -files['stdlib.fc'] = - 'OzsgU3RhbmRhcmQgbGlicmFyeSBmb3IgZnVuQwo7OwoKey0KICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIFRPTiBGdW5DIFN0YW5kYXJkIExpYnJhcnkuCgogICAgRnVu' + - 'QyBTdGFuZGFyZCBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICAgIGl0IHVuZGVyIHRoZSB0ZXJt' + - 'cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0' + - 'aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgRnVuQyBTdGFuZGFyZCBMaWJy' + - 'YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl' + - 'biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAg' + - 'R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCgotfQoKey0KICAjIFR1cGxlIG1hbmlwdWxhdGlvbiBwcmltaXRpdmVzCiAg' + - 'VGhlIG5hbWVzIGFuZCB0aGUgdHlwZXMgYXJlIG1vc3RseSBzZWxmLWV4cGxhaW5pbmcuCiAgU2VlIFtwb2x5bW9yaGlzbSB3aXRoIGZvcmFsbF0oaHR0cHM6Ly90b24u' + - 'b3JnL2RvY3MvIy9mdW5jL2Z1bmN0aW9ucz9pZD1wb2x5bW9ycGhpc20td2l0aC1mb3JhbGwpCiAgZm9yIG1vcmUgaW5mbyBvbiB0aGUgcG9seW1vcnBoaWMgZnVuY3Rp' + - 'b25zLgoKICBOb3RlIHRoYXQgY3VycmVudGx5IHZhbHVlcyBvZiBhdG9taWMgdHlwZSBgdHVwbGVgIGNhbid0IGJlIGNhc3QgdG8gY29tcG9zaXRlIHR1cGxlIHR5cGUg' + - 'KGUuZy4gYFtpbnQsIGNlbGxdYCkKICBhbmQgdmlzZSB2ZXJzYS4KLX0KCnstCiAgIyBMaXNwLXN0eWxlIGxpc3RzCgogIExpc3RzIGNhbiBiZSByZXByZXNlbnRlZCBh' + - 'cyBuZXN0ZWQgMi1lbGVtZW50cyB0dXBsZXMuCiAgRW1wdHkgbGlzdCBpcyBjb252ZW50aW9uYWxseSByZXByZXNlbnRlZCBhcyBUVk0gYG51bGxgIHZhbHVlIChpdCBj' + - 'YW4gYmUgb2J0YWluZWQgYnkgY2FsbGluZyBbbnVsbCgpXSkuCiAgRm9yIGV4YW1wbGUsIHR1cGxlIGAoMSwgKDIsICgzLCBudWxsKSkpYCByZXByZXNlbnRzIGxpc3Qg' + - 'YFsxLCAyLCAzXWAuIEVsZW1lbnRzIG9mIGEgbGlzdCBjYW4gYmUgb2YgZGlmZmVyZW50IHR5cGVzLgotfQoKOzs7IEFkZHMgYW4gZWxlbWVudCB0byB0aGUgYmVnaW5u' + - 'aW5nIG9mIGxpc3Atc3R5bGUgbGlzdC4KZm9yYWxsIFggLT4gdHVwbGUgY29ucyhYIGhlYWQsIHR1cGxlIHRhaWwpIGFzbSAiQ09OUyI7Cgo7OzsgRXh0cmFjdHMgdGhl' + - 'IGhlYWQgYW5kIHRoZSB0YWlsIG9mIGxpc3Atc3R5bGUgbGlzdC4KZm9yYWxsIFggLT4gKFgsIHR1cGxlKSB1bmNvbnModHVwbGUgbGlzdCkgYXNtICJVTkNPTlMiOwoK' + - 'Ozs7IEV4dHJhY3RzIHRoZSB0YWlsIGFuZCB0aGUgaGVhZCBvZiBsaXNwLXN0eWxlIGxpc3QuCmZvcmFsbCBYIC0+ICh0dXBsZSwgWCkgbGlzdF9uZXh0KHR1cGxlIGxp' + - 'c3QpIGFzbSgtPiAxIDApICJVTkNPTlMiOwoKOzs7IFJldHVybnMgdGhlIGhlYWQgb2YgbGlzcC1zdHlsZSBsaXN0Lgpmb3JhbGwgWCAtPiBYIGNhcih0dXBsZSBsaXN0' + - 'KSBhc20gIkNBUiI7Cgo7OzsgUmV0dXJucyB0aGUgdGFpbCBvZiBsaXNwLXN0eWxlIGxpc3QuCnR1cGxlIGNkcih0dXBsZSBsaXN0KSBhc20gIkNEUiI7Cgo7OzsgQ3Jl' + - 'YXRlcyB0dXBsZSB3aXRoIHplcm8gZWxlbWVudHMuCnR1cGxlIGVtcHR5X3R1cGxlKCkgYXNtICJOSUwiOwoKOzs7IEFwcGVuZHMgYSB2YWx1ZSBgeGAgdG8gYSBgVHVw' + - 'bGUgdCA9ICh4MSwgLi4uLCB4bilgLCBidXQgb25seSBpZiB0aGUgcmVzdWx0aW5nIGBUdXBsZSB0JyA9ICh4MSwgLi4uLCB4biwgeClgCjs7OyBpcyBvZiBsZW5ndGgg' + - 'YXQgbW9zdCAyNTUuIE90aGVyd2lzZSB0aHJvd3MgYSB0eXBlIGNoZWNrIGV4Y2VwdGlvbi4KZm9yYWxsIFggLT4gdHVwbGUgdHB1c2godHVwbGUgdCwgWCB2YWx1ZSkg' + - 'YXNtICJUUFVTSCI7CmZvcmFsbCBYIC0+ICh0dXBsZSwgKCkpIH50cHVzaCh0dXBsZSB0LCBYIHZhbHVlKSBhc20gIlRQVVNIIjsKCjs7OyBDcmVhdGVzIGEgdHVwbGUg' + - 'b2YgbGVuZ3RoIG9uZSB3aXRoIGdpdmVuIGFyZ3VtZW50IGFzIGVsZW1lbnQuCmZvcmFsbCBYIC0+IFtYXSBzaW5nbGUoWCB4KSBhc20gIlNJTkdMRSI7Cgo7OzsgVW5w' + - 'YWNrcyBhIHR1cGxlIG9mIGxlbmd0aCBvbmUKZm9yYWxsIFggLT4gWCB1bnNpbmdsZShbWF0gdCkgYXNtICJVTlNJTkdMRSI7Cgo7OzsgQ3JlYXRlcyBhIHR1cGxlIG9m' + - 'IGxlbmd0aCB0d28gd2l0aCBnaXZlbiBhcmd1bWVudHMgYXMgZWxlbWVudHMuCmZvcmFsbCBYLCBZIC0+IFtYLCBZXSBwYWlyKFggeCwgWSB5KSBhc20gIlBBSVIiOwoK' + - 'Ozs7IFVucGFja3MgYSB0dXBsZSBvZiBsZW5ndGggdHdvCmZvcmFsbCBYLCBZIC0+IChYLCBZKSB1bnBhaXIoW1gsIFldIHQpIGFzbSAiVU5QQUlSIjsKCjs7OyBDcmVh' + - 'dGVzIGEgdHVwbGUgb2YgbGVuZ3RoIHRocmVlIHdpdGggZ2l2ZW4gYXJndW1lbnRzIGFzIGVsZW1lbnRzLgpmb3JhbGwgWCwgWSwgWiAtPiBbWCwgWSwgWl0gdHJpcGxl' + - 'KFggeCwgWSB5LCBaIHopIGFzbSAiVFJJUExFIjsKCjs7OyBVbnBhY2tzIGEgdHVwbGUgb2YgbGVuZ3RoIHRocmVlCmZvcmFsbCBYLCBZLCBaIC0+IChYLCBZLCBaKSB1' + - 'bnRyaXBsZShbWCwgWSwgWl0gdCkgYXNtICJVTlRSSVBMRSI7Cgo7OzsgQ3JlYXRlcyBhIHR1cGxlIG9mIGxlbmd0aCBmb3VyIHdpdGggZ2l2ZW4gYXJndW1lbnRzIGFz' + - 'IGVsZW1lbnRzLgpmb3JhbGwgWCwgWSwgWiwgVyAtPiBbWCwgWSwgWiwgV10gdHVwbGU0KFggeCwgWSB5LCBaIHosIFcgdykgYXNtICI0IFRVUExFIjsKCjs7OyBVbnBh' + - 'Y2tzIGEgdHVwbGUgb2YgbGVuZ3RoIGZvdXIKZm9yYWxsIFgsIFksIFosIFcgLT4gKFgsIFksIFosIFcpIHVudHVwbGU0KFtYLCBZLCBaLCBXXSB0KSBhc20gIjQgVU5U' + - 'VVBMRSI7Cgo7OzsgUmV0dXJucyB0aGUgZmlyc3QgZWxlbWVudCBvZiBhIHR1cGxlICh3aXRoIHVua25vd24gZWxlbWVudCB0eXBlcykuCmZvcmFsbCBYIC0+IFggZmly' + - 'c3QodHVwbGUgdCkgYXNtICJGSVJTVCI7Cgo7OzsgUmV0dXJucyB0aGUgc2Vjb25kIGVsZW1lbnQgb2YgYSB0dXBsZSAod2l0aCB1bmtub3duIGVsZW1lbnQgdHlwZXMp' + - 'Lgpmb3JhbGwgWCAtPiBYIHNlY29uZCh0dXBsZSB0KSBhc20gIlNFQ09ORCI7Cgo7OzsgUmV0dXJucyB0aGUgdGhpcmQgZWxlbWVudCBvZiBhIHR1cGxlICh3aXRoIHVu' + - 'a25vd24gZWxlbWVudCB0eXBlcykuCmZvcmFsbCBYIC0+IFggdGhpcmQodHVwbGUgdCkgYXNtICJUSElSRCI7Cgo7OzsgUmV0dXJucyB0aGUgZm91cnRoIGVsZW1lbnQg' + - 'b2YgYSB0dXBsZSAod2l0aCB1bmtub3duIGVsZW1lbnQgdHlwZXMpLgpmb3JhbGwgWCAtPiBYIGZvdXJ0aCh0dXBsZSB0KSBhc20gIjMgSU5ERVgiOwoKOzs7IFJldHVy' + - 'bnMgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYSBwYWlyIHR1cGxlLgpmb3JhbGwgWCwgWSAtPiBYIHBhaXJfZmlyc3QoW1gsIFldIHApIGFzbSAiRklSU1QiOwoKOzs7IFJl' + - 'dHVybnMgdGhlIHNlY29uZCBlbGVtZW50IG9mIGEgcGFpciB0dXBsZS4KZm9yYWxsIFgsIFkgLT4gWSBwYWlyX3NlY29uZChbWCwgWV0gcCkgYXNtICJTRUNPTkQiOwoK' + - 'Ozs7IFJldHVybnMgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYSB0cmlwbGUgdHVwbGUuCmZvcmFsbCBYLCBZLCBaIC0+IFggdHJpcGxlX2ZpcnN0KFtYLCBZLCBaXSBwKSBh' + - 'c20gIkZJUlNUIjsKCjs7OyBSZXR1cm5zIHRoZSBzZWNvbmQgZWxlbWVudCBvZiBhIHRyaXBsZSB0dXBsZS4KZm9yYWxsIFgsIFksIFogLT4gWSB0cmlwbGVfc2Vjb25k' + - 'KFtYLCBZLCBaXSBwKSBhc20gIlNFQ09ORCI7Cgo7OzsgUmV0dXJucyB0aGUgdGhpcmQgZWxlbWVudCBvZiBhIHRyaXBsZSB0dXBsZS4KZm9yYWxsIFgsIFksIFogLT4g' + - 'WiB0cmlwbGVfdGhpcmQoW1gsIFksIFpdIHApIGFzbSAiVEhJUkQiOwoKCjs7OyBQdXNoIG51bGwgZWxlbWVudCAoY2FzdGVkIHRvIGdpdmVuIHR5cGUpCjs7OyBCeSB0' + - 'aGUgVFZNIHR5cGUgYE51bGxgIEZ1bkMgcmVwcmVzZW50cyBhYnNlbmNlIG9mIGEgdmFsdWUgb2Ygc29tZSBhdG9taWMgdHlwZS4KOzs7IFNvIGBudWxsYCBjYW4gYWN0' + - 'dWFsbHkgaGF2ZSBhbnkgYXRvbWljIHR5cGUuCmZvcmFsbCBYIC0+IFggbnVsbCgpIGFzbSAiUFVTSE5VTEwiOwoKOzs7IE1vdmVzIGEgdmFyaWFibGUgW3hdIHRvIHRo' + - 'ZSB0b3Agb2YgdGhlIHN0YWNrCmZvcmFsbCBYIC0+IChYLCAoKSkgfmltcHVyZV90b3VjaChYIHgpIGltcHVyZSBhc20gIk5PUCI7CgoKCjs7OyBSZXR1cm5zIHRoZSBj' + - 'dXJyZW50IFVuaXggdGltZSBhcyBhbiBJbnRlZ2VyCmludCBub3coKSBhc20gIk5PVyI7Cgo7OzsgUmV0dXJucyB0aGUgaW50ZXJuYWwgYWRkcmVzcyBvZiB0aGUgY3Vy' + - 'cmVudCBzbWFydCBjb250cmFjdCBhcyBhIFNsaWNlIHdpdGggYSBgTXNnQWRkcmVzc0ludGAuCjs7OyBJZiBuZWNlc3NhcnksIGl0IGNhbiBiZSBwYXJzZWQgZnVydGhl' + - 'ciB1c2luZyBwcmltaXRpdmVzIHN1Y2ggYXMgW3BhcnNlX3N0ZF9hZGRyXS4Kc2xpY2UgbXlfYWRkcmVzcygpIGFzbSAiTVlBRERSIjsKCjs7OyBSZXR1cm5zIHRoZSBi' + - 'YWxhbmNlIG9mIHRoZSBzbWFydCBjb250cmFjdCBhcyBhIHR1cGxlIGNvbnNpc3Rpbmcgb2YgYW4gaW50Cjs7OyAoYmFsYW5jZSBpbiBuYW5vdG9uY29pbnMpIGFuZCBh' + - 'IGBjZWxsYAo7OzsgKGEgZGljdGlvbmFyeSB3aXRoIDMyLWJpdCBrZXlzIHJlcHJlc2VudGluZyB0aGUgYmFsYW5jZSBvZiAiZXh0cmEgY3VycmVuY2llcyIpCjs7OyBh' + - 'dCB0aGUgc3RhcnQgb2YgQ29tcHV0YXRpb24gUGhhc2UuCjs7OyBOb3RlIHRoYXQgUkFXIHByaW1pdGl2ZXMgc3VjaCBhcyBbc2VuZF9yYXdfbWVzc2FnZV0gZG8gbm90' + - 'IHVwZGF0ZSB0aGlzIGZpZWxkLgpbaW50LCBjZWxsXSBnZXRfYmFsYW5jZSgpIGFzbSAiQkFMQU5DRSI7Cgo7OzsgUmV0dXJucyB0aGUgbG9naWNhbCB0aW1lIG9mIHRo' + - 'ZSBjdXJyZW50IHRyYW5zYWN0aW9uLgppbnQgY3VyX2x0KCkgYXNtICJMVElNRSI7Cgo7OzsgUmV0dXJucyB0aGUgc3RhcnRpbmcgbG9naWNhbCB0aW1lIG9mIHRoZSBj' + - 'dXJyZW50IGJsb2NrLgppbnQgYmxvY2tfbHQoKSBhc20gIkJMT0NLTFQiOwoKOzs7IENvbXB1dGVzIHRoZSByZXByZXNlbnRhdGlvbiBoYXNoIG9mIGEgYGNlbGxgIFtj' + - 'XSBhbmQgcmV0dXJucyBpdCBhcyBhIDI1Ni1iaXQgdW5zaWduZWQgaW50ZWdlciBgeGAuCjs7OyBVc2VmdWwgZm9yIHNpZ25pbmcgYW5kIGNoZWNraW5nIHNpZ25hdHVy' + - 'ZXMgb2YgYXJiaXRyYXJ5IGVudGl0aWVzIHJlcHJlc2VudGVkIGJ5IGEgdHJlZSBvZiBjZWxscy4KaW50IGNlbGxfaGFzaChjZWxsIGMpIGFzbSAiSEFTSENVIjsKCjs7' + - 'OyBDb21wdXRlcyB0aGUgaGFzaCBvZiBhIGBzbGljZSBzYCBhbmQgcmV0dXJucyBpdCBhcyBhIDI1Ni1iaXQgdW5zaWduZWQgaW50ZWdlciBgeGAuCjs7OyBUaGUgcmVz' + - 'dWx0IGlzIHRoZSBzYW1lIGFzIGlmIGFuIG9yZGluYXJ5IGNlbGwgY29udGFpbmluZyBvbmx5IGRhdGEgYW5kIHJlZmVyZW5jZXMgZnJvbSBgc2AgaGFkIGJlZW4gY3Jl' + - 'YXRlZAo7OzsgYW5kIGl0cyBoYXNoIGNvbXB1dGVkIGJ5IFtjZWxsX2hhc2hdLgppbnQgc2xpY2VfaGFzaChzbGljZSBzKSBhc20gIkhBU0hTVSI7Cgo7OzsgQ29tcHV0' + - 'ZXMgc2hhMjU2IG9mIHRoZSBkYXRhIGJpdHMgb2YgYHNsaWNlYCBbc10uIElmIHRoZSBiaXQgbGVuZ3RoIG9mIGBzYCBpcyBub3QgZGl2aXNpYmxlIGJ5IGVpZ2h0LAo7' + - 'OzsgdGhyb3dzIGEgY2VsbCB1bmRlcmZsb3cgZXhjZXB0aW9uLiBUaGUgaGFzaCB2YWx1ZSBpcyByZXR1cm5lZCBhcyBhIDI1Ni1iaXQgdW5zaWduZWQgaW50ZWdlciBg' + - 'eGAuCmludCBzdHJpbmdfaGFzaChzbGljZSBzKSBhc20gIlNIQTI1NlUiOwoKey0KICAjIFNpZ25hdHVyZSBjaGVja3MKLX0KCjs7OyBDaGVja3MgdGhlIEVkMjU1MTkt' + - 'YHNpZ25hdHVyZWAgb2YgYSBgaGFzaGAgKGEgMjU2LWJpdCB1bnNpZ25lZCBpbnRlZ2VyLCB1c3VhbGx5IGNvbXB1dGVkIGFzIHRoZSBoYXNoIG9mIHNvbWUgZGF0YSkK' + - 'Ozs7IHVzaW5nIFtwdWJsaWNfa2V5XSAoYWxzbyByZXByZXNlbnRlZCBieSBhIDI1Ni1iaXQgdW5zaWduZWQgaW50ZWdlcikuCjs7OyBUaGUgc2lnbmF0dXJlIG11c3Qg' + - 'Y29udGFpbiBhdCBsZWFzdCA1MTIgZGF0YSBiaXRzOyBvbmx5IHRoZSBmaXJzdCA1MTIgYml0cyBhcmUgdXNlZC4KOzs7IFRoZSByZXN1bHQgaXMgYOKIkjFgIGlmIHRo' + - 'ZSBzaWduYXR1cmUgaXMgdmFsaWQsIGAwYCBvdGhlcndpc2UuCjs7OyBOb3RlIHRoYXQgYENIS1NJR05VYCBjcmVhdGVzIGEgMjU2LWJpdCBzbGljZSB3aXRoIHRoZSBo' + - 'YXNoIGFuZCBjYWxscyBgQ0hLU0lHTlNgLgo7OzsgVGhhdCBpcywgaWYgW2hhc2hdIGlzIGNvbXB1dGVkIGFzIHRoZSBoYXNoIG9mIHNvbWUgZGF0YSwgdGhlc2UgZGF0' + - 'YSBhcmUgaGFzaGVkIHR3aWNlLAo7OzsgdGhlIHNlY29uZCBoYXNoaW5nIG9jY3VycmluZyBpbnNpZGUgYENIS1NJR05TYC4KaW50IGNoZWNrX3NpZ25hdHVyZShpbnQg' + - 'aGFzaCwgc2xpY2Ugc2lnbmF0dXJlLCBpbnQgcHVibGljX2tleSkgYXNtICJDSEtTSUdOVSI7Cgo7OzsgQ2hlY2tzIHdoZXRoZXIgW3NpZ25hdHVyZV0gaXMgYSB2YWxp' + - 'ZCBFZDI1NTE5LXNpZ25hdHVyZSBvZiB0aGUgZGF0YSBwb3J0aW9uIG9mIGBzbGljZSBkYXRhYCB1c2luZyBgcHVibGljX2tleWAsCjs7OyBzaW1pbGFybHkgdG8gW2No' + - 'ZWNrX3NpZ25hdHVyZV0uCjs7OyBJZiB0aGUgYml0IGxlbmd0aCBvZiBbZGF0YV0gaXMgbm90IGRpdmlzaWJsZSBieSBlaWdodCwgdGhyb3dzIGEgY2VsbCB1bmRlcmZs' + - 'b3cgZXhjZXB0aW9uLgo7OzsgVGhlIHZlcmlmaWNhdGlvbiBvZiBFZDI1NTE5IHNpZ25hdHVyZXMgaXMgdGhlIHN0YW5kYXJkIG9uZSwKOzs7IHdpdGggc2hhMjU2IHVz' + - 'ZWQgdG8gcmVkdWNlIFtkYXRhXSB0byB0aGUgMjU2LWJpdCBudW1iZXIgdGhhdCBpcyBhY3R1YWxseSBzaWduZWQuCmludCBjaGVja19kYXRhX3NpZ25hdHVyZShzbGlj' + - 'ZSBkYXRhLCBzbGljZSBzaWduYXR1cmUsIGludCBwdWJsaWNfa2V5KSBhc20gIkNIS1NJR05TIjsKCnstLS0KICAjIENvbXB1dGF0aW9uIG9mIGJvYyBzaXplCiAgVGhl' + - 'IHByaW1pdGl2ZXMgYmVsb3cgbWF5IGJlIHVzZWZ1bCBmb3IgY29tcHV0aW5nIHN0b3JhZ2UgZmVlcyBvZiB1c2VyLXByb3ZpZGVkIGRhdGEuCi19Cgo7OzsgUmV0dXJu' + - 'cyBgKHgsIHksIHosIC0xKWAgb3IgYChudWxsLCBudWxsLCBudWxsLCAwKWAuCjs7OyBSZWN1cnNpdmVseSBjb21wdXRlcyB0aGUgY291bnQgb2YgZGlzdGluY3QgY2Vs' + - 'bHMgYHhgLCBkYXRhIGJpdHMgYHlgLCBhbmQgY2VsbCByZWZlcmVuY2VzIGB6YAo7OzsgaW4gdGhlIERBRyByb290ZWQgYXQgYGNlbGxgIFtjXSwgZWZmZWN0aXZlbHkg' + - 'cmV0dXJuaW5nIHRoZSB0b3RhbCBzdG9yYWdlIHVzZWQgYnkgdGhpcyBEQUcgdGFraW5nIGludG8gYWNjb3VudAo7OzsgdGhlIGlkZW50aWZpY2F0aW9uIG9mIGVxdWFs' + - 'IGNlbGxzLgo7OzsgVGhlIHZhbHVlcyBvZiBgeGAsIGB5YCwgYW5kIGB6YCBhcmUgY29tcHV0ZWQgYnkgYSBkZXB0aC1maXJzdCB0cmF2ZXJzYWwgb2YgdGhpcyBEQUcs' + - 'Cjs7OyB3aXRoIGEgaGFzaCB0YWJsZSBvZiB2aXNpdGVkIGNlbGwgaGFzaGVzIHVzZWQgdG8gcHJldmVudCB2aXNpdHMgb2YgYWxyZWFkeS12aXNpdGVkIGNlbGxzLgo7' + - 'OzsgVGhlIHRvdGFsIGNvdW50IG9mIHZpc2l0ZWQgY2VsbHMgYHhgIGNhbm5vdCBleGNlZWQgbm9uLW5lZ2F0aXZlIFttYXhfY2VsbHNdOwo7Ozsgb3RoZXJ3aXNlIHRo' + - 'ZSBjb21wdXRhdGlvbiBpcyBhYm9ydGVkIGJlZm9yZSB2aXNpdGluZyB0aGUgYChtYXhfY2VsbHMgKyAxKWAtc3QgY2VsbCBhbmQKOzs7IGEgemVybyBmbGFnIGlzIHJl' + - 'dHVybmVkIHRvIGluZGljYXRlIGZhaWx1cmUuIElmIFtjXSBpcyBgbnVsbGAsIHJldHVybnMgYHggPSB5ID0geiA9IDBgLgooaW50LCBpbnQsIGludCkgY29tcHV0ZV9k' + - 'YXRhX3NpemUoY2VsbCBjLCBpbnQgbWF4X2NlbGxzKSBpbXB1cmUgYXNtICJDREFUQVNJWkUiOwoKOzs7IFNpbWlsYXIgdG8gW2NvbXB1dGVfZGF0YV9zaXplP10sIGJ1' + - 'dCBhY2NlcHRpbmcgYSBgc2xpY2VgIFtzXSBpbnN0ZWFkIG9mIGEgYGNlbGxgLgo7OzsgVGhlIHJldHVybmVkIHZhbHVlIG9mIGB4YCBkb2VzIG5vdCB0YWtlIGludG8g' + - 'YWNjb3VudCB0aGUgY2VsbCB0aGF0IGNvbnRhaW5zIHRoZSBgc2xpY2VgIFtzXSBpdHNlbGY7Cjs7OyBob3dldmVyLCB0aGUgZGF0YSBiaXRzIGFuZCB0aGUgY2VsbCBy' + - 'ZWZlcmVuY2VzIG9mIFtzXSBhcmUgYWNjb3VudGVkIGZvciBpbiBgeWAgYW5kIGB6YC4KKGludCwgaW50LCBpbnQpIHNsaWNlX2NvbXB1dGVfZGF0YV9zaXplKHNsaWNl' + - 'IHMsIGludCBtYXhfY2VsbHMpIGltcHVyZSBhc20gIlNEQVRBU0laRSI7Cgo7OzsgQSBub24tcXVpZXQgdmVyc2lvbiBvZiBbY29tcHV0ZV9kYXRhX3NpemU/XSB0aGF0' + - 'IHRocm93cyBhIGNlbGwgb3ZlcmZsb3cgZXhjZXB0aW9uIChgOGApIG9uIGZhaWx1cmUuCihpbnQsIGludCwgaW50LCBpbnQpIGNvbXB1dGVfZGF0YV9zaXplPyhjZWxs' + - 'IGMsIGludCBtYXhfY2VsbHMpIGFzbSAiQ0RBVEFTSVpFUSBOVUxMU1dBUElGTk9UMiBOVUxMU1dBUElGTk9UIjsKCjs7OyBBIG5vbi1xdWlldCB2ZXJzaW9uIG9mIFtz' + - 'bGljZV9jb21wdXRlX2RhdGFfc2l6ZT9dIHRoYXQgdGhyb3dzIGEgY2VsbCBvdmVyZmxvdyBleGNlcHRpb24gKDgpIG9uIGZhaWx1cmUuCihpbnQsIGludCwgaW50LCBp' + - 'bnQpIHNsaWNlX2NvbXB1dGVfZGF0YV9zaXplPyhjZWxsIGMsIGludCBtYXhfY2VsbHMpIGFzbSAiU0RBVEFTSVpFUSBOVUxMU1dBUElGTk9UMiBOVUxMU1dBUElGTk9U' + - 'IjsKCjs7OyBUaHJvd3MgYW4gZXhjZXB0aW9uIHdpdGggZXhpdF9jb2RlIGV4Y25vIGlmIGNvbmQgaXMgbm90IDAgKGNvbW1lbnRlZCBzaW5jZSBpbXBsZW1lbnRlZCBp' + - 'biBjb21waWxhdG9yKQo7OyAoKSB0aHJvd19pZihpbnQgZXhjbm8sIGludCBjb25kKSBpbXB1cmUgYXNtICJUSFJPV0FSR0lGIjsKCnstLQogICMgRGVidWcgcHJpbWl0' + - 'aXZlcwogIE9ubHkgd29ya3MgZm9yIGxvY2FsIFRWTSBleGVjdXRpb24gd2l0aCBkZWJ1ZyBsZXZlbCB2ZXJib3NpdHkKLX0KOzs7IER1bXBzIHRoZSBzdGFjayAoYXQg' + - 'bW9zdCB0aGUgdG9wIDI1NSB2YWx1ZXMpIGFuZCBzaG93cyB0aGUgdG90YWwgc3RhY2sgZGVwdGguCigpIGR1bXBfc3RhY2soKSBpbXB1cmUgYXNtICJEVU1QU1RLIjsK' + - 'CnstCiAgIyBQZXJzaXN0ZW50IHN0b3JhZ2Ugc2F2ZSBhbmQgbG9hZAotfQoKOzs7IFJldHVybnMgdGhlIHBlcnNpc3RlbnQgY29udHJhY3Qgc3RvcmFnZSBjZWxsLiBJ' + - 'dCBjYW4gYmUgcGFyc2VkIG9yIG1vZGlmaWVkIHdpdGggc2xpY2UgYW5kIGJ1aWxkZXIgcHJpbWl0aXZlcyBsYXRlci4KY2VsbCBnZXRfZGF0YSgpIGFzbSAiYzQgUFVT' + - 'SCI7Cgo7OzsgU2V0cyBgY2VsbGAgW2NdIGFzIHBlcnNpc3RlbnQgY29udHJhY3QgZGF0YS4gWW91IGNhbiB1cGRhdGUgcGVyc2lzdGVudCBjb250cmFjdCBzdG9yYWdl' + - 'IHdpdGggdGhpcyBwcmltaXRpdmUuCigpIHNldF9kYXRhKGNlbGwgYykgaW1wdXJlIGFzbSAiYzQgUE9QIjsKCnstCiAgIyBDb250aW51YXRpb24gcHJpbWl0aXZlcwot' + - 'fQo7OzsgVXN1YWxseSBgYzNgIGhhcyBhIGNvbnRpbnVhdGlvbiBpbml0aWFsaXplZCBieSB0aGUgd2hvbGUgY29kZSBvZiB0aGUgY29udHJhY3QuIEl0IGlzIHVzZWQg' + - 'Zm9yIGZ1bmN0aW9uIGNhbGxzLgo7OzsgVGhlIHByaW1pdGl2ZSByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIGBjM2AuCmNvbnQgZ2V0X2MzKCkgaW1wdXJlIGFz' + - 'bSAiYzMgUFVTSCI7Cgo7OzsgVXBkYXRlcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBgYzNgLiBVc3VhbGx5LCBpdCBpcyB1c2VkIGZvciB1cGRhdGluZyBzbWFydCBjb250' + - 'cmFjdCBjb2RlIGluIHJ1bi10aW1lLgo7OzsgTm90ZSB0aGF0IGFmdGVyIGV4ZWN1dGlvbiBvZiB0aGlzIHByaW1pdGl2ZSB0aGUgY3VycmVudCBjb2RlCjs7OyAoYW5k' + - 'IHRoZSBzdGFjayBvZiByZWN1cnNpdmUgZnVuY3Rpb24gY2FsbHMpIHdvbid0IGNoYW5nZSwKOzs7IGJ1dCBhbnkgb3RoZXIgZnVuY3Rpb24gY2FsbCB3aWxsIHVzZSBh' + - 'IGZ1bmN0aW9uIGZyb20gdGhlIG5ldyBjb2RlLgooKSBzZXRfYzMoY29udCBjKSBpbXB1cmUgYXNtICJjMyBQT1AiOwoKOzs7IFRyYW5zZm9ybXMgYSBgc2xpY2VgIFtz' + - 'XSBpbnRvIGEgc2ltcGxlIG9yZGluYXJ5IGNvbnRpbnVhdGlvbiBgY2AsIHdpdGggYGMuY29kZSA9IHNgIGFuZCBhbiBlbXB0eSBzdGFjayBhbmQgc2F2ZWxpc3QuCmNv' + - 'bnQgYmxlc3Moc2xpY2UgcykgaW1wdXJlIGFzbSAiQkxFU1MiOwoKey0tLQogICMgR2FzIHJlbGF0ZWQgcHJpbWl0aXZlcwotfQoKOzs7IFNldHMgY3VycmVudCBnYXMg' + - 'bGltaXQgYGdsYCB0byBpdHMgbWF4aW1hbCBhbGxvd2VkIHZhbHVlIGBnbWAsIGFuZCByZXNldHMgdGhlIGdhcyBjcmVkaXQgYGdjYCB0byB6ZXJvLAo7OzsgZGVjcmVh' + - 'c2luZyB0aGUgdmFsdWUgb2YgYGdyYCBieSBgZ2NgIGluIHRoZSBwcm9jZXNzLgo7OzsgSW4gb3RoZXIgd29yZHMsIHRoZSBjdXJyZW50IHNtYXJ0IGNvbnRyYWN0IGFn' + - 'cmVlcyB0byBidXkgc29tZSBnYXMgdG8gZmluaXNoIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uLgo7OzsgVGhpcyBhY3Rpb24gaXMgcmVxdWlyZWQgdG8gcHJvY2VzcyBl' + - 'eHRlcm5hbCBtZXNzYWdlcywgd2hpY2ggYnJpbmcgbm8gdmFsdWUgKGhlbmNlIG5vIGdhcykgd2l0aCB0aGVtc2VsdmVzLgo7OzsKOzs7IEZvciBtb3JlIGRldGFpbHMg' + - 'Y2hlY2sgW2FjY2VwdF9tZXNzYWdlIGVmZmVjdHNdKGh0dHBzOi8vdG9uLm9yZy9kb2NzLyMvc21hcnQtY29udHJhY3RzL2FjY2VwdCkuCigpIGFjY2VwdF9tZXNzYWdl' + - 'KCkgaW1wdXJlIGFzbSAiQUNDRVBUIjsKCjs7OyBTZXRzIGN1cnJlbnQgZ2FzIGxpbWl0IGBnbGAgdG8gdGhlIG1pbmltdW0gb2YgbGltaXQgYW5kIGBnbWAsIGFuZCBy' + - 'ZXNldHMgdGhlIGdhcyBjcmVkaXQgYGdjYCB0byB6ZXJvLgo7OzsgSWYgdGhlIGdhcyBjb25zdW1lZCBzbyBmYXIgKGluY2x1ZGluZyB0aGUgcHJlc2VudCBpbnN0cnVj' + - 'dGlvbikgZXhjZWVkcyB0aGUgcmVzdWx0aW5nIHZhbHVlIG9mIGBnbGAsCjs7OyBhbiAodW5oYW5kbGVkKSBvdXQgb2YgZ2FzIGV4Y2VwdGlvbiBpcyB0aHJvd24gYmVm' + - 'b3JlIHNldHRpbmcgbmV3IGdhcyBsaW1pdHMuCjs7OyBOb3RpY2UgdGhhdCBbc2V0X2dhc19saW1pdF0gd2l0aCBhbiBhcmd1bWVudCBgbGltaXQg4omlIDJeNjMg4oiS' + - 'IDFgIGlzIGVxdWl2YWxlbnQgdG8gW2FjY2VwdF9tZXNzYWdlXS4KKCkgc2V0X2dhc19saW1pdChpbnQgbGltaXQpIGltcHVyZSBhc20gIlNFVEdBU0xJTUlUIjsKCjs7' + - 'OyBDb21taXRzIHRoZSBjdXJyZW50IHN0YXRlIG9mIHJlZ2lzdGVycyBgYzRgICjigJxwZXJzaXN0ZW50IGRhdGHigJ0pIGFuZCBgYzVgICjigJxhY3Rpb25z4oCdKQo7' + - 'Ozsgc28gdGhhdCB0aGUgY3VycmVudCBleGVjdXRpb24gaXMgY29uc2lkZXJlZCDigJxzdWNjZXNzZnVs4oCdIHdpdGggdGhlIHNhdmVkIHZhbHVlcyBldmVuIGlmIGFu' + - 'IGV4Y2VwdGlvbgo7OzsgaW4gQ29tcHV0YXRpb24gUGhhc2UgaXMgdGhyb3duIGxhdGVyLgooKSBjb21taXQoKSBpbXB1cmUgYXNtICJDT01NSVQiOwoKOzs7IE5vdCBp' + - 'bXBsZW1lbnRlZAo7OzsgQ29tcHV0ZXMgdGhlIGFtb3VudCBvZiBnYXMgdGhhdCBjYW4gYmUgYm91Z2h0IGZvciBgYW1vdW50YCBuYW5vVE9OcywKOzs7IGFuZCBzZXRz' + - 'IGBnbGAgYWNjb3JkaW5nbHkgaW4gdGhlIHNhbWUgd2F5IGFzIFtzZXRfZ2FzX2xpbWl0XS4KOzsoKSBidXlfZ2FzKGludCBhbW91bnQpIGltcHVyZSBhc20gIkJVWUdB' + - 'UyI7Cgo7OzsgQ29tcHV0ZXMgdGhlIG1pbmltdW0gb2YgdHdvIGludGVnZXJzIFt4XSBhbmQgW3ldLgppbnQgbWluKGludCB4LCBpbnQgeSkgYXNtICJNSU4iOwoKOzs7' + - 'IENvbXB1dGVzIHRoZSBtYXhpbXVtIG9mIHR3byBpbnRlZ2VycyBbeF0gYW5kIFt5XS4KaW50IG1heChpbnQgeCwgaW50IHkpIGFzbSAiTUFYIjsKCjs7OyBTb3J0cyB0' + - 'd28gaW50ZWdlcnMuCihpbnQsIGludCkgbWlubWF4KGludCB4LCBpbnQgeSkgYXNtICJNSU5NQVgiOwoKOzs7IENvbXB1dGVzIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiBh' + - 'biBpbnRlZ2VyIFt4XS4KaW50IGFicyhpbnQgeCkgYXNtICJBQlMiOwoKey0KICAjIFNsaWNlIHByaW1pdGl2ZXMKCiAgSXQgaXMgc2FpZCB0aGF0IGEgcHJpbWl0aXZl' + - 'IF9sb2Fkc18gc29tZSBkYXRhLAogIGlmIGl0IHJldHVybnMgdGhlIGRhdGEgYW5kIHRoZSByZW1haW5kZXIgb2YgdGhlIHNsaWNlCiAgKHNvIGl0IGNhbiBhbHNvIGJl' + - 'IHVzZWQgYXMgW21vZGlmeWluZyBtZXRob2RdKGh0dHBzOi8vdG9uLm9yZy9kb2NzLyMvZnVuYy9zdGF0ZW1lbnRzP2lkPW1vZGlmeWluZy1tZXRob2RzKSkuCgogIEl0' + - 'IGlzIHNhaWQgdGhhdCBhIHByaW1pdGl2ZSBfcHJlbG9hZHNfIHNvbWUgZGF0YSwgaWYgaXQgcmV0dXJucyBvbmx5IHRoZSBkYXRhCiAgKGl0IGNhbiBiZSB1c2VkIGFz' + - 'IFtub24tbW9kaWZ5aW5nIG1ldGhvZF0oaHR0cHM6Ly90b24ub3JnL2RvY3MvIy9mdW5jL3N0YXRlbWVudHM/aWQ9bm9uLW1vZGlmeWluZy1tZXRob2RzKSkuCgogIFVu' + - 'bGVzcyBvdGhlcndpc2Ugc3RhdGVkLCBsb2FkaW5nIGFuZCBwcmVsb2FkaW5nIHByaW1pdGl2ZXMgcmVhZCB0aGUgZGF0YSBmcm9tIGEgcHJlZml4IG9mIHRoZSBzbGlj' + - 'ZS4KLX0KCgo7OzsgQ29udmVydHMgYSBgY2VsbGAgW2NdIGludG8gYSBgc2xpY2VgLiBOb3RpY2UgdGhhdCBbY10gbXVzdCBiZSBlaXRoZXIgYW4gb3JkaW5hcnkgY2Vs' + - 'bCwKOzs7IG9yIGFuIGV4b3RpYyBjZWxsIChzZWUgW1RWTS5wZGZdKGh0dHBzOi8vdG9uLWJsb2NrY2hhaW4uZ2l0aHViLmlvL2RvY3MvdHZtLnBkZiksIDMuMS4yKQo7' + - 'Ozsgd2hpY2ggaXMgYXV0b21hdGljYWxseSBsb2FkZWQgdG8geWllbGQgYW4gb3JkaW5hcnkgY2VsbCBgYydgLCBjb252ZXJ0ZWQgaW50byBhIGBzbGljZWAgYWZ0ZXJ3' + - 'YXJkcy4Kc2xpY2UgYmVnaW5fcGFyc2UoY2VsbCBjKSBhc20gIkNUT1MiOwoKOzs7IENoZWNrcyBpZiBbc10gaXMgZW1wdHkuIElmIG5vdCwgdGhyb3dzIGFuIGV4Y2Vw' + - 'dGlvbi4KKCkgZW5kX3BhcnNlKHNsaWNlIHMpIGltcHVyZSBhc20gIkVORFMiOwoKOzs7IExvYWRzIHRoZSBmaXJzdCByZWZlcmVuY2UgZnJvbSB0aGUgc2xpY2UuCihz' + - 'bGljZSwgY2VsbCkgbG9hZF9yZWYoc2xpY2UgcykgYXNtKC0+IDEgMCkgIkxEUkVGIjsKCjs7OyBQcmVsb2FkcyB0aGUgZmlyc3QgcmVmZXJlbmNlIGZyb20gdGhlIHNs' + - 'aWNlLgpjZWxsIHByZWxvYWRfcmVmKHNsaWNlIHMpIGFzbSAiUExEUkVGIjsKCnstIEZ1bmN0aW9ucyBiZWxvdyBhcmUgY29tbWVudGVkIGJlY2F1c2UgYXJlIGltcGxl' + - 'bWVudGVkIG9uIGNvbXBpbGF0b3IgbGV2ZWwgZm9yIG9wdGltaXNhdGlvbiAtfQoKOzs7IExvYWRzIGEgc2lnbmVkIFtsZW5dLWJpdCBpbnRlZ2VyIGZyb20gYSBzbGlj' + - 'ZSBbc10uCjs7IChzbGljZSwgaW50KSB+bG9hZF9pbnQoc2xpY2UgcywgaW50IGxlbikgYXNtKHMgbGVuIC0+IDEgMCkgIkxESVgiOwoKOzs7IExvYWRzIGFuIHVuc2ln' + - 'bmVkIFtsZW5dLWJpdCBpbnRlZ2VyIGZyb20gYSBzbGljZSBbc10uCjs7IChzbGljZSwgaW50KSB+bG9hZF91aW50KHNsaWNlIHMsIGludCBsZW4pIGFzbSggLT4gMSAw' + - 'KSAiTERVWCI7Cgo7OzsgUHJlbG9hZHMgYSBzaWduZWQgW2xlbl0tYml0IGludGVnZXIgZnJvbSBhIHNsaWNlIFtzXS4KOzsgaW50IHByZWxvYWRfaW50KHNsaWNlIHMs' + - 'IGludCBsZW4pIGFzbSAiUExESVgiOwoKOzs7IFByZWxvYWRzIGFuIHVuc2lnbmVkIFtsZW5dLWJpdCBpbnRlZ2VyIGZyb20gYSBzbGljZSBbc10uCjs7IGludCBwcmVs' + - 'b2FkX3VpbnQoc2xpY2UgcywgaW50IGxlbikgYXNtICJQTERVWCI7Cgo7OzsgTG9hZHMgdGhlIGZpcnN0IGAwIOKJpCBsZW4g4omkIDEwMjNgIGJpdHMgZnJvbSBzbGlj' + - 'ZSBbc10gaW50byBhIHNlcGFyYXRlIGBzbGljZSBzJydgLgo7OyAoc2xpY2UsIHNsaWNlKSBsb2FkX2JpdHMoc2xpY2UgcywgaW50IGxlbikgYXNtKHMgbGVuIC0+IDEg' + - 'MCkgIkxEU0xJQ0VYIjsKCjs7OyBQcmVsb2FkcyB0aGUgZmlyc3QgYDAg4omkIGxlbiDiiaQgMTAyM2AgYml0cyBmcm9tIHNsaWNlIFtzXSBpbnRvIGEgc2VwYXJhdGUg' + - 'YHNsaWNlIHMnJ2AuCjs7IHNsaWNlIHByZWxvYWRfYml0cyhzbGljZSBzLCBpbnQgbGVuKSBhc20gIlBMRFNMSUNFWCI7Cgo7OzsgTG9hZHMgc2VyaWFsaXplZCBhbW91' + - 'bnQgb2YgVG9uQ29pbnMgKGFueSB1bnNpZ25lZCBpbnRlZ2VyIHVwIHRvIGAyXjEyMCAtIDFgKS4KKHNsaWNlLCBpbnQpIGxvYWRfZ3JhbXMoc2xpY2UgcykgYXNtKC0+' + - 'IDEgMCkgIkxER1JBTVMiOwooc2xpY2UsIGludCkgbG9hZF9jb2lucyhzbGljZSBzKSBhc20oLT4gMSAwKSAiTERWQVJVSU5UMTYiOwoKKHNsaWNlLCBpbnQpIGxvYWRf' + - 'dmFyaW50MTYoc2xpY2UgcykgYXNtKC0+IDEgMCkgIkxEVkFSSU5UMTYiOwooc2xpY2UsIGludCkgbG9hZF92YXJpbnQzMihzbGljZSBzKSBhc20oLT4gMSAwKSAiTERW' + - 'QVJJTlQzMiI7CihzbGljZSwgaW50KSBsb2FkX3ZhcnVpbnQxNihzbGljZSBzKSBhc20oLT4gMSAwKSAiTERWQVJVSU5UMTYiOwooc2xpY2UsIGludCkgbG9hZF92YXJ1' + - 'aW50MzIoc2xpY2UgcykgYXNtKC0+IDEgMCkgIkxEVkFSVUlOVDMyIjsKCjs7OyBSZXR1cm5zIGFsbCBidXQgdGhlIGZpcnN0IGAwIOKJpCBsZW4g4omkIDEwMjNgIGJp' + - 'dHMgb2YgYHNsaWNlYCBbc10uCnNsaWNlIHNraXBfYml0cyhzbGljZSBzLCBpbnQgbGVuKSBhc20gIlNEU0tJUEZJUlNUIjsKKHNsaWNlLCAoKSkgfnNraXBfYml0cyhz' + - 'bGljZSBzLCBpbnQgbGVuKSBhc20gIlNEU0tJUEZJUlNUIjsKCjs7OyBSZXR1cm5zIHRoZSBmaXJzdCBgMCDiiaQgbGVuIOKJpCAxMDIzYCBiaXRzIG9mIGBzbGljZWAg' + - 'W3NdLgpzbGljZSBmaXJzdF9iaXRzKHNsaWNlIHMsIGludCBsZW4pIGFzbSAiU0RDVVRGSVJTVCI7Cgo7OzsgUmV0dXJucyBhbGwgYnV0IHRoZSBsYXN0IGAwIOKJpCBs' + - 'ZW4g4omkIDEwMjNgIGJpdHMgb2YgYHNsaWNlYCBbc10uCnNsaWNlIHNraXBfbGFzdF9iaXRzKHNsaWNlIHMsIGludCBsZW4pIGFzbSAiU0RTS0lQTEFTVCI7CihzbGlj' + - 'ZSwgKCkpIH5za2lwX2xhc3RfYml0cyhzbGljZSBzLCBpbnQgbGVuKSBhc20gIlNEU0tJUExBU1QiOwoKOzs7IFJldHVybnMgdGhlIGxhc3QgYDAg4omkIGxlbiDiiaQg' + - 'MTAyM2AgYml0cyBvZiBgc2xpY2VgIFtzXS4Kc2xpY2Ugc2xpY2VfbGFzdChzbGljZSBzLCBpbnQgbGVuKSBhc20gIlNEQ1VUTEFTVCI7Cgo7OzsgTG9hZHMgYSBkaWN0' + - 'aW9uYXJ5IGBEYCAoSGFzaE1hcEUpIGZyb20gYHNsaWNlYCBbc10uCjs7OyAocmV0dXJucyBgbnVsbGAgaWYgYG5vdGhpbmdgIGNvbnN0cnVjdG9yIGlzIHVzZWQpLgoo' + - 'c2xpY2UsIGNlbGwpIGxvYWRfZGljdChzbGljZSBzKSBhc20oLT4gMSAwKSAiTERESUNUIjsKCjs7OyBQcmVsb2FkcyBhIGRpY3Rpb25hcnkgYERgIGZyb20gYHNsaWNl' + - 'YCBbc10uCmNlbGwgcHJlbG9hZF9kaWN0KHNsaWNlIHMpIGFzbSAiUExERElDVCI7Cgo7OzsgTG9hZHMgYSBkaWN0aW9uYXJ5IGFzIFtsb2FkX2RpY3RdLCBidXQgcmV0' + - 'dXJucyBvbmx5IHRoZSByZW1haW5kZXIgb2YgdGhlIHNsaWNlLgpzbGljZSBza2lwX2RpY3Qoc2xpY2UgcykgYXNtICJTS0lQRElDVCI7CihzbGljZSwgKCkpIH5za2lw' + - 'X2RpY3Qoc2xpY2UgcykgYXNtICJTS0lQRElDVCI7Cgo7OzsgTG9hZHMgKE1heWJlIF5DZWxsKSBmcm9tIGBzbGljZWAgW3NdLgo7OzsgSW4gb3RoZXIgd29yZHMgbG9h' + - 'ZHMgMSBiaXQgYW5kIGlmIGl0IGlzIHRydWUKOzs7IGxvYWRzIGZpcnN0IHJlZiBhbmQgcmV0dXJuIGl0IHdpdGggc2xpY2UgcmVtYWluZGVyCjs7OyBvdGhlcndpc2Ug' + - 'cmV0dXJucyBgbnVsbGAgYW5kIHNsaWNlIHJlbWFpbmRlcgooc2xpY2UsIGNlbGwpIGxvYWRfbWF5YmVfcmVmKHNsaWNlIHMpIGFzbSgtPiAxIDApICJMRE9QVFJFRiI7' + - 'Cgo7OzsgUHJlbG9hZHMgKE1heWJlIF5DZWxsKSBmcm9tIGBzbGljZWAgW3NdLgpjZWxsIHByZWxvYWRfbWF5YmVfcmVmKHNsaWNlIHMpIGFzbSAiUExET1BUUkVGIjsK' + - 'Cgo7OzsgUmV0dXJucyB0aGUgZGVwdGggb2YgYGNlbGxgIFtjXS4KOzs7IElmIFtjXSBoYXMgbm8gcmVmZXJlbmNlcywgdGhlbiByZXR1cm4gYDBgOwo7Ozsgb3RoZXJ3' + - 'aXNlIHRoZSByZXR1cm5lZCB2YWx1ZSBpcyBvbmUgcGx1cyB0aGUgbWF4aW11bSBvZiBkZXB0aHMgb2YgY2VsbHMgcmVmZXJyZWQgdG8gZnJvbSBbY10uCjs7OyBJZiBb' + - 'Y10gaXMgYSBgbnVsbGAgaW5zdGVhZCBvZiBhIGNlbGwsIHJldHVybnMgemVyby4KaW50IGNlbGxfZGVwdGgoY2VsbCBjKSBhc20gIkNERVBUSCI7CgoKey0KICAjIFNs' + - 'aWNlIHNpemUgcHJpbWl0aXZlcwotfQoKOzs7IFJldHVybnMgdGhlIG51bWJlciBvZiByZWZlcmVuY2VzIGluIGBzbGljZWAgW3NdLgppbnQgc2xpY2VfcmVmcyhzbGlj' + - 'ZSBzKSBhc20gIlNSRUZTIjsKCjs7OyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZGF0YSBiaXRzIGluIGBzbGljZWAgW3NdLgppbnQgc2xpY2VfYml0cyhzbGljZSBzKSBh' + - 'c20gIlNCSVRTIjsKCjs7OyBSZXR1cm5zIGJvdGggdGhlIG51bWJlciBvZiBkYXRhIGJpdHMgYW5kIHRoZSBudW1iZXIgb2YgcmVmZXJlbmNlcyBpbiBgc2xpY2VgIFtz' + - 'XS4KKGludCwgaW50KSBzbGljZV9iaXRzX3JlZnMoc2xpY2UgcykgYXNtICJTQklUUkVGUyI7Cgo7OzsgQ2hlY2tzIHdoZXRoZXIgYSBgc2xpY2VgIFtzXSBpcyBlbXB0' + - 'eSAoaS5lLiwgY29udGFpbnMgbm8gYml0cyBvZiBkYXRhIGFuZCBubyBjZWxsIHJlZmVyZW5jZXMpLgppbnQgc2xpY2VfZW1wdHk/KHNsaWNlIHMpIGFzbSAiU0VNUFRZ' + - 'IjsKCjs7OyBDaGVja3Mgd2hldGhlciBgc2xpY2VgIFtzXSBoYXMgbm8gYml0cyBvZiBkYXRhLgppbnQgc2xpY2VfZGF0YV9lbXB0eT8oc2xpY2UgcykgYXNtICJTREVN' + - 'UFRZIjsKCjs7OyBDaGVja3Mgd2hldGhlciBgc2xpY2VgIFtzXSBoYXMgbm8gcmVmZXJlbmNlcy4KaW50IHNsaWNlX3JlZnNfZW1wdHk/KHNsaWNlIHMpIGFzbSAiU1JF' + - 'TVBUWSI7Cgo7OzsgUmV0dXJucyB0aGUgZGVwdGggb2YgYHNsaWNlYCBbc10uCjs7OyBJZiBbc10gaGFzIG5vIHJlZmVyZW5jZXMsIHRoZW4gcmV0dXJucyBgMGA7Cjs7' + - 'OyBvdGhlcndpc2UgdGhlIHJldHVybmVkIHZhbHVlIGlzIG9uZSBwbHVzIHRoZSBtYXhpbXVtIG9mIGRlcHRocyBvZiBjZWxscyByZWZlcnJlZCB0byBmcm9tIFtzXS4K' + - 'aW50IHNsaWNlX2RlcHRoKHNsaWNlIHMpIGFzbSAiU0RFUFRIIjsKCnstCiAgIyBCdWlsZGVyIHNpemUgcHJpbWl0aXZlcwotfQoKOzs7IFJldHVybnMgdGhlIG51bWJl' + - 'ciBvZiBjZWxsIHJlZmVyZW5jZXMgYWxyZWFkeSBzdG9yZWQgaW4gYGJ1aWxkZXJgIFtiXQppbnQgYnVpbGRlcl9yZWZzKGJ1aWxkZXIgYikgYXNtICJCUkVGUyI7Cgo7' + - 'OzsgUmV0dXJucyB0aGUgbnVtYmVyIG9mIGRhdGEgYml0cyBhbHJlYWR5IHN0b3JlZCBpbiBgYnVpbGRlcmAgW2JdLgppbnQgYnVpbGRlcl9iaXRzKGJ1aWxkZXIgYikg' + - 'YXNtICJCQklUUyI7Cgo7OzsgUmV0dXJucyB0aGUgZGVwdGggb2YgYGJ1aWxkZXJgIFtiXS4KOzs7IElmIG5vIGNlbGwgcmVmZXJlbmNlcyBhcmUgc3RvcmVkIGluIFti' + - 'XSwgdGhlbiByZXR1cm5zIDA7Cjs7OyBvdGhlcndpc2UgdGhlIHJldHVybmVkIHZhbHVlIGlzIG9uZSBwbHVzIHRoZSBtYXhpbXVtIG9mIGRlcHRocyBvZiBjZWxscyBy' + - 'ZWZlcnJlZCB0byBmcm9tIFtiXS4KaW50IGJ1aWxkZXJfZGVwdGgoYnVpbGRlciBiKSBhc20gIkJERVBUSCI7Cgp7LQogICMgQnVpbGRlciBwcmltaXRpdmVzCiAgSXQg' + - 'aXMgc2FpZCB0aGF0IGEgcHJpbWl0aXZlIF9zdG9yZXNfIGEgdmFsdWUgYHhgIGludG8gYSBidWlsZGVyIGBiYAogIGlmIGl0IHJldHVybnMgYSBtb2RpZmllZCB2ZXJz' + - 'aW9uIG9mIHRoZSBidWlsZGVyIGBiJ2Agd2l0aCB0aGUgdmFsdWUgYHhgIHN0b3JlZCBhdCB0aGUgZW5kIG9mIGl0LgogIEl0IGNhbiBiZSB1c2VkIGFzIFtub24tbW9k' + - 'aWZ5aW5nIG1ldGhvZF0oaHR0cHM6Ly90b24ub3JnL2RvY3MvIy9mdW5jL3N0YXRlbWVudHM/aWQ9bm9uLW1vZGlmeWluZy1tZXRob2RzKS4KCiAgQWxsIHRoZSBwcmlt' + - 'aXRpdmVzIGJlbG93IGZpcnN0IGNoZWNrIHdoZXRoZXIgdGhlcmUgaXMgZW5vdWdoIHNwYWNlIGluIHRoZSBgYnVpbGRlcmAsCiAgYW5kIG9ubHkgdGhlbiBjaGVjayB0' + - 'aGUgcmFuZ2Ugb2YgdGhlIHZhbHVlIGJlaW5nIHNlcmlhbGl6ZWQuCi19Cgo7OzsgQ3JlYXRlcyBhIG5ldyBlbXB0eSBgYnVpbGRlcmAuCmJ1aWxkZXIgYmVnaW5fY2Vs' + - 'bCgpIGFzbSAiTkVXQyI7Cgo7OzsgQ29udmVydHMgYSBgYnVpbGRlcmAgaW50byBhbiBvcmRpbmFyeSBgY2VsbGAuCmNlbGwgZW5kX2NlbGwoYnVpbGRlciBiKSBhc20g' + - 'IkVOREMiOwoKOzs7IFN0b3JlcyBhIHJlZmVyZW5jZSB0byBgY2VsbGAgW2NdIGludG8gYGJ1aWxkZXJgIFtiXS4KYnVpbGRlciBzdG9yZV9yZWYoYnVpbGRlciBiLCBj' + - 'ZWxsIGMpIGFzbShjIGIpICJTVFJFRiI7Cgo7OzsgU3RvcmVzIGFuIHVuc2lnbmVkIFtsZW5dLWJpdCBpbnRlZ2VyIGB4YCBpbnRvIGBiYCBmb3IgYDAg4omkIGxlbiDi' + - 'iaQgMjU2YC4KOzsgYnVpbGRlciBzdG9yZV91aW50KGJ1aWxkZXIgYiwgaW50IHgsIGludCBsZW4pIGFzbSh4IGIgbGVuKSAiU1RVWCI7Cgo7OzsgU3RvcmVzIGEgc2ln' + - 'bmVkIFtsZW5dLWJpdCBpbnRlZ2VyIGB4YCBpbnRvIGBiYCBmb3JgIDAg4omkIGxlbiDiiaQgMjU3YC4KOzsgYnVpbGRlciBzdG9yZV9pbnQoYnVpbGRlciBiLCBpbnQg' + - 'eCwgaW50IGxlbikgYXNtKHggYiBsZW4pICJTVElYIjsKCgo7OzsgU3RvcmVzIGBzbGljZWAgW3NdIGludG8gYGJ1aWxkZXJgIFtiXQpidWlsZGVyIHN0b3JlX3NsaWNl' + - 'KGJ1aWxkZXIgYiwgc2xpY2UgcykgYXNtICJTVFNMSUNFUiI7Cgo7OzsgU3RvcmVzIChzZXJpYWxpemVzKSBhbiBpbnRlZ2VyIFt4XSBpbiB0aGUgcmFuZ2UgYDAuLjJe' + - 'MTIwIOKIkiAxYCBpbnRvIGBidWlsZGVyYCBbYl0uCjs7OyBUaGUgc2VyaWFsaXphdGlvbiBvZiBbeF0gY29uc2lzdHMgb2YgYSA0LWJpdCB1bnNpZ25lZCBiaWctZW5k' + - 'aWFuIGludGVnZXIgYGxgLAo7Ozsgd2hpY2ggaXMgdGhlIHNtYWxsZXN0IGludGVnZXIgYGwg4omlIDBgLCBzdWNoIHRoYXQgYHggPCAyXjhsYCwKOzs7IGZvbGxvd2Vk' + - 'IGJ5IGFuIGA4bGAtYml0IHVuc2lnbmVkIGJpZy1lbmRpYW4gcmVwcmVzZW50YXRpb24gb2YgW3hdLgo7OzsgSWYgW3hdIGRvZXMgbm90IGJlbG9uZyB0byB0aGUgc3Vw' + - 'cG9ydGVkIHJhbmdlLCBhIHJhbmdlIGNoZWNrIGV4Y2VwdGlvbiBpcyB0aHJvd24uCjs7Owo7OzsgU3RvcmUgYW1vdW50cyBvZiBUb25Db2lucyB0byB0aGUgYnVpbGRl' + - 'ciBhcyBWYXJVSW50ZWdlciAxNgpidWlsZGVyIHN0b3JlX2dyYW1zKGJ1aWxkZXIgYiwgaW50IHgpIGFzbSAiU1RHUkFNUyI7CmJ1aWxkZXIgc3RvcmVfY29pbnMoYnVp' + - 'bGRlciBiLCBpbnQgeCkgYXNtICJTVFZBUlVJTlQxNiI7CgpidWlsZGVyIHN0b3JlX3ZhcmludDE2KGJ1aWxkZXIgYiwgaW50IHgpIGFzbSAiU1RWQVJJTlQxNiI7CmJ1' + - 'aWxkZXIgc3RvcmVfdmFyaW50MzIoYnVpbGRlciBiLCBpbnQgeCkgYXNtICJTVFZBUklOVDMyIjsKYnVpbGRlciBzdG9yZV92YXJ1aW50MTYoYnVpbGRlciBiLCBpbnQg' + - 'eCkgYXNtICJTVFZBUlVJTlQxNiI7CmJ1aWxkZXIgc3RvcmVfdmFydWludDMyKGJ1aWxkZXIgYiwgaW50IHgpIGFzbSAiU1RWQVJVSU5UMzIiOwoKOzs7IFN0b3JlcyBk' + - 'aWN0aW9uYXJ5IGBEYCByZXByZXNlbnRlZCBieSBgY2VsbGAgW2NdIG9yIGBudWxsYCBpbnRvIGBidWlsZGVyYCBbYl0uCjs7OyBJbiBvdGhlciB3b3Jkcywgc3RvcmVz' + - 'IGEgYDFgLWJpdCBhbmQgYSByZWZlcmVuY2UgdG8gW2NdIGlmIFtjXSBpcyBub3QgYG51bGxgIGFuZCBgMGAtYml0IG90aGVyd2lzZS4KYnVpbGRlciBzdG9yZV9kaWN0' + - 'KGJ1aWxkZXIgYiwgY2VsbCBjKSBhc20oYyBiKSAiU1RESUNUIjsKCjs7OyBTdG9yZXMgKE1heWJlIF5DZWxsKSB0byBidWlsZGVyOgo7OzsgaWYgY2VsbCBpcyBudWxs' + - 'IHN0b3JlIDEgemVybyBiaXQKOzs7IG90aGVyd2lzZSBzdG9yZSAxIHRydWUgYml0IGFuZCByZWYgdG8gY2VsbApidWlsZGVyIHN0b3JlX21heWJlX3JlZihidWlsZGVy' + - 'IGIsIGNlbGwgYykgYXNtKGMgYikgIlNUT1BUUkVGIjsKCgp7LQogICMgQWRkcmVzcyBtYW5pcHVsYXRpb24gcHJpbWl0aXZlcwogIFRoZSBhZGRyZXNzIG1hbmlwdWxh' + - 'dGlvbiBwcmltaXRpdmVzIGxpc3RlZCBiZWxvdyBzZXJpYWxpemUgYW5kIGRlc2VyaWFsaXplIHZhbHVlcyBhY2NvcmRpbmcgdG8gdGhlIGZvbGxvd2luZyBUTC1CIHNj' + - 'aGVtZToKICBgYGBUTC1CCiAgYWRkcl9ub25lJDAwID0gTXNnQWRkcmVzc0V4dDsKICBhZGRyX2V4dGVybiQwMSBsZW46KCMjIDgpIGV4dGVybmFsX2FkZHJlc3M6KGJp' + - 'dHMgbGVuKQogICAgICAgICAgICAgICA9IE1zZ0FkZHJlc3NFeHQ7CiAgYW55Y2FzdF9pbmZvJF8gZGVwdGg6KCM8PSAzMCkgeyBkZXB0aCA+PSAxIH0KICAgIHJld3Jp' + - 'dGVfcGZ4OihiaXRzIGRlcHRoKSA9IEFueWNhc3Q7CiAgYWRkcl9zdGQkMTAgYW55Y2FzdDooTWF5YmUgQW55Y2FzdCkKICAgIHdvcmtjaGFpbl9pZDppbnQ4IGFkZHJl' + - 'c3M6Yml0czI1NiA9IE1zZ0FkZHJlc3NJbnQ7CiAgYWRkcl92YXIkMTEgYW55Y2FzdDooTWF5YmUgQW55Y2FzdCkgYWRkcl9sZW46KCMjIDkpCiAgICB3b3JrY2hhaW5f' + - 'aWQ6aW50MzIgYWRkcmVzczooYml0cyBhZGRyX2xlbikgPSBNc2dBZGRyZXNzSW50OwogIF8gXzpNc2dBZGRyZXNzSW50ID0gTXNnQWRkcmVzczsKICBfIF86TXNnQWRk' + - 'cmVzc0V4dCA9IE1zZ0FkZHJlc3M7CgogIGludF9tc2dfaW5mbyQwIGlocl9kaXNhYmxlZDpCb29sIGJvdW5jZTpCb29sIGJvdW5jZWQ6Qm9vbAogICAgc3JjOk1zZ0Fk' + - 'ZHJlc3MgZGVzdDpNc2dBZGRyZXNzSW50CiAgICB2YWx1ZTpDdXJyZW5jeUNvbGxlY3Rpb24gaWhyX2ZlZTpHcmFtcyBmd2RfZmVlOkdyYW1zCiAgICBjcmVhdGVkX2x0' + - 'OnVpbnQ2NCBjcmVhdGVkX2F0OnVpbnQzMiA9IENvbW1vbk1zZ0luZm9SZWxheGVkOwogIGV4dF9vdXRfbXNnX2luZm8kMTEgc3JjOk1zZ0FkZHJlc3MgZGVzdDpNc2dB' + - 'ZGRyZXNzRXh0CiAgICBjcmVhdGVkX2x0OnVpbnQ2NCBjcmVhdGVkX2F0OnVpbnQzMiA9IENvbW1vbk1zZ0luZm9SZWxheGVkOwogIGBgYAogIEEgZGVzZXJpYWxpemVk' + - 'IGBNc2dBZGRyZXNzYCBpcyByZXByZXNlbnRlZCBieSBhIHR1cGxlIGB0YCBhcyBmb2xsb3dzOgoKICAtIGBhZGRyX25vbmVgIGlzIHJlcHJlc2VudGVkIGJ5IGB0ID0g' + - 'KDApYCwKICAgIGkuZS4sIGEgdHVwbGUgY29udGFpbmluZyBleGFjdGx5IG9uZSBpbnRlZ2VyIGVxdWFsIHRvIHplcm8uCiAgLSBgYWRkcl9leHRlcm5gIGlzIHJlcHJl' + - 'c2VudGVkIGJ5IGB0ID0gKDEsIHMpYCwKICAgIHdoZXJlIHNsaWNlIGBzYCBjb250YWlucyB0aGUgZmllbGQgYGV4dGVybmFsX2FkZHJlc3NgLiBJbiBvdGhlciB3b3Jk' + - 'cywgYAogICAgdGAgaXMgYSBwYWlyIChhIHR1cGxlIGNvbnNpc3Rpbmcgb2YgdHdvIGVudHJpZXMpLCBjb250YWluaW5nIGFuIGludGVnZXIgZXF1YWwgdG8gb25lIGFu' + - 'ZCBzbGljZSBgc2AuCiAgLSBgYWRkcl9zdGRgIGlzIHJlcHJlc2VudGVkIGJ5IGB0ID0gKDIsIHUsIHgsIHMpYCwKICAgIHdoZXJlIGB1YCBpcyBlaXRoZXIgYSBgbnVs' + - 'bGAgKGlmIGBhbnljYXN0YCBpcyBhYnNlbnQpIG9yIGEgc2xpY2UgYHMnYCBjb250YWluaW5nIGByZXdyaXRlX3BmeGAgKGlmIGFueWNhc3QgaXMgcHJlc2VudCkuCiAg' + - 'ICBOZXh0LCBpbnRlZ2VyIGB4YCBpcyB0aGUgYHdvcmtjaGFpbl9pZGAsIGFuZCBzbGljZSBgc2AgY29udGFpbnMgdGhlIGFkZHJlc3MuCiAgLSBgYWRkcl92YXJgIGlz' + - 'IHJlcHJlc2VudGVkIGJ5IGB0ID0gKDMsIHUsIHgsIHMpYCwKICAgIHdoZXJlIGB1YCwgYHhgLCBhbmQgYHNgIGhhdmUgdGhlIHNhbWUgbWVhbmluZyBhcyBmb3IgYGFk' + - 'ZHJfc3RkYC4KLX0KCjs7OyBMb2FkcyBmcm9tIHNsaWNlIFtzXSB0aGUgb25seSBwcmVmaXggdGhhdCBpcyBhIHZhbGlkIGBNc2dBZGRyZXNzYCwKOzs7IGFuZCByZXR1' + - 'cm5zIGJvdGggdGhpcyBwcmVmaXggYHMnYCBhbmQgdGhlIHJlbWFpbmRlciBgcycnYCBvZiBbc10gYXMgc2xpY2VzLgooc2xpY2UsIHNsaWNlKSBsb2FkX21zZ19hZGRy' + - 'KHNsaWNlIHMpIGFzbSgtPiAxIDApICJMRE1TR0FERFIiOwoKOzs7IERlY29tcG9zZXMgc2xpY2UgW3NdIGNvbnRhaW5pbmcgYSB2YWxpZCBgTXNnQWRkcmVzc2AgaW50' + - 'byBhIGB0dXBsZSB0YCB3aXRoIHNlcGFyYXRlIGZpZWxkcyBvZiB0aGlzIGBNc2dBZGRyZXNzYC4KOzs7IElmIFtzXSBpcyBub3QgYSB2YWxpZCBgTXNnQWRkcmVzc2As' + - 'IGEgY2VsbCBkZXNlcmlhbGl6YXRpb24gZXhjZXB0aW9uIGlzIHRocm93bi4KdHVwbGUgcGFyc2VfYWRkcihzbGljZSBzKSBhc20gIlBBUlNFTVNHQUREUiI7Cgo7Ozsg' + - 'UGFyc2VzIHNsaWNlIFtzXSBjb250YWluaW5nIGEgdmFsaWQgYE1zZ0FkZHJlc3NJbnRgICh1c3VhbGx5IGEgYG1zZ19hZGRyX3N0ZGApLAo7OzsgYXBwbGllcyByZXdy' + - 'aXRpbmcgZnJvbSB0aGUgYW55Y2FzdCAoaWYgcHJlc2VudCkgdG8gdGhlIHNhbWUtbGVuZ3RoIHByZWZpeCBvZiB0aGUgYWRkcmVzcywKOzs7IGFuZCByZXR1cm5zIGJv' + - 'dGggdGhlIHdvcmtjaGFpbiBhbmQgdGhlIDI1Ni1iaXQgYWRkcmVzcyBhcyBpbnRlZ2Vycy4KOzs7IElmIHRoZSBhZGRyZXNzIGlzIG5vdCAyNTYtYml0LCBvciBpZiBb' + - 'c10gaXMgbm90IGEgdmFsaWQgc2VyaWFsaXphdGlvbiBvZiBgTXNnQWRkcmVzc0ludGAsCjs7OyB0aHJvd3MgYSBjZWxsIGRlc2VyaWFsaXphdGlvbiBleGNlcHRpb24u' + - 'CihpbnQsIGludCkgcGFyc2Vfc3RkX2FkZHIoc2xpY2UgcykgYXNtICJSRVdSSVRFU1REQUREUiI7Cgo7OzsgQSB2YXJpYW50IG9mIFtwYXJzZV9zdGRfYWRkcl0gdGhh' + - 'dCByZXR1cm5zIHRoZSAocmV3cml0dGVuKSBhZGRyZXNzIGFzIGEgc2xpY2UgW3NdLAo7OzsgZXZlbiBpZiBpdCBpcyBub3QgZXhhY3RseSAyNTYgYml0IGxvbmcgKHJl' + - 'cHJlc2VudGVkIGJ5IGEgYG1zZ19hZGRyX3ZhcmApLgooaW50LCBzbGljZSkgcGFyc2VfdmFyX2FkZHIoc2xpY2UgcykgYXNtICJSRVdSSVRFVkFSQUREUiI7Cgp7LQog' + - 'ICMgRGljdGlvbmFyeSBwcmltaXRpdmVzCi19CgoKOzs7IFNldHMgdGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCBba2V5X2xlbl0tYml0IGtleSBzaWduZWQgaW5kZXgg' + - 'aW4gZGljdGlvbmFyeSBbZGljdF0gdG8gW3ZhbHVlXSAoY2VsbCksCjs7OyBhbmQgcmV0dXJucyB0aGUgcmVzdWx0aW5nIGRpY3Rpb25hcnkuCmNlbGwgaWRpY3Rfc2V0' + - 'X3JlZihjZWxsIGRpY3QsIGludCBrZXlfbGVuLCBpbnQgaW5kZXgsIGNlbGwgdmFsdWUpIGFzbSh2YWx1ZSBpbmRleCBkaWN0IGtleV9sZW4pICJESUNUSVNFVFJFRiI7' + - 'CihjZWxsLCAoKSkgfmlkaWN0X3NldF9yZWYoY2VsbCBkaWN0LCBpbnQga2V5X2xlbiwgaW50IGluZGV4LCBjZWxsIHZhbHVlKSBhc20odmFsdWUgaW5kZXggZGljdCBr' + - 'ZXlfbGVuKSAiRElDVElTRVRSRUYiOwoKOzs7IFNldHMgdGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCBba2V5X2xlbl0tYml0IGtleSB1bnNpZ25lZCBpbmRleCBpbiBk' + - 'aWN0aW9uYXJ5IFtkaWN0XSB0byBbdmFsdWVdIChjZWxsKSwKOzs7IGFuZCByZXR1cm5zIHRoZSByZXN1bHRpbmcgZGljdGlvbmFyeS4KY2VsbCB1ZGljdF9zZXRfcmVm' + - 'KGNlbGwgZGljdCwgaW50IGtleV9sZW4sIGludCBpbmRleCwgY2VsbCB2YWx1ZSkgYXNtKHZhbHVlIGluZGV4IGRpY3Qga2V5X2xlbikgIkRJQ1RVU0VUUkVGIjsKKGNl' + - 'bGwsICgpKSB+dWRpY3Rfc2V0X3JlZihjZWxsIGRpY3QsIGludCBrZXlfbGVuLCBpbnQgaW5kZXgsIGNlbGwgdmFsdWUpIGFzbSh2YWx1ZSBpbmRleCBkaWN0IGtleV9s' + - 'ZW4pICJESUNUVVNFVFJFRiI7CgpjZWxsIGlkaWN0X2dldF9yZWYoY2VsbCBkaWN0LCBpbnQga2V5X2xlbiwgaW50IGluZGV4KSBhc20oaW5kZXggZGljdCBrZXlfbGVu' + - 'KSAiRElDVElHRVRPUFRSRUYiOwooY2VsbCwgaW50KSBpZGljdF9nZXRfcmVmPyhjZWxsIGRpY3QsIGludCBrZXlfbGVuLCBpbnQgaW5kZXgpIGFzbShpbmRleCBkaWN0' + - 'IGtleV9sZW4pICJESUNUSUdFVFJFRiIgIk5VTExTV0FQSUZOT1QiOwooY2VsbCwgaW50KSB1ZGljdF9nZXRfcmVmPyhjZWxsIGRpY3QsIGludCBrZXlfbGVuLCBpbnQg' + - 'aW5kZXgpIGFzbShpbmRleCBkaWN0IGtleV9sZW4pICJESUNUVUdFVFJFRiIgIk5VTExTV0FQSUZOT1QiOwooY2VsbCwgY2VsbCkgaWRpY3Rfc2V0X2dldF9yZWYoY2Vs' + - 'bCBkaWN0LCBpbnQga2V5X2xlbiwgaW50IGluZGV4LCBjZWxsIHZhbHVlKSBhc20odmFsdWUgaW5kZXggZGljdCBrZXlfbGVuKSAiRElDVElTRVRHRVRPUFRSRUYiOwoo' + - 'Y2VsbCwgY2VsbCkgdWRpY3Rfc2V0X2dldF9yZWYoY2VsbCBkaWN0LCBpbnQga2V5X2xlbiwgaW50IGluZGV4LCBjZWxsIHZhbHVlKSBhc20odmFsdWUgaW5kZXggZGlj' + - 'dCBrZXlfbGVuKSAiRElDVFVTRVRHRVRPUFRSRUYiOwooY2VsbCwgaW50KSBpZGljdF9kZWxldGU/KGNlbGwgZGljdCwgaW50IGtleV9sZW4sIGludCBpbmRleCkgYXNt' + - 'KGluZGV4IGRpY3Qga2V5X2xlbikgIkRJQ1RJREVMIjsKKGNlbGwsIGludCkgdWRpY3RfZGVsZXRlPyhjZWxsIGRpY3QsIGludCBrZXlfbGVuLCBpbnQgaW5kZXgpIGFz' + - 'bShpbmRleCBkaWN0IGtleV9sZW4pICJESUNUVURFTCI7CihzbGljZSwgaW50KSBpZGljdF9nZXQ/KGNlbGwgZGljdCwgaW50IGtleV9sZW4sIGludCBpbmRleCkgYXNt' + - 'KGluZGV4IGRpY3Qga2V5X2xlbikgIkRJQ1RJR0VUIiAiTlVMTFNXQVBJRk5PVCI7CihzbGljZSwgaW50KSB1ZGljdF9nZXQ/KGNlbGwgZGljdCwgaW50IGtleV9sZW4s' + - 'IGludCBpbmRleCkgYXNtKGluZGV4IGRpY3Qga2V5X2xlbikgIkRJQ1RVR0VUIiAiTlVMTFNXQVBJRk5PVCI7CihjZWxsLCBzbGljZSwgaW50KSBpZGljdF9kZWxldGVf' + - 'Z2V0PyhjZWxsIGRpY3QsIGludCBrZXlfbGVuLCBpbnQgaW5kZXgpIGFzbShpbmRleCBkaWN0IGtleV9sZW4pICJESUNUSURFTEdFVCIgIk5VTExTV0FQSUZOT1QiOwoo' + - 'Y2VsbCwgc2xpY2UsIGludCkgdWRpY3RfZGVsZXRlX2dldD8oY2VsbCBkaWN0LCBpbnQga2V5X2xlbiwgaW50IGluZGV4KSBhc20oaW5kZXggZGljdCBrZXlfbGVuKSAi' + - 'RElDVFVERUxHRVQiICJOVUxMU1dBUElGTk9UIjsKKGNlbGwsIChzbGljZSwgaW50KSkgfmlkaWN0X2RlbGV0ZV9nZXQ/KGNlbGwgZGljdCwgaW50IGtleV9sZW4sIGlu' + - 'dCBpbmRleCkgYXNtKGluZGV4IGRpY3Qga2V5X2xlbikgIkRJQ1RJREVMR0VUIiAiTlVMTFNXQVBJRk5PVCI7CihjZWxsLCAoc2xpY2UsIGludCkpIH51ZGljdF9kZWxl' + - 'dGVfZ2V0PyhjZWxsIGRpY3QsIGludCBrZXlfbGVuLCBpbnQgaW5kZXgpIGFzbShpbmRleCBkaWN0IGtleV9sZW4pICJESUNUVURFTEdFVCIgIk5VTExTV0FQSUZOT1Qi' + - 'OwooY2VsbCwgY2VsbCwgaW50KSBpZGljdF9kZWxldGVfZ2V0X3JlZj8oY2VsbCBkaWN0LCBpbnQga2V5X2xlbiwgaW50IGluZGV4KSBhc20oaW5kZXggZGljdCBrZXlf' + - 'bGVuKSAiRElDVElERUxHRVRSRUYiICJOVUxMU1dBUElGTk9UIjsKKGNlbGwsIGNlbGwsIGludCkgdWRpY3RfZGVsZXRlX2dldF9yZWY/KGNlbGwgZGljdCwgaW50IGtl' + - 'eV9sZW4sIGludCBpbmRleCkgYXNtKGluZGV4IGRpY3Qga2V5X2xlbikgIkRJQ1RVREVMR0VUUkVGIiAiTlVMTFNXQVBJRk5PVCI7CihjZWxsLCAoY2VsbCwgaW50KSkg' + - 'fmlkaWN0X2RlbGV0ZV9nZXRfcmVmPyhjZWxsIGRpY3QsIGludCBrZXlfbGVuLCBpbnQgaW5kZXgpIGFzbShpbmRleCBkaWN0IGtleV9sZW4pICJESUNUSURFTEdFVFJF' + - 'RiIgIk5VTExTV0FQSUZOT1QiOwooY2VsbCwgKGNlbGwsIGludCkpIH51ZGljdF9kZWxldGVfZ2V0X3JlZj8oY2VsbCBkaWN0LCBpbnQga2V5X2xlbiwgaW50IGluZGV4' + - 'KSBhc20oaW5kZXggZGljdCBrZXlfbGVuKSAiRElDVFVERUxHRVRSRUYiICJOVUxMU1dBUElGTk9UIjsKY2VsbCB1ZGljdF9zZXQoY2VsbCBkaWN0LCBpbnQga2V5X2xl' + - 'biwgaW50IGluZGV4LCBzbGljZSB2YWx1ZSkgYXNtKHZhbHVlIGluZGV4IGRpY3Qga2V5X2xlbikgIkRJQ1RVU0VUIjsKKGNlbGwsICgpKSB+dWRpY3Rfc2V0KGNlbGwg' + - 'ZGljdCwgaW50IGtleV9sZW4sIGludCBpbmRleCwgc2xpY2UgdmFsdWUpIGFzbSh2YWx1ZSBpbmRleCBkaWN0IGtleV9sZW4pICJESUNUVVNFVCI7CmNlbGwgaWRpY3Rf' + - 'c2V0KGNlbGwgZGljdCwgaW50IGtleV9sZW4sIGludCBpbmRleCwgc2xpY2UgdmFsdWUpIGFzbSh2YWx1ZSBpbmRleCBkaWN0IGtleV9sZW4pICJESUNUSVNFVCI7Cihj' + - 'ZWxsLCAoKSkgfmlkaWN0X3NldChjZWxsIGRpY3QsIGludCBrZXlfbGVuLCBpbnQgaW5kZXgsIHNsaWNlIHZhbHVlKSBhc20odmFsdWUgaW5kZXggZGljdCBrZXlfbGVu' + - 'KSAiRElDVElTRVQiOwpjZWxsIGRpY3Rfc2V0KGNlbGwgZGljdCwgaW50IGtleV9sZW4sIHNsaWNlIGluZGV4LCBzbGljZSB2YWx1ZSkgYXNtKHZhbHVlIGluZGV4IGRp' + - 'Y3Qga2V5X2xlbikgIkRJQ1RTRVQiOwooY2VsbCwgKCkpIH5kaWN0X3NldChjZWxsIGRpY3QsIGludCBrZXlfbGVuLCBzbGljZSBpbmRleCwgc2xpY2UgdmFsdWUpIGFz' + - 'bSh2YWx1ZSBpbmRleCBkaWN0IGtleV9sZW4pICJESUNUU0VUIjsKKGNlbGwsIGludCkgdWRpY3RfYWRkPyhjZWxsIGRpY3QsIGludCBrZXlfbGVuLCBpbnQgaW5kZXgs' + - 'IHNsaWNlIHZhbHVlKSBhc20odmFsdWUgaW5kZXggZGljdCBrZXlfbGVuKSAiRElDVFVBREQiOwooY2VsbCwgaW50KSB1ZGljdF9yZXBsYWNlPyhjZWxsIGRpY3QsIGlu' + - 'dCBrZXlfbGVuLCBpbnQgaW5kZXgsIHNsaWNlIHZhbHVlKSBhc20odmFsdWUgaW5kZXggZGljdCBrZXlfbGVuKSAiRElDVFVSRVBMQUNFIjsKKGNlbGwsIGludCkgdWRp' + - 'Y3RfcmVwbGFjZV9yZWY/KGNlbGwgZGljdCwgaW50IGtleV9sZW4sIGludCBpbmRleCwgY2VsbCB2YWx1ZSkgYXNtKHZhbHVlIGluZGV4IGRpY3Qga2V5X2xlbikgIkRJ' + - 'Q1RVUkVQTEFDRVJFRiI7CihjZWxsLCBzbGljZSwgaW50KSB1ZGljdF9yZXBsYWNlZ2V0PyhjZWxsIGRpY3QsIGludCBrZXlfbGVuLCBpbnQgaW5kZXgsIHNsaWNlIHZh' + - 'bHVlKSBhc20odmFsdWUgaW5kZXggZGljdCBrZXlfbGVuKSAiRElDVFVSRVBMQUNFR0VUIiAiTlVMTFNXQVBJRk5PVCI7CihjZWxsLCBjZWxsLCBpbnQpIHVkaWN0X3Jl' + - 'cGxhY2VnZXRfcmVmPyhjZWxsIGRpY3QsIGludCBrZXlfbGVuLCBpbnQgaW5kZXgsIGNlbGwgdmFsdWUpIGFzbSh2YWx1ZSBpbmRleCBkaWN0IGtleV9sZW4pICJESUNU' + - 'VVJFUExBQ0VHRVRSRUYiICJOVUxMU1dBUElGTk9UIjsKKGNlbGwsIChzbGljZSwgaW50KSkgfnVkaWN0X3JlcGxhY2VnZXQ/KGNlbGwgZGljdCwgaW50IGtleV9sZW4s' + - 'IGludCBpbmRleCwgc2xpY2UgdmFsdWUpIGFzbSh2YWx1ZSBpbmRleCBkaWN0IGtleV9sZW4pICJESUNUVVJFUExBQ0VHRVQiICJOVUxMU1dBUElGTk9UIjsKKGNlbGws' + - 'IChjZWxsLCBpbnQpKSB+dWRpY3RfcmVwbGFjZWdldF9yZWY/KGNlbGwgZGljdCwgaW50IGtleV9sZW4sIGludCBpbmRleCwgY2VsbCB2YWx1ZSkgYXNtKHZhbHVlIGlu' + - 'ZGV4IGRpY3Qga2V5X2xlbikgIkRJQ1RVUkVQTEFDRUdFVFJFRiIgIk5VTExTV0FQSUZOT1QiOwooY2VsbCwgaW50KSBpZGljdF9hZGQ/KGNlbGwgZGljdCwgaW50IGtl' + - 'eV9sZW4sIGludCBpbmRleCwgc2xpY2UgdmFsdWUpIGFzbSh2YWx1ZSBpbmRleCBkaWN0IGtleV9sZW4pICJESUNUSUFERCI7CihjZWxsLCBpbnQpIGlkaWN0X3JlcGxh' + - 'Y2U/KGNlbGwgZGljdCwgaW50IGtleV9sZW4sIGludCBpbmRleCwgc2xpY2UgdmFsdWUpIGFzbSh2YWx1ZSBpbmRleCBkaWN0IGtleV9sZW4pICJESUNUSVJFUExBQ0Ui' + - 'OwooY2VsbCwgaW50KSBpZGljdF9yZXBsYWNlX3JlZj8oY2VsbCBkaWN0LCBpbnQga2V5X2xlbiwgaW50IGluZGV4LCBjZWxsIHZhbHVlKSBhc20odmFsdWUgaW5kZXgg' + - 'ZGljdCBrZXlfbGVuKSAiRElDVElSRVBMQUNFUkVGIjsKKGNlbGwsIHNsaWNlLCBpbnQpIGlkaWN0X3JlcGxhY2VnZXQ/KGNlbGwgZGljdCwgaW50IGtleV9sZW4sIGlu' + - 'dCBpbmRleCwgc2xpY2UgdmFsdWUpIGFzbSh2YWx1ZSBpbmRleCBkaWN0IGtleV9sZW4pICJESUNUSVJFUExBQ0VHRVQiICJOVUxMU1dBUElGTk9UIjsKKGNlbGwsIGNl' + - 'bGwsIGludCkgaWRpY3RfcmVwbGFjZWdldF9yZWY/KGNlbGwgZGljdCwgaW50IGtleV9sZW4sIGludCBpbmRleCwgY2VsbCB2YWx1ZSkgYXNtKHZhbHVlIGluZGV4IGRp' + - 'Y3Qga2V5X2xlbikgIkRJQ1RJUkVQTEFDRUdFVFJFRiIgIk5VTExTV0FQSUZOT1QiOwooY2VsbCwgKHNsaWNlLCBpbnQpKSB+aWRpY3RfcmVwbGFjZWdldD8oY2VsbCBk' + - 'aWN0LCBpbnQga2V5X2xlbiwgaW50IGluZGV4LCBzbGljZSB2YWx1ZSkgYXNtKHZhbHVlIGluZGV4IGRpY3Qga2V5X2xlbikgIkRJQ1RJUkVQTEFDRUdFVCIgIk5VTExT' + - 'V0FQSUZOT1QiOwooY2VsbCwgKGNlbGwsIGludCkpIH5pZGljdF9yZXBsYWNlZ2V0X3JlZj8oY2VsbCBkaWN0LCBpbnQga2V5X2xlbiwgaW50IGluZGV4LCBjZWxsIHZh' + - 'bHVlKSBhc20odmFsdWUgaW5kZXggZGljdCBrZXlfbGVuKSAiRElDVElSRVBMQUNFR0VUUkVGIiAiTlVMTFNXQVBJRk5PVCI7CmNlbGwgdWRpY3Rfc2V0X2J1aWxkZXIo' + - 'Y2VsbCBkaWN0LCBpbnQga2V5X2xlbiwgaW50IGluZGV4LCBidWlsZGVyIHZhbHVlKSBhc20odmFsdWUgaW5kZXggZGljdCBrZXlfbGVuKSAiRElDVFVTRVRCIjsKKGNl' + - 'bGwsICgpKSB+dWRpY3Rfc2V0X2J1aWxkZXIoY2VsbCBkaWN0LCBpbnQga2V5X2xlbiwgaW50IGluZGV4LCBidWlsZGVyIHZhbHVlKSBhc20odmFsdWUgaW5kZXggZGlj' + - 'dCBrZXlfbGVuKSAiRElDVFVTRVRCIjsKY2VsbCBpZGljdF9zZXRfYnVpbGRlcihjZWxsIGRpY3QsIGludCBrZXlfbGVuLCBpbnQgaW5kZXgsIGJ1aWxkZXIgdmFsdWUp' + - 'IGFzbSh2YWx1ZSBpbmRleCBkaWN0IGtleV9sZW4pICJESUNUSVNFVEIiOwooY2VsbCwgKCkpIH5pZGljdF9zZXRfYnVpbGRlcihjZWxsIGRpY3QsIGludCBrZXlfbGVu' + - 'LCBpbnQgaW5kZXgsIGJ1aWxkZXIgdmFsdWUpIGFzbSh2YWx1ZSBpbmRleCBkaWN0IGtleV9sZW4pICJESUNUSVNFVEIiOwpjZWxsIGRpY3Rfc2V0X2J1aWxkZXIoY2Vs' + - 'bCBkaWN0LCBpbnQga2V5X2xlbiwgc2xpY2UgaW5kZXgsIGJ1aWxkZXIgdmFsdWUpIGFzbSh2YWx1ZSBpbmRleCBkaWN0IGtleV9sZW4pICJESUNUU0VUQiI7CihjZWxs' + - 'LCAoKSkgfmRpY3Rfc2V0X2J1aWxkZXIoY2VsbCBkaWN0LCBpbnQga2V5X2xlbiwgc2xpY2UgaW5kZXgsIGJ1aWxkZXIgdmFsdWUpIGFzbSh2YWx1ZSBpbmRleCBkaWN0' + - 'IGtleV9sZW4pICJESUNUU0VUQiI7CihjZWxsLCBpbnQpIGRpY3RfcmVwbGFjZV9idWlsZGVyPyhjZWxsIGRpY3QsIGludCBrZXlfbGVuLCBzbGljZSBpbmRleCwgYnVp' + - 'bGRlciB2YWx1ZSkgYXNtKHZhbHVlIGluZGV4IGRpY3Qga2V5X2xlbikgIkRJQ1RSRVBMQUNFQiI7CihjZWxsLCBidWlsZGVyLCBpbnQpIGRpY3RfcmVwbGFjZWdldF9i' + - 'dWlsZGVyPyhjZWxsIGRpY3QsIGludCBrZXlfbGVuLCBzbGljZSBpbmRleCwgYnVpbGRlciB2YWx1ZSkgYXNtKHZhbHVlIGluZGV4IGRpY3Qga2V5X2xlbikgIkRJQ1RS' + - 'RVBMQUNFR0VUQiIgIk5VTExTV0FQSUZOT1QiOwooY2VsbCwgc2xpY2UsIGludCkgZGljdF9yZXBsYWNlZ2V0PyhjZWxsIGRpY3QsIGludCBrZXlfbGVuLCBzbGljZSBp' + - 'bmRleCwgc2xpY2UgdmFsdWUpIGFzbSh2YWx1ZSBpbmRleCBkaWN0IGtleV9sZW4pICJESUNUUkVQTEFDRUdFVCIgIk5VTExTV0FQSUZOT1QiOwooY2VsbCwgKGJ1aWxk' + - 'ZXIsIGludCkpIH5kaWN0X3JlcGxhY2VnZXRfYnVpbGRlcj8oY2VsbCBkaWN0LCBpbnQga2V5X2xlbiwgc2xpY2UgaW5kZXgsIGJ1aWxkZXIgdmFsdWUpIGFzbSh2YWx1' + - 'ZSBpbmRleCBkaWN0IGtleV9sZW4pICJESUNUUkVQTEFDRUdFVEIiICJOVUxMU1dBUElGTk9UIjsKKGNlbGwsIChzbGljZSwgaW50KSkgfmRpY3RfcmVwbGFjZWdldD8o' + - 'Y2VsbCBkaWN0LCBpbnQga2V5X2xlbiwgc2xpY2UgaW5kZXgsIHNsaWNlIHZhbHVlKSBhc20odmFsdWUgaW5kZXggZGljdCBrZXlfbGVuKSAiRElDVFJFUExBQ0VHRVQi' + - 'ICJOVUxMU1dBUElGTk9UIjsKKGNlbGwsIGludCkgdWRpY3RfYWRkX2J1aWxkZXI/KGNlbGwgZGljdCwgaW50IGtleV9sZW4sIGludCBpbmRleCwgYnVpbGRlciB2YWx1' + - 'ZSkgYXNtKHZhbHVlIGluZGV4IGRpY3Qga2V5X2xlbikgIkRJQ1RVQUREQiI7CihjZWxsLCBpbnQpIHVkaWN0X3JlcGxhY2VfYnVpbGRlcj8oY2VsbCBkaWN0LCBpbnQg' + - 'a2V5X2xlbiwgaW50IGluZGV4LCBidWlsZGVyIHZhbHVlKSBhc20odmFsdWUgaW5kZXggZGljdCBrZXlfbGVuKSAiRElDVFVSRVBMQUNFQiI7CihjZWxsLCBidWlsZGVy' + - 'LCBpbnQpIHVkaWN0X3JlcGxhY2VnZXRfYnVpbGRlcj8oY2VsbCBkaWN0LCBpbnQga2V5X2xlbiwgaW50IGluZGV4LCBidWlsZGVyIHZhbHVlKSBhc20odmFsdWUgaW5k' + - 'ZXggZGljdCBrZXlfbGVuKSAiRElDVFVSRVBMQUNFR0VUQiIgIk5VTExTV0FQSUZOT1QiOwooY2VsbCwgKGJ1aWxkZXIsIGludCkpIH51ZGljdF9yZXBsYWNlZ2V0X2J1' + - 'aWxkZXI/KGNlbGwgZGljdCwgaW50IGtleV9sZW4sIGludCBpbmRleCwgYnVpbGRlciB2YWx1ZSkgYXNtKHZhbHVlIGluZGV4IGRpY3Qga2V5X2xlbikgIkRJQ1RVUkVQ' + - 'TEFDRUdFVEIiICJOVUxMU1dBUElGTk9UIjsKKGNlbGwsIGludCkgaWRpY3RfYWRkX2J1aWxkZXI/KGNlbGwgZGljdCwgaW50IGtleV9sZW4sIGludCBpbmRleCwgYnVp' + - 'bGRlciB2YWx1ZSkgYXNtKHZhbHVlIGluZGV4IGRpY3Qga2V5X2xlbikgIkRJQ1RJQUREQiI7CihjZWxsLCBpbnQpIGlkaWN0X3JlcGxhY2VfYnVpbGRlcj8oY2VsbCBk' + - 'aWN0LCBpbnQga2V5X2xlbiwgaW50IGluZGV4LCBidWlsZGVyIHZhbHVlKSBhc20odmFsdWUgaW5kZXggZGljdCBrZXlfbGVuKSAiRElDVElSRVBMQUNFQiI7CihjZWxs' + - 'LCBidWlsZGVyLCBpbnQpIGlkaWN0X3JlcGxhY2VnZXRfYnVpbGRlcj8oY2VsbCBkaWN0LCBpbnQga2V5X2xlbiwgaW50IGluZGV4LCBidWlsZGVyIHZhbHVlKSBhc20o' + - 'dmFsdWUgaW5kZXggZGljdCBrZXlfbGVuKSAiRElDVElSRVBMQUNFR0VUQiIgIk5VTExTV0FQSUZOT1QiOwooY2VsbCwgKGJ1aWxkZXIsIGludCkpIH5pZGljdF9yZXBs' + - 'YWNlZ2V0X2J1aWxkZXI/KGNlbGwgZGljdCwgaW50IGtleV9sZW4sIGludCBpbmRleCwgYnVpbGRlciB2YWx1ZSkgYXNtKHZhbHVlIGluZGV4IGRpY3Qga2V5X2xlbikg' + - 'IkRJQ1RJUkVQTEFDRUdFVEIiICJOVUxMU1dBUElGTk9UIjsKKGNlbGwsIGludCwgc2xpY2UsIGludCkgdWRpY3RfZGVsZXRlX2dldF9taW4oY2VsbCBkaWN0LCBpbnQg' + - 'a2V5X2xlbikgYXNtKC0+IDAgMiAxIDMpICJESUNUVVJFTU1JTiIgIk5VTExTV0FQSUZOT1QyIjsKKGNlbGwsIChpbnQsIHNsaWNlLCBpbnQpKSB+dWRpY3Q6OmRlbGV0' + - 'ZV9nZXRfbWluKGNlbGwgZGljdCwgaW50IGtleV9sZW4pIGFzbSgtPiAwIDIgMSAzKSAiRElDVFVSRU1NSU4iICJOVUxMU1dBUElGTk9UMiI7CihjZWxsLCBpbnQsIHNs' + - 'aWNlLCBpbnQpIGlkaWN0X2RlbGV0ZV9nZXRfbWluKGNlbGwgZGljdCwgaW50IGtleV9sZW4pIGFzbSgtPiAwIDIgMSAzKSAiRElDVElSRU1NSU4iICJOVUxMU1dBUElG' + - 'Tk9UMiI7CihjZWxsLCAoaW50LCBzbGljZSwgaW50KSkgfmlkaWN0OjpkZWxldGVfZ2V0X21pbihjZWxsIGRpY3QsIGludCBrZXlfbGVuKSBhc20oLT4gMCAyIDEgMykg' + - 'IkRJQ1RJUkVNTUlOIiAiTlVMTFNXQVBJRk5PVDIiOwooY2VsbCwgc2xpY2UsIHNsaWNlLCBpbnQpIGRpY3RfZGVsZXRlX2dldF9taW4oY2VsbCBkaWN0LCBpbnQga2V5' + - 'X2xlbikgYXNtKC0+IDAgMiAxIDMpICJESUNUUkVNTUlOIiAiTlVMTFNXQVBJRk5PVDIiOwooY2VsbCwgKHNsaWNlLCBzbGljZSwgaW50KSkgfmRpY3Q6OmRlbGV0ZV9n' + - 'ZXRfbWluKGNlbGwgZGljdCwgaW50IGtleV9sZW4pIGFzbSgtPiAwIDIgMSAzKSAiRElDVFJFTU1JTiIgIk5VTExTV0FQSUZOT1QyIjsKKGNlbGwsIGludCwgc2xpY2Us' + - 'IGludCkgdWRpY3RfZGVsZXRlX2dldF9tYXgoY2VsbCBkaWN0LCBpbnQga2V5X2xlbikgYXNtKC0+IDAgMiAxIDMpICJESUNUVVJFTU1BWCIgIk5VTExTV0FQSUZOT1Qy' + - 'IjsKKGNlbGwsIChpbnQsIHNsaWNlLCBpbnQpKSB+dWRpY3Q6OmRlbGV0ZV9nZXRfbWF4KGNlbGwgZGljdCwgaW50IGtleV9sZW4pIGFzbSgtPiAwIDIgMSAzKSAiRElD' + - 'VFVSRU1NQVgiICJOVUxMU1dBUElGTk9UMiI7CihjZWxsLCBpbnQsIHNsaWNlLCBpbnQpIGlkaWN0X2RlbGV0ZV9nZXRfbWF4KGNlbGwgZGljdCwgaW50IGtleV9sZW4p' + - 'IGFzbSgtPiAwIDIgMSAzKSAiRElDVElSRU1NQVgiICJOVUxMU1dBUElGTk9UMiI7CihjZWxsLCAoaW50LCBzbGljZSwgaW50KSkgfmlkaWN0OjpkZWxldGVfZ2V0X21h' + - 'eChjZWxsIGRpY3QsIGludCBrZXlfbGVuKSBhc20oLT4gMCAyIDEgMykgIkRJQ1RJUkVNTUFYIiAiTlVMTFNXQVBJRk5PVDIiOwooY2VsbCwgc2xpY2UsIHNsaWNlLCBp' + - 'bnQpIGRpY3RfZGVsZXRlX2dldF9tYXgoY2VsbCBkaWN0LCBpbnQga2V5X2xlbikgYXNtKC0+IDAgMiAxIDMpICJESUNUUkVNTUFYIiAiTlVMTFNXQVBJRk5PVDIiOwoo' + - 'Y2VsbCwgKHNsaWNlLCBzbGljZSwgaW50KSkgfmRpY3Q6OmRlbGV0ZV9nZXRfbWF4KGNlbGwgZGljdCwgaW50IGtleV9sZW4pIGFzbSgtPiAwIDIgMSAzKSAiRElDVFJF' + - 'TU1BWCIgIk5VTExTV0FQSUZOT1QyIjsKKGludCwgc2xpY2UsIGludCkgdWRpY3RfZ2V0X21pbj8oY2VsbCBkaWN0LCBpbnQga2V5X2xlbikgYXNtICgtPiAxIDAgMikg' + - 'IkRJQ1RVTUlOIiAiTlVMTFNXQVBJRk5PVDIiOwooaW50LCBzbGljZSwgaW50KSB1ZGljdF9nZXRfbWF4PyhjZWxsIGRpY3QsIGludCBrZXlfbGVuKSBhc20gKC0+IDEg' + - 'MCAyKSAiRElDVFVNQVgiICJOVUxMU1dBUElGTk9UMiI7CihpbnQsIGNlbGwsIGludCkgdWRpY3RfZ2V0X21pbl9yZWY/KGNlbGwgZGljdCwgaW50IGtleV9sZW4pIGFz' + - 'bSAoLT4gMSAwIDIpICJESUNUVU1JTlJFRiIgIk5VTExTV0FQSUZOT1QyIjsKKGludCwgY2VsbCwgaW50KSB1ZGljdF9nZXRfbWF4X3JlZj8oY2VsbCBkaWN0LCBpbnQg' + - 'a2V5X2xlbikgYXNtICgtPiAxIDAgMikgIkRJQ1RVTUFYUkVGIiAiTlVMTFNXQVBJRk5PVDIiOwooaW50LCBzbGljZSwgaW50KSBpZGljdF9nZXRfbWluPyhjZWxsIGRp' + - 'Y3QsIGludCBrZXlfbGVuKSBhc20gKC0+IDEgMCAyKSAiRElDVElNSU4iICJOVUxMU1dBUElGTk9UMiI7CihpbnQsIHNsaWNlLCBpbnQpIGlkaWN0X2dldF9tYXg/KGNl' + - 'bGwgZGljdCwgaW50IGtleV9sZW4pIGFzbSAoLT4gMSAwIDIpICJESUNUSU1BWCIgIk5VTExTV0FQSUZOT1QyIjsKKGludCwgY2VsbCwgaW50KSBpZGljdF9nZXRfbWlu' + - 'X3JlZj8oY2VsbCBkaWN0LCBpbnQga2V5X2xlbikgYXNtICgtPiAxIDAgMikgIkRJQ1RJTUlOUkVGIiAiTlVMTFNXQVBJRk5PVDIiOwooaW50LCBjZWxsLCBpbnQpIGlk' + - 'aWN0X2dldF9tYXhfcmVmPyhjZWxsIGRpY3QsIGludCBrZXlfbGVuKSBhc20gKC0+IDEgMCAyKSAiRElDVElNQVhSRUYiICJOVUxMU1dBUElGTk9UMiI7CihpbnQsIHNs' + - 'aWNlLCBpbnQpIHVkaWN0X2dldF9uZXh0PyhjZWxsIGRpY3QsIGludCBrZXlfbGVuLCBpbnQgcGl2b3QpIGFzbShwaXZvdCBkaWN0IGtleV9sZW4gLT4gMSAwIDIpICJE' + - 'SUNUVUdFVE5FWFQiICJOVUxMU1dBUElGTk9UMiI7CihpbnQsIHNsaWNlLCBpbnQpIHVkaWN0X2dldF9uZXh0ZXE/KGNlbGwgZGljdCwgaW50IGtleV9sZW4sIGludCBw' + - 'aXZvdCkgYXNtKHBpdm90IGRpY3Qga2V5X2xlbiAtPiAxIDAgMikgIkRJQ1RVR0VUTkVYVEVRIiAiTlVMTFNXQVBJRk5PVDIiOwooaW50LCBzbGljZSwgaW50KSB1ZGlj' + - 'dF9nZXRfcHJldj8oY2VsbCBkaWN0LCBpbnQga2V5X2xlbiwgaW50IHBpdm90KSBhc20ocGl2b3QgZGljdCBrZXlfbGVuIC0+IDEgMCAyKSAiRElDVFVHRVRQUkVWIiAi' + - 'TlVMTFNXQVBJRk5PVDIiOwooaW50LCBzbGljZSwgaW50KSB1ZGljdF9nZXRfcHJldmVxPyhjZWxsIGRpY3QsIGludCBrZXlfbGVuLCBpbnQgcGl2b3QpIGFzbShwaXZv' + - 'dCBkaWN0IGtleV9sZW4gLT4gMSAwIDIpICJESUNUVUdFVFBSRVZFUSIgIk5VTExTV0FQSUZOT1QyIjsKKGludCwgc2xpY2UsIGludCkgaWRpY3RfZ2V0X25leHQ/KGNl' + - 'bGwgZGljdCwgaW50IGtleV9sZW4sIGludCBwaXZvdCkgYXNtKHBpdm90IGRpY3Qga2V5X2xlbiAtPiAxIDAgMikgIkRJQ1RJR0VUTkVYVCIgIk5VTExTV0FQSUZOT1Qy' + - 'IjsKKGludCwgc2xpY2UsIGludCkgaWRpY3RfZ2V0X25leHRlcT8oY2VsbCBkaWN0LCBpbnQga2V5X2xlbiwgaW50IHBpdm90KSBhc20ocGl2b3QgZGljdCBrZXlfbGVu' + - 'IC0+IDEgMCAyKSAiRElDVElHRVRORVhURVEiICJOVUxMU1dBUElGTk9UMiI7CihpbnQsIHNsaWNlLCBpbnQpIGlkaWN0X2dldF9wcmV2PyhjZWxsIGRpY3QsIGludCBr' + - 'ZXlfbGVuLCBpbnQgcGl2b3QpIGFzbShwaXZvdCBkaWN0IGtleV9sZW4gLT4gMSAwIDIpICJESUNUSUdFVFBSRVYiICJOVUxMU1dBUElGTk9UMiI7CihpbnQsIHNsaWNl' + - 'LCBpbnQpIGlkaWN0X2dldF9wcmV2ZXE/KGNlbGwgZGljdCwgaW50IGtleV9sZW4sIGludCBwaXZvdCkgYXNtKHBpdm90IGRpY3Qga2V5X2xlbiAtPiAxIDAgMikgIkRJ' + - 'Q1RJR0VUUFJFVkVRIiAiTlVMTFNXQVBJRk5PVDIiOwoKOzs7IENyZWF0ZXMgYW4gZW1wdHkgZGljdGlvbmFyeSwgd2hpY2ggaXMgYWN0dWFsbHkgYSBudWxsIHZhbHVl' + - 'LiBFcXVpdmFsZW50IHRvIFBVU0hOVUxMCmNlbGwgbmV3X2RpY3QoKSBhc20gIk5FV0RJQ1QiOwo7OzsgQ2hlY2tzIHdoZXRoZXIgYSBkaWN0aW9uYXJ5IGlzIGVtcHR5' + - 'LiBFcXVpdmFsZW50IHRvIGNlbGxfbnVsbD8uCmludCBkaWN0X2VtcHR5PyhjZWxsIGMpIGFzbSAiRElDVEVNUFRZIjsKCgp7LSBQcmVmaXggZGljdGlvbmFyeSBwcmlt' + - 'aXRpdmVzIC19CihzbGljZSwgc2xpY2UsIHNsaWNlLCBpbnQpIHBmeGRpY3RfZ2V0PyhjZWxsIGRpY3QsIGludCBrZXlfbGVuLCBzbGljZSBrZXkpIGFzbShrZXkgZGlj' + - 'dCBrZXlfbGVuKSAiUEZYRElDVEdFVFEiICJOVUxMU1dBUElGTk9UMiI7CihjZWxsLCBpbnQpIHBmeGRpY3Rfc2V0PyhjZWxsIGRpY3QsIGludCBrZXlfbGVuLCBzbGlj' + - 'ZSBrZXksIHNsaWNlIHZhbHVlKSBhc20odmFsdWUga2V5IGRpY3Qga2V5X2xlbikgIlBGWERJQ1RTRVQiOwooY2VsbCwgaW50KSBwZnhkaWN0X2RlbGV0ZT8oY2VsbCBk' + - 'aWN0LCBpbnQga2V5X2xlbiwgc2xpY2Uga2V5KSBhc20oa2V5IGRpY3Qga2V5X2xlbikgIlBGWERJQ1RERUwiOwoKOzs7IFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBn' + - 'bG9iYWwgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgd2l0aCBpbnRlZ2VyIGluZGV4IGBpYCBhcyBhIGBjZWxsYCBvciBgbnVsbGAgdmFsdWUuCmNlbGwgY29uZmlnX3Bh' + - 'cmFtKGludCB4KSBhc20gIkNPTkZJR09QVFBBUkFNIjsKOzs7IENoZWNrcyB3aGV0aGVyIGMgaXMgYSBudWxsLiBOb3RlLCB0aGF0IEZ1bkMgYWxzbyBoYXMgcG9seW1v' + - 'cnBoaWMgbnVsbD8gYnVpbHQtaW4uCmludCBjZWxsX251bGw/KGNlbGwgYykgYXNtICJJU05VTEwiOwoKOzs7IENyZWF0ZXMgYW4gb3V0cHV0IGFjdGlvbiB3aGljaCB3' + - 'b3VsZCByZXNlcnZlIGV4YWN0bHkgYW1vdW50IG5hbm90b25jb2lucyAoaWYgbW9kZSA9IDApLCBhdCBtb3N0IGFtb3VudCBuYW5vdG9uY29pbnMgKGlmIG1vZGUgPSAy' + - 'KSwgb3IgYWxsIGJ1dCBhbW91bnQgbmFub3RvbmNvaW5zIChpZiBtb2RlID0gMSBvciBtb2RlID0gMyksIGZyb20gdGhlIHJlbWFpbmluZyBiYWxhbmNlIG9mIHRoZSBh' + - 'Y2NvdW50LiBJdCBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gY3JlYXRpbmcgYW4gb3V0Ym91bmQgbWVzc2FnZSBjYXJyeWluZyBhbW91bnQgbmFub3RvbmNvaW5zIChv' + - 'ciBiIOKIkiBhbW91bnQgbmFub3RvbmNvaW5zLCB3aGVyZSBiIGlzIHRoZSByZW1haW5pbmcgYmFsYW5jZSkgdG8gb25lc2VsZiwgc28gdGhhdCB0aGUgc3Vic2VxdWVu' + - 'dCBvdXRwdXQgYWN0aW9ucyB3b3VsZCBub3QgYmUgYWJsZSB0byBzcGVuZCBtb3JlIG1vbmV5IHRoYW4gdGhlIHJlbWFpbmRlci4gQml0ICsyIGluIG1vZGUgbWVhbnMg' + - 'dGhhdCB0aGUgZXh0ZXJuYWwgYWN0aW9uIGRvZXMgbm90IGZhaWwgaWYgdGhlIHNwZWNpZmllZCBhbW91bnQgY2Fubm90IGJlIHJlc2VydmVkOyBpbnN0ZWFkLCBhbGwg' + - 'cmVtYWluaW5nIGJhbGFuY2UgaXMgcmVzZXJ2ZWQuIEJpdCArOCBpbiBtb2RlIG1lYW5zIGBhbW91bnQgPC0gLWFtb3VudGAgYmVmb3JlIHBlcmZvcm1pbmcgYW55IGZ1' + - 'cnRoZXIgYWN0aW9ucy4gQml0ICs0IGluIG1vZGUgbWVhbnMgdGhhdCBhbW91bnQgaXMgaW5jcmVhc2VkIGJ5IHRoZSBvcmlnaW5hbCBiYWxhbmNlIG9mIHRoZSBjdXJy' + - 'ZW50IGFjY291bnQgKGJlZm9yZSB0aGUgY29tcHV0ZSBwaGFzZSksIGluY2x1ZGluZyBhbGwgZXh0cmEgY3VycmVuY2llcywgYmVmb3JlIHBlcmZvcm1pbmcgYW55IG90' + - 'aGVyIGNoZWNrcyBhbmQgYWN0aW9ucy4gQ3VycmVudGx5LCBhbW91bnQgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyLCBhbmQgbW9kZSBtdXN0IGJlIGluIHRo' + - 'ZSByYW5nZSAwLi4xNS4KKCkgcmF3X3Jlc2VydmUoaW50IGFtb3VudCwgaW50IG1vZGUpIGltcHVyZSBhc20gIlJBV1JFU0VSVkUiOwo7OzsgU2ltaWxhciB0byByYXdf' + - 'cmVzZXJ2ZSwgYnV0IGFsc28gYWNjZXB0cyBhIGRpY3Rpb25hcnkgZXh0cmFfYW1vdW50IChyZXByZXNlbnRlZCBieSBhIGNlbGwgb3IgbnVsbCkgd2l0aCBleHRyYSBj' + - 'dXJyZW5jaWVzLiBJbiB0aGlzIHdheSBjdXJyZW5jaWVzIG90aGVyIHRoYW4gVG9uQ29pbiBjYW4gYmUgcmVzZXJ2ZWQuCigpIHJhd19yZXNlcnZlX2V4dHJhKGludCBh' + - 'bW91bnQsIGNlbGwgZXh0cmFfYW1vdW50LCBpbnQgbW9kZSkgaW1wdXJlIGFzbSAiUkFXUkVTRVJWRVgiOwo7OzsgU2VuZHMgYSByYXcgbWVzc2FnZSBjb250YWluZWQg' + - 'aW4gbXNnLCB3aGljaCBzaG91bGQgY29udGFpbiBhIGNvcnJlY3RseSBzZXJpYWxpemVkIG9iamVjdCBNZXNzYWdlIFgsIHdpdGggdGhlIG9ubHkgZXhjZXB0aW9uIHRo' + - 'YXQgdGhlIHNvdXJjZSBhZGRyZXNzIGlzIGFsbG93ZWQgdG8gaGF2ZSBkdW1teSB2YWx1ZSBhZGRyX25vbmUgKHRvIGJlIGF1dG9tYXRpY2FsbHkgcmVwbGFjZWQgd2l0' + - 'aCB0aGUgY3VycmVudCBzbWFydCBjb250cmFjdCBhZGRyZXNzKSwgYW5kIGlocl9mZWUsIGZ3ZF9mZWUsIGNyZWF0ZWRfbHQgYW5kIGNyZWF0ZWRfYXQgZmllbGRzIGNh' + - 'biBoYXZlIGFyYml0cmFyeSB2YWx1ZXMgKHRvIGJlIHJld3JpdHRlbiB3aXRoIGNvcnJlY3QgdmFsdWVzIGR1cmluZyB0aGUgYWN0aW9uIHBoYXNlIG9mIHRoZSBjdXJy' + - 'ZW50IHRyYW5zYWN0aW9uKS4gSW50ZWdlciBwYXJhbWV0ZXIgbW9kZSBjb250YWlucyB0aGUgZmxhZ3MuIEN1cnJlbnRseSBtb2RlID0gMCBpcyB1c2VkIGZvciBvcmRp' + - 'bmFyeSBtZXNzYWdlczsgbW9kZSA9IDEyOCBpcyB1c2VkIGZvciBtZXNzYWdlcyB0aGF0IGFyZSB0byBjYXJyeSBhbGwgdGhlIHJlbWFpbmluZyBiYWxhbmNlIG9mIHRo' + - 'ZSBjdXJyZW50IHNtYXJ0IGNvbnRyYWN0IChpbnN0ZWFkIG9mIHRoZSB2YWx1ZSBvcmlnaW5hbGx5IGluZGljYXRlZCBpbiB0aGUgbWVzc2FnZSk7IG1vZGUgPSA2NCBp' + - 'cyB1c2VkIGZvciBtZXNzYWdlcyB0aGF0IGNhcnJ5IGFsbCB0aGUgcmVtYWluaW5nIHZhbHVlIG9mIHRoZSBpbmJvdW5kIG1lc3NhZ2UgaW4gYWRkaXRpb24gdG8gdGhl' + - 'IHZhbHVlIGluaXRpYWxseSBpbmRpY2F0ZWQgaW4gdGhlIG5ldyBtZXNzYWdlIChpZiBiaXQgMCBpcyBub3Qgc2V0LCB0aGUgZ2FzIGZlZXMgYXJlIGRlZHVjdGVkIGZy' + - 'b20gdGhpcyBhbW91bnQpOyBtb2RlJyA9IG1vZGUgKyAxIG1lYW5zIHRoYXQgdGhlIHNlbmRlciB3YW50cyB0byBwYXkgdHJhbnNmZXIgZmVlcyBzZXBhcmF0ZWx5OyBt' + - 'b2RlJyA9IG1vZGUgKyAyIG1lYW5zIHRoYXQgYW55IGVycm9ycyBhcmlzaW5nIHdoaWxlIHByb2Nlc3NpbmcgdGhpcyBtZXNzYWdlIGR1cmluZyB0aGUgYWN0aW9uIHBo' + - 'YXNlIHNob3VsZCBiZSBpZ25vcmVkLiBGaW5hbGx5LCBtb2RlJyA9IG1vZGUgKyAzMiBtZWFucyB0aGF0IHRoZSBjdXJyZW50IGFjY291bnQgbXVzdCBiZSBkZXN0cm95' + - 'ZWQgaWYgaXRzIHJlc3VsdGluZyBiYWxhbmNlIGlzIHplcm8uIFRoaXMgZmxhZyBpcyB1c3VhbGx5IGVtcGxveWVkIHRvZ2V0aGVyIHdpdGggKzEyOC4KKCkgc2VuZF9y' + - 'YXdfbWVzc2FnZShjZWxsIG1zZywgaW50IG1vZGUpIGltcHVyZSBhc20gIlNFTkRSQVdNU0ciOwo7OzsgQ3JlYXRlcyBhbiBvdXRwdXQgYWN0aW9uIHRoYXQgd291bGQg' + - 'Y2hhbmdlIHRoaXMgc21hcnQgY29udHJhY3QgY29kZSB0byB0aGF0IGdpdmVuIGJ5IGNlbGwgbmV3X2NvZGUuIE5vdGljZSB0aGF0IHRoaXMgY2hhbmdlIHdpbGwgdGFr' + - 'ZSBlZmZlY3Qgb25seSBhZnRlciB0aGUgc3VjY2Vzc2Z1bCB0ZXJtaW5hdGlvbiBvZiB0aGUgY3VycmVudCBydW4gb2YgdGhlIHNtYXJ0IGNvbnRyYWN0CigpIHNldF9j' + - 'b2RlKGNlbGwgbmV3X2NvZGUpIGltcHVyZSBhc20gIlNFVENPREUiOwoKOzs7IEdlbmVyYXRlcyBhIG5ldyBwc2V1ZG8tcmFuZG9tIHVuc2lnbmVkIDI1Ni1iaXQgaW50' + - 'ZWdlciB4LiBUaGUgYWxnb3JpdGhtIGlzIGFzIGZvbGxvd3M6IGlmIHIgaXMgdGhlIG9sZCB2YWx1ZSBvZiB0aGUgcmFuZG9tIHNlZWQsIGNvbnNpZGVyZWQgYXMgYSAz' + - 'Mi1ieXRlIGFycmF5IChieSBjb25zdHJ1Y3RpbmcgdGhlIGJpZy1lbmRpYW4gcmVwcmVzZW50YXRpb24gb2YgYW4gdW5zaWduZWQgMjU2LWJpdCBpbnRlZ2VyKSwgdGhl' + - 'biBpdHMgc2hhNTEyKHIpIGlzIGNvbXB1dGVkOyB0aGUgZmlyc3QgMzIgYnl0ZXMgb2YgdGhpcyBoYXNoIGFyZSBzdG9yZWQgYXMgdGhlIG5ldyB2YWx1ZSByJyBvZiB0' + - 'aGUgcmFuZG9tIHNlZWQsIGFuZCB0aGUgcmVtYWluaW5nIDMyIGJ5dGVzIGFyZSByZXR1cm5lZCBhcyB0aGUgbmV4dCByYW5kb20gdmFsdWUgeC4KaW50IHJhbmRvbSgp' + - 'IGltcHVyZSBhc20gIlJBTkRVMjU2IjsKOzs7IEdlbmVyYXRlcyBhIG5ldyBwc2V1ZG8tcmFuZG9tIGludGVnZXIgeiBpbiB0aGUgcmFuZ2UgMC4ucmFuZ2XiiJIxIChv' + - 'ciByYW5nZS4u4oiSMSwgaWYgcmFuZ2UgPCAwKS4gTW9yZSBwcmVjaXNlbHksIGFuIHVuc2lnbmVkIHJhbmRvbSB2YWx1ZSB4IGlzIGdlbmVyYXRlZCBhcyBpbiByYW5k' + - 'b207IHRoZW4geiA6PSB4ICogcmFuZ2UgLyAyXjI1NiBpcyBjb21wdXRlZC4KaW50IHJhbmQoaW50IHJhbmdlKSBpbXB1cmUgYXNtICJSQU5EIjsKOzs7IFJldHVybnMg' + - 'dGhlIGN1cnJlbnQgcmFuZG9tIHNlZWQgYXMgYW4gdW5zaWduZWQgMjU2LWJpdCBJbnRlZ2VyLgppbnQgZ2V0X3NlZWQoKSBpbXB1cmUgYXNtICJSQU5EU0VFRCI7Cjs7' + - 'OyBTZXRzIHRoZSByYW5kb20gc2VlZCB0byB1bnNpZ25lZCAyNTYtYml0IHNlZWQuCigpIHNldF9zZWVkKGludCB4KSBpbXB1cmUgYXNtICJTRVRSQU5EIjsKOzs7IE1p' + - 'eGVzIHVuc2lnbmVkIDI1Ni1iaXQgaW50ZWdlciB4IGludG8gdGhlIHJhbmRvbSBzZWVkIHIgYnkgc2V0dGluZyB0aGUgcmFuZG9tIHNlZWQgdG8gc2hhMjU2IG9mIHRo' + - 'ZSBjb25jYXRlbmF0aW9uIG9mIHR3byAzMi1ieXRlIHN0cmluZ3M6IHRoZSBmaXJzdCB3aXRoIHRoZSBiaWctZW5kaWFuIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBvbGQg' + - 'c2VlZCByLCBhbmQgdGhlIHNlY29uZCB3aXRoIHRoZSBiaWctZW5kaWFuIHJlcHJlc2VudGF0aW9uIG9mIHguCigpIHJhbmRvbWl6ZShpbnQgeCkgaW1wdXJlIGFzbSAi' + - 'QUREUkFORCI7Cjs7OyBFcXVpdmFsZW50IHRvIHJhbmRvbWl6ZShjdXJfbHQoKSk7LgooKSByYW5kb21pemVfbHQoKSBpbXB1cmUgYXNtICJMVElNRSIgIkFERFJBTkQi' + - 'OwoKOzs7IENoZWNrcyB3aGV0aGVyIHRoZSBkYXRhIHBhcnRzIG9mIHR3byBzbGljZXMgY29pbnNpZGUKaW50IGVxdWFsX3NsaWNlc19iaXRzKHNsaWNlIGEsIHNsaWNl' + - 'IGIpIGFzbSAiU0RFUSI7Cjs7OyBDaGVja3Mgd2hldGhlciBiIGlzIGEgbnVsbC4gTm90ZSwgdGhhdCBGdW5DIGFsc28gaGFzIHBvbHltb3JwaGljIG51bGw/IGJ1aWx0' + - 'LWluLgppbnQgYnVpbGRlcl9udWxsPyhidWlsZGVyIGIpIGFzbSAiSVNOVUxMIjsKOzs7IENvbmNhdGVuYXRlcyB0d28gYnVpbGRlcnMKYnVpbGRlciBzdG9yZV9idWls' + - 'ZGVyKGJ1aWxkZXIgdG8sIGJ1aWxkZXIgZnJvbSkgYXNtICJTVEJSIjsKCjs7IENVU1RPTToKCjs7IFRWTSBVUEdSQURFIDIwMjMtMDcgaHR0cHM6Ly9kb2NzLnRvbi5v' + - 'cmcvbGVhcm4vdHZtLWluc3RydWN0aW9ucy90dm0tdXBncmFkZS0yMDIzLTA3Cjs7IEluIG1haW5uZXQgc2luY2UgMjAgRGVjIDIwMjMgaHR0cHM6Ly90Lm1lL3RvbmJs' + - 'b2NrY2hhaW4vMjI2Cgo7OzsgUmV0cmlldmVzIGNvZGUgb2Ygc21hcnQtY29udHJhY3QgZnJvbSBjNwpjZWxsIG15X2NvZGUoKSBhc20gIk1ZQ09ERSI7Cg=='; -files['stdlib.tact'] = - 'aW1wb3J0ICIuL3N0ZC9wcmltaXRpdmVzIjsKaW1wb3J0ICIuL3N0ZC9jZWxscyI7CmltcG9ydCAiLi9zdGQvY3J5cHRvIjsKaW1wb3J0ICIuL3N0ZC90ZXh0IjsKaW1w' + - 'b3J0ICIuL3N0ZC9tYXRoIjsKaW1wb3J0ICIuL3N0ZC9jb250cmFjdCI7CmltcG9ydCAiLi9zdGQvZGVidWciOwppbXBvcnQgIi4vc3RkL2NvbnRleHQiOwppbXBvcnQg' + - 'Ii4vc3RkL3Jlc2VydmUiOwppbXBvcnQgIi4vc3RkL3NlbmQiOwppbXBvcnQgIi4vc3RkL2NvbmZpZyI7CmltcG9ydCAiLi9zdGQvYmFzZSI7'; -export default files; \ No newline at end of file diff --git a/src/node.ts b/src/node.ts index 3c6df434e..33045b7aa 100644 --- a/src/node.ts +++ b/src/node.ts @@ -5,6 +5,7 @@ import { createNodeFileSystem } from "./vfs/createNodeFileSystem"; import { build } from "./pipeline/build"; import { LogLevel, Logger } from "./context/logger"; import { TactErrorCollection } from "./error/errors"; +import { stdlibPath } from "./stdlib/path"; type AdditionalCliOptions = { mode?: ConfigProject["mode"]; @@ -115,10 +116,7 @@ export async function run(args: { configWithRootPath.rootPath as string, false, ); - const stdlib = createNodeFileSystem( - path.resolve(__dirname, "..", "stdlib"), - false, - ); // Improves developer experience + const stdlib = createNodeFileSystem(stdlibPath, false); // Improves developer experience for (const config of projects) { logger.info(`💼 Compiling project ${config.name} ...`); let cliConfig = { ...config }; diff --git a/src/pipeline/build.ts b/src/pipeline/build.ts index f696439a9..5a1c1a31e 100644 --- a/src/pipeline/build.ts +++ b/src/pipeline/build.ts @@ -7,7 +7,7 @@ import { CompilerContext } from "../context/context"; import { funcCompile } from "../func/funcCompile"; import { writeReport } from "../generator/writeReport"; import { getRawAST } from "../context/store"; -import files from "../imports/stdlib"; +import files from "../stdlib/stdlib"; import { ILogger, Logger } from "../context/logger"; import { PackageFileFormat } from "../packaging/fileFormat"; import { packageCode } from "../packaging/packageCode"; diff --git a/src/stdlib/copy.build.ts b/src/stdlib/copy.build.ts new file mode 100644 index 000000000..210480769 --- /dev/null +++ b/src/stdlib/copy.build.ts @@ -0,0 +1,28 @@ +import * as fs from "fs/promises"; +import * as path from "path"; +import * as glob from "glob"; + +const cp = async (fromGlob: string, toPath: string) => { + for (const file of glob.sync(path.join(fromGlob, "**/*"))) { + const relPath = path.relative(fromGlob, file); + const pathTo = path.join(toPath, relPath); + const stat = await fs.stat(file); + if (stat.isDirectory()) { + await fs.mkdir(pathTo, { recursive: true }); + } else { + await fs.mkdir(path.dirname(pathTo), { recursive: true }); + await fs.copyFile(file, pathTo); + } + } +}; + +const main = async () => { + try { + await cp("./src/stdlib/stdlib/", "./dist/stdlib/stdlib/"); + } catch (e) { + console.error(e); + process.exit(1); + } +}; + +void main(); diff --git a/src/stdlib/path.ts b/src/stdlib/path.ts new file mode 100644 index 000000000..72ca947f0 --- /dev/null +++ b/src/stdlib/path.ts @@ -0,0 +1,3 @@ +import path from "path"; + +export const stdlibPath = path.join(__dirname, "stdlib"); diff --git a/src/stdlib/stdlib.build.ts b/src/stdlib/stdlib.build.ts new file mode 100644 index 000000000..de5f3d00f --- /dev/null +++ b/src/stdlib/stdlib.build.ts @@ -0,0 +1,39 @@ +import fs from "fs"; +import path from "path"; +import glob from "glob"; +import { posixNormalize } from "../utils/filePath"; +import { stdlibPath } from "./path"; + +const libFiles = path.join(__dirname, "stdlib", "**", "*.@(tact|fc)"); +const targetPath = path.join(__dirname, "stdlib.ts"); + +const chunk = (s: string, chunkSize: number): string[] => { + const result: string[] = []; + for (let offset = 0; offset < s.length; offset += chunkSize) { + result.push(s.slice(offset, offset + chunkSize)); + } + return result; +}; + +const listFiles = (dir: string) => { + const paths = glob.sync(dir, { windowsPathsNoEscape: true }); + const prefix = posixNormalize(stdlibPath); + return paths.map((p) => ({ + absolute: p, + relative: posixNormalize(path.relative(prefix, p)), + })); +}; + +const lines: string[] = [ + "const files: Record = {};\n", + ...listFiles(libFiles).map(({ absolute, relative }) => { + const chunks = chunk(fs.readFileSync(absolute).toString("base64"), 128); + const chunkedBase64 = chunks + .map((chunk) => ` "${chunk}"`) + .join(" +\n"); + return `files["${relative}"] =\n${chunkedBase64};\n`; + }), + "export default files;\n", +]; + +fs.writeFileSync(targetPath, lines.join("")); diff --git a/src/stdlib/stdlib.ts b/src/stdlib/stdlib.ts new file mode 100644 index 000000000..fecc9feb3 --- /dev/null +++ b/src/stdlib/stdlib.ts @@ -0,0 +1,853 @@ +const files: Record = {}; +files["libs/config.tact"] = + "ZnVuIGdldENvbmZpZ0FkZHJlc3MoKTogQWRkcmVzcyB7CiAgICBsZXQgY2VsbDogQ2VsbCA9IGdldENvbmZpZ1BhcmFtKDApISE7CiAgICBsZXQgc2M6IFNsaWNlID0g" + + "Y2VsbC5iZWdpblBhcnNlKCk7CiAgICByZXR1cm4gbmV3QWRkcmVzcygtMSwgc2MubG9hZFVpbnQoMjU2KSk7Cn0KCmZ1biBnZXRFbGVjdG9yQWRkcmVzcygpOiBBZGRy" + + "ZXNzIHsKICAgIGxldCBjZWxsOiBDZWxsID0gZ2V0Q29uZmlnUGFyYW0oMSkhITsKICAgIGxldCBzYzogU2xpY2UgPSBjZWxsLmJlZ2luUGFyc2UoKTsKICAgIHJldHVy" + + "biBuZXdBZGRyZXNzKC0xLCBzYy5sb2FkVWludCgyNTYpKTsKfQ=="; +files["libs/content.tact"] = + "ZnVuIGNyZWF0ZU9mZmNoYWluQ29udGVudChsaW5rOiBTdHJpbmcpOiBDZWxsIHsKICAgIGxldCBidWlsZGVyOiBTdHJpbmdCdWlsZGVyID0gYmVnaW5TdHJpbmdGcm9t" + + "QnVpbGRlcihiZWdpbkNlbGwoKS5zdG9yZVVpbnQoMHgwMSwgOCkpOwogICAgYnVpbGRlci5hcHBlbmQobGluayk7CiAgICByZXR1cm4gYnVpbGRlci50b0NlbGwoKTsK" + + "fQ=="; +files["libs/deploy.tact"] = + "Cm1lc3NhZ2UgRGVwbG95IHsKICAgIHF1ZXJ5SWQ6IEludCBhcyB1aW50NjQ7Cn0KCm1lc3NhZ2UgRGVwbG95T2sgewogICAgcXVlcnlJZDogSW50IGFzIHVpbnQ2NDsK" + + "fQoKdHJhaXQgRGVwbG95YWJsZSB7CiAgICByZWNlaXZlKGRlcGxveTogRGVwbG95KSB7CiAgICAgICAgc2VsZi5ub3RpZnkoRGVwbG95T2t7cXVlcnlJZDogZGVwbG95" + + "LnF1ZXJ5SWR9LnRvQ2VsbCgpKTsKICAgIH0KfQoKbWVzc2FnZSBGYWN0b3J5RGVwbG95IHsKICAgIHF1ZXJ5SWQ6IEludCBhcyB1aW50NjQ7CiAgICBjYXNoYmFjazog" + + "QWRkcmVzczsKfQoKdHJhaXQgRmFjdG9yeURlcGxveWFibGUgIHsKICAgIHJlY2VpdmUoZGVwbG95OiBGYWN0b3J5RGVwbG95KSB7CiAgICAgICAgc2VsZi5mb3J3YXJk" + + "KGRlcGxveS5jYXNoYmFjaywgRGVwbG95T2t7cXVlcnlJZDogZGVwbG95LnF1ZXJ5SWR9LnRvQ2VsbCgpLCBmYWxzZSwgbnVsbCk7CiAgICB9Cn0="; +files["libs/dns.fc"] = + "c2xpY2UgZG5zX3N0cmluZ190b19pbnRlcm5hbChzbGljZSBkb21haW4pIGlubGluZV9yZWYgewoKICAgIDs7IFNwZWNpYWwgY2FzZSBmb3Igcm9vdCBkb21haW4KICAg" + + "IGlmICgoZG9tYWluLnNsaWNlX2JpdHMoKSA9PSA4KSAmIChkb21haW4uc2xpY2VfcmVmcygpID09IDApKSB7CiAgICAgICAgaWYgKGRvbWFpbi5wcmVsb2FkX3VpbnQo" + + "OCkgPT0gNDYpIHsKICAgICAgICAgICAgcmV0dXJuIGJlZ2luX2NlbGwoKS5zdG9yZV91aW50KDAsIDgpLmVuZF9jZWxsKCkuYmVnaW5fcGFyc2UoKTsKICAgICAgICB9" + + "CiAgICB9CiAgICAKICAgIDs7IFNwbGl0IGRvbWFpbiBpbnRvIHNlZ21lbnRzCiAgICB0dXBsZSBzZWdtZW50cyA9IG51bGwoKTsKICAgIGJ1aWxkZXIgY3VycmVudCA9" + + "IGJlZ2luX2NlbGwoKTsKICAgIGludCBpc0N1cnJlbnRFbXB0eSA9IHRydWU7CiAgICBpbnQgaXNGaXJzdCA9IHRydWU7CiAgICBpbnQgaXNIeXBoZW4gPSBmYWxzZTsK" + + "ICAgIHNsaWNlIGNzID0gZG9tYWluOwogICAgaW50IGNvbnRpbnVlID0gdHJ1ZTsKICAgIGRvIHsKCiAgICAgICAgOzsgUHJlcGFyZSBmb3IgbG9hZGluZyBuZXh0IGNo" + + "YXJhY3RlcgogICAgICAgIGlmIChjcy5zbGljZV9iaXRzKCkgPT0gMCkgewogICAgICAgICAgICBpbnQgcmVmcyA9IGNzLnNsaWNlX3JlZnMoKTsKICAgICAgICAgICAg" + + "aWYgKHJlZnMgPT0gMSkgewogICAgICAgICAgICAgICAgY3MgPSBjc35sb2FkX3JlZigpLmJlZ2luX3BhcnNlKCk7CiAgICAgICAgICAgIH0gZWxzZWlmIChyZWZzID4g" + + "MSkgewogICAgICAgICAgICAgICAgcmV0dXJuIG51bGwoKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGNvbnRpbnVlID0gZmFsc2U7CiAgICAg" + + "ICAgICAgIH0KICAgICAgICAgICAgY29udGludWUgPSBmYWxzZTsKICAgICAgICB9CgogICAgICAgIDs7IENvbnRpbnVlIGxvYWRpbmcgbmV4dCBjaGFyYWN0ZXIKICAg" + + "ICAgICBpZiAoY29udGludWUpIHsKICAgICAgICAgICAgaW50IGNoYXIgPSBjc35sb2FkX3VpbnQoOCk7CiAgICAgICAgICAgIDs7IHdlIGNhbiBkbyBpdCBiZWNhdXNl" + + "IGFkZGl0aW9uYWwgVVRGLTggY2hhcmFjdGVyJ3Mgb2N0ZXRzID49IDEyOCAtLSBodHRwczovL3d3dy5pZXRmLm9yZy9yZmMvcmZjMzYyOS50eHQKICAgICAgICAgICAg" + + "aW50IGlzX2h5cGhlbiA9IChjaGFyID09IDQ1KTsKICAgICAgICAgICAgaW50IGlzX2RvdCAgPSAoY2hhciA9PSA0Nik7CiAgICAgICAgICAgIGludCB2YWxpZF9jaGFy" + + "ID0gaXNfaHlwaGVuIHwgaXNfZG90IHwgKChjaGFyID49IDQ4KSAmIChjaGFyIDw9IDU3KSkgfCAoKGNoYXIgPj0gOTcpICYgKGNoYXIgPD0gMTIyKSk7IDs7ICctJyBv" + + "ciAwLTkgb3IgYS16CiAgICAgICAgICAgIGlmICh+IHZhbGlkX2NoYXIgfCAoaXNGaXJzdCAmIGlzX2h5cGhlbikpIHsKICAgICAgICAgICAgICAgIHJldHVybiBudWxs" + + "KCk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaXNIeXBoZW4gPSBpc19oeXBoZW47CiAgICAgICAgICAgIGlmIChpc19kb3QpIHsKICAgICAgICAgICAgICAgIGlm" + + "IChpc0ZpcnN0IHwgaXNIeXBoZW4pIHsgOzsgRW1wdHkgb3IgZW5kcyB3aXRoIGh5cGhlbgogICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsKCk7CiAgICAgICAg" + + "ICAgICAgICB9CiAgICAgICAgICAgICAgICBzZWdtZW50cyA9IGNvbnMoY3VycmVudCwgc2VnbWVudHMpOwogICAgICAgICAgICAgICAgY3VycmVudCA9IGJlZ2luX2Nl" + + "bGwoKTsKICAgICAgICAgICAgICAgIGlzSHlwaGVuID0gZmFsc2U7CiAgICAgICAgICAgICAgICBpc0ZpcnN0ID0gdHJ1ZTsKICAgICAgICAgICAgICAgIGlzQ3VycmVu" + + "dEVtcHR5ID0gdHJ1ZTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGlzRmlyc3QgPSBmYWxzZTsKICAgICAgICAgICAgICAgIGlzQ3VycmVudEVt" + + "cHR5ID0gZmFsc2U7CiAgICAgICAgICAgICAgICBjdXJyZW50fnN0b3JlX3VpbnQoY2hhciwgOCk7CiAgICAgICAgICAgIH0KICAgICAgICB9CgogICAgfSB1bnRpbCAo" + + "fiBjb250aW51ZSk7CiAgICBpZiAoaXNIeXBoZW4pIHsgOzsgZW5kcyB3aXRoIGh5cGhlbgogICAgICAgIHJldHVybiBudWxsKCk7CiAgICB9CiAgICBpZiAofiBpc0N1" + + "cnJlbnRFbXB0eSkgewogICAgICAgIHNlZ21lbnRzID0gY29ucyhjdXJyZW50LCBzZWdtZW50cyk7CiAgICB9CgogICAgOzsgQ29uY2F0ZW5hdGUgc2VnbWVudHMKICAg" + + "IGJ1aWxkZXIgcmVzID0gYmVnaW5fY2VsbCgpOwogICAgKGJ1aWxkZXIgYiwgdHVwbGUgdGFpbCkgPSB1bmNvbnMoc2VnbWVudHMpOwogICAgcmVzID0gcmVzLnN0b3Jl" + + "X2J1aWxkZXIoYik7CiAgICB3aGlsZSh+IG51bGw/KHRhaWwpKSB7CiAgICAgICAgKGIsIHRhaWwpID0gdW5jb25zKHRhaWwpOwogICAgICAgIHJlcyA9IHJlcy5zdG9y" + + "ZV91aW50KDAsIDgpOyA7OyBBZGQgXDAgc2VwYXJhdG9yCiAgICAgICAgcmVzID0gcmVzLnN0b3JlX2J1aWxkZXIoYik7CiAgICB9CiAgICByZXMgPSByZXMuc3RvcmVf" + + "dWludCgwLCA4KTsgOzsgQWRkIFwwIHNlcGFyYXRvcgogICAgcmV0dXJuIHJlcy5lbmRfY2VsbCgpLmJlZ2luX3BhcnNlKCk7Cn0KCmludCBkbnNfaW50ZXJuYWxfdmVy" + + "aWZ5KHNsaWNlIHNjKSBpbmxpbmVfcmVmIHsKICAgIGlmIChzYy5zbGljZV9yZWZzKCkgIT0gMCkgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIGludCBi" + + "aXRzID0gc2Muc2xpY2VfYml0cygpOwogICAgaWYgKGJpdHMgJSA4ICE9IDApIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICBpZiAoYml0cyA9PSAwKSB7" + + "IDs7IENhc2UgZm9yIHJvb3QgZG9tYWluCiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CiAgICBpbnQgbGVuID0gYml0cyAvIDg7CiAgICBpbnQgY291bnRlciA9IDA7" + + "CiAgICBpbnQgaXNGaXJzdCA9IHRydWU7CiAgICBpbnQgaXNIeXBoZW4gPSBmYWxzZTsKICAgIHJlcGVhdChsZW4pIHsKICAgICAgICBpbnQgY2hhciA9IHNjfmxvYWRf" + + "dWludCg4KTsKICAgICAgICBpZiAoY2hhciA9PSAwKSB7CiAgICAgICAgICAgIGlmIChjb3VudGVyID09IDApIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK" + + "ICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoaXNIeXBoZW4pIHsKICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgfQogICAgICAgICAg" + + "ICBjb3VudGVyID0gMDsKICAgICAgICAgICAgaXNIeXBoZW4gPSBmYWxzZTsKICAgICAgICAgICAgaXNGaXJzdCA9IHRydWU7CiAgICAgICAgfSBlbHNlIHsKICAgICAg" + + "ICAgICAgaW50IGNoYXJJc0h5cGhlbiA9IChjaGFyID09IDQ1KTsKICAgICAgICAgICAgaW50IGlzVmFsaWQgPSBjaGFySXNIeXBoZW4gfCAoKGNoYXIgPj0gNDgpICYg" + + "KGNoYXIgPD0gNTcpKSB8ICgoY2hhciA+PSA5NykgJiAoY2hhciA8PSAxMjIpKTsKICAgICAgICAgICAgaWYgKH4gaXNWYWxpZCkgewogICAgICAgICAgICAgICAgcmV0" + + "dXJuIGZhbHNlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmIChjaGFySXNIeXBoZW4gJiBpc0ZpcnN0KSAgewogICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl" + + "OwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlzSHlwaGVuID0gY2hhcklzSHlwaGVuOwogICAgICAgICAgICBpc0ZpcnN0ID0gZmFsc2U7CiAgICAgICAgICAgIGNv" + + "dW50ZXIgPSBjb3VudGVyICsgMTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gY291bnRlciA9PSAwICYgfiBpc0h5cGhlbjsKfQoKc2xpY2UgZG5zX2ludGVybmFs" + + "X25vcm1hbGl6ZShzbGljZSBzcmMpIGltcHVyZSBpbmxpbmVfcmVmIHsKICAgIHRocm93X3VubGVzcygxMzQsIHNyYy5zbGljZV9yZWZzKCkgPT0gMCk7IDs7IEludmFs" + + "aWQgYXJndW1lbnQgZXJyb3IKICAgIGJ1aWxkZXIgdGFyZ2V0ID0gYmVnaW5fY2VsbCgpOwogICAgcmVwZWF0KHNyYy5zbGljZV9iaXRzKCkgLyA4KSB7CiAgICAgICAg" + + "aW50IGNoYXIgPSBzcmN+bG9hZF91aW50KDgpOwoKICAgICAgICA7OyBiID0+IDYKICAgICAgICBpZiAoY2hhciA9PSA5OCkgewogICAgICAgICAgICBjaGFyID0gNTQ7" + + "CiAgICAgICAgfQoKICAgICAgICA7OyBnLCBxID0+IDkKICAgICAgICBpZiAoKGNoYXIgPT0gMTAzKSB8IChjaGFyID09IDExMykpIHsKICAgICAgICAgICAgY2hhciA9" + + "IDU3OyAgICAKICAgICAgICB9CgogICAgICAgIDs7IGwgPT4gMQogICAgICAgIGlmIChjaGFyID09IDEwOCkgewogICAgICAgICAgICBjaGFyID0gNDk7CiAgICAgICAg" + + "fQoKICAgICAgICA7OyBvID0+IDAKICAgICAgICBpZiAoY2hhciA9PSAxMTEpIHsKICAgICAgICAgICAgY2hhciA9IDQ4OwogICAgICAgIH0KCiAgICAgICAgOzsgcyA9" + + "PiA1CiAgICAgICAgaWYgKGNoYXIgPT0gMTE1KSB7CiAgICAgICAgICAgIGNoYXIgPSA1MzsKICAgICAgICB9CgogICAgICAgIDs7IHUgPT4gdgogICAgICAgIGlmIChj" + + "aGFyID09IDExNykgewogICAgICAgICAgICBjaGFyID0gMTE4OwogICAgICAgIH0KCiAgICAgICAgOzsgeiA9PiAyCiAgICAgICAgaWYgKGNoYXIgPT0gMTIyKSB7CiAg" + + "ICAgICAgICAgIGNoYXIgPSA1MDsKICAgICAgICB9CgogICAgICAgIHRhcmdldCA9IHRhcmdldC5zdG9yZV91aW50KGNoYXIsIDgpOwogICAgfQogICAgcmV0dXJuIHRh" + + "cmdldC5lbmRfY2VsbCgpLmJlZ2luX3BhcnNlKCk7Cn0K"; +files["libs/dns.tact"] = + "aW1wb3J0ICIuL2Rucy5mYyI7CgpzdHJ1Y3QgRE5TUmVzb2x2ZVJlc3VsdCB7CiAgICBwcmVmaXg6IEludDsgCiAgICByZWNvcmQ6IENlbGw/OyAKfQoKQG5hbWUoZG5z" + + "X3N0cmluZ190b19pbnRlcm5hbCkKbmF0aXZlIGRuc1N0cmluZ1RvSW50ZXJuYWwoc3RyOiBTdHJpbmcpOiBTbGljZT87CgpAbmFtZShkbnNfaW50ZXJuYWxfbm9ybWFs" + + "aXplKQpuYXRpdmUgZG5zSW50ZXJuYWxOb3JtYWxpemUoc3JjOiBTbGljZSk6IFNsaWNlOwoKQG5hbWUoZG5zX2ludGVybmFsX3ZlcmlmeSkKbmF0aXZlIGRuc0ludGVy" + + "bmFsVmVyaWZ5KHN1YmRvbWFpbjogU2xpY2UpOiBCb29sOwoKZnVuIGRuc0V4dHJhY3RUb3BEb21haW5MZW5ndGgoc3ViZG9tYWluOiBTbGljZSk6IEludCB7CiAgICBs" + + "ZXQgaTogSW50ID0gMDsKICAgIGxldCBuZWVkQnJlYWs6IEJvb2wgPSBmYWxzZTsKICAgIGRvIHsKICAgICAgICBsZXQgY2hhcjogSW50ID0gc3ViZG9tYWluLmxvYWRV" + + "aW50KDgpOyAvLyB3ZSBkbyBub3QgY2hlY2sgZG9tYWluLmxlbmd0aCBiZWNhdXNlIGl0IE1VU1QgY29udGFpbnMgXDAgY2hhcmFjdGVyCiAgICAgICAgbmVlZEJyZWFr" + + "ID0gY2hhciA9PSAwOwogICAgICAgIGlmICghbmVlZEJyZWFrKSB7CiAgICAgICAgICAgIGkgPSBpICsgODsKICAgICAgICB9CiAgICB9IHVudGlsIChuZWVkQnJlYWsp" + + "OwogICAgcmVxdWlyZShpICE9IDAsICJJbnZhbGlkIEROUyBuYW1lIik7CiAgICByZXR1cm4gaTsKfQoKZnVuIGRuc0V4dHJhY3RUb3BEb21haW4oc3ViZG9tYWluOiBT" + + "bGljZSk6IFNsaWNlIHsKICAgIGxldCBsZW46IEludCA9IGRuc0V4dHJhY3RUb3BEb21haW5MZW5ndGgoc3ViZG9tYWluKTsKICAgIHJldHVybiBzdWJkb21haW4ubG9h" + + "ZEJpdHMobGVuKTsKfQoKZnVuIGRuc1Jlc29sdmVOZXh0KGFkZHJlc3M6IEFkZHJlc3MpOiBDZWxsIHsKICAgIHJldHVybiBiZWdpbkNlbGwoKQogICAgICAgIC5zdG9y" + + "ZVVpbnQoMHhiYTkzLCAxNikKICAgICAgICAuc3RvcmVBZGRyZXNzKGFkZHJlc3MpCiAgICAgICAgLmVuZENlbGwoKTsKfQoKZnVuIGRuc1Jlc29sdmVXYWxsZXQoYWRk" + + "cmVzczogQWRkcmVzcyk6IENlbGwgewogICAgcmV0dXJuIGJlZ2luQ2VsbCgpCiAgICAgICAgLnN0b3JlVWludCgweDlmZDMsIDE2KQogICAgICAgIC5zdG9yZUFkZHJl" + + "c3MoYWRkcmVzcykKICAgICAgICAuc3RvcmVVaW50KDAsIDgpCiAgICAgICAgLmVuZENlbGwoKTsKfQoKdHJhaXQgRE5TUmVzb2x2ZXIgewoKICAgIGdldCBmdW4gZG5z" + + "cmVzb2x2ZShzdWJkb21haW46IFNsaWNlLCBjYXRlZ29yeTogSW50KTogRE5TUmVzb2x2ZVJlc3VsdCB7CgogICAgICAgIC8vIE5vcm1hbGl6ZQogICAgICAgIGxldCBk" + + "ZWx0YTogSW50ID0gMDsKICAgICAgICBpZiAoc3ViZG9tYWluLnByZWxvYWRVaW50KDgpID09IDApIHsKICAgICAgICAgICAgc3ViZG9tYWluLmxvYWRVaW50KDgpOyAv" + + "LyBTa2lwIGZpcnN0IGJ5dGUKICAgICAgICAgICAgZGVsdGEgPSBkZWx0YSArIDg7CiAgICAgICAgfQoKICAgICAgICAvLyBDaGVja3MgY29ycmVjdG5lc3MKICAgICAg" + + "ICByZXF1aXJlKGRuc0ludGVybmFsVmVyaWZ5KHN1YmRvbWFpbiksICJJbnZhbGlkIEROUyBuYW1lIik7CgogICAgICAgIC8vIFJlc29sdmUKICAgICAgICBsZXQgcmVz" + + "OiBETlNSZXNvbHZlUmVzdWx0ID0gc2VsZi5kb1Jlc29sdmVETlMoc3ViZG9tYWluLCBjYXRlZ29yeSk7CiAgICAgICAgcmV0dXJuIEROU1Jlc29sdmVSZXN1bHR7cHJl" + + "Zml4OiByZXMucHJlZml4ICsgZGVsdGEsIHJlY29yZDogcmVzLnJlY29yZH07CiAgICB9CgogICAgdmlydHVhbCBmdW4gZG9SZXNvbHZlRE5TKHN1YmRvbWFpbjogU2xp" + + "Y2UsIGNhdGVnb3J5OiBJbnQpOiBETlNSZXNvbHZlUmVzdWx0IHsKICAgICAgICByZXR1cm4gRE5TUmVzb2x2ZVJlc3VsdHtwcmVmaXg6IHN1YmRvbWFpbi5iaXRzKCks" + + "IHJlY29yZDogbnVsbH07CiAgICB9Cn0="; +files["libs/ownable.tact"] = + "bWVzc2FnZSBDaGFuZ2VPd25lciB7CiAgICBxdWVyeUlkOiBJbnQgYXMgdWludDY0OwogICAgbmV3T3duZXI6IEFkZHJlc3M7Cn0KCm1lc3NhZ2UgQ2hhbmdlT3duZXJP" + + "ayB7CiAgICBxdWVyeUlkOiBJbnQgYXMgdWludDY0OwogICAgbmV3T3duZXI6IEFkZHJlc3M7Cn0KCkBpbnRlcmZhY2UoIm9yZy50b24ub3duYWJsZSIpCnRyYWl0IE93" + + "bmFibGUgewogICAgb3duZXI6IEFkZHJlc3M7CgogICAgZnVuIHJlcXVpcmVPd25lcigpIHsKICAgICAgICBuYXRpdmVUaHJvd1VubGVzcygxMzIsIHNlbmRlcigpID09" + + "IHNlbGYub3duZXIpOwogICAgfQoKICAgIGdldCBmdW4gb3duZXIoKTogQWRkcmVzcyB7CiAgICAgICAgcmV0dXJuIHNlbGYub3duZXI7CiAgICB9Cn0KCkBpbnRlcmZh" + + "Y2UoIm9yZy50b24ub3duYWJsZS50cmFuc2ZlcmFibGUudjIiKQp0cmFpdCBPd25hYmxlVHJhbnNmZXJhYmxlIHdpdGggT3duYWJsZSB7CgogICAgb3duZXI6IEFkZHJl" + + "c3M7CgogICAgcmVjZWl2ZShtc2c6IENoYW5nZU93bmVyKSB7CiAgICAgICAgCiAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIHNlbmRlciBpcyB0aGUgb3duZXIKICAgICAg" + + "ICBzZWxmLnJlcXVpcmVPd25lcigpOwoKICAgICAgICAvLyBVcGRhdGUgb3duZXIKICAgICAgICBzZWxmLm93bmVyID0gbXNnLm5ld093bmVyOwoKICAgICAgICAvLyBS" + + "ZXBseSByZXN1bHQKICAgICAgICBzZWxmLnJlcGx5KENoYW5nZU93bmVyT2t7IHF1ZXJ5SWQ6IG1zZy5xdWVyeUlkLCBuZXdPd25lcjptc2cubmV3T3duZXIgfS50b0Nl" + + "bGwoKSk7CiAgICB9Cn0="; +files["libs/stoppable.tact"] = + "aW1wb3J0ICIuL293bmFibGUiOwoKQGludGVyZmFjZSgib3JnLnRvbi5zdG9wcGFibGUiKQp0cmFpdCBTdG9wcGFibGUgd2l0aCBPd25hYmxlIHsKICAgIAogICAgc3Rv" + + "cHBlZDogQm9vbDsKICAgIG93bmVyOiBBZGRyZXNzOwoKICAgIGZ1biByZXF1aXJlTm90U3RvcHBlZCgpIHsKICAgICAgICByZXF1aXJlKCFzZWxmLnN0b3BwZWQsICJD" + + "b250cmFjdCBzdG9wcGVkIik7CiAgICB9CgogICAgZnVuIHJlcXVpcmVTdG9wcGVkKCkgewogICAgICAgIHJlcXVpcmUoc2VsZi5zdG9wcGVkLCAiQ29udHJhY3Qgbm90" + + "IHN0b3BwZWQiKTsKICAgIH0KCiAgICByZWNlaXZlKCJTdG9wIikgewogICAgICAgIHNlbGYucmVxdWlyZU93bmVyKCk7CiAgICAgICAgc2VsZi5yZXF1aXJlTm90U3Rv" + + "cHBlZCgpOwogICAgICAgIHNlbGYuc3RvcHBlZCA9IHRydWU7CiAgICAgICAgc2VsZi5yZXBseSgiU3RvcHBlZCIuYXNDb21tZW50KCkpOwogICAgfQoKICAgIGdldCBm" + + "dW4gc3RvcHBlZCgpOiBCb29sIHsKICAgICAgICByZXR1cm4gc2VsZi5zdG9wcGVkOwogICAgfQp9CgpAaW50ZXJmYWNlKCJvcmcudG9uLnJlc3VtYWJsZSIpCnRyYWl0" + + "IFJlc3VtYWJsZSB3aXRoIFN0b3BwYWJsZSB7CiAgICBzdG9wcGVkOiBCb29sOwogICAgb3duZXI6IEFkZHJlc3M7CgogICAgcmVjZWl2ZSgiUmVzdW1lIikgewogICAg" + + "ICAgIHNlbGYucmVxdWlyZU93bmVyKCk7CiAgICAgICAgc2VsZi5yZXF1aXJlU3RvcHBlZCgpOwogICAgICAgIHNlbGYuc3RvcHBlZCA9IGZhbHNlOwogICAgICAgIHNl" + + "bGYucmVwbHkoIlJlc3VtZWQiLmFzQ29tbWVudCgpKTsKICAgIH0KfQ=="; +files["std/base.tact"] = + "dHJhaXQgQmFzZVRyYWl0IHsKICAgIHZpcnR1YWwgY29uc3Qgc3RvcmFnZVJlc2VydmU6IEludCA9IDA7CiAgICAKICAgIHZpcnR1YWwgaW5saW5lIGZ1biByZXBseShi" + + "b2R5OiBDZWxsPykgewogICAgICAgIHNlbGYuZm9yd2FyZChzZW5kZXIoKSwgYm9keSwgdHJ1ZSwgbnVsbCk7CiAgICB9CgogICAgdmlydHVhbCBpbmxpbmUgZnVuIG5v" + + "dGlmeShib2R5OiBDZWxsPykgewogICAgICAgIHNlbGYuZm9yd2FyZChzZW5kZXIoKSwgYm9keSwgZmFsc2UsIG51bGwpOwogICAgfQoKICAgIHZpcnR1YWwgZnVuIGZv" + + "cndhcmQodG86IEFkZHJlc3MsIGJvZHk6IENlbGw/LCBib3VuY2U6IEJvb2wsIGluaXQ6IFN0YXRlSW5pdD8pIHsKCiAgICAgICAgbGV0IGNvZGU6IENlbGw/ID0gbnVs" + + "bDsKICAgICAgICBsZXQgZGF0YTogQ2VsbD8gPSBudWxsOwogICAgICAgIGlmIChpbml0ICE9IG51bGwpIHsKICAgICAgICAgICAgbGV0IGluaXQyOiBTdGF0ZUluaXQg" + + "PSBpbml0ISE7CiAgICAgICAgICAgIGNvZGUgPSBpbml0Mi5jb2RlOwogICAgICAgICAgICBkYXRhID0gaW5pdDIuZGF0YTsKICAgICAgICB9CgogICAgICAgIC8vIExv" + + "Y2sgc3RvcmFnZSBpZiBuZWVkZWQKICAgICAgICBpZiAoc2VsZi5zdG9yYWdlUmVzZXJ2ZSA+IDApIHsgLy8gT3B0aW1pemVkIGluIGNvbXBpbGUtdGltZQogICAgICAg" + + "ICAgICBsZXQgY3R4OiBDb250ZXh0ID0gY29udGV4dCgpOwogICAgICAgICAgICBsZXQgYmFsYW5jZTogSW50ID0gbXlCYWxhbmNlKCk7CiAgICAgICAgICAgIGxldCBi" + + "YWxhbmNlQmVmb3JlTWVzc2FnZTogSW50ID0gYmFsYW5jZSAtIGN0eC52YWx1ZTsKICAgICAgICAgICAgaWYgKGJhbGFuY2VCZWZvcmVNZXNzYWdlIDwgc2VsZi5zdG9y" + + "YWdlUmVzZXJ2ZSkgewogICAgICAgICAgICAgICAgbmF0aXZlUmVzZXJ2ZShzZWxmLnN0b3JhZ2VSZXNlcnZlLCBSZXNlcnZlRXhhY3QpOwogICAgICAgICAgICAgICAg" + + "c2VuZChTZW5kUGFyYW1ldGVyc3tib3VuY2U6IGJvdW5jZSwgdG86IHRvLCB2YWx1ZTogMCwgbW9kZTogU2VuZFJlbWFpbmluZ0JhbGFuY2UgfCBTZW5kSWdub3JlRXJy" + + "b3JzLCBib2R5OiBib2R5LCBjb2RlOiBjb2RlLCBkYXRhOiBkYXRhIH0pOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAg" + + "ICAgICAvLyBKdXN0IHNlbmQgd2l0aCByZW1haW5pbmcgYmFsYW5jZQogICAgICAgIHNlbmQoU2VuZFBhcmFtZXRlcnN7Ym91bmNlOiBib3VuY2UsIHRvOiB0bywgdmFs" + + "dWU6IDAsIG1vZGU6IFNlbmRSZW1haW5pbmdWYWx1ZSB8IFNlbmRJZ25vcmVFcnJvcnMsIGJvZHk6IGJvZHksIGNvZGU6IGNvZGUsIGRhdGE6IGRhdGEgfSk7CiAgICB9" + + "Cn0="; +files["std/cells.tact"] = + "Ly8KLy8gQnVpbGRlcgovLwoKYXNtIGZ1biBiZWdpbkNlbGwoKTogQnVpbGRlciB7IE5FV0MgfQoKLy8gc3BlY2lhbCB0cmVhdG1lbnQgaW4gRnVuYyBjb21waWxlciwg" + + "c28gbm90IHJlcGxhY2VkIHdpdGggYXNtICJTVElYIgpAbmFtZShzdG9yZV9pbnQpCmV4dGVuZHMgbmF0aXZlIHN0b3JlSW50KHNlbGY6IEJ1aWxkZXIsIHZhbHVlOiBJ" + + "bnQsIGJpdHM6IEludCk6IEJ1aWxkZXI7CgovLyBzcGVjaWFsIHRyZWF0bWVudCBpbiBGdW5jIGNvbXBpbGVyLCBzbyBub3QgcmVwbGFjZWQgd2l0aCBhc20gIlNUVVgi" + + "CkBuYW1lKHN0b3JlX3VpbnQpCmV4dGVuZHMgbmF0aXZlIHN0b3JlVWludChzZWxmOiBCdWlsZGVyLCB2YWx1ZTogSW50LCBiaXRzOiBJbnQpOiBCdWlsZGVyOwoKQG5h" + + "bWUoX190YWN0X3N0b3JlX2Jvb2wpCmV4dGVuZHMgbmF0aXZlIHN0b3JlQm9vbChzZWxmOiBCdWlsZGVyLCB2YWx1ZTogQm9vbCk6IEJ1aWxkZXI7CgovLy8gRXh0ZW5z" + + "aW9uIGZ1bmN0aW9uIGZvciB0aGUgYEJ1aWxkZXJgLiBBbGlhcyB0byBgQnVpbGRlci5zdG9yZUJvb2woKWAuIEF2YWlsYWJsZSBzaW5jZSBUYWN0IDEuNS4wLgovLy8K" + + "Ly8vIGBgYHRhY3QKLy8vIGZ1biBleGFtcGxlKCkgewovLy8gICAgIGxldCBiOiBCdWlsZGVyID0gYmVnaW5DZWxsKCk7Ci8vLyAgICAgbGV0IGZpeno6IEJ1aWxkZXIg" + + "PSBiLnN0b3JlQml0KHRydWUpOyAgLy8gd3JpdGVzIDEKLy8vICAgICBsZXQgYnV6ejogQnVpbGRlciA9IGIuc3RvcmVCaXQoZmFsc2UpOyAvLyB3cml0ZXMgMAovLy8g" + + "fQovLy8gYGBgCi8vLwovLy8gU2VlOiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9yZWYvY29yZS1jZWxscyNidWlsZGVyc3RvcmViaXQKLy8vCkBuYW1lKF9fdGFj" + + "dF9zdG9yZV9ib29sKQpleHRlbmRzIG5hdGl2ZSBzdG9yZUJpdChzZWxmOiBCdWlsZGVyLCB2YWx1ZTogQm9vbCk6IEJ1aWxkZXI7Cgphc20gZXh0ZW5kcyBmdW4gc3Rv" + + "cmVDb2lucyhzZWxmOiBCdWlsZGVyLCB2YWx1ZTogSW50KTogQnVpbGRlciB7IFNUVkFSVUlOVDE2IH0KCmFzbSBleHRlbmRzIGZ1biBzdG9yZVZhckludDE2KHNlbGY6" + + "IEJ1aWxkZXIsIHZhbHVlOiBJbnQpOiBCdWlsZGVyIHsgU1RWQVJJTlQxNiB9Cgphc20gZXh0ZW5kcyBmdW4gc3RvcmVWYXJJbnQzMihzZWxmOiBCdWlsZGVyLCB2YWx1" + + "ZTogSW50KTogQnVpbGRlciB7IFNUVkFSSU5UMzIgfQoKYXNtIGV4dGVuZHMgZnVuIHN0b3JlVmFyVWludDE2KHNlbGY6IEJ1aWxkZXIsIHZhbHVlOiBJbnQpOiBCdWls" + + "ZGVyIHsgU1RWQVJVSU5UMTYgfQoKYXNtIGV4dGVuZHMgZnVuIHN0b3JlVmFyVWludDMyKHNlbGY6IEJ1aWxkZXIsIHZhbHVlOiBJbnQpOiBCdWlsZGVyIHsgU1RWQVJV" + + "SU5UMzIgfQoKYXNtKGNlbGwgc2VsZikgZXh0ZW5kcyBmdW4gc3RvcmVSZWYoc2VsZjogQnVpbGRlciwgY2VsbDogQ2VsbCk6IEJ1aWxkZXIgeyBTVFJFRiB9Cgphc20g" + + "ZXh0ZW5kcyBmdW4gc3RvcmVTbGljZShzZWxmOiBCdWlsZGVyLCBjZWxsOiBTbGljZSk6IEJ1aWxkZXIgeyBTVFNMSUNFUiB9CgovLy8gRXh0ZW5zaW9uIGZ1bmN0aW9u" + + "IGZvciB0aGUgYEJ1aWxkZXJgLiBBdmFpbGFibGUgc2luY2UgVGFjdCAxLjUuMC4KLy8vCi8vLyBBcHBlbmRzIGFsbCBkYXRhIGZyb20gYSBgQnVpbGRlcmAgYGNlbGxg" + + "IHRvIHRoZSBjb3B5IG9mIHRoZSBgQnVpbGRlcmAuIFJldHVybnMgdGhhdCBjb3B5LgovLy8KLy8vIGBgYHRhY3QKLy8vIGZ1biBleGFtcGxlKCkgewovLy8gICAgIGxl" + + "dCBiOiBCdWlsZGVyID0gYmVnaW5DZWxsKCkuc3RvcmVDb2lucyg0Mik7Ci8vLyAgICAgbGV0IGZpeno6IEJ1aWxkZXIgPSBiZWdpbkNlbGwoKS5zdG9yZUJ1aWxkZXIo" + + "Yik7Ci8vLyAgICAgYi5lbmRDZWxsKCkgPT0gZml6ei5lbmRDZWxsKCk7IC8vIHRydWUKLy8vIH0KLy8vIGBgYAovLy8KLy8vIFNlZTogaHR0cHM6Ly9kb2NzLnRhY3Qt" + + "bGFuZy5vcmcvcmVmL2NvcmUtY2VsbHMjYnVpbGRlcnN0b3JlYnVpbGRlcgovLy8KYXNtIGV4dGVuZHMgZnVuIHN0b3JlQnVpbGRlcihzZWxmOiBCdWlsZGVyLCBjZWxs" + + "OiBCdWlsZGVyKTogQnVpbGRlciB7IFNUQlIgfQoKQG5hbWUoX190YWN0X3N0b3JlX2FkZHJlc3MpCmV4dGVuZHMgbmF0aXZlIHN0b3JlQWRkcmVzcyhzZWxmOiBCdWls" + + "ZGVyLCBhZGRyZXNzOiBBZGRyZXNzKTogQnVpbGRlcjsKCi8vLyBFeHRlbnNpb24gZnVuY3Rpb24gZm9yIHRoZSBgQnVpbGRlcmAuIEF2YWlsYWJsZSBzaW5jZSBUYWN0" + + "IDEuNS4wLgovLy8KLy8vIElmIHRoZSBgY2VsbGAgaXMgbm90IGBudWxsYCwgc3RvcmVzIDEgYXMgYSBzaW5nbGUgYml0IGFuZCB0aGVuIHJlZmVyZW5jZSBgY2VsbGAg" + + "aW50byB0aGUgY29weSBvZiB0aGUgYEJ1aWxkZXJgLiBSZXR1cm5zIHRoYXQgY29weS4KLy8vCi8vLyBJZiB0aGUgYGNlbGxgIGlzIGBudWxsYCwgb25seSBzdG9yZXMg" + + "MCBhcyBhIHNpbmdsZSBiaXQgaW50byB0aGUgY29weSBvZiB0aGUgYEJ1aWxkZXJgLiBSZXR1cm5zIHRoYXQgY29weS4KLy8vCi8vLyBBcyBhIHNpbmdsZSBgQ2VsbGAg" + + "Y2FuIHN0b3JlIHVwIHRvIDQgcmVmZXJlbmNlcywgYXR0ZW1wdHMgdG8gc3RvcmUgbW9yZSB0aHJvdyBhbiBleGNlcHRpb24gd2l0aCBleGl0IGNvZGUgODogYENlbGwg" + + "b3ZlcmZsb3dgLgovLy8KLy8vIGBgYHRhY3QKLy8vIGZ1biBleGFtcGxlKCkgewovLy8gICAgIGxldCBiOiBCdWlsZGVyID0gYmVnaW5DZWxsKCk7Ci8vLyAgICAgbGV0" + + "IGZpeno6IEJ1aWxkZXIgPSBiCi8vLyAgICAgICAgIC5zdG9yZU1heWJlUmVmKGVtcHR5Q2VsbCgpKSAvLyAxLCB0aGVuIGVtcHR5IGNlbGwKLy8vICAgICAgICAgLnN0" + + "b3JlTWF5YmVSZWYobnVsbCk7ICAgICAgIC8vIDAKLy8vIH0KLy8vIGBgYAovLy8KLy8vIFNlZTogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvcmVmL2NvcmUtY2Vs" + + "bHMjYnVpbGRlcnN0b3JlbWF5YmVyZWYKLy8vCmFzbShjZWxsIHNlbGYpIGV4dGVuZHMgZnVuIHN0b3JlTWF5YmVSZWYoc2VsZjogQnVpbGRlciwgY2VsbDogQ2VsbD8p" + + "OiBCdWlsZGVyIHsgU1RPUFRSRUYgfQoKYXNtIGV4dGVuZHMgZnVuIGVuZENlbGwoc2VsZjogQnVpbGRlcik6IENlbGwgeyBFTkRDIH0KCmFzbSBleHRlbmRzIGZ1biBy" + + "ZWZzKHNlbGY6IEJ1aWxkZXIpOiBJbnQgeyBCUkVGUyB9Cgphc20gZXh0ZW5kcyBmdW4gYml0cyhzZWxmOiBCdWlsZGVyKTogSW50IHsgQkJJVFMgfQoKLy8KLy8gU2xp" + + "Y2UKLy8KCmFzbSBleHRlbmRzIGZ1biBiZWdpblBhcnNlKHNlbGY6IENlbGwpOiBTbGljZSB7IENUT1MgfQoKYXNtKC0+IDEgMCkgZXh0ZW5kcyBtdXRhdGVzIGZ1biBs" + + "b2FkUmVmKHNlbGY6IFNsaWNlKTogQ2VsbCB7IExEUkVGIH0KCi8vLyBFeHRlbnNpb24gZnVuY3Rpb24gZm9yIHRoZSBgU2xpY2VgLiBBdmFpbGFibGUgc2luY2UgVGFj" + + "dCAxLjUuMC4KLy8vCi8vLyBQcmVsb2FkcyB0aGUgbmV4dCByZWZlcmVuY2UgZnJvbSB0aGUgYFNsaWNlYCBhcyBhIGBDZWxsYC4gRG9lc24ndCBtb2RpZnkgdGhlIG9y" + + "aWdpbmFsIGBTbGljZWAuCi8vLwovLy8gQXR0ZW1wdHMgdG8gcHJlbG9hZCBzdWNoIHJlZmVyZW5jZSBgQ2VsbGAgd2hlbiBgU2xpY2VgIGRvZXNuJ3QgY29udGFpbiBp" + + "dCB0aHJvdyBhbiBleGNlcHRpb24gd2l0aCBleGl0IGNvZGUgODogYENlbGwgb3ZlcmZsb3dgLgovLy8KLy8vIEF0dGVtcHRzIHRvIHByZWxvYWQgbW9yZSBkYXRhIHRo" + + "YW4gYFNsaWNlYCBjb250YWlucyB0aHJvdyBhbiBleGNlcHRpb24gd2l0aCBleGl0IGNvZGUgOTogYENlbGwgdW5kZXJmbG93YC4KLy8vCi8vLyBgYGB0YWN0Ci8vLyBm" + + "dW4gZXhhbXBsZXMoKSB7Ci8vLyAgICAgbGV0IHMxOiBTbGljZSA9IGJlZ2luQ2VsbCgpLnN0b3JlUmVmKGVtcHR5Q2VsbCgpKS5hc1NsaWNlKCk7Ci8vLyAgICAgbGV0" + + "IGZpeno6IENlbGwgPSBzMS5wcmVsb2FkUmVmKCk7IC8vIGRpZG4ndCBtb2RpZnkgczEKLy8vCi8vLyAgICAgbGV0IHMyOiBTbGljZSA9IGJlZ2luQ2VsbCgpCi8vLyAg" + + "ICAgICAgIC5zdG9yZVJlZihlbXB0eUNlbGwoKSkKLy8vICAgICAgICAgLnN0b3JlUmVmKHMxLmFzQ2VsbCgpKQovLy8gICAgICAgICAuYXNTbGljZSgpOwovLy8gICAg" + + "IGxldCByZWYxOiBDZWxsID0gczIucHJlbG9hZFJlZigpOwovLy8gICAgIGxldCByZWYyOiBDZWxsID0gczIucHJlbG9hZFJlZigpOwovLy8gICAgIHJlZjEgPT0gcmVm" + + "MjsgLy8gdHJ1ZQovLy8gfQovLy8gYGBgCi8vLwovLy8gU2VlOgovLy8gKiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9yZWYvY29yZS1jZWxscyNzbGljZXByZWxv" + + "YWRyZWYKLy8vICogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvYm9vay9leGl0LWNvZGVzCi8vLwphc20gZXh0ZW5kcyBmdW4gcHJlbG9hZFJlZihzZWxmOiBTbGlj" + + "ZSk6IENlbGwgeyBQTERSRUYgfQoKLy8gc3BlY2lhbCB0cmVhdG1lbnQgaW4gRnVuYyBjb21waWxlciwgc28gbm90IHJlcGxhY2VkIHdpdGggYXNtICJMRFNMSUNFWCIK" + + "QG5hbWUobG9hZF9iaXRzKQpleHRlbmRzIG11dGF0ZXMgbmF0aXZlIGxvYWRCaXRzKHNlbGY6IFNsaWNlLCBsOiBJbnQpOiBTbGljZTsKCi8vIHNwZWNpYWwgdHJlYXRt" + + "ZW50IGluIEZ1bmMgY29tcGlsZXIsIHNvIG5vdCByZXBsYWNlZCB3aXRoIGFzbSAiUExEU0xJQ0VYIgpAbmFtZShwcmVsb2FkX2JpdHMpCmV4dGVuZHMgbmF0aXZlIHBy" + + "ZWxvYWRCaXRzKHNlbGY6IFNsaWNlLCBsOiBJbnQpOiBTbGljZTsKCi8vIHNwZWNpYWwgdHJlYXRtZW50IGluIEZ1bmMgY29tcGlsZXIsIHNvIG5vdCByZXBsYWNlZCB3" + + "aXRoIGFzbSAiTERJWCIKQG5hbWUobG9hZF9pbnQpCmV4dGVuZHMgbXV0YXRlcyBuYXRpdmUgbG9hZEludChzZWxmOiBTbGljZSwgbDogSW50KTogSW50OwoKLy8gc3Bl" + + "Y2lhbCB0cmVhdG1lbnQgaW4gRnVuYyBjb21waWxlciwgc28gbm90IHJlcGxhY2VkIHdpdGggYXNtICJQTERJWCIKQG5hbWUocHJlbG9hZF9pbnQpCmV4dGVuZHMgbmF0" + + "aXZlIHByZWxvYWRJbnQoc2VsZjogU2xpY2UsIGw6IEludCk6IEludDsKCi8vIHNwZWNpYWwgdHJlYXRtZW50IGluIEZ1bmMgY29tcGlsZXIsIHNvIG5vdCByZXBsYWNl" + + "ZCB3aXRoIGFzbSAiTERVWCIKQG5hbWUobG9hZF91aW50KQpleHRlbmRzIG11dGF0ZXMgbmF0aXZlIGxvYWRVaW50KHNlbGY6IFNsaWNlLCBsOiBJbnQpOiBJbnQ7Cgov" + + "LyBzcGVjaWFsIHRyZWF0bWVudCBpbiBGdW5jIGNvbXBpbGVyLCBzbyBub3QgcmVwbGFjZWQgd2l0aCBhc20gIlBMRFVYIgpAbmFtZShwcmVsb2FkX3VpbnQpCmV4dGVu" + + "ZHMgbmF0aXZlIHByZWxvYWRVaW50KHNlbGY6IFNsaWNlLCBsOiBJbnQpOiBJbnQ7Cgphc20oLT4gMSAwKSBleHRlbmRzIG11dGF0ZXMgZnVuIGxvYWRCb29sKHNlbGY6" + + "IFNsaWNlKTogQm9vbCB7IDEgTERJIH0KCi8vLyBFeHRlbnNpb24gbXV0YXRpb24gZnVuY3Rpb24gZm9yIHRoZSBgU2xpY2VgLiBBbGlhcyB0byBgU2xpY2UubG9hZEJv" + + "b2woKWAuIEF2YWlsYWJsZSBzaW5jZSBUYWN0IDEuNS4wLgovLy8KLy8vIGBgYHRhY3QKLy8vIGZ1biBleGFtcGxlKCkgewovLy8gICAgIGxldCBzOiBTbGljZSA9IGJl" + + "Z2luQ2VsbCgpLnN0b3JlQm9vbCh0cnVlKS5hc1NsaWNlKCk7Ci8vLyAgICAgbGV0IGZpeno6IEJvb2wgPSBzLmxvYWRCaXQoKTsgLy8gdHJ1ZQovLy8gfQovLy8gYGBg" + + "Ci8vLwovLy8gU2VlOiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9yZWYvY29yZS1jZWxscyNzbGljZWxvYWRiaXQKLy8vCmFzbSgtPiAxIDApIGV4dGVuZHMgbXV0" + + "YXRlcyBmdW4gbG9hZEJpdChzZWxmOiBTbGljZSk6IEJvb2wgeyAxIExESSB9Cgphc20oIC0+IDEgMCkgZXh0ZW5kcyBtdXRhdGVzIGZ1biBsb2FkQ29pbnMoc2VsZjog" + + "U2xpY2UpOiBJbnQgeyBMRFZBUlVJTlQxNiB9CgpAbmFtZShfX3RhY3RfbG9hZF9hZGRyZXNzKQpleHRlbmRzIG11dGF0ZXMgbmF0aXZlIGxvYWRBZGRyZXNzKHNlbGY6" + + "IFNsaWNlKTogQWRkcmVzczsKCmFzbSBleHRlbmRzIG11dGF0ZXMgZnVuIHNraXBCaXRzKHNlbGY6IFNsaWNlLCBsOiBJbnQpIHsgU0RTS0lQRklSU1QgfQoKYXNtIGV4" + + "dGVuZHMgZnVuIGVuZFBhcnNlKHNlbGY6IFNsaWNlKSB7IEVORFMgfQoKLy8KLy8gU2xpY2Ugc2l6ZQovLwoKYXNtIGV4dGVuZHMgZnVuIHJlZnMoc2VsZjogU2xpY2Up" + + "OiBJbnQgeyBTUkVGUyB9Cgphc20gZXh0ZW5kcyBmdW4gYml0cyhzZWxmOiBTbGljZSk6IEludCB7IFNCSVRTIH0KCmFzbSBleHRlbmRzIGZ1biBlbXB0eShzZWxmOiBT" + + "bGljZSk6IEJvb2wgeyBTRU1QVFkgfQoKYXNtIGV4dGVuZHMgZnVuIGRhdGFFbXB0eShzZWxmOiBTbGljZSk6IEJvb2wgeyBTREVNUFRZIH0KCmFzbSBleHRlbmRzIGZ1" + + "biByZWZzRW1wdHkoc2VsZjogU2xpY2UpOiBCb29sIHsgU1JFTVBUWSB9CgovLwovLyBDb252ZXJzaW9ucwovLwoKaW5saW5lIGV4dGVuZHMgZnVuIGFzU2xpY2Uoc2Vs" + + "ZjogQnVpbGRlcik6IFNsaWNlIHsKICAgIHJldHVybiBzZWxmLmVuZENlbGwoKS5iZWdpblBhcnNlKCk7Cn0KCmlubGluZSBleHRlbmRzIGZ1biBhc1NsaWNlKHNlbGY6" + + "IENlbGwpOiBTbGljZSB7CiAgICByZXR1cm4gc2VsZi5iZWdpblBhcnNlKCk7Cn0KCmlubGluZSBleHRlbmRzIGZ1biBhc0NlbGwoc2VsZjogU2xpY2UpOiBDZWxsIHsK" + + "ICAgIHJldHVybiBiZWdpbkNlbGwoKQogICAgICAgIC5zdG9yZVNsaWNlKHNlbGYpCiAgICAgICAgLmVuZENlbGwoKTsKfQoKaW5saW5lIGV4dGVuZHMgZnVuIGFzQ2Vs" + + "bChzZWxmOiBCdWlsZGVyKTogQ2VsbCB7CiAgICByZXR1cm4gc2VsZi5lbmRDZWxsKCk7Cn0KCmlubGluZSBmdW4gZW1wdHlDZWxsKCk6IENlbGwgewogICAgcmV0dXJu" + + "IGJlZ2luQ2VsbCgpLmVuZENlbGwoKTsKfQoKaW5saW5lIGZ1biBlbXB0eVNsaWNlKCk6IFNsaWNlIHsKICAgIHJldHVybiBlbXB0eUNlbGwoKS5hc1NsaWNlKCk7Cn0K"; +files["std/config.tact"] = + "YXNtIGZ1biBnZXRDb25maWdQYXJhbShpZDogSW50KTogQ2VsbD8geyBDT05GSUdPUFRQQVJBTSB9Cg=="; +files["std/context.tact"] = + "c3RydWN0IENvbnRleHQgewogICAgYm91bmNlZDogQm9vbDsKICAgIHNlbmRlcjogQWRkcmVzczsKICAgIHZhbHVlOiBJbnQ7CiAgICByYXc6IFNsaWNlOwp9CgpAbmFt" + + "ZShfX3RhY3RfY29udGV4dF9nZXQpCm5hdGl2ZSBjb250ZXh0KCk6IENvbnRleHQ7CgpAbmFtZShfX3RhY3RfY29udGV4dF9nZXRfc2VuZGVyKQpuYXRpdmUgc2VuZGVy" + + "KCk6IEFkZHJlc3M7CgpleHRlbmRzIGZ1biByZWFkRm9yd2FyZEZlZShzZWxmOiBDb250ZXh0KTogSW50IHsKICAgIGxldCBzYzogU2xpY2UgPSBzZWxmLnJhdzsKICAg" + + "IHNjLmxvYWRBZGRyZXNzKCk7IC8vIFNraXAgZGVzdGluYXRpb24KICAgIHNjLmxvYWRDb2lucygpOyAvLyBTa2lwIHZhbHVlCiAgICBzYy5za2lwQml0cygxKTsgLy8g" + + "U2tpcCBleHRyYSBjdXJyZW5jeSBjb2xsZWN0aW9uCiAgICBzYy5sb2FkQ29pbnMoKTsgLy8gU2tpcCBpaHJfZmVlCiAgICByZXR1cm4gKHNjLmxvYWRDb2lucygpICog" + + "MykgLyAyOwp9"; +files["std/contract.tact"] = + "c3RydWN0IFN0YXRlSW5pdCB7CiAgICBjb2RlOiBDZWxsOwogICAgZGF0YTogQ2VsbDsKfQoKQG5hbWUoX190YWN0X2NvbXB1dGVfY29udHJhY3RfYWRkcmVzcykKbmF0" + + "aXZlIGNvbnRyYWN0QWRkcmVzc0V4dChjaGFpbjogSW50LCBjb2RlOiBDZWxsLCBkYXRhOiBDZWxsKTogQWRkcmVzczsKCmlubGluZSBmdW4gY29udHJhY3RBZGRyZXNz" + + "KHM6IFN0YXRlSW5pdCk6IEFkZHJlc3MgewogICAgcmV0dXJuIGNvbnRyYWN0QWRkcmVzc0V4dCgwLCBzLmNvZGUsIHMuZGF0YSk7Cn0KCkBuYW1lKF9fdGFjdF9hZGRy" + + "ZXNzX3RvX3NsaWNlKQpleHRlbmRzIG5hdGl2ZSBhc1NsaWNlKHNlbGY6IEFkZHJlc3MpOiBTbGljZTsKCkBuYW1lKF9fdGFjdF9jcmVhdGVfYWRkcmVzcykKbmF0aXZl" + + "IG5ld0FkZHJlc3MoY2hhaW46IEludCwgaGFzaDogSW50KTogQWRkcmVzczsKCmFzbSBmdW4gbXlBZGRyZXNzKCk6IEFkZHJlc3MgeyBNWUFERFIgfQoKYXNtIGZ1biBt" + + "eUJhbGFuY2UoKTogSW50IHsgQkFMQU5DRSBGSVJTVCB9CgovLy8gR2xvYmFsIGZ1bmN0aW9uLiBBdmFpbGFibGUgc2luY2UgVGFjdCAxLjUuMC4KLy8vCi8vLyBSZXR1" + + "cm5zIHRoZSBuYW5vVG9uY29pbiBgSW50YCBhbW91bnQgb2YgZ2FzIGNvbnN1bWVkIGJ5IFRWTSBpbiB0aGUgY3VycmVudCB0cmFuc2FjdGlvbiBzbyBmYXIuIFRoZSBy" + + "ZXN1bHRpbmcgdmFsdWUgaW5jbHVkZXMgdGhlIGNvc3Qgb2YgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLgovLy8KLy8vIGBgYHRhY3QKLy8vIGZ1biBleGFtcGxlKCkgewov" + + "Ly8gICAgIGxldCBnYXM6IEludCA9IGdhc0NvbnN1bWVkKCk7Ci8vLyB9Ci8vLyBgYGAKLy8vCi8vLyBTZWU6IGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL3JlZi9j" + + "b3JlLWFkdmFuY2VkI2dhc2NvbnN1bWVkCi8vLwphc20gZnVuIGdhc0NvbnN1bWVkKCk6IEludCB7IEdBU0NPTlNVTUVEIH0KCi8vLyBHbG9iYWwgZnVuY3Rpb24uIEF2" + + "YWlsYWJsZSBzaW5jZSBUYWN0IDEuNS4wLgovLy8KLy8vIFJldHVybnMgdGhlIG5hbm9Ub25jb2luIGBJbnRgIGFtb3VudCBvZiB0aGUgYWNjdW11bGF0ZWQgc3RvcmFn" + + "ZSBmZWUgZGVidC4gU3RvcmFnZSBmZWVzIGFyZSBkZWR1Y3RlZCBmcm9tIHRoZSBpbmNvbWluZyBtZXNzYWdlIHZhbHVlIGJlZm9yZSB0aGUgbmV3IGNvbnRyYWN0IGJh" + + "bGFuY2UgaXMgY2FsY3VsYXRlZC4KLy8vCi8vLyBgYGB0YWN0Ci8vLyBmdW4gZXhhbXBsZSgpIHsKLy8vICAgICBsZXQgZGVidDogSW50ID0gbXlTdG9yYWdlRHVlKCk7" + + "Ci8vLyB9Ci8vLyBgYGAKLy8vCi8vLyBTZWU6IGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL3JlZi9jb3JlLWFkdmFuY2VkI215c3RvcmFnZWR1ZQovLy8KYXNtIGZ1" + + "biBteVN0b3JhZ2VEdWUoKTogSW50IHsgRFVFUEFZTUVOVCB9CgovLy8gR2xvYmFsIGZ1bmN0aW9uLiBBdmFpbGFibGUgc2luY2UgVGFjdCAxLjUuMC4KLy8vCi8vLyBD" + + "YWxjdWxhdGVzIGFuZCByZXR1cm5zIHRoZSBzdG9yYWdlIGZlZSBpbiBuYW5vVG9uY29pbnMgYEludGAgZm9yIHN0b3JpbmcgYSBjb250cmFjdCB3aXRoIGEgZ2l2ZW4g" + + "bnVtYmVyIG9mIGBjZWxsc2AgYW5kIGBiaXRzYCBmb3IgYSBudW1iZXIgb2YgYHNlY29uZHNgLiBVc2VzIHRoZSBwcmljZXMgb2YgdGhlIG1hc3RlcmNoYWluIGlmIGBp" + + "c01hc3RlcmNoYWluYCBpcyBgdHJ1ZWAsIG90aGVyd2lzZSB0aGUgcHJpY2VzIG9mIHRoZSBiYXNlY2hhaW4uIFRoZSBjdXJyZW50IHByaWNlcyBhcmUgb2J0YWluZWQg" + + "ZnJvbSB0aGUgY29uZmlnIHBhcmFtIDE4IG9mIFRPTiBCbG9ja2NoYWluLgovLy8KLy8vIE5vdGUsIHRoYXQgdGhlIHZhbHVlcyBvZiBgY2VsbHNgIGFuZCBgYml0c2Ag" + + "YXJlIHRha2VuIG1vZHVsbyB0aGVpciBtYXhpbXVtIHZhbHVlcyBwbHVzIDEuIFRoYXQgaXMsIHNwZWNpZnlpbmcgdmFsdWVzIGhpZ2hlciB0aGFuIHRob3NlIGxpc3Rl" + + "ZCBpbiBhY2NvdW50IHN0YXRlIGxpbWl0cyAoYG1heF9hY2Nfc3RhdGVfY2VsbHNgIGFuZCBgbWF4X2FjY19zdGF0ZV9iaXRzYCkgd2lsbCBoYXZlIHRoZSBzYW1lIHJl" + + "c3VsdCBhcyB3aXRoIHNwZWNpZnlpbmcgdGhlIGV4YWN0IGxpbWl0cy4gSW4gYWRkaXRpb24sIG1ha2Ugc3VyZSB5b3UgdGFrZSBpbnRvIGFjY291bnQgdGhlIGRlZHVw" + + "bGljYXRpb24gb2YgY2VsbHMgd2l0aCB0aGUgc2FtZSBoYXNoLgovLy8KLy8vIEF0dGVtcHRzIHRvIHNwZWNpZnkgbmVnYXRpdmUgbnVtYmVyIG9mIGBjZWxsc2AsIGBi" + + "aXRzYCBvciBgc2Vjb25kc2AgdGhyb3cgYW4gZXhjZXB0aW9uIHdpdGggZXhpdCBjb2RlIDU6IGBJbnRlZ2VyIG91dCBvZiBleHBlY3RlZCByYW5nZWAuCi8vLwovLy8g" + + "YGBgdGFjdAovLy8gZnVuIGV4YW1wbGUoKSB7Ci8vLyAgICAgbGV0IGZlZTogSW50ID0gZ2V0U3RvcmFnZUZlZSgxXzAwMCwgMV8wMDAsIDFfMDAwLCBmYWxzZSk7Ci8v" + + "LyB9Ci8vLyBgYGAKLy8vCi8vLyBTZWU6Ci8vLyAqIGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL3JlZi9jb3JlLWFkdmFuY2VkI2dldHN0b3JhZ2VmZWUKLy8vICog" + + "aHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvcmVmL2NvcmUtYWR2YW5jZWQjZ2V0c2ltcGxlc3RvcmFnZWZlZQovLy8KYXNtIGZ1biBnZXRTdG9yYWdlRmVlKGNlbGxz" + + "OiBJbnQsIGJpdHM6IEludCwgc2Vjb25kczogSW50LCBpc01hc3RlcmNoYWluOiBCb29sKTogSW50IHsgR0VUU1RPUkFHRUZFRSB9CgovLy8gR2xvYmFsIGZ1bmN0aW9u" + + "LiBBdmFpbGFibGUgc2luY2UgVGFjdCAxLjUuMC4KLy8vCi8vLyBDYWxjdWxhdGVzIGFuZCByZXR1cm5zIHRoZSBjb21wdXRlIGZlZSBpbiBuYW5vVG9uY29pbnMgYElu" + + "dGAgZm9yIGEgdHJhbnNhY3Rpb24gdGhhdCBjb25zdW1lZCBgZ2FzVXNlZGAgYW1vdW50IG9mIGdhcy4gVXNlcyB0aGUgcHJpY2VzIG9mIHRoZSBtYXN0ZXJjaGFpbiBp" + + "ZiBgaXNNYXN0ZXJjaGFpbmAgaXMgYHRydWVgLCBvdGhlcndpc2UgdGhlIHByaWNlcyBvZiB0aGUgYmFzZWNoYWluLiBUaGUgY3VycmVudCBwcmljZXMgYXJlIG9idGFp" + + "bmVkIGZyb20gdGhlIGNvbmZpZyBwYXJhbSAyMCBmb3IgdGhlIG1hc3RlcmNoYWluIGFuZCBjb25maWcgcGFyYW0gMjEgZm9yIHRoZSBiYXNlY2hhaW4gb2YgVE9OIEJs" + + "b2NrY2hhaW4uCi8vLwovLy8gV2hlbiB0aGUgYGdhc1VzZWRgIGlzIGxlc3MgdGhhbiBhIGNlcnRhaW4gdGhyZXNob2xkIGNhbGxlZCBgZmxhdF9nYXNfbGltaXRgLCB0" + + "aGVyZSdzIGEgbWluaW11bSBwcmljZSB0byBwYXkgYmFzZWQgb24gdGhlIHZhbHVlIG9mIGBmbGF0X2dhc19wcmljZWAuIFRoZSBsZXNzIGdhcyBpcyB1c2VkIGJlbG93" + + "IHRoaXMgdGhyZXNob2xkLCB0aGUgaGlnaGVyIHRoZSBtaW5pbXVtIHByaWNlIHdpbGwgYmUuIFNlZSB0aGUgZXhhbXBsZSBmb3IgYGdldFNpbXBsZUNvbXB1dGVGZWUo" + + "KWAgdG8gZGVyaXZlIHRoYXQgdGhyZXNob2xkLgovLy8KLy8vIEF0dGVtcHRzIHRvIHNwZWNpZnkgbmVnYXRpdmUgdmFsdWUgb2YgYGdhc1VzZWRgIHRocm93IGFuIGV4" + + "Y2VwdGlvbiB3aXRoIGV4aXQgY29kZSA1OiBgSW50ZWdlciBvdXQgb2YgZXhwZWN0ZWQgcmFuZ2VgLgovLy8KLy8vIGBgYHRhY3QKLy8vIGZ1biBleGFtcGxlKCkgewov" + + "Ly8gICAgIGxldCBmZWU6IEludCA9IGdldENvbXB1dGVGZWUoMV8wMDAsIGZhbHNlKTsKLy8vIH0KLy8vIGBgYAovLy8KLy8vIFNlZTogaHR0cHM6Ly9kb2NzLnRhY3Qt" + + "bGFuZy5vcmcvcmVmL2NvcmUtYWR2YW5jZWQjZ2V0Y29tcHV0ZWZlZQovLy8KYXNtIGZ1biBnZXRDb21wdXRlRmVlKGdhc1VzZWQ6IEludCwgaXNNYXN0ZXJjaGFpbjog" + + "Qm9vbCk6IEludCB7IEdFVEdBU0ZFRSB9CgovLy8gR2xvYmFsIGZ1bmN0aW9uLiBBdmFpbGFibGUgc2luY2UgVGFjdCAxLjUuMC4KLy8vCi8vLyBTaW1pbGFyIHRvIGBn" + + "ZXRDb21wdXRlRmVlKClgLCBidXQgd2l0aG91dCB0aGUgYGZsYXRfZ2FzX3ByaWNlYCwgaS5lLiB3aXRob3V0IGEgbWluaW11bSBwcmljZSB0byBwYXkgaWYgdGhlIGBn" + + "YXNVc2VkYCBpcyBsZXNzIHRoYW4gYSBjZXJ0YWluIHRocmVzaG9sZCBjYWxsZWQgYGZsYXRfZ2FzX2xpbWl0YC4gQ2FsY3VsYXRlcyBhbmQgcmV0dXJucyBvbmx5IHRo" + + "ZSBgZ2FzVXNlZGAgdGltZXMgdGhlIGN1cnJlbnQgZ2FzIHByaWNlLgovLy8KLy8vIEF0dGVtcHRzIHRvIHNwZWNpZnkgbmVnYXRpdmUgbnVtYmVyIG9mIGBjZWxsc2As" + + "IGBiaXRzYCBvciBgc2Vjb25kc2AgdGhyb3cgYW4gZXhjZXB0aW9uIHdpdGggZXhpdCBjb2RlIDU6IGBJbnRlZ2VyIG91dCBvZiBleHBlY3RlZCByYW5nZWAuCi8vLwov" + + "Ly8gYGBgdGFjdAovLy8gZnVuIGV4YW1wbGUoKSB7Ci8vLyAgICAgbGV0IGZlZSA9IGdldENvbXB1dGVGZWUoMCwgZmFsc2UpOwovLy8gICAgIGxldCBmZWVOb0ZsYXQg" + + "PSBnZXRTaW1wbGVDb21wdXRlRmVlKDAsIGZhbHNlKTsKLy8vICAgICBsZXQgbWF4RmxhdFByaWNlID0gZmVlIC0gZmVlTm9GbGF0OwovLy8gfQovLy8gYGBgCi8vLwov" + + "Ly8gU2VlOgovLy8gKiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9yZWYvY29yZS1hZHZhbmNlZCNnZXRzaW1wbGVzdG9yYWdlZmVlCi8vLyAqIGh0dHBzOi8vZG9j" + + "cy50YWN0LWxhbmcub3JnL3JlZi9jb3JlLWFkdmFuY2VkI2dldHN0b3JhZ2VmZWUKLy8vCmFzbSBmdW4gZ2V0U2ltcGxlQ29tcHV0ZUZlZShnYXNVc2VkOiBJbnQsIGlz" + + "TWFzdGVyY2hhaW46IEJvb2wpOiBJbnQgeyBHRVRHQVNGRUVTSU1QTEUgfQoKLy8vIEdsb2JhbCBmdW5jdGlvbi4gQXZhaWxhYmxlIHNpbmNlIFRhY3QgMS41LjAuCi8v" + + "LwovLy8gQ2FsY3VsYXRlcyBhbmQgcmV0dXJucyB0aGUgZm9yd2FyZCBmZWUgaW4gbmFub1RvbmNvaW5zIGBJbnRgIGZvciBhbiBvdXRnb2luZyBtZXNzYWdlIGNvbnNp" + + "c3Rpbmcgb2YgYSBnaXZlbiBudW1iZXIgb2YgYGNlbGxzYCBhbmQgYGJpdHNgLiBVc2VzIHRoZSBwcmljZXMgb2YgdGhlIG1hc3RlcmNoYWluIGlmIGBpc01hc3RlcmNo" + + "YWluYCBpcyBgdHJ1ZXs6dGFjdH1gLCBvdGhlcndpc2UgdGhlIHByaWNlcyBvZiB0aGUgYmFzZWNoYWluLiBUaGUgY3VycmVudCBwcmljZXMgYXJlIG9idGFpbmVkIGZy" + + "b20gdGhlIGNvbmZpZyBwYXJhbSAyNCBmb3IgdGhlIG1hc3RlcmNoYWluIGFuZCBjb25maWcgcGFyYW0gMjUgZm9yIHRoZSBiYXNlY2hhaW4gb2YgVE9OIEJsb2NrY2hh" + + "aW4uCi8vLwovLy8gSWYgYm90aCB0aGUgc291cmNlIGFuZCB0aGUgZGVzdGluYXRpb24gYWRkcmVzc2VzIGFyZSBpbiB0aGUgYmFzZWNoYWluLCB0aGVuIHNwZWNpZnkg" + + "YGlzTWFzdGVyY2hhaW5gIGFzIGBmYWxzZWAuIE90aGVyd2lzZSwgc3BlY2lmeSBgdHJ1ZWAuCi8vLwovLy8gTm90ZSwgdGhhdCB0aGUgdmFsdWVzIG9mIGBjZWxsc2Ag" + + "YW5kIGBiaXRzYCBhcmUgdGFrZW4gbW9kdWxvIHRoZWlyIG1heGltdW0gdmFsdWVzIHBsdXMgMS4gVGhhdCBpcywgc3BlY2lmeWluZyB2YWx1ZXMgaGlnaGVyIHRoYW4g" + + "dGhvc2UgbGlzdGVkIGluIGFjY291bnQgc3RhdGUgbGltaXRzIChgbWF4X21zZ19jZWxsc2AgYW5kIGBtYXhfbXNnX2JpdHNgKSB3aWxsIGhhdmUgdGhlIHNhbWUgcmVz" + + "dWx0IGFzIHdpdGggc3BlY2lmeWluZyB0aGUgZXhhY3QgbGltaXRzLgovLy8KLy8vIEhvd2V2ZXIsIHJlZ2FyZGxlc3Mgb2YgdGhlIHZhbHVlcyBvZiBgY2VsbHNgIGFu" + + "ZCBgYml0c2AsIHRoaXMgZnVuY3Rpb24gYWx3YXlzIGFkZHMgdGhlIG1pbmltdW0gcHJpY2UgYmFzZWQgb24gdGhlIHZhbHVlIG9mIGBsdW1wX3ByaWNlYC4gU2VlIHRo" + + "ZSBleGFtcGxlIGZvciBbYGdldFNpbXBsZUZvcndhcmRGZWUoKXs6dGFjdH1gXSgjZ2V0c2ltcGxlZm9yd2FyZGZlZSkgdG8gZGVyaXZlIGl0LiBJbiBhZGRpdGlvbiwg" + + "bWFrZSBzdXJlIHlvdSB0YWtlIGludG8gYWNjb3VudCB0aGUgZGVkdXBsaWNhdGlvbiBvZiBjZWxscyB3aXRoIHRoZSBzYW1lIGhhc2gsIHNpbmNlIGZvciBleGFtcGxl" + + "IHRoZSByb290IGNlbGwgYW5kIGl0cyBkYXRhIGJpdHMgZG9uJ3QgY291bnQgdG93YXJkcyB0aGUgZm9yd2FyZCBmZWUgYW5kIGFyZSBjb3ZlcmVkIGJ5IHRoZSBgbHVt" + + "cF9wcmljZWAuCi8vLwovLy8gQXR0ZW1wdHMgdG8gc3BlY2lmeSBuZWdhdGl2ZSBudW1iZXIgb2YgYGNlbGxzYCBvciBgYml0c2AgdGhyb3cgYW4gZXhjZXB0aW9uIHdp" + + "dGggZXhpdCBjb2RlIDU6IGBJbnRlZ2VyIG91dCBvZiBleHBlY3RlZCByYW5nZWAuCi8vLwovLy8gYGBgdGFjdAovLy8gZnVuIGV4YW1wbGUoKSB7Ci8vLyAgICAgbGV0" + + "IGZlZTogSW50ID0gZ2V0Rm9yd2FyZEZlZSgxXzAwMCwgMV8wMDAsIGZhbHNlKTsKLy8vIH0KLy8vIGBgYAovLy8KLy8vIFNlZToKLy8vICogaHR0cHM6Ly9kb2NzLnRh" + + "Y3QtbGFuZy5vcmcvcmVmL2NvcmUtYWR2YW5jZWQjZ2V0Zm9yd2FyZGZlZQovLy8gKiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9yZWYvY29yZS1hZHZhbmNlZCNn" + + "ZXRzaW1wbGVmb3J3YXJkZmVlCi8vLyAqIGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL3JlZi9jb3JlLWFkdmFuY2VkI2dldG9yaWdpbmFsZndkZmVlCi8vLwphc20g" + + "ZnVuIGdldEZvcndhcmRGZWUoY2VsbHM6IEludCwgYml0czogSW50LCBpc01hc3RlcmNoYWluOiBCb29sKTogSW50IHsgR0VURk9SV0FSREZFRSB9CgovLy8gR2xvYmFs" + + "IGZ1bmN0aW9uLiBBdmFpbGFibGUgc2luY2UgVGFjdCAxLjUuMC4KLy8vCi8vLyBTaW1pbGFyIHRvIGBnZXRGb3J3YXJkRmVlKClgLCBidXQgd2l0aG91dCB0aGUgYGx1" + + "bXBfcHJpY2VgLCBpLmUuIHdpdGhvdXQgdGhlIG1pbmltdW0gcHJpY2UgdG8gcGF5IHJlZ2FyZGxlc3Mgb2YgdGhlIGFtb3VudCBvZiBgY2VsbHNgIG9yIGBiaXRzYC4g" + + "Q2FsY3VsYXRlcyBhbmQgcmV0dXJucyBvbmx5IHRoZSBgY2VsbHNgIHRpbWVzIHRoZSBjdXJyZW50IGNlbGwgcHJpY2UgcGx1cyBgYml0c2AgdGltZXMgdGhlIGN1cnJl" + + "bnQgYml0IHByaWNlLgovLy8KLy8vIEF0dGVtcHRzIHRvIHNwZWNpZnkgbmVnYXRpdmUgbnVtYmVyIG9mIGBjZWxsc2Agb3IgYGJpdHNgIHRocm93IGFuIGV4Y2VwdGlv" + + "biB3aXRoIGV4aXQgY29kZSA1OiBgSW50ZWdlciBvdXQgb2YgZXhwZWN0ZWQgcmFuZ2VgLgovLy8KLy8vIGBgYHRhY3QKLy8vIGZ1biBleGFtcGxlKCkgewovLy8gICAg" + + "IGxldCBmZWUgPSBnZXRGb3J3YXJkRmVlKDFfMDAwLCAxXzAwMCwgZmFsc2UpOwovLy8gICAgIGxldCBmZWVOb0x1bXAgPSBnZXRTaW1wbGVGb3J3YXJkRmVlKDFfMDAw" + + "LCAxXzAwMCwgZmFsc2UpOwovLy8gICAgIGxldCBsdW1wUHJpY2UgPSBmZWUgLSBmZWVOb0x1bXA7Ci8vLyB9Ci8vLyBgYGAKLy8vCi8vLyBTZWU6Ci8vLyAqIGh0dHBz" + + "Oi8vZG9jcy50YWN0LWxhbmcub3JnL3JlZi9jb3JlLWFkdmFuY2VkI2dldHNpbXBsZWZvcndhcmRmZWUKLy8vICogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvcmVm" + + "L2NvcmUtYWR2YW5jZWQjZ2V0Zm9yd2FyZGZlZQovLy8KYXNtIGZ1biBnZXRTaW1wbGVGb3J3YXJkRmVlKGNlbGxzOiBJbnQsIGJpdHM6IEludCwgaXNNYXN0ZXJjaGFp" + + "bjogQm9vbCk6IEludCB7IEdFVEZPUldBUkRGRUVTSU1QTEUgfQoKLy8vIEdsb2JhbCBmdW5jdGlvbi4gQXZhaWxhYmxlIHNpbmNlIFRhY3QgMS41LjAuCi8vLwovLy8g" + + "Q2FsY3VsYXRlcyBhbmQgcmV0dXJucyB0aGUgc28tY2FsbGVkIF9vcmlnaW5hbF8gZm9yd2FyZCBmZWUgaW4gbmFub1RvbmNvaW5zIGBJbnRgIGZvciBhbiBvdXRnb2lu" + + "ZyBtZXNzYWdlIGJhc2VkIG9uIHRoZSBgZndkRmVlYCBvYnRhaW5lZCBmcm9tIHRoZSBpbmNvbWluZyBtZXNzYWdlLiBJZiBib3RoIHRoZSBzb3VyY2UgYW5kIHRoZSBk" + + "ZXN0aW5hdGlvbiBhZGRyZXNzZXMgYXJlIGluIHRoZSBiYXNlY2hhaW4sIHRoZW4gc3BlY2lmeSBgaXNNYXN0ZXJjaGFpbmAgYXMgYGZhbHNlYC4gT3RoZXJ3aXNlLCBz" + + "cGVjaWZ5IGB0cnVlYC4KLy8vCi8vLyBUaGlzIGZ1bmN0aW9uIGlzIHVzZWZ1bCB3aGVuIHRoZSBvdXRnb2luZyBtZXNzYWdlIGRlcGVuZHMgaGVhdmlseSBvbiB0aGUg" + + "c3RydWN0dXJlIG9mIHRoZSBpbmNvbWluZyBtZXNzYWdlLCBzbyBtdWNoIHNvIHRoYXQgeW91IGNhbm5vdCBmdWxseSBwcmVkaWN0IHRoZSBmZWUgdXNpbmcgYGdldEZv" + + "cndhcmRGZWUoKWAgYWxvbmUuIEV2ZW4gaWYgeW91IGNvdWxkLCBjYWxjdWxhdGluZyB0aGUgZXhhY3QgZmVlIHdpdGggbmFub1RvbmNvaW4tbGV2ZWwgcHJlY2lzaW9u" + + "IGNhbiBiZSB2ZXJ5IGV4cGVuc2l2ZSwgc28gdGhlIGFwcHJveGltYXRlIHZhbHVlIGdpdmVuIGJ5IHRoaXMgZnVuY3Rpb24gaXMgb2Z0ZW4gZ29vZCBlbm91Z2guCi8v" + + "LwovLy8gQXR0ZW1wdHMgdG8gc3BlY2lmeSBhIG5lZ2F0aXZlIHZhbHVlIG9mIGBmd2RGZWVgIHRocm93IGFuIGV4Y2VwdGlvbiB3aXRoIGV4aXQgY29kZSA1OiBgSW50" + + "ZWdlciBvdXQgb2YgZXhwZWN0ZWQgcmFuZ2VgLgovLy8KLy8vIGBgYHRhY3QKLy8vIGZ1biBleGFtcGxlKCkgewovLy8gICAgIGxldCBmd2RGZWU6IEludCA9IGNvbnRl" + + "eHQoKS5yZWFkRm9yd2FyZEZlZSgpOwovLy8gICAgIGxldCBvcmlnRmVlOiBJbnQgPSBnZXRPcmlnaW5hbEZ3ZEZlZShmZWUsIGZhbHNlKTsKLy8vIH0KLy8vIGBgYAov" + + "Ly8KLy8vIFNlZToKLy8vICogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvcmVmL2NvcmUtYWR2YW5jZWQjZ2V0b3JpZ2luYWxmd2RmZWUKLy8vICogaHR0cHM6Ly9k" + + "b2NzLnRhY3QtbGFuZy5vcmcvcmVmL2NvcmUtYWR2YW5jZWQjZ2V0Zm9yd2FyZGZlZQovLy8gKiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9yZWYvY29yZS1hZHZh" + + "bmNlZCNjb250ZXh0cmVhZGZvcndhcmRmZWUKLy8vCmFzbSBmdW4gZ2V0T3JpZ2luYWxGd2RGZWUoZndkRmVlOiBJbnQsIGlzTWFzdGVyY2hhaW46IEJvb2wpOiBJbnQg" + + "eyBHRVRPUklHSU5BTEZXREZFRSB9CgovLy8gU3RydWN0IHJlcHJlc2VudGluZyB0aGUgc3RhbmRhcmQgYWRkcmVzcyBvbiBUT04gQmxvY2tjaGFpbiB3aXRoIHNpZ25l" + + "ZCA4LWJpdCBgd29ya2NoYWluYCBJRCBhbmQgYW4gdW5zaWduZWQgMjU2LWJpdCBgYWRkcmVzc2AgaW4gdGhlIHNwZWNpZmllZCBgd29ya2NoYWluYC4gQXZhaWxhYmxl" + + "IHNpbmNlIFRhY3QgMS41LjAuCi8vLwovLy8gQXQgdGhlIG1vbWVudCwgb25seSBgd29ya2NoYWluYCBJRHMgdXNlZCBvbiBUT04gYXJlIDAgb2YgdGhlIGJhc2VjaGFp" + + "biBhbmQgLTEgb2YgdGhlIG1hc3RlcmNoYWluLgovLy8KLy8vIFNlZToKLy8vICogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvcmVmL2NvcmUtYWR2YW5jZWQjcGFy" + + "c2VzdGRhZGRyZXNzCi8vLyAqIGh0dHBzOi8vZ2l0aHViLmNvbS90b24tYmxvY2tjaGFpbi90b24vYmxvYi9tYXN0ZXIvY3J5cHRvL2Jsb2NrL2Jsb2NrLnRsYiNMMTA1" + + "LUwxMDYKLy8vCnN0cnVjdCBTdGRBZGRyZXNzIHsKICAgIHdvcmtjaGFpbjogSW50IGFzIGludDg7CiAgICBhZGRyZXNzOiBJbnQgYXMgdWludDI1NjsKfQoKLy8vIFN0" + + "cnVjdCByZXByZXNlbnRpbmcgdGhlIGFkZHJlc3Mgb2YgdmFyaWFibGUgbGVuZ3RoIHdpdGggc2lnbmVkIDMyLWJpdCBgd29ya2NoYWluYCBJRCBhbmQgYSBgU2xpY2Vg" + + "IGNvbnRhaW5pbmcgdW5zaWduZWQgYGFkZHJlc3NgIGluIHRoZSBzcGVjaWZpZWQgYHdvcmtjaGFpbmAuIEF2YWlsYWJsZSBzaW5jZSBUYWN0IDEuNS4wLgovLy8KLy8v" + + "IFZhcmlhYmxlLWxlbmd0aCBhZGRyZXNzZXMgYXJlIGludGVuZGVkIGZvciBmdXR1cmUgZXh0ZW5zaW9ucywgYW5kIHdoaWxlIHZhbGlkYXRvcnMgbXVzdCBiZSByZWFk" + + "eSB0byBhY2NlcHQgdGhlbSBpbiBpbmJvdW5kIG1lc3NhZ2VzLCB0aGUgc3RhbmRhcmQgKG5vbi12YXJpYWJsZSkgYWRkcmVzc2VzIGFyZSB1c2VkIHdoZW5ldmVyIHBv" + + "c3NpYmxlLgovLy8KLy8vIFNlZToKLy8vICogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvcmVmL2NvcmUtYWR2YW5jZWQjcGFyc2V2YXJhZGRyZXNzCi8vLyAqIGh0" + + "dHBzOi8vZ2l0aHViLmNvbS90b24tYmxvY2tjaGFpbi90b24vYmxvYi9tYXN0ZXIvY3J5cHRvL2Jsb2NrL2Jsb2NrLnRsYiNMMTA3LUwxMDgKLy8vCnN0cnVjdCBWYXJB" + + "ZGRyZXNzIHsKICAgIHdvcmtjaGFpbjogSW50IGFzIGludDMyOwogICAgYWRkcmVzczogU2xpY2U7Cn0KCi8vLyBBc3NlbWJseSBmdW5jdGlvbi4gQXZhaWxhYmxlIHNp" + + "bmNlIFRhY3QgMS41LjAuCi8vLwovLy8gQ29udmVydHMgYSBgU2xpY2VgIGNvbnRhaW5pbmcgYW4gYWRkcmVzcyBpbnRvIHRoZSBgU3RkQWRkcmVzc2AgU3RydWN0IGFu" + + "ZCByZXR1cm5zIGl0LgovLy8KLy8vIGBgYHRhY3QKLy8vIGZ1biBleGFtcGxlKCkgewovLy8gICAgIGxldCBhZGRyID0gYWRkcmVzcygiRVFEdEZwRXdjRkFFY1JlNW1M" + + "VmgyTjZDMHgtX2hKRU03VzYxX0pMblNGNzRwNHEyIik7Ci8vLyAgICAgbGV0IHBhcnNlZEFkZHIgPSBwYXJzZVN0ZEFkZHJlc3MoYWRkci5hc1NsaWNlKCkpOwovLy8K" + + "Ly8vICAgICBwYXJzZWRBZGRyLndvcmtjaGFpbjsgLy8gMAovLy8gICAgIHBhcnNlZEFkZHIuYWRkcmVzczsgICAvLyAxMDcuLi4yODcKLy8vIH0KLy8vIGBgYAovLy8K" + + "Ly8vIFNlZTogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvcmVmL2NvcmUtYWR2YW5jZWQjcGFyc2VzdGRhZGRyZXNzCi8vLwphc20gZnVuIHBhcnNlU3RkQWRkcmVz" + + "cyhzbGljZTogU2xpY2UpOiBTdGRBZGRyZXNzIHsgUkVXUklURVNUREFERFIgfQoKLy8vIEFzc2VtYmx5IGZ1bmN0aW9uLiBBdmFpbGFibGUgc2luY2UgVGFjdCAxLjUu" + + "MC4KLy8vCi8vLyBDb252ZXJ0cyBhIGBTbGljZWAgY29udGFpbmluZyBhbiBhZGRyZXNzIG9mIHZhcmlhYmxlIGxlbmd0aCBpbnRvIHRoZSBgVmFyQWRkcmVzc2AgU3Ry" + + "dWN0IGFuZCByZXR1cm5zIGl0LgovLy8KLy8vIGBgYHRhY3QKLy8vIGZ1biBleGFtcGxlKCkgewovLy8gICAgIGxldCB2YXJBZGRyU2xpY2UgPSBiZWdpbkNlbGwoKQov" + + "Ly8gICAgICAgICAuc3RvcmVVaW50KDYsIDMpICAgICAvLyB0byByZWNvZ25pemUgdGhlIGZvbGxvd2luZyBhcyBhIFZhckFkZHJlc3MKLy8vICAgICAgICAgLnN0b3Jl" + + "VWludCgxMjMsIDkpICAgLy8gbWFrZSBhZGRyZXNzIG9jY3VweSAxMjMgYml0cwovLy8gICAgICAgICAuc3RvcmVVaW50KDIzNCwgMzIpICAvLyBzcGVjaWZ5IHdvcmtj" + + "aGFpbiBJRCBvZiAyMzQKLy8vICAgICAgICAgLnN0b3JlVWludCgzNDUsIDEyMykgLy8gc3BlY2lmeSBhZGRyZXNzIG9mIDM0NQovLy8gICAgICAgICAuYXNTbGljZSgp" + + "OwovLy8gICAgIGxldCBwYXJzZWRWYXJBZGRyID0gcGFyc2VWYXJBZGRyZXNzKHZhckFkZHJTbGljZSk7Ci8vLwovLy8gICAgIHBhcnNlZFZhckFkZHIud29ya2NoYWlu" + + "OyAgICAgICAgICAgICAvLyAyMzQKLy8vICAgICBwYXJzZWRWYXJBZGRyLmFkZHJlc3M7ICAgICAgICAgICAgICAgLy8gQ1N7Q2VsbHswMDIuLi4yYjN9IGJpdHM6IDQ0" + + "Li4xNjc7IHJlZnM6IDAuLjB9Ci8vLyAgICAgcGFyc2VkVmFyQWRkci5hZGRyZXNzLmxvYWRVaW50KDEyMyk7IC8vIDM0NQovLy8gfQovLy8gYGBgCi8vLwovLy8gU2Vl" + + "OiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9yZWYvY29yZS1hZHZhbmNlZCNwYXJzZXZhcmFkZHJlc3MKLy8vCmFzbSBmdW4gcGFyc2VWYXJBZGRyZXNzKHNsaWNl" + + "OiBTbGljZSk6IFZhckFkZHJlc3MgeyBSRVdSSVRFVkFSQUREUiB9Cg=="; +files["std/crypto.tact"] = + "YXNtIGV4dGVuZHMgZnVuIGhhc2goc2VsZjogQ2VsbCk6IEludCB7IEhBU0hDVSB9Cgphc20gZXh0ZW5kcyBmdW4gaGFzaChzZWxmOiBTbGljZSk6IEludCB7IEhBU0hT" + + "VSB9Cgphc20gZnVuIGNoZWNrU2lnbmF0dXJlKGhhc2g6IEludCwgc2lnbmF0dXJlOiBTbGljZSwgcHVibGljX2tleTogSW50KTogQm9vbCB7IENIS1NJR05VIH0KCmFz" + + "bSBmdW4gY2hlY2tEYXRhU2lnbmF0dXJlKGRhdGE6IFNsaWNlLCBzaWduYXR1cmU6IFNsaWNlLCBwdWJsaWNfa2V5OiBJbnQpOiBCb29sIHsgQ0hLU0lHTlMgfQo="; +files["std/debug.tact"] = + "Ly8gdGhlc2UgYXJlIGJ1aWx0aW4gZnVuY3Rpb25zLCB0aGVzZSBnZXQgc3BlY2lhbCB0cmVhdG1lbnQgZnJvbSBGdW5DCi8vIGhlbmNlLCBubyBhc20gaGVyZQoKQG5h" + + "bWUodGhyb3cpCm5hdGl2ZSBuYXRpdmVUaHJvdyhjb2RlOiBJbnQpOwoKQG5hbWUodGhyb3dfaWYpCm5hdGl2ZSBuYXRpdmVUaHJvd0lmKGNvZGU6IEludCwgY29uZGl0" + + "aW9uOiBCb29sKTsKCkBuYW1lKHRocm93KQpuYXRpdmUgdGhyb3coY29kZTogSW50KTsKCkBuYW1lKHRocm93X3VubGVzcykKbmF0aXZlIG5hdGl2ZVRocm93VW5sZXNz" + + "KGNvZGU6IEludCwgY29uZGl0aW9uOiBCb29sKTs="; +files["std/math.tact"] = + "Ly8gUHJlcGFyZSByYW5kb20KCi8vIE1peGVzIHVuc2lnbmVkIDI1Ni1iaXQgaW50ZWdlciB4IGludG8gdGhlIHJhbmRvbSBzZWVkIHIgYnkgc2V0dGluZyB0aGUgcmFu" + + "ZG9tIHNlZWQKLy8gdG8gc2hhMjU2IG9mIHRoZSBjb25jYXRlbmF0aW9uIG9mIHR3byAzMi1ieXRlIHN0cmluZ3M6Ci8vIHRoZSBmaXJzdCB3aXRoIHRoZSBiaWctZW5k" + + "aWFuIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBvbGQgc2VlZCByLCBhbmQKLy8gdGhlIHNlY29uZCB3aXRoIHRoZSBiaWctZW5kaWFuIHJlcHJlc2VudGF0aW9uIG9mIHgu" + + "CmFzbSBmdW4gbmF0aXZlUmFuZG9taXplKHg6IEludCkgeyBBRERSQU5EIH0KCi8vLyBFcXVpdmFsZW50IHRvIGBuYXRpdmVSYW5kb21pemUoY3VyX2x0KCkpYCwKLy8v" + + "IHdoZXJlIGBjdXJfbHQoKWAgaXMgdGhlIGxvZ2ljYWwgdGltZSBvZiB0aGUgY3VycmVudCB0cmFuc2FjdGlvbgphc20gZnVuIG5hdGl2ZVJhbmRvbWl6ZUx0KCkgeyBM" + + "VElNRSBBRERSQU5EIH0KCkBuYW1lKF9fdGFjdF9wcmVwYXJlX3JhbmRvbSkKbmF0aXZlIG5hdGl2ZVByZXBhcmVSYW5kb20oKTsKCi8vIFJhbmRvbQoKLy8gR2VuZXJh" + + "dGVzIGEgbmV3IHBzZXVkby1yYW5kb20gdW5zaWduZWQgMjU2LWJpdCBpbnRlZ2VyIHguCi8vIFRoZSBhbGdvcml0aG0gaXMgYXMgZm9sbG93czogaWYgciBpcyB0aGUg" + + "b2xkIHZhbHVlIG9mIHRoZSByYW5kb20gc2VlZCwKLy8gY29uc2lkZXJlZCBhcyBhIDMyLWJ5dGUgYXJyYXkgKGJ5IGNvbnN0cnVjdGluZyB0aGUgYmlnLWVuZGlhbiBy" + + "ZXByZXNlbnRhdGlvbgovLyBvZiBhbiB1bnNpZ25lZCAyNTYtYml0IGludGVnZXIpLCB0aGVuIGl0cyBzaGE1MTIocikgaXMgY29tcHV0ZWQ7Ci8vIHRoZSBmaXJzdCAz" + + "MiBieXRlcyBvZiB0aGlzIGhhc2ggYXJlIHN0b3JlZCBhcyB0aGUgbmV3IHZhbHVlIHInIG9mIHRoZSByYW5kb20gc2VlZCwKLy8gYW5kIHRoZSByZW1haW5pbmcgMzIg" + + "Ynl0ZXMgYXJlIHJldHVybmVkIGFzIHRoZSBuZXh0IHJhbmRvbSB2YWx1ZSB4Lgphc20gZnVuIG5hdGl2ZVJhbmRvbSgpOiBJbnQgeyBSQU5EVTI1NiB9CgovLyBHZW5l" + + "cmF0ZXMgYSBuZXcgcHNldWRvLXJhbmRvbSBpbnRlZ2VyIHogaW4gdGhlIHJhbmdlIDAuLnJhbmdl4oiSMQovLyAob3IgcmFuZ2UuLuKIkjEsIGlmIHJhbmdlIDwgMCku" + + "Ci8vIE1vcmUgcHJlY2lzZWx5LCBhbiB1bnNpZ25lZCByYW5kb20gdmFsdWUgeCBpcyBnZW5lcmF0ZWQgYXMgaW4gYG5hdGl2ZVJhbmRvbWA7Ci8vIHRoZW4geiA6PSB4" + + "ICogcmFuZ2UgLyAyXjI1NiBpcyBjb21wdXRlZC4KYXNtIGZ1biBuYXRpdmVSYW5kb21JbnRlcnZhbChtYXg6IEludCk6IEludCB7IFJBTkQgfQoKaW5saW5lIGZ1biBy" + + "YW5kb21JbnQoKTogSW50IHsKICAgIG5hdGl2ZVByZXBhcmVSYW5kb20oKTsKICAgIHJldHVybiBuYXRpdmVSYW5kb20oKTsKfQoKaW5saW5lIGZ1biByYW5kb20obWlu" + + "OiBJbnQsIG1heDogSW50KTogSW50IHsKICAgIG5hdGl2ZVByZXBhcmVSYW5kb20oKTsKICAgIHJldHVybiBtaW4gKyBuYXRpdmVSYW5kb21JbnRlcnZhbChtYXggLSBt" + + "aW4pOwp9CgovLyBNYXRoCgphc20gZnVuIG1pbih4OiBJbnQsIHk6IEludCk6IEludCB7IE1JTiB9Cgphc20gZnVuIG1heCh4OiBJbnQsIHk6IEludCk6IEludCB7IE1B" + + "WCB9Cgphc20gZnVuIGFicyh4OiBJbnQpOiBJbnQgeyBBQlMgfQoKYXNtIGZ1biBub3coKTogSW50IHsgTk9XIH0KCmFzbSBmdW4gbG9nMihudW06IEludCk6IEludCB7" + + "CiAgICBEVVAgNSBUSFJPV0lGTk9UIFVCSVRTSVpFIERFQwp9CgpAbmFtZShfX3RhY3RfbG9nKQpuYXRpdmUgbG9nKG51bTogSW50LCBiYXNlOiBJbnQpOiBJbnQ7CgpA" + + "bmFtZShfX3RhY3RfcG93KQpuYXRpdmUgcG93KGJhc2U6IEludCwgZXhwOiBJbnQpOiBJbnQ7Cgphc20gZnVuIHBvdzIoZXhwOiBJbnQpOiBJbnQgeyBQT1cyIH0="; +files["std/primitives.tact"] = + "cHJpbWl0aXZlIEludDsKcHJpbWl0aXZlIEJvb2w7CnByaW1pdGl2ZSBCdWlsZGVyOwpwcmltaXRpdmUgU2xpY2U7CnByaW1pdGl2ZSBDZWxsOwpwcmltaXRpdmUgQWRk" + + "cmVzczsKcHJpbWl0aXZlIFN0cmluZzsKcHJpbWl0aXZlIFN0cmluZ0J1aWxkZXI7"; +files["std/reserve.tact"] = + "YXNtIGZ1biBuYXRpdmVSZXNlcnZlKGFtb3VudDogSW50LCBtb2RlOiBJbnQpIHsgUkFXUkVTRVJWRSB9Cgpjb25zdCBSZXNlcnZlRXhhY3Q6IEludCA9IDA7CmNvbnN0" + + "IFJlc2VydmVBbGxFeGNlcHQ6IEludCA9IDE7CmNvbnN0IFJlc2VydmVBdE1vc3Q6IEludCA9IDI7CmNvbnN0IFJlc2VydmVBZGRPcmlnaW5hbEJhbGFuY2U6IEludCA9" + + "IDQ7CmNvbnN0IFJlc2VydmVJbnZlcnRTaWduOiBJbnQgPSA4Owpjb25zdCBSZXNlcnZlQm91bmNlSWZBY3Rpb25GYWlsOiBJbnQgPSAxNjs="; +files["std/send.tact"] = + "YXNtIGZ1biBuYXRpdmVTZW5kTWVzc2FnZShjZWxsOiBDZWxsLCBtb2RlOiBJbnQpIHsgU0VORFJBV01TRyB9Cgphc20gZnVuIG5hdGl2ZVNlbmRNZXNzYWdlUmV0dXJu" + + "Rm9yd2FyZEZlZShtc2c6IENlbGwsIG1vZGU6IEludCk6IEludCB7IFNFTkRNU0cgfQoKY29uc3QgU2VuZFJlbWFpbmluZ0JhbGFuY2U6IEludCA9IDEyODsKY29uc3Qg" + + "U2VuZFJlbWFpbmluZ1ZhbHVlOiBJbnQgPSA2NDsKY29uc3QgU2VuZERlZmF1bHRNb2RlOiBJbnQgPSAwOwpjb25zdCBTZW5kSWdub3JlRXJyb3JzOiBJbnQgPSAyOwpj" + + "b25zdCBTZW5kUGF5R2FzU2VwYXJhdGVseTogSW50ID0gMTsKY29uc3QgU2VuZERlc3Ryb3lJZlplcm86IEludCA9IDMyOwpjb25zdCBTZW5kQm91bmNlSWZBY3Rpb25G" + + "YWlsOiBJbnQgPSAxNjsKY29uc3QgU2VuZE9ubHlFc3RpbWF0ZUZlZTogSW50ID0gMTAyNDsKCnN0cnVjdCBTZW5kUGFyYW1ldGVycyB7CiAgICBib3VuY2U6IEJvb2wg" + + "PSB0cnVlOwogICAgdG86IEFkZHJlc3M7CiAgICB2YWx1ZTogSW50OwogICAgbW9kZTogSW50ID0gMDsKICAgIGJvZHk6IENlbGw/ID0gbnVsbDsKICAgIGNvZGU6IENl" + + "bGw/ID0gbnVsbDsKICAgIGRhdGE6IENlbGw/ID0gbnVsbDsKfQoKZnVuIHNlbmQocGFyYW1zOiBTZW5kUGFyYW1ldGVycyk6IEludCB7IC8vIHJldHVybnMgZm9yd2Fy" + + "ZCBmZWUKICAgIGxldCBiOiBCdWlsZGVyID0gYmVnaW5DZWxsKCk7CiAgICBiID0gYi5zdG9yZUludCgxLCAyKTsgLy8gaW50ZXJuYWxfbWVzc2FnZSArIGloZF9kaXNh" + + "YmxlZAogICAgYiA9IGIuc3RvcmVCb29sKHBhcmFtcy5ib3VuY2UpOyAvLyBib3VuY2UKICAgIGIgPSBiLnN0b3JlSW50KDAsIDMpOyAvLyBib3VuY2VkICsgZnJvbQog" + + "ICAgYiA9IGIuc3RvcmVBZGRyZXNzKHBhcmFtcy50byk7IC8vIFRvCiAgICBiID0gYi5zdG9yZUNvaW5zKHBhcmFtcy52YWx1ZSk7IC8vIFZhbHVlCiAgICBiID0gYi5z" + + "dG9yZUludCgwLCAxICsgNCArIDQgKyA2NCArIDMyKTsgLy8gY3VycmVuY3lfY29sbGVjdGlvbiArIElIUiBmZWVzICsgRndkIGZlZXMgKyBDcmVhdGVkTFQgKyBDcmVh" + + "dGVkQXQKCiAgICAvLyBTdGF0ZWluaXQKICAgIGlmIChwYXJhbXMuY29kZSAhPSBudWxsIHx8IHBhcmFtcy5kYXRhICE9IG51bGwpIHsKICAgICAgICBiID0gYi5zdG9y" + + "ZUJvb2wodHJ1ZSk7IC8vIFN0YXRlIGluaXQKCiAgICAgICAgLy8gQXNzZW1ibGUgc3RhdGUgaW5pdCBjZWxsCiAgICAgICAgbGV0IGJjOiBCdWlsZGVyID0gYmVnaW5D" + + "ZWxsKCk7CiAgICAgICAgYmMgPSBiYy5zdG9yZUJvb2woZmFsc2UpOyAvLyBTcGxpdERlcHRoCiAgICAgICAgYmMgPSBiYy5zdG9yZUJvb2woZmFsc2UpOyAvLyBUaWNr" + + "VG9jawogICAgICAgIGlmIChwYXJhbXMuY29kZSAhPSBudWxsKSB7CiAgICAgICAgICAgIGJjID0gYmMuc3RvcmVCb29sKHRydWUpOyAvLyBDb2RlIHByZXNlbmNlCiAg" + + "ICAgICAgICAgIGJjID0gYmMuc3RvcmVSZWYocGFyYW1zLmNvZGUhISk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgYmMgPSBiYy5zdG9yZUJvb2woZmFsc2Up" + + "OyAvLyBDb2RlIHByZXNlbmNlCiAgICAgICAgfQogICAgICAgIGlmIChwYXJhbXMuZGF0YSAhPSBudWxsKSB7CiAgICAgICAgICAgIGJjID0gYmMuc3RvcmVCb29sKHRy" + + "dWUpOyAvLyBEYXRhIHByZXNlbmNlCiAgICAgICAgICAgIGJjID0gYmMuc3RvcmVSZWYocGFyYW1zLmRhdGEhISk7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg" + + "YmMgPSBiYy5zdG9yZUJvb2woZmFsc2UpOyAvLyBEYXRhIHByZXNlbmNlCiAgICAgICAgfQogICAgICAgIGJjID0gYmMuc3RvcmVCb29sKGZhbHNlKTsgLy8gTGlicmFy" + + "eQoKICAgICAgICBiID0gYi5zdG9yZUJvb2wodHJ1ZSk7IC8vIFN0b3JlIGFzIHJlZgogICAgICAgIGIgPSBiLnN0b3JlUmVmKGJjLmVuZENlbGwoKSk7CiAgICB9IGVs" + + "c2UgewogICAgICAgIGIgPSBiLnN0b3JlQm9vbChmYWxzZSk7IC8vIE5vIHN0YXRlIGluaXQKICAgIH0KCiAgICAvLyBCb2R5CiAgICBsZXQgYm9keTogQ2VsbD8gPSBw" + + "YXJhbXMuYm9keTsKICAgIGlmIChib2R5ICE9IG51bGwpIHsKICAgICAgICBiID0gYi5zdG9yZUJvb2wodHJ1ZSk7CiAgICAgICAgYiA9IGIuc3RvcmVSZWYoYm9keSEh" + + "KTsKICAgIH0gZWxzZSB7CiAgICAgICAgYiA9IGIuc3RvcmVCb29sKGZhbHNlKTsgLy8gTm8gYm9keQogICAgfQoKICAgIC8vIFNlbmQKICAgIGxldCBjOiBDZWxsID0g" + + "Yi5lbmRDZWxsKCk7CiAgICByZXR1cm4gbmF0aXZlU2VuZE1lc3NhZ2VSZXR1cm5Gb3J3YXJkRmVlKGMsIHBhcmFtcy5tb2RlKTsKfQoKaW5saW5lIGZ1biBlbWl0KGJv" + + "ZHk6IENlbGwpIHsKICAgIC8vIGV4dF9vdXRfbXNnX2luZm8kMTEgc3JjOk1zZ0FkZHJlc3NJbnQgZGVzdDpNc2dBZGRyZXNzRXh0IGNyZWF0ZWRfbHQ6dWludDY0IGNy" + + "ZWF0ZWRfYXQ6dWludDMyCiAgICAvLyAgICAgICAgICAgICAgICAgICAgIG1heWJlOiBzdGF0ZUluaXQgKGZhbHNlKSBib2R5UmVmOiBib29sICh0cnVlKQogICAgbGV0" + + "IGM6IENlbGwgPSBiZWdpbkNlbGwoKQogICAgICAgIC5zdG9yZVVpbnQoMTUyMTE4MDcyMDI3Mzg3NTI4MTc5NjA0Mzg0NjQ1MTMsIDEwNCkKICAgICAgICAuc3RvcmVS" + + "ZWYoYm9keSkKICAgICAgICAuZW5kQ2VsbCgpOwogICAgbmF0aXZlU2VuZE1lc3NhZ2UoYywgMCk7Cn0KCmFzbSBmdW4gYWNjZXB0TWVzc2FnZSgpIHsgQUNDRVBUIH0K" + + "CmFzbSBmdW4gY29tbWl0KCkgeyBDT01NSVQgfQo="; +files["std/text.tact"] = + "Ly8KLy8gU3RyaW5nIGJ1aWxkZXIKLy8KCkBuYW1lKF9fdGFjdF9zdHJpbmdfYnVpbGRlcl9zdGFydF9zdHJpbmcpCm5hdGl2ZSBiZWdpblN0cmluZygpOiBTdHJpbmdC" + + "dWlsZGVyOwoKQG5hbWUoX190YWN0X3N0cmluZ19idWlsZGVyX3N0YXJ0X2NvbW1lbnQpCm5hdGl2ZSBiZWdpbkNvbW1lbnQoKTogU3RyaW5nQnVpbGRlcjsKCkBuYW1l" + + "KF9fdGFjdF9zdHJpbmdfYnVpbGRlcl9zdGFydF90YWlsX3N0cmluZykKbmF0aXZlIGJlZ2luVGFpbFN0cmluZygpOiBTdHJpbmdCdWlsZGVyOwoKQG5hbWUoX190YWN0" + + "X3N0cmluZ19idWlsZGVyX3N0YXJ0KQpuYXRpdmUgYmVnaW5TdHJpbmdGcm9tQnVpbGRlcihiOiBCdWlsZGVyKTogU3RyaW5nQnVpbGRlcjsKCkBuYW1lKF9fdGFjdF9z" + + "dHJpbmdfYnVpbGRlcl9hcHBlbmQpCmV4dGVuZHMgbXV0YXRlcyBuYXRpdmUgYXBwZW5kKHNlbGY6IFN0cmluZ0J1aWxkZXIsIHM6IFN0cmluZyk7CgpAbmFtZShfX3Rh" + + "Y3Rfc3RyaW5nX2J1aWxkZXJfYXBwZW5kX25vdF9tdXQpCmV4dGVuZHMgbmF0aXZlIGNvbmNhdChzZWxmOiBTdHJpbmdCdWlsZGVyLCBzOiBTdHJpbmcpOiBTdHJpbmdC" + + "dWlsZGVyOwoKQG5hbWUoX190YWN0X3N0cmluZ19idWlsZGVyX2VuZCkKZXh0ZW5kcyBuYXRpdmUgdG9DZWxsKHNlbGY6IFN0cmluZ0J1aWxkZXIpOiBDZWxsOwoKQG5h" + + "bWUoX190YWN0X3N0cmluZ19idWlsZGVyX2VuZF9zbGljZSkKZXh0ZW5kcyBuYXRpdmUgdG9TdHJpbmcoc2VsZjogU3RyaW5nQnVpbGRlcik6IFN0cmluZzsKCkBuYW1l" + + "KF9fdGFjdF9zdHJpbmdfYnVpbGRlcl9lbmRfc2xpY2UpCmV4dGVuZHMgbmF0aXZlIHRvU2xpY2Uoc2VsZjogU3RyaW5nQnVpbGRlcik6IFNsaWNlOwoKLy8KLy8gU3Ry" + + "aW5nIGNvbnZlcnNpb24KLy8KCkBuYW1lKF9fdGFjdF9pbnRfdG9fc3RyaW5nKQpleHRlbmRzIG5hdGl2ZSB0b1N0cmluZyhzZWxmOiBJbnQpOiBTdHJpbmc7CgpAbmFt" + + "ZShfX3RhY3RfZmxvYXRfdG9fc3RyaW5nKQpleHRlbmRzIG5hdGl2ZSB0b0Zsb2F0U3RyaW5nKHNlbGY6IEludCwgZGlnaXRzOiBJbnQpOiBTdHJpbmc7CgppbmxpbmUg" + + "ZXh0ZW5kcyBmdW4gdG9Db2luc1N0cmluZyhzZWxmOiBJbnQpOiBTdHJpbmcgewogICAgcmV0dXJuIHNlbGYudG9GbG9hdFN0cmluZyg5KTsKfQoKZXh0ZW5kcyBmdW4g" + + "YXNDb21tZW50KHNlbGY6IFN0cmluZyk6IENlbGwgewogICAgbGV0IGI6IFN0cmluZ0J1aWxkZXIgPSBiZWdpbkNvbW1lbnQoKTsKICAgIGIuYXBwZW5kKHNlbGYpOwog" + + "ICAgcmV0dXJuIGIudG9DZWxsKCk7Cn0KCkBuYW1lKF9fdGFjdF9zdHJfdG9fc2xpY2UpCmV4dGVuZHMgbmF0aXZlIGFzU2xpY2Uoc2VsZjogU3RyaW5nKTogU2xpY2U7" + + "CgpAbmFtZShfX3RhY3Rfc2xpY2VfdG9fc3RyKQpleHRlbmRzIG5hdGl2ZSBhc1N0cmluZyhzZWxmOiBTbGljZSk6IFN0cmluZzsKCmlubGluZSBleHRlbmRzIGZ1biBm" + + "cm9tQmFzZTY0KHNlbGY6IFN0cmluZyk6IFNsaWNlIHsKICAgIHJldHVybiBzZWxmLmFzU2xpY2UoKS5mcm9tQmFzZTY0KCk7Cn0KCmV4dGVuZHMgZnVuIGZyb21CYXNl" + + "NjQoc2VsZjogU2xpY2UpOiBTbGljZSB7CiAgICBsZXQgc2l6ZTogSW50ID0gc2VsZi5iaXRzKCkgLyA4OwogICAgbGV0IHJlc3VsdDogQnVpbGRlciA9IGJlZ2luQ2Vs" + + "bCgpOwoKICAgIHJlcGVhdCAoc2l6ZSkgewogICAgICAgIGxldCBjb2RlOiBJbnQgPSBzZWxmLmxvYWRVaW50KDgpOwogICAgICAgIGlmIChjb2RlID49IDY1ICYmIGNv" + + "ZGUgPD0gOTApIHsgLy8gQS1aCiAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5zdG9yZVVpbnQoY29kZSAtIDY1LCA2KTsKICAgICAgICB9IGVsc2UgaWYgKGNvZGUg" + + "Pj0gOTcgJiYgY29kZSA8PSAxMjIpIHsgLy8gYS16CiAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5zdG9yZVVpbnQoY29kZSAtICg5NyAtIDI2KSwgNik7CiAgICAg" + + "ICAgfSBlbHNlIGlmIChjb2RlID49IDQ4ICYmIGNvZGUgPD0gNTcpIHsgLy8gMC05CiAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5zdG9yZVVpbnQoY29kZSArICg1" + + "MiAtIDQ4KSwgNik7CiAgICAgICAgfSBlbHNlIGlmIChjb2RlID09IDQ1IHx8IGNvZGUgPT0gNDMpIHsgLy8gLSBvciArCiAgICAgICAgICAgIHJlc3VsdCA9IHJlc3Vs" + + "dC5zdG9yZVVpbnQoNjIsIDYpOwogICAgICAgIH0gZWxzZSBpZiAoY29kZSA9PSA5NSB8fCBjb2RlID09IDQ3KSB7IC8vIF8gb3IgLwogICAgICAgICAgICByZXN1bHQg" + + "PSByZXN1bHQuc3RvcmVVaW50KDYzLCA2KTsKICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPT0gNjEpIHsgLy8gPQogICAgICAgICAgICAvLyBTa2lwCiAgICAgICAgfSBl" + + "bHNlIHsKICAgICAgICAgICAgdGhyb3coMTM0KTsKICAgICAgICB9CiAgICB9CgogICAgLy8gUGFkZGluZwogICAgbGV0IHRvdGFsOiBJbnQgPSByZXN1bHQuYml0cygp" + + "OwogICAgbGV0IHBhZGRpbmc6IEludCA9IHRvdGFsICUgODsKICAgIGlmIChwYWRkaW5nICE9IDApIHsKICAgICAgICBsZXQgczogU2xpY2UgPSByZXN1bHQuYXNTbGlj" + + "ZSgpOwogICAgICAgIHJldHVybiBzLmxvYWRCaXRzKHRvdGFsIC0gcGFkZGluZyk7CiAgICB9IGVsc2UgewogICAgICAgIHJldHVybiByZXN1bHQuYXNTbGljZSgpOwog" + + "ICAgfQp9CgovLwovLyBBZGRyZXNzIGNvbnZlcnNpb24KLy8KCkBuYW1lKF9fdGFjdF9hZGRyZXNzX3RvX3VzZXJfZnJpZW5kbHkpCmV4dGVuZHMgbmF0aXZlIHRvU3Ry" + + "aW5nKHNlbGY6IEFkZHJlc3MpOiBTdHJpbmc7"; +files["stdlib_ex.fc"] = + "Zm9yYWxsIFggLT4gdHVwbGUgX190YWN0X3NldCh0dXBsZSB4LCBYIHYsIGludCBpKSBhc20gIlNFVElOREVYVkFSUSI7CigpIF9fdGFjdF9ub3AoKSBhc20gIk5PUCI7" + + "CnNsaWNlIF9fdGFjdF9zdHJfdG9fc2xpY2Uoc2xpY2UgcykgYXNtICJOT1AiOwpzbGljZSBfX3RhY3Rfc2xpY2VfdG9fc3RyKHNsaWNlIHMpIGFzbSAiTk9QIjsKc2xp" + + "Y2UgX190YWN0X2FkZHJlc3NfdG9fc2xpY2Uoc2xpY2UgcykgYXNtICJOT1AiOw=="; +files["stdlib.fc"] = + "OzsgU3RhbmRhcmQgbGlicmFyeSBmb3IgZnVuQwo7OwoKey0KICAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIFRPTiBGdW5DIFN0YW5kYXJkIExpYnJhcnkuCgogICAgRnVu" + + "QyBTdGFuZGFyZCBMaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKICAgIGl0IHVuZGVyIHRoZSB0ZXJt" + + "cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0" + + "aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKICAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgogICAgRnVuQyBTdGFuZGFyZCBMaWJy" + + "YXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCiAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZl" + + "biB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQogICAg" + + "R05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCgotfQoKey0KICAjIFR1cGxlIG1hbmlwdWxhdGlvbiBwcmltaXRpdmVzCiAg" + + "VGhlIG5hbWVzIGFuZCB0aGUgdHlwZXMgYXJlIG1vc3RseSBzZWxmLWV4cGxhaW5pbmcuCiAgU2VlIFtwb2x5bW9yaGlzbSB3aXRoIGZvcmFsbF0oaHR0cHM6Ly90b24u" + + "b3JnL2RvY3MvIy9mdW5jL2Z1bmN0aW9ucz9pZD1wb2x5bW9ycGhpc20td2l0aC1mb3JhbGwpCiAgZm9yIG1vcmUgaW5mbyBvbiB0aGUgcG9seW1vcnBoaWMgZnVuY3Rp" + + "b25zLgoKICBOb3RlIHRoYXQgY3VycmVudGx5IHZhbHVlcyBvZiBhdG9taWMgdHlwZSBgdHVwbGVgIGNhbid0IGJlIGNhc3QgdG8gY29tcG9zaXRlIHR1cGxlIHR5cGUg" + + "KGUuZy4gYFtpbnQsIGNlbGxdYCkKICBhbmQgdmlzZSB2ZXJzYS4KLX0KCnstCiAgIyBMaXNwLXN0eWxlIGxpc3RzCgogIExpc3RzIGNhbiBiZSByZXByZXNlbnRlZCBh" + + "cyBuZXN0ZWQgMi1lbGVtZW50cyB0dXBsZXMuCiAgRW1wdHkgbGlzdCBpcyBjb252ZW50aW9uYWxseSByZXByZXNlbnRlZCBhcyBUVk0gYG51bGxgIHZhbHVlIChpdCBj" + + "YW4gYmUgb2J0YWluZWQgYnkgY2FsbGluZyBbbnVsbCgpXSkuCiAgRm9yIGV4YW1wbGUsIHR1cGxlIGAoMSwgKDIsICgzLCBudWxsKSkpYCByZXByZXNlbnRzIGxpc3Qg" + + "YFsxLCAyLCAzXWAuIEVsZW1lbnRzIG9mIGEgbGlzdCBjYW4gYmUgb2YgZGlmZmVyZW50IHR5cGVzLgotfQoKOzs7IEFkZHMgYW4gZWxlbWVudCB0byB0aGUgYmVnaW5u" + + "aW5nIG9mIGxpc3Atc3R5bGUgbGlzdC4KZm9yYWxsIFggLT4gdHVwbGUgY29ucyhYIGhlYWQsIHR1cGxlIHRhaWwpIGFzbSAiQ09OUyI7Cgo7OzsgRXh0cmFjdHMgdGhl" + + "IGhlYWQgYW5kIHRoZSB0YWlsIG9mIGxpc3Atc3R5bGUgbGlzdC4KZm9yYWxsIFggLT4gKFgsIHR1cGxlKSB1bmNvbnModHVwbGUgbGlzdCkgYXNtICJVTkNPTlMiOwoK" + + "Ozs7IEV4dHJhY3RzIHRoZSB0YWlsIGFuZCB0aGUgaGVhZCBvZiBsaXNwLXN0eWxlIGxpc3QuCmZvcmFsbCBYIC0+ICh0dXBsZSwgWCkgbGlzdF9uZXh0KHR1cGxlIGxp" + + "c3QpIGFzbSgtPiAxIDApICJVTkNPTlMiOwoKOzs7IFJldHVybnMgdGhlIGhlYWQgb2YgbGlzcC1zdHlsZSBsaXN0Lgpmb3JhbGwgWCAtPiBYIGNhcih0dXBsZSBsaXN0" + + "KSBhc20gIkNBUiI7Cgo7OzsgUmV0dXJucyB0aGUgdGFpbCBvZiBsaXNwLXN0eWxlIGxpc3QuCnR1cGxlIGNkcih0dXBsZSBsaXN0KSBhc20gIkNEUiI7Cgo7OzsgQ3Jl" + + "YXRlcyB0dXBsZSB3aXRoIHplcm8gZWxlbWVudHMuCnR1cGxlIGVtcHR5X3R1cGxlKCkgYXNtICJOSUwiOwoKOzs7IEFwcGVuZHMgYSB2YWx1ZSBgeGAgdG8gYSBgVHVw" + + "bGUgdCA9ICh4MSwgLi4uLCB4bilgLCBidXQgb25seSBpZiB0aGUgcmVzdWx0aW5nIGBUdXBsZSB0JyA9ICh4MSwgLi4uLCB4biwgeClgCjs7OyBpcyBvZiBsZW5ndGgg" + + "YXQgbW9zdCAyNTUuIE90aGVyd2lzZSB0aHJvd3MgYSB0eXBlIGNoZWNrIGV4Y2VwdGlvbi4KZm9yYWxsIFggLT4gdHVwbGUgdHB1c2godHVwbGUgdCwgWCB2YWx1ZSkg" + + "YXNtICJUUFVTSCI7CmZvcmFsbCBYIC0+ICh0dXBsZSwgKCkpIH50cHVzaCh0dXBsZSB0LCBYIHZhbHVlKSBhc20gIlRQVVNIIjsKCjs7OyBDcmVhdGVzIGEgdHVwbGUg" + + "b2YgbGVuZ3RoIG9uZSB3aXRoIGdpdmVuIGFyZ3VtZW50IGFzIGVsZW1lbnQuCmZvcmFsbCBYIC0+IFtYXSBzaW5nbGUoWCB4KSBhc20gIlNJTkdMRSI7Cgo7OzsgVW5w" + + "YWNrcyBhIHR1cGxlIG9mIGxlbmd0aCBvbmUKZm9yYWxsIFggLT4gWCB1bnNpbmdsZShbWF0gdCkgYXNtICJVTlNJTkdMRSI7Cgo7OzsgQ3JlYXRlcyBhIHR1cGxlIG9m" + + "IGxlbmd0aCB0d28gd2l0aCBnaXZlbiBhcmd1bWVudHMgYXMgZWxlbWVudHMuCmZvcmFsbCBYLCBZIC0+IFtYLCBZXSBwYWlyKFggeCwgWSB5KSBhc20gIlBBSVIiOwoK" + + "Ozs7IFVucGFja3MgYSB0dXBsZSBvZiBsZW5ndGggdHdvCmZvcmFsbCBYLCBZIC0+IChYLCBZKSB1bnBhaXIoW1gsIFldIHQpIGFzbSAiVU5QQUlSIjsKCjs7OyBDcmVh" + + "dGVzIGEgdHVwbGUgb2YgbGVuZ3RoIHRocmVlIHdpdGggZ2l2ZW4gYXJndW1lbnRzIGFzIGVsZW1lbnRzLgpmb3JhbGwgWCwgWSwgWiAtPiBbWCwgWSwgWl0gdHJpcGxl" + + "KFggeCwgWSB5LCBaIHopIGFzbSAiVFJJUExFIjsKCjs7OyBVbnBhY2tzIGEgdHVwbGUgb2YgbGVuZ3RoIHRocmVlCmZvcmFsbCBYLCBZLCBaIC0+IChYLCBZLCBaKSB1" + + "bnRyaXBsZShbWCwgWSwgWl0gdCkgYXNtICJVTlRSSVBMRSI7Cgo7OzsgQ3JlYXRlcyBhIHR1cGxlIG9mIGxlbmd0aCBmb3VyIHdpdGggZ2l2ZW4gYXJndW1lbnRzIGFz" + + "IGVsZW1lbnRzLgpmb3JhbGwgWCwgWSwgWiwgVyAtPiBbWCwgWSwgWiwgV10gdHVwbGU0KFggeCwgWSB5LCBaIHosIFcgdykgYXNtICI0IFRVUExFIjsKCjs7OyBVbnBh" + + "Y2tzIGEgdHVwbGUgb2YgbGVuZ3RoIGZvdXIKZm9yYWxsIFgsIFksIFosIFcgLT4gKFgsIFksIFosIFcpIHVudHVwbGU0KFtYLCBZLCBaLCBXXSB0KSBhc20gIjQgVU5U" + + "VVBMRSI7Cgo7OzsgUmV0dXJucyB0aGUgZmlyc3QgZWxlbWVudCBvZiBhIHR1cGxlICh3aXRoIHVua25vd24gZWxlbWVudCB0eXBlcykuCmZvcmFsbCBYIC0+IFggZmly" + + "c3QodHVwbGUgdCkgYXNtICJGSVJTVCI7Cgo7OzsgUmV0dXJucyB0aGUgc2Vjb25kIGVsZW1lbnQgb2YgYSB0dXBsZSAod2l0aCB1bmtub3duIGVsZW1lbnQgdHlwZXMp" + + "Lgpmb3JhbGwgWCAtPiBYIHNlY29uZCh0dXBsZSB0KSBhc20gIlNFQ09ORCI7Cgo7OzsgUmV0dXJucyB0aGUgdGhpcmQgZWxlbWVudCBvZiBhIHR1cGxlICh3aXRoIHVu" + + "a25vd24gZWxlbWVudCB0eXBlcykuCmZvcmFsbCBYIC0+IFggdGhpcmQodHVwbGUgdCkgYXNtICJUSElSRCI7Cgo7OzsgUmV0dXJucyB0aGUgZm91cnRoIGVsZW1lbnQg" + + "b2YgYSB0dXBsZSAod2l0aCB1bmtub3duIGVsZW1lbnQgdHlwZXMpLgpmb3JhbGwgWCAtPiBYIGZvdXJ0aCh0dXBsZSB0KSBhc20gIjMgSU5ERVgiOwoKOzs7IFJldHVy" + + "bnMgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYSBwYWlyIHR1cGxlLgpmb3JhbGwgWCwgWSAtPiBYIHBhaXJfZmlyc3QoW1gsIFldIHApIGFzbSAiRklSU1QiOwoKOzs7IFJl" + + "dHVybnMgdGhlIHNlY29uZCBlbGVtZW50IG9mIGEgcGFpciB0dXBsZS4KZm9yYWxsIFgsIFkgLT4gWSBwYWlyX3NlY29uZChbWCwgWV0gcCkgYXNtICJTRUNPTkQiOwoK" + + "Ozs7IFJldHVybnMgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYSB0cmlwbGUgdHVwbGUuCmZvcmFsbCBYLCBZLCBaIC0+IFggdHJpcGxlX2ZpcnN0KFtYLCBZLCBaXSBwKSBh" + + "c20gIkZJUlNUIjsKCjs7OyBSZXR1cm5zIHRoZSBzZWNvbmQgZWxlbWVudCBvZiBhIHRyaXBsZSB0dXBsZS4KZm9yYWxsIFgsIFksIFogLT4gWSB0cmlwbGVfc2Vjb25k" + + "KFtYLCBZLCBaXSBwKSBhc20gIlNFQ09ORCI7Cgo7OzsgUmV0dXJucyB0aGUgdGhpcmQgZWxlbWVudCBvZiBhIHRyaXBsZSB0dXBsZS4KZm9yYWxsIFgsIFksIFogLT4g" + + "WiB0cmlwbGVfdGhpcmQoW1gsIFksIFpdIHApIGFzbSAiVEhJUkQiOwoKCjs7OyBQdXNoIG51bGwgZWxlbWVudCAoY2FzdGVkIHRvIGdpdmVuIHR5cGUpCjs7OyBCeSB0" + + "aGUgVFZNIHR5cGUgYE51bGxgIEZ1bkMgcmVwcmVzZW50cyBhYnNlbmNlIG9mIGEgdmFsdWUgb2Ygc29tZSBhdG9taWMgdHlwZS4KOzs7IFNvIGBudWxsYCBjYW4gYWN0" + + "dWFsbHkgaGF2ZSBhbnkgYXRvbWljIHR5cGUuCmZvcmFsbCBYIC0+IFggbnVsbCgpIGFzbSAiUFVTSE5VTEwiOwoKOzs7IE1vdmVzIGEgdmFyaWFibGUgW3hdIHRvIHRo" + + "ZSB0b3Agb2YgdGhlIHN0YWNrCmZvcmFsbCBYIC0+IChYLCAoKSkgfmltcHVyZV90b3VjaChYIHgpIGltcHVyZSBhc20gIk5PUCI7CgoKCjs7OyBSZXR1cm5zIHRoZSBj" + + "dXJyZW50IFVuaXggdGltZSBhcyBhbiBJbnRlZ2VyCmludCBub3coKSBhc20gIk5PVyI7Cgo7OzsgUmV0dXJucyB0aGUgaW50ZXJuYWwgYWRkcmVzcyBvZiB0aGUgY3Vy" + + "cmVudCBzbWFydCBjb250cmFjdCBhcyBhIFNsaWNlIHdpdGggYSBgTXNnQWRkcmVzc0ludGAuCjs7OyBJZiBuZWNlc3NhcnksIGl0IGNhbiBiZSBwYXJzZWQgZnVydGhl" + + "ciB1c2luZyBwcmltaXRpdmVzIHN1Y2ggYXMgW3BhcnNlX3N0ZF9hZGRyXS4Kc2xpY2UgbXlfYWRkcmVzcygpIGFzbSAiTVlBRERSIjsKCjs7OyBSZXR1cm5zIHRoZSBi" + + "YWxhbmNlIG9mIHRoZSBzbWFydCBjb250cmFjdCBhcyBhIHR1cGxlIGNvbnNpc3Rpbmcgb2YgYW4gaW50Cjs7OyAoYmFsYW5jZSBpbiBuYW5vdG9uY29pbnMpIGFuZCBh" + + "IGBjZWxsYAo7OzsgKGEgZGljdGlvbmFyeSB3aXRoIDMyLWJpdCBrZXlzIHJlcHJlc2VudGluZyB0aGUgYmFsYW5jZSBvZiAiZXh0cmEgY3VycmVuY2llcyIpCjs7OyBh" + + "dCB0aGUgc3RhcnQgb2YgQ29tcHV0YXRpb24gUGhhc2UuCjs7OyBOb3RlIHRoYXQgUkFXIHByaW1pdGl2ZXMgc3VjaCBhcyBbc2VuZF9yYXdfbWVzc2FnZV0gZG8gbm90" + + "IHVwZGF0ZSB0aGlzIGZpZWxkLgpbaW50LCBjZWxsXSBnZXRfYmFsYW5jZSgpIGFzbSAiQkFMQU5DRSI7Cgo7OzsgUmV0dXJucyB0aGUgbG9naWNhbCB0aW1lIG9mIHRo" + + "ZSBjdXJyZW50IHRyYW5zYWN0aW9uLgppbnQgY3VyX2x0KCkgYXNtICJMVElNRSI7Cgo7OzsgUmV0dXJucyB0aGUgc3RhcnRpbmcgbG9naWNhbCB0aW1lIG9mIHRoZSBj" + + "dXJyZW50IGJsb2NrLgppbnQgYmxvY2tfbHQoKSBhc20gIkJMT0NLTFQiOwoKOzs7IENvbXB1dGVzIHRoZSByZXByZXNlbnRhdGlvbiBoYXNoIG9mIGEgYGNlbGxgIFtj" + + "XSBhbmQgcmV0dXJucyBpdCBhcyBhIDI1Ni1iaXQgdW5zaWduZWQgaW50ZWdlciBgeGAuCjs7OyBVc2VmdWwgZm9yIHNpZ25pbmcgYW5kIGNoZWNraW5nIHNpZ25hdHVy" + + "ZXMgb2YgYXJiaXRyYXJ5IGVudGl0aWVzIHJlcHJlc2VudGVkIGJ5IGEgdHJlZSBvZiBjZWxscy4KaW50IGNlbGxfaGFzaChjZWxsIGMpIGFzbSAiSEFTSENVIjsKCjs7" + + "OyBDb21wdXRlcyB0aGUgaGFzaCBvZiBhIGBzbGljZSBzYCBhbmQgcmV0dXJucyBpdCBhcyBhIDI1Ni1iaXQgdW5zaWduZWQgaW50ZWdlciBgeGAuCjs7OyBUaGUgcmVz" + + "dWx0IGlzIHRoZSBzYW1lIGFzIGlmIGFuIG9yZGluYXJ5IGNlbGwgY29udGFpbmluZyBvbmx5IGRhdGEgYW5kIHJlZmVyZW5jZXMgZnJvbSBgc2AgaGFkIGJlZW4gY3Jl" + + "YXRlZAo7OzsgYW5kIGl0cyBoYXNoIGNvbXB1dGVkIGJ5IFtjZWxsX2hhc2hdLgppbnQgc2xpY2VfaGFzaChzbGljZSBzKSBhc20gIkhBU0hTVSI7Cgo7OzsgQ29tcHV0" + + "ZXMgc2hhMjU2IG9mIHRoZSBkYXRhIGJpdHMgb2YgYHNsaWNlYCBbc10uIElmIHRoZSBiaXQgbGVuZ3RoIG9mIGBzYCBpcyBub3QgZGl2aXNpYmxlIGJ5IGVpZ2h0LAo7" + + "OzsgdGhyb3dzIGEgY2VsbCB1bmRlcmZsb3cgZXhjZXB0aW9uLiBUaGUgaGFzaCB2YWx1ZSBpcyByZXR1cm5lZCBhcyBhIDI1Ni1iaXQgdW5zaWduZWQgaW50ZWdlciBg" + + "eGAuCmludCBzdHJpbmdfaGFzaChzbGljZSBzKSBhc20gIlNIQTI1NlUiOwoKey0KICAjIFNpZ25hdHVyZSBjaGVja3MKLX0KCjs7OyBDaGVja3MgdGhlIEVkMjU1MTkt" + + "YHNpZ25hdHVyZWAgb2YgYSBgaGFzaGAgKGEgMjU2LWJpdCB1bnNpZ25lZCBpbnRlZ2VyLCB1c3VhbGx5IGNvbXB1dGVkIGFzIHRoZSBoYXNoIG9mIHNvbWUgZGF0YSkK" + + "Ozs7IHVzaW5nIFtwdWJsaWNfa2V5XSAoYWxzbyByZXByZXNlbnRlZCBieSBhIDI1Ni1iaXQgdW5zaWduZWQgaW50ZWdlcikuCjs7OyBUaGUgc2lnbmF0dXJlIG11c3Qg" + + "Y29udGFpbiBhdCBsZWFzdCA1MTIgZGF0YSBiaXRzOyBvbmx5IHRoZSBmaXJzdCA1MTIgYml0cyBhcmUgdXNlZC4KOzs7IFRoZSByZXN1bHQgaXMgYOKIkjFgIGlmIHRo" + + "ZSBzaWduYXR1cmUgaXMgdmFsaWQsIGAwYCBvdGhlcndpc2UuCjs7OyBOb3RlIHRoYXQgYENIS1NJR05VYCBjcmVhdGVzIGEgMjU2LWJpdCBzbGljZSB3aXRoIHRoZSBo" + + "YXNoIGFuZCBjYWxscyBgQ0hLU0lHTlNgLgo7OzsgVGhhdCBpcywgaWYgW2hhc2hdIGlzIGNvbXB1dGVkIGFzIHRoZSBoYXNoIG9mIHNvbWUgZGF0YSwgdGhlc2UgZGF0" + + "YSBhcmUgaGFzaGVkIHR3aWNlLAo7OzsgdGhlIHNlY29uZCBoYXNoaW5nIG9jY3VycmluZyBpbnNpZGUgYENIS1NJR05TYC4KaW50IGNoZWNrX3NpZ25hdHVyZShpbnQg" + + "aGFzaCwgc2xpY2Ugc2lnbmF0dXJlLCBpbnQgcHVibGljX2tleSkgYXNtICJDSEtTSUdOVSI7Cgo7OzsgQ2hlY2tzIHdoZXRoZXIgW3NpZ25hdHVyZV0gaXMgYSB2YWxp" + + "ZCBFZDI1NTE5LXNpZ25hdHVyZSBvZiB0aGUgZGF0YSBwb3J0aW9uIG9mIGBzbGljZSBkYXRhYCB1c2luZyBgcHVibGljX2tleWAsCjs7OyBzaW1pbGFybHkgdG8gW2No" + + "ZWNrX3NpZ25hdHVyZV0uCjs7OyBJZiB0aGUgYml0IGxlbmd0aCBvZiBbZGF0YV0gaXMgbm90IGRpdmlzaWJsZSBieSBlaWdodCwgdGhyb3dzIGEgY2VsbCB1bmRlcmZs" + + "b3cgZXhjZXB0aW9uLgo7OzsgVGhlIHZlcmlmaWNhdGlvbiBvZiBFZDI1NTE5IHNpZ25hdHVyZXMgaXMgdGhlIHN0YW5kYXJkIG9uZSwKOzs7IHdpdGggc2hhMjU2IHVz" + + "ZWQgdG8gcmVkdWNlIFtkYXRhXSB0byB0aGUgMjU2LWJpdCBudW1iZXIgdGhhdCBpcyBhY3R1YWxseSBzaWduZWQuCmludCBjaGVja19kYXRhX3NpZ25hdHVyZShzbGlj" + + "ZSBkYXRhLCBzbGljZSBzaWduYXR1cmUsIGludCBwdWJsaWNfa2V5KSBhc20gIkNIS1NJR05TIjsKCnstLS0KICAjIENvbXB1dGF0aW9uIG9mIGJvYyBzaXplCiAgVGhl" + + "IHByaW1pdGl2ZXMgYmVsb3cgbWF5IGJlIHVzZWZ1bCBmb3IgY29tcHV0aW5nIHN0b3JhZ2UgZmVlcyBvZiB1c2VyLXByb3ZpZGVkIGRhdGEuCi19Cgo7OzsgUmV0dXJu" + + "cyBgKHgsIHksIHosIC0xKWAgb3IgYChudWxsLCBudWxsLCBudWxsLCAwKWAuCjs7OyBSZWN1cnNpdmVseSBjb21wdXRlcyB0aGUgY291bnQgb2YgZGlzdGluY3QgY2Vs" + + "bHMgYHhgLCBkYXRhIGJpdHMgYHlgLCBhbmQgY2VsbCByZWZlcmVuY2VzIGB6YAo7OzsgaW4gdGhlIERBRyByb290ZWQgYXQgYGNlbGxgIFtjXSwgZWZmZWN0aXZlbHkg" + + "cmV0dXJuaW5nIHRoZSB0b3RhbCBzdG9yYWdlIHVzZWQgYnkgdGhpcyBEQUcgdGFraW5nIGludG8gYWNjb3VudAo7OzsgdGhlIGlkZW50aWZpY2F0aW9uIG9mIGVxdWFs" + + "IGNlbGxzLgo7OzsgVGhlIHZhbHVlcyBvZiBgeGAsIGB5YCwgYW5kIGB6YCBhcmUgY29tcHV0ZWQgYnkgYSBkZXB0aC1maXJzdCB0cmF2ZXJzYWwgb2YgdGhpcyBEQUcs" + + "Cjs7OyB3aXRoIGEgaGFzaCB0YWJsZSBvZiB2aXNpdGVkIGNlbGwgaGFzaGVzIHVzZWQgdG8gcHJldmVudCB2aXNpdHMgb2YgYWxyZWFkeS12aXNpdGVkIGNlbGxzLgo7" + + "OzsgVGhlIHRvdGFsIGNvdW50IG9mIHZpc2l0ZWQgY2VsbHMgYHhgIGNhbm5vdCBleGNlZWQgbm9uLW5lZ2F0aXZlIFttYXhfY2VsbHNdOwo7Ozsgb3RoZXJ3aXNlIHRo" + + "ZSBjb21wdXRhdGlvbiBpcyBhYm9ydGVkIGJlZm9yZSB2aXNpdGluZyB0aGUgYChtYXhfY2VsbHMgKyAxKWAtc3QgY2VsbCBhbmQKOzs7IGEgemVybyBmbGFnIGlzIHJl" + + "dHVybmVkIHRvIGluZGljYXRlIGZhaWx1cmUuIElmIFtjXSBpcyBgbnVsbGAsIHJldHVybnMgYHggPSB5ID0geiA9IDBgLgooaW50LCBpbnQsIGludCkgY29tcHV0ZV9k" + + "YXRhX3NpemUoY2VsbCBjLCBpbnQgbWF4X2NlbGxzKSBpbXB1cmUgYXNtICJDREFUQVNJWkUiOwoKOzs7IFNpbWlsYXIgdG8gW2NvbXB1dGVfZGF0YV9zaXplP10sIGJ1" + + "dCBhY2NlcHRpbmcgYSBgc2xpY2VgIFtzXSBpbnN0ZWFkIG9mIGEgYGNlbGxgLgo7OzsgVGhlIHJldHVybmVkIHZhbHVlIG9mIGB4YCBkb2VzIG5vdCB0YWtlIGludG8g" + + "YWNjb3VudCB0aGUgY2VsbCB0aGF0IGNvbnRhaW5zIHRoZSBgc2xpY2VgIFtzXSBpdHNlbGY7Cjs7OyBob3dldmVyLCB0aGUgZGF0YSBiaXRzIGFuZCB0aGUgY2VsbCBy" + + "ZWZlcmVuY2VzIG9mIFtzXSBhcmUgYWNjb3VudGVkIGZvciBpbiBgeWAgYW5kIGB6YC4KKGludCwgaW50LCBpbnQpIHNsaWNlX2NvbXB1dGVfZGF0YV9zaXplKHNsaWNl" + + "IHMsIGludCBtYXhfY2VsbHMpIGltcHVyZSBhc20gIlNEQVRBU0laRSI7Cgo7OzsgQSBub24tcXVpZXQgdmVyc2lvbiBvZiBbY29tcHV0ZV9kYXRhX3NpemU/XSB0aGF0" + + "IHRocm93cyBhIGNlbGwgb3ZlcmZsb3cgZXhjZXB0aW9uIChgOGApIG9uIGZhaWx1cmUuCihpbnQsIGludCwgaW50LCBpbnQpIGNvbXB1dGVfZGF0YV9zaXplPyhjZWxs" + + "IGMsIGludCBtYXhfY2VsbHMpIGFzbSAiQ0RBVEFTSVpFUSBOVUxMU1dBUElGTk9UMiBOVUxMU1dBUElGTk9UIjsKCjs7OyBBIG5vbi1xdWlldCB2ZXJzaW9uIG9mIFtz" + + "bGljZV9jb21wdXRlX2RhdGFfc2l6ZT9dIHRoYXQgdGhyb3dzIGEgY2VsbCBvdmVyZmxvdyBleGNlcHRpb24gKDgpIG9uIGZhaWx1cmUuCihpbnQsIGludCwgaW50LCBp" + + "bnQpIHNsaWNlX2NvbXB1dGVfZGF0YV9zaXplPyhjZWxsIGMsIGludCBtYXhfY2VsbHMpIGFzbSAiU0RBVEFTSVpFUSBOVUxMU1dBUElGTk9UMiBOVUxMU1dBUElGTk9U" + + "IjsKCjs7OyBUaHJvd3MgYW4gZXhjZXB0aW9uIHdpdGggZXhpdF9jb2RlIGV4Y25vIGlmIGNvbmQgaXMgbm90IDAgKGNvbW1lbnRlZCBzaW5jZSBpbXBsZW1lbnRlZCBp" + + "biBjb21waWxhdG9yKQo7OyAoKSB0aHJvd19pZihpbnQgZXhjbm8sIGludCBjb25kKSBpbXB1cmUgYXNtICJUSFJPV0FSR0lGIjsKCnstLQogICMgRGVidWcgcHJpbWl0" + + "aXZlcwogIE9ubHkgd29ya3MgZm9yIGxvY2FsIFRWTSBleGVjdXRpb24gd2l0aCBkZWJ1ZyBsZXZlbCB2ZXJib3NpdHkKLX0KOzs7IER1bXBzIHRoZSBzdGFjayAoYXQg" + + "bW9zdCB0aGUgdG9wIDI1NSB2YWx1ZXMpIGFuZCBzaG93cyB0aGUgdG90YWwgc3RhY2sgZGVwdGguCigpIGR1bXBfc3RhY2soKSBpbXB1cmUgYXNtICJEVU1QU1RLIjsK" + + "CnstCiAgIyBQZXJzaXN0ZW50IHN0b3JhZ2Ugc2F2ZSBhbmQgbG9hZAotfQoKOzs7IFJldHVybnMgdGhlIHBlcnNpc3RlbnQgY29udHJhY3Qgc3RvcmFnZSBjZWxsLiBJ" + + "dCBjYW4gYmUgcGFyc2VkIG9yIG1vZGlmaWVkIHdpdGggc2xpY2UgYW5kIGJ1aWxkZXIgcHJpbWl0aXZlcyBsYXRlci4KY2VsbCBnZXRfZGF0YSgpIGFzbSAiYzQgUFVT" + + "SCI7Cgo7OzsgU2V0cyBgY2VsbGAgW2NdIGFzIHBlcnNpc3RlbnQgY29udHJhY3QgZGF0YS4gWW91IGNhbiB1cGRhdGUgcGVyc2lzdGVudCBjb250cmFjdCBzdG9yYWdl" + + "IHdpdGggdGhpcyBwcmltaXRpdmUuCigpIHNldF9kYXRhKGNlbGwgYykgaW1wdXJlIGFzbSAiYzQgUE9QIjsKCnstCiAgIyBDb250aW51YXRpb24gcHJpbWl0aXZlcwot" + + "fQo7OzsgVXN1YWxseSBgYzNgIGhhcyBhIGNvbnRpbnVhdGlvbiBpbml0aWFsaXplZCBieSB0aGUgd2hvbGUgY29kZSBvZiB0aGUgY29udHJhY3QuIEl0IGlzIHVzZWQg" + + "Zm9yIGZ1bmN0aW9uIGNhbGxzLgo7OzsgVGhlIHByaW1pdGl2ZSByZXR1cm5zIHRoZSBjdXJyZW50IHZhbHVlIG9mIGBjM2AuCmNvbnQgZ2V0X2MzKCkgaW1wdXJlIGFz" + + "bSAiYzMgUFVTSCI7Cgo7OzsgVXBkYXRlcyB0aGUgY3VycmVudCB2YWx1ZSBvZiBgYzNgLiBVc3VhbGx5LCBpdCBpcyB1c2VkIGZvciB1cGRhdGluZyBzbWFydCBjb250" + + "cmFjdCBjb2RlIGluIHJ1bi10aW1lLgo7OzsgTm90ZSB0aGF0IGFmdGVyIGV4ZWN1dGlvbiBvZiB0aGlzIHByaW1pdGl2ZSB0aGUgY3VycmVudCBjb2RlCjs7OyAoYW5k" + + "IHRoZSBzdGFjayBvZiByZWN1cnNpdmUgZnVuY3Rpb24gY2FsbHMpIHdvbid0IGNoYW5nZSwKOzs7IGJ1dCBhbnkgb3RoZXIgZnVuY3Rpb24gY2FsbCB3aWxsIHVzZSBh" + + "IGZ1bmN0aW9uIGZyb20gdGhlIG5ldyBjb2RlLgooKSBzZXRfYzMoY29udCBjKSBpbXB1cmUgYXNtICJjMyBQT1AiOwoKOzs7IFRyYW5zZm9ybXMgYSBgc2xpY2VgIFtz" + + "XSBpbnRvIGEgc2ltcGxlIG9yZGluYXJ5IGNvbnRpbnVhdGlvbiBgY2AsIHdpdGggYGMuY29kZSA9IHNgIGFuZCBhbiBlbXB0eSBzdGFjayBhbmQgc2F2ZWxpc3QuCmNv" + + "bnQgYmxlc3Moc2xpY2UgcykgaW1wdXJlIGFzbSAiQkxFU1MiOwoKey0tLQogICMgR2FzIHJlbGF0ZWQgcHJpbWl0aXZlcwotfQoKOzs7IFNldHMgY3VycmVudCBnYXMg" + + "bGltaXQgYGdsYCB0byBpdHMgbWF4aW1hbCBhbGxvd2VkIHZhbHVlIGBnbWAsIGFuZCByZXNldHMgdGhlIGdhcyBjcmVkaXQgYGdjYCB0byB6ZXJvLAo7OzsgZGVjcmVh" + + "c2luZyB0aGUgdmFsdWUgb2YgYGdyYCBieSBgZ2NgIGluIHRoZSBwcm9jZXNzLgo7OzsgSW4gb3RoZXIgd29yZHMsIHRoZSBjdXJyZW50IHNtYXJ0IGNvbnRyYWN0IGFn" + + "cmVlcyB0byBidXkgc29tZSBnYXMgdG8gZmluaXNoIHRoZSBjdXJyZW50IHRyYW5zYWN0aW9uLgo7OzsgVGhpcyBhY3Rpb24gaXMgcmVxdWlyZWQgdG8gcHJvY2VzcyBl" + + "eHRlcm5hbCBtZXNzYWdlcywgd2hpY2ggYnJpbmcgbm8gdmFsdWUgKGhlbmNlIG5vIGdhcykgd2l0aCB0aGVtc2VsdmVzLgo7OzsKOzs7IEZvciBtb3JlIGRldGFpbHMg" + + "Y2hlY2sgW2FjY2VwdF9tZXNzYWdlIGVmZmVjdHNdKGh0dHBzOi8vdG9uLm9yZy9kb2NzLyMvc21hcnQtY29udHJhY3RzL2FjY2VwdCkuCigpIGFjY2VwdF9tZXNzYWdl" + + "KCkgaW1wdXJlIGFzbSAiQUNDRVBUIjsKCjs7OyBTZXRzIGN1cnJlbnQgZ2FzIGxpbWl0IGBnbGAgdG8gdGhlIG1pbmltdW0gb2YgbGltaXQgYW5kIGBnbWAsIGFuZCBy" + + "ZXNldHMgdGhlIGdhcyBjcmVkaXQgYGdjYCB0byB6ZXJvLgo7OzsgSWYgdGhlIGdhcyBjb25zdW1lZCBzbyBmYXIgKGluY2x1ZGluZyB0aGUgcHJlc2VudCBpbnN0cnVj" + + "dGlvbikgZXhjZWVkcyB0aGUgcmVzdWx0aW5nIHZhbHVlIG9mIGBnbGAsCjs7OyBhbiAodW5oYW5kbGVkKSBvdXQgb2YgZ2FzIGV4Y2VwdGlvbiBpcyB0aHJvd24gYmVm" + + "b3JlIHNldHRpbmcgbmV3IGdhcyBsaW1pdHMuCjs7OyBOb3RpY2UgdGhhdCBbc2V0X2dhc19saW1pdF0gd2l0aCBhbiBhcmd1bWVudCBgbGltaXQg4omlIDJeNjMg4oiS" + + "IDFgIGlzIGVxdWl2YWxlbnQgdG8gW2FjY2VwdF9tZXNzYWdlXS4KKCkgc2V0X2dhc19saW1pdChpbnQgbGltaXQpIGltcHVyZSBhc20gIlNFVEdBU0xJTUlUIjsKCjs7" + + "OyBDb21taXRzIHRoZSBjdXJyZW50IHN0YXRlIG9mIHJlZ2lzdGVycyBgYzRgICjigJxwZXJzaXN0ZW50IGRhdGHigJ0pIGFuZCBgYzVgICjigJxhY3Rpb25z4oCdKQo7" + + "Ozsgc28gdGhhdCB0aGUgY3VycmVudCBleGVjdXRpb24gaXMgY29uc2lkZXJlZCDigJxzdWNjZXNzZnVs4oCdIHdpdGggdGhlIHNhdmVkIHZhbHVlcyBldmVuIGlmIGFu" + + "IGV4Y2VwdGlvbgo7OzsgaW4gQ29tcHV0YXRpb24gUGhhc2UgaXMgdGhyb3duIGxhdGVyLgooKSBjb21taXQoKSBpbXB1cmUgYXNtICJDT01NSVQiOwoKOzs7IE5vdCBp" + + "bXBsZW1lbnRlZAo7OzsgQ29tcHV0ZXMgdGhlIGFtb3VudCBvZiBnYXMgdGhhdCBjYW4gYmUgYm91Z2h0IGZvciBgYW1vdW50YCBuYW5vVE9OcywKOzs7IGFuZCBzZXRz" + + "IGBnbGAgYWNjb3JkaW5nbHkgaW4gdGhlIHNhbWUgd2F5IGFzIFtzZXRfZ2FzX2xpbWl0XS4KOzsoKSBidXlfZ2FzKGludCBhbW91bnQpIGltcHVyZSBhc20gIkJVWUdB" + + "UyI7Cgo7OzsgQ29tcHV0ZXMgdGhlIG1pbmltdW0gb2YgdHdvIGludGVnZXJzIFt4XSBhbmQgW3ldLgppbnQgbWluKGludCB4LCBpbnQgeSkgYXNtICJNSU4iOwoKOzs7" + + "IENvbXB1dGVzIHRoZSBtYXhpbXVtIG9mIHR3byBpbnRlZ2VycyBbeF0gYW5kIFt5XS4KaW50IG1heChpbnQgeCwgaW50IHkpIGFzbSAiTUFYIjsKCjs7OyBTb3J0cyB0" + + "d28gaW50ZWdlcnMuCihpbnQsIGludCkgbWlubWF4KGludCB4LCBpbnQgeSkgYXNtICJNSU5NQVgiOwoKOzs7IENvbXB1dGVzIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiBh" + + "biBpbnRlZ2VyIFt4XS4KaW50IGFicyhpbnQgeCkgYXNtICJBQlMiOwoKey0KICAjIFNsaWNlIHByaW1pdGl2ZXMKCiAgSXQgaXMgc2FpZCB0aGF0IGEgcHJpbWl0aXZl" + + "IF9sb2Fkc18gc29tZSBkYXRhLAogIGlmIGl0IHJldHVybnMgdGhlIGRhdGEgYW5kIHRoZSByZW1haW5kZXIgb2YgdGhlIHNsaWNlCiAgKHNvIGl0IGNhbiBhbHNvIGJl" + + "IHVzZWQgYXMgW21vZGlmeWluZyBtZXRob2RdKGh0dHBzOi8vdG9uLm9yZy9kb2NzLyMvZnVuYy9zdGF0ZW1lbnRzP2lkPW1vZGlmeWluZy1tZXRob2RzKSkuCgogIEl0" + + "IGlzIHNhaWQgdGhhdCBhIHByaW1pdGl2ZSBfcHJlbG9hZHNfIHNvbWUgZGF0YSwgaWYgaXQgcmV0dXJucyBvbmx5IHRoZSBkYXRhCiAgKGl0IGNhbiBiZSB1c2VkIGFz" + + "IFtub24tbW9kaWZ5aW5nIG1ldGhvZF0oaHR0cHM6Ly90b24ub3JnL2RvY3MvIy9mdW5jL3N0YXRlbWVudHM/aWQ9bm9uLW1vZGlmeWluZy1tZXRob2RzKSkuCgogIFVu" + + "bGVzcyBvdGhlcndpc2Ugc3RhdGVkLCBsb2FkaW5nIGFuZCBwcmVsb2FkaW5nIHByaW1pdGl2ZXMgcmVhZCB0aGUgZGF0YSBmcm9tIGEgcHJlZml4IG9mIHRoZSBzbGlj" + + "ZS4KLX0KCgo7OzsgQ29udmVydHMgYSBgY2VsbGAgW2NdIGludG8gYSBgc2xpY2VgLiBOb3RpY2UgdGhhdCBbY10gbXVzdCBiZSBlaXRoZXIgYW4gb3JkaW5hcnkgY2Vs" + + "bCwKOzs7IG9yIGFuIGV4b3RpYyBjZWxsIChzZWUgW1RWTS5wZGZdKGh0dHBzOi8vdG9uLWJsb2NrY2hhaW4uZ2l0aHViLmlvL2RvY3MvdHZtLnBkZiksIDMuMS4yKQo7" + + "Ozsgd2hpY2ggaXMgYXV0b21hdGljYWxseSBsb2FkZWQgdG8geWllbGQgYW4gb3JkaW5hcnkgY2VsbCBgYydgLCBjb252ZXJ0ZWQgaW50byBhIGBzbGljZWAgYWZ0ZXJ3" + + "YXJkcy4Kc2xpY2UgYmVnaW5fcGFyc2UoY2VsbCBjKSBhc20gIkNUT1MiOwoKOzs7IENoZWNrcyBpZiBbc10gaXMgZW1wdHkuIElmIG5vdCwgdGhyb3dzIGFuIGV4Y2Vw" + + "dGlvbi4KKCkgZW5kX3BhcnNlKHNsaWNlIHMpIGltcHVyZSBhc20gIkVORFMiOwoKOzs7IExvYWRzIHRoZSBmaXJzdCByZWZlcmVuY2UgZnJvbSB0aGUgc2xpY2UuCihz" + + "bGljZSwgY2VsbCkgbG9hZF9yZWYoc2xpY2UgcykgYXNtKC0+IDEgMCkgIkxEUkVGIjsKCjs7OyBQcmVsb2FkcyB0aGUgZmlyc3QgcmVmZXJlbmNlIGZyb20gdGhlIHNs" + + "aWNlLgpjZWxsIHByZWxvYWRfcmVmKHNsaWNlIHMpIGFzbSAiUExEUkVGIjsKCnstIEZ1bmN0aW9ucyBiZWxvdyBhcmUgY29tbWVudGVkIGJlY2F1c2UgYXJlIGltcGxl" + + "bWVudGVkIG9uIGNvbXBpbGF0b3IgbGV2ZWwgZm9yIG9wdGltaXNhdGlvbiAtfQoKOzs7IExvYWRzIGEgc2lnbmVkIFtsZW5dLWJpdCBpbnRlZ2VyIGZyb20gYSBzbGlj" + + "ZSBbc10uCjs7IChzbGljZSwgaW50KSB+bG9hZF9pbnQoc2xpY2UgcywgaW50IGxlbikgYXNtKHMgbGVuIC0+IDEgMCkgIkxESVgiOwoKOzs7IExvYWRzIGFuIHVuc2ln" + + "bmVkIFtsZW5dLWJpdCBpbnRlZ2VyIGZyb20gYSBzbGljZSBbc10uCjs7IChzbGljZSwgaW50KSB+bG9hZF91aW50KHNsaWNlIHMsIGludCBsZW4pIGFzbSggLT4gMSAw" + + "KSAiTERVWCI7Cgo7OzsgUHJlbG9hZHMgYSBzaWduZWQgW2xlbl0tYml0IGludGVnZXIgZnJvbSBhIHNsaWNlIFtzXS4KOzsgaW50IHByZWxvYWRfaW50KHNsaWNlIHMs" + + "IGludCBsZW4pIGFzbSAiUExESVgiOwoKOzs7IFByZWxvYWRzIGFuIHVuc2lnbmVkIFtsZW5dLWJpdCBpbnRlZ2VyIGZyb20gYSBzbGljZSBbc10uCjs7IGludCBwcmVs" + + "b2FkX3VpbnQoc2xpY2UgcywgaW50IGxlbikgYXNtICJQTERVWCI7Cgo7OzsgTG9hZHMgdGhlIGZpcnN0IGAwIOKJpCBsZW4g4omkIDEwMjNgIGJpdHMgZnJvbSBzbGlj" + + "ZSBbc10gaW50byBhIHNlcGFyYXRlIGBzbGljZSBzJydgLgo7OyAoc2xpY2UsIHNsaWNlKSBsb2FkX2JpdHMoc2xpY2UgcywgaW50IGxlbikgYXNtKHMgbGVuIC0+IDEg" + + "MCkgIkxEU0xJQ0VYIjsKCjs7OyBQcmVsb2FkcyB0aGUgZmlyc3QgYDAg4omkIGxlbiDiiaQgMTAyM2AgYml0cyBmcm9tIHNsaWNlIFtzXSBpbnRvIGEgc2VwYXJhdGUg" + + "YHNsaWNlIHMnJ2AuCjs7IHNsaWNlIHByZWxvYWRfYml0cyhzbGljZSBzLCBpbnQgbGVuKSBhc20gIlBMRFNMSUNFWCI7Cgo7OzsgTG9hZHMgc2VyaWFsaXplZCBhbW91" + + "bnQgb2YgVG9uQ29pbnMgKGFueSB1bnNpZ25lZCBpbnRlZ2VyIHVwIHRvIGAyXjEyMCAtIDFgKS4KKHNsaWNlLCBpbnQpIGxvYWRfZ3JhbXMoc2xpY2UgcykgYXNtKC0+" + + "IDEgMCkgIkxER1JBTVMiOwooc2xpY2UsIGludCkgbG9hZF9jb2lucyhzbGljZSBzKSBhc20oLT4gMSAwKSAiTERWQVJVSU5UMTYiOwoKKHNsaWNlLCBpbnQpIGxvYWRf" + + "dmFyaW50MTYoc2xpY2UgcykgYXNtKC0+IDEgMCkgIkxEVkFSSU5UMTYiOwooc2xpY2UsIGludCkgbG9hZF92YXJpbnQzMihzbGljZSBzKSBhc20oLT4gMSAwKSAiTERW" + + "QVJJTlQzMiI7CihzbGljZSwgaW50KSBsb2FkX3ZhcnVpbnQxNihzbGljZSBzKSBhc20oLT4gMSAwKSAiTERWQVJVSU5UMTYiOwooc2xpY2UsIGludCkgbG9hZF92YXJ1" + + "aW50MzIoc2xpY2UgcykgYXNtKC0+IDEgMCkgIkxEVkFSVUlOVDMyIjsKCjs7OyBSZXR1cm5zIGFsbCBidXQgdGhlIGZpcnN0IGAwIOKJpCBsZW4g4omkIDEwMjNgIGJp" + + "dHMgb2YgYHNsaWNlYCBbc10uCnNsaWNlIHNraXBfYml0cyhzbGljZSBzLCBpbnQgbGVuKSBhc20gIlNEU0tJUEZJUlNUIjsKKHNsaWNlLCAoKSkgfnNraXBfYml0cyhz" + + "bGljZSBzLCBpbnQgbGVuKSBhc20gIlNEU0tJUEZJUlNUIjsKCjs7OyBSZXR1cm5zIHRoZSBmaXJzdCBgMCDiiaQgbGVuIOKJpCAxMDIzYCBiaXRzIG9mIGBzbGljZWAg" + + "W3NdLgpzbGljZSBmaXJzdF9iaXRzKHNsaWNlIHMsIGludCBsZW4pIGFzbSAiU0RDVVRGSVJTVCI7Cgo7OzsgUmV0dXJucyBhbGwgYnV0IHRoZSBsYXN0IGAwIOKJpCBs" + + "ZW4g4omkIDEwMjNgIGJpdHMgb2YgYHNsaWNlYCBbc10uCnNsaWNlIHNraXBfbGFzdF9iaXRzKHNsaWNlIHMsIGludCBsZW4pIGFzbSAiU0RTS0lQTEFTVCI7CihzbGlj" + + "ZSwgKCkpIH5za2lwX2xhc3RfYml0cyhzbGljZSBzLCBpbnQgbGVuKSBhc20gIlNEU0tJUExBU1QiOwoKOzs7IFJldHVybnMgdGhlIGxhc3QgYDAg4omkIGxlbiDiiaQg" + + "MTAyM2AgYml0cyBvZiBgc2xpY2VgIFtzXS4Kc2xpY2Ugc2xpY2VfbGFzdChzbGljZSBzLCBpbnQgbGVuKSBhc20gIlNEQ1VUTEFTVCI7Cgo7OzsgTG9hZHMgYSBkaWN0" + + "aW9uYXJ5IGBEYCAoSGFzaE1hcEUpIGZyb20gYHNsaWNlYCBbc10uCjs7OyAocmV0dXJucyBgbnVsbGAgaWYgYG5vdGhpbmdgIGNvbnN0cnVjdG9yIGlzIHVzZWQpLgoo" + + "c2xpY2UsIGNlbGwpIGxvYWRfZGljdChzbGljZSBzKSBhc20oLT4gMSAwKSAiTERESUNUIjsKCjs7OyBQcmVsb2FkcyBhIGRpY3Rpb25hcnkgYERgIGZyb20gYHNsaWNl" + + "YCBbc10uCmNlbGwgcHJlbG9hZF9kaWN0KHNsaWNlIHMpIGFzbSAiUExERElDVCI7Cgo7OzsgTG9hZHMgYSBkaWN0aW9uYXJ5IGFzIFtsb2FkX2RpY3RdLCBidXQgcmV0" + + "dXJucyBvbmx5IHRoZSByZW1haW5kZXIgb2YgdGhlIHNsaWNlLgpzbGljZSBza2lwX2RpY3Qoc2xpY2UgcykgYXNtICJTS0lQRElDVCI7CihzbGljZSwgKCkpIH5za2lw" + + "X2RpY3Qoc2xpY2UgcykgYXNtICJTS0lQRElDVCI7Cgo7OzsgTG9hZHMgKE1heWJlIF5DZWxsKSBmcm9tIGBzbGljZWAgW3NdLgo7OzsgSW4gb3RoZXIgd29yZHMgbG9h" + + "ZHMgMSBiaXQgYW5kIGlmIGl0IGlzIHRydWUKOzs7IGxvYWRzIGZpcnN0IHJlZiBhbmQgcmV0dXJuIGl0IHdpdGggc2xpY2UgcmVtYWluZGVyCjs7OyBvdGhlcndpc2Ug" + + "cmV0dXJucyBgbnVsbGAgYW5kIHNsaWNlIHJlbWFpbmRlcgooc2xpY2UsIGNlbGwpIGxvYWRfbWF5YmVfcmVmKHNsaWNlIHMpIGFzbSgtPiAxIDApICJMRE9QVFJFRiI7" + + "Cgo7OzsgUHJlbG9hZHMgKE1heWJlIF5DZWxsKSBmcm9tIGBzbGljZWAgW3NdLgpjZWxsIHByZWxvYWRfbWF5YmVfcmVmKHNsaWNlIHMpIGFzbSAiUExET1BUUkVGIjsK" + + "Cgo7OzsgUmV0dXJucyB0aGUgZGVwdGggb2YgYGNlbGxgIFtjXS4KOzs7IElmIFtjXSBoYXMgbm8gcmVmZXJlbmNlcywgdGhlbiByZXR1cm4gYDBgOwo7Ozsgb3RoZXJ3" + + "aXNlIHRoZSByZXR1cm5lZCB2YWx1ZSBpcyBvbmUgcGx1cyB0aGUgbWF4aW11bSBvZiBkZXB0aHMgb2YgY2VsbHMgcmVmZXJyZWQgdG8gZnJvbSBbY10uCjs7OyBJZiBb" + + "Y10gaXMgYSBgbnVsbGAgaW5zdGVhZCBvZiBhIGNlbGwsIHJldHVybnMgemVyby4KaW50IGNlbGxfZGVwdGgoY2VsbCBjKSBhc20gIkNERVBUSCI7CgoKey0KICAjIFNs" + + "aWNlIHNpemUgcHJpbWl0aXZlcwotfQoKOzs7IFJldHVybnMgdGhlIG51bWJlciBvZiByZWZlcmVuY2VzIGluIGBzbGljZWAgW3NdLgppbnQgc2xpY2VfcmVmcyhzbGlj" + + "ZSBzKSBhc20gIlNSRUZTIjsKCjs7OyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZGF0YSBiaXRzIGluIGBzbGljZWAgW3NdLgppbnQgc2xpY2VfYml0cyhzbGljZSBzKSBh" + + "c20gIlNCSVRTIjsKCjs7OyBSZXR1cm5zIGJvdGggdGhlIG51bWJlciBvZiBkYXRhIGJpdHMgYW5kIHRoZSBudW1iZXIgb2YgcmVmZXJlbmNlcyBpbiBgc2xpY2VgIFtz" + + "XS4KKGludCwgaW50KSBzbGljZV9iaXRzX3JlZnMoc2xpY2UgcykgYXNtICJTQklUUkVGUyI7Cgo7OzsgQ2hlY2tzIHdoZXRoZXIgYSBgc2xpY2VgIFtzXSBpcyBlbXB0" + + "eSAoaS5lLiwgY29udGFpbnMgbm8gYml0cyBvZiBkYXRhIGFuZCBubyBjZWxsIHJlZmVyZW5jZXMpLgppbnQgc2xpY2VfZW1wdHk/KHNsaWNlIHMpIGFzbSAiU0VNUFRZ" + + "IjsKCjs7OyBDaGVja3Mgd2hldGhlciBgc2xpY2VgIFtzXSBoYXMgbm8gYml0cyBvZiBkYXRhLgppbnQgc2xpY2VfZGF0YV9lbXB0eT8oc2xpY2UgcykgYXNtICJTREVN" + + "UFRZIjsKCjs7OyBDaGVja3Mgd2hldGhlciBgc2xpY2VgIFtzXSBoYXMgbm8gcmVmZXJlbmNlcy4KaW50IHNsaWNlX3JlZnNfZW1wdHk/KHNsaWNlIHMpIGFzbSAiU1JF" + + "TVBUWSI7Cgo7OzsgUmV0dXJucyB0aGUgZGVwdGggb2YgYHNsaWNlYCBbc10uCjs7OyBJZiBbc10gaGFzIG5vIHJlZmVyZW5jZXMsIHRoZW4gcmV0dXJucyBgMGA7Cjs7" + + "OyBvdGhlcndpc2UgdGhlIHJldHVybmVkIHZhbHVlIGlzIG9uZSBwbHVzIHRoZSBtYXhpbXVtIG9mIGRlcHRocyBvZiBjZWxscyByZWZlcnJlZCB0byBmcm9tIFtzXS4K" + + "aW50IHNsaWNlX2RlcHRoKHNsaWNlIHMpIGFzbSAiU0RFUFRIIjsKCnstCiAgIyBCdWlsZGVyIHNpemUgcHJpbWl0aXZlcwotfQoKOzs7IFJldHVybnMgdGhlIG51bWJl" + + "ciBvZiBjZWxsIHJlZmVyZW5jZXMgYWxyZWFkeSBzdG9yZWQgaW4gYGJ1aWxkZXJgIFtiXQppbnQgYnVpbGRlcl9yZWZzKGJ1aWxkZXIgYikgYXNtICJCUkVGUyI7Cgo7" + + "OzsgUmV0dXJucyB0aGUgbnVtYmVyIG9mIGRhdGEgYml0cyBhbHJlYWR5IHN0b3JlZCBpbiBgYnVpbGRlcmAgW2JdLgppbnQgYnVpbGRlcl9iaXRzKGJ1aWxkZXIgYikg" + + "YXNtICJCQklUUyI7Cgo7OzsgUmV0dXJucyB0aGUgZGVwdGggb2YgYGJ1aWxkZXJgIFtiXS4KOzs7IElmIG5vIGNlbGwgcmVmZXJlbmNlcyBhcmUgc3RvcmVkIGluIFti" + + "XSwgdGhlbiByZXR1cm5zIDA7Cjs7OyBvdGhlcndpc2UgdGhlIHJldHVybmVkIHZhbHVlIGlzIG9uZSBwbHVzIHRoZSBtYXhpbXVtIG9mIGRlcHRocyBvZiBjZWxscyBy" + + "ZWZlcnJlZCB0byBmcm9tIFtiXS4KaW50IGJ1aWxkZXJfZGVwdGgoYnVpbGRlciBiKSBhc20gIkJERVBUSCI7Cgp7LQogICMgQnVpbGRlciBwcmltaXRpdmVzCiAgSXQg" + + "aXMgc2FpZCB0aGF0IGEgcHJpbWl0aXZlIF9zdG9yZXNfIGEgdmFsdWUgYHhgIGludG8gYSBidWlsZGVyIGBiYAogIGlmIGl0IHJldHVybnMgYSBtb2RpZmllZCB2ZXJz" + + "aW9uIG9mIHRoZSBidWlsZGVyIGBiJ2Agd2l0aCB0aGUgdmFsdWUgYHhgIHN0b3JlZCBhdCB0aGUgZW5kIG9mIGl0LgogIEl0IGNhbiBiZSB1c2VkIGFzIFtub24tbW9k" + + "aWZ5aW5nIG1ldGhvZF0oaHR0cHM6Ly90b24ub3JnL2RvY3MvIy9mdW5jL3N0YXRlbWVudHM/aWQ9bm9uLW1vZGlmeWluZy1tZXRob2RzKS4KCiAgQWxsIHRoZSBwcmlt" + + "aXRpdmVzIGJlbG93IGZpcnN0IGNoZWNrIHdoZXRoZXIgdGhlcmUgaXMgZW5vdWdoIHNwYWNlIGluIHRoZSBgYnVpbGRlcmAsCiAgYW5kIG9ubHkgdGhlbiBjaGVjayB0" + + "aGUgcmFuZ2Ugb2YgdGhlIHZhbHVlIGJlaW5nIHNlcmlhbGl6ZWQuCi19Cgo7OzsgQ3JlYXRlcyBhIG5ldyBlbXB0eSBgYnVpbGRlcmAuCmJ1aWxkZXIgYmVnaW5fY2Vs" + + "bCgpIGFzbSAiTkVXQyI7Cgo7OzsgQ29udmVydHMgYSBgYnVpbGRlcmAgaW50byBhbiBvcmRpbmFyeSBgY2VsbGAuCmNlbGwgZW5kX2NlbGwoYnVpbGRlciBiKSBhc20g" + + "IkVOREMiOwoKOzs7IFN0b3JlcyBhIHJlZmVyZW5jZSB0byBgY2VsbGAgW2NdIGludG8gYGJ1aWxkZXJgIFtiXS4KYnVpbGRlciBzdG9yZV9yZWYoYnVpbGRlciBiLCBj" + + "ZWxsIGMpIGFzbShjIGIpICJTVFJFRiI7Cgo7OzsgU3RvcmVzIGFuIHVuc2lnbmVkIFtsZW5dLWJpdCBpbnRlZ2VyIGB4YCBpbnRvIGBiYCBmb3IgYDAg4omkIGxlbiDi" + + "iaQgMjU2YC4KOzsgYnVpbGRlciBzdG9yZV91aW50KGJ1aWxkZXIgYiwgaW50IHgsIGludCBsZW4pIGFzbSh4IGIgbGVuKSAiU1RVWCI7Cgo7OzsgU3RvcmVzIGEgc2ln" + + "bmVkIFtsZW5dLWJpdCBpbnRlZ2VyIGB4YCBpbnRvIGBiYCBmb3JgIDAg4omkIGxlbiDiiaQgMjU3YC4KOzsgYnVpbGRlciBzdG9yZV9pbnQoYnVpbGRlciBiLCBpbnQg" + + "eCwgaW50IGxlbikgYXNtKHggYiBsZW4pICJTVElYIjsKCgo7OzsgU3RvcmVzIGBzbGljZWAgW3NdIGludG8gYGJ1aWxkZXJgIFtiXQpidWlsZGVyIHN0b3JlX3NsaWNl" + + "KGJ1aWxkZXIgYiwgc2xpY2UgcykgYXNtICJTVFNMSUNFUiI7Cgo7OzsgU3RvcmVzIChzZXJpYWxpemVzKSBhbiBpbnRlZ2VyIFt4XSBpbiB0aGUgcmFuZ2UgYDAuLjJe" + + "MTIwIOKIkiAxYCBpbnRvIGBidWlsZGVyYCBbYl0uCjs7OyBUaGUgc2VyaWFsaXphdGlvbiBvZiBbeF0gY29uc2lzdHMgb2YgYSA0LWJpdCB1bnNpZ25lZCBiaWctZW5k" + + "aWFuIGludGVnZXIgYGxgLAo7Ozsgd2hpY2ggaXMgdGhlIHNtYWxsZXN0IGludGVnZXIgYGwg4omlIDBgLCBzdWNoIHRoYXQgYHggPCAyXjhsYCwKOzs7IGZvbGxvd2Vk" + + "IGJ5IGFuIGA4bGAtYml0IHVuc2lnbmVkIGJpZy1lbmRpYW4gcmVwcmVzZW50YXRpb24gb2YgW3hdLgo7OzsgSWYgW3hdIGRvZXMgbm90IGJlbG9uZyB0byB0aGUgc3Vw" + + "cG9ydGVkIHJhbmdlLCBhIHJhbmdlIGNoZWNrIGV4Y2VwdGlvbiBpcyB0aHJvd24uCjs7Owo7OzsgU3RvcmUgYW1vdW50cyBvZiBUb25Db2lucyB0byB0aGUgYnVpbGRl" + + "ciBhcyBWYXJVSW50ZWdlciAxNgpidWlsZGVyIHN0b3JlX2dyYW1zKGJ1aWxkZXIgYiwgaW50IHgpIGFzbSAiU1RHUkFNUyI7CmJ1aWxkZXIgc3RvcmVfY29pbnMoYnVp" + + "bGRlciBiLCBpbnQgeCkgYXNtICJTVFZBUlVJTlQxNiI7CgpidWlsZGVyIHN0b3JlX3ZhcmludDE2KGJ1aWxkZXIgYiwgaW50IHgpIGFzbSAiU1RWQVJJTlQxNiI7CmJ1" + + "aWxkZXIgc3RvcmVfdmFyaW50MzIoYnVpbGRlciBiLCBpbnQgeCkgYXNtICJTVFZBUklOVDMyIjsKYnVpbGRlciBzdG9yZV92YXJ1aW50MTYoYnVpbGRlciBiLCBpbnQg" + + "eCkgYXNtICJTVFZBUlVJTlQxNiI7CmJ1aWxkZXIgc3RvcmVfdmFydWludDMyKGJ1aWxkZXIgYiwgaW50IHgpIGFzbSAiU1RWQVJVSU5UMzIiOwoKOzs7IFN0b3JlcyBk" + + "aWN0aW9uYXJ5IGBEYCByZXByZXNlbnRlZCBieSBgY2VsbGAgW2NdIG9yIGBudWxsYCBpbnRvIGBidWlsZGVyYCBbYl0uCjs7OyBJbiBvdGhlciB3b3Jkcywgc3RvcmVz" + + "IGEgYDFgLWJpdCBhbmQgYSByZWZlcmVuY2UgdG8gW2NdIGlmIFtjXSBpcyBub3QgYG51bGxgIGFuZCBgMGAtYml0IG90aGVyd2lzZS4KYnVpbGRlciBzdG9yZV9kaWN0" + + "KGJ1aWxkZXIgYiwgY2VsbCBjKSBhc20oYyBiKSAiU1RESUNUIjsKCjs7OyBTdG9yZXMgKE1heWJlIF5DZWxsKSB0byBidWlsZGVyOgo7OzsgaWYgY2VsbCBpcyBudWxs" + + "IHN0b3JlIDEgemVybyBiaXQKOzs7IG90aGVyd2lzZSBzdG9yZSAxIHRydWUgYml0IGFuZCByZWYgdG8gY2VsbApidWlsZGVyIHN0b3JlX21heWJlX3JlZihidWlsZGVy" + + "IGIsIGNlbGwgYykgYXNtKGMgYikgIlNUT1BUUkVGIjsKCgp7LQogICMgQWRkcmVzcyBtYW5pcHVsYXRpb24gcHJpbWl0aXZlcwogIFRoZSBhZGRyZXNzIG1hbmlwdWxh" + + "dGlvbiBwcmltaXRpdmVzIGxpc3RlZCBiZWxvdyBzZXJpYWxpemUgYW5kIGRlc2VyaWFsaXplIHZhbHVlcyBhY2NvcmRpbmcgdG8gdGhlIGZvbGxvd2luZyBUTC1CIHNj" + + "aGVtZToKICBgYGBUTC1CCiAgYWRkcl9ub25lJDAwID0gTXNnQWRkcmVzc0V4dDsKICBhZGRyX2V4dGVybiQwMSBsZW46KCMjIDgpIGV4dGVybmFsX2FkZHJlc3M6KGJp" + + "dHMgbGVuKQogICAgICAgICAgICAgICA9IE1zZ0FkZHJlc3NFeHQ7CiAgYW55Y2FzdF9pbmZvJF8gZGVwdGg6KCM8PSAzMCkgeyBkZXB0aCA+PSAxIH0KICAgIHJld3Jp" + + "dGVfcGZ4OihiaXRzIGRlcHRoKSA9IEFueWNhc3Q7CiAgYWRkcl9zdGQkMTAgYW55Y2FzdDooTWF5YmUgQW55Y2FzdCkKICAgIHdvcmtjaGFpbl9pZDppbnQ4IGFkZHJl" + + "c3M6Yml0czI1NiA9IE1zZ0FkZHJlc3NJbnQ7CiAgYWRkcl92YXIkMTEgYW55Y2FzdDooTWF5YmUgQW55Y2FzdCkgYWRkcl9sZW46KCMjIDkpCiAgICB3b3JrY2hhaW5f" + + "aWQ6aW50MzIgYWRkcmVzczooYml0cyBhZGRyX2xlbikgPSBNc2dBZGRyZXNzSW50OwogIF8gXzpNc2dBZGRyZXNzSW50ID0gTXNnQWRkcmVzczsKICBfIF86TXNnQWRk" + + "cmVzc0V4dCA9IE1zZ0FkZHJlc3M7CgogIGludF9tc2dfaW5mbyQwIGlocl9kaXNhYmxlZDpCb29sIGJvdW5jZTpCb29sIGJvdW5jZWQ6Qm9vbAogICAgc3JjOk1zZ0Fk" + + "ZHJlc3MgZGVzdDpNc2dBZGRyZXNzSW50CiAgICB2YWx1ZTpDdXJyZW5jeUNvbGxlY3Rpb24gaWhyX2ZlZTpHcmFtcyBmd2RfZmVlOkdyYW1zCiAgICBjcmVhdGVkX2x0" + + "OnVpbnQ2NCBjcmVhdGVkX2F0OnVpbnQzMiA9IENvbW1vbk1zZ0luZm9SZWxheGVkOwogIGV4dF9vdXRfbXNnX2luZm8kMTEgc3JjOk1zZ0FkZHJlc3MgZGVzdDpNc2dB" + + "ZGRyZXNzRXh0CiAgICBjcmVhdGVkX2x0OnVpbnQ2NCBjcmVhdGVkX2F0OnVpbnQzMiA9IENvbW1vbk1zZ0luZm9SZWxheGVkOwogIGBgYAogIEEgZGVzZXJpYWxpemVk" + + "IGBNc2dBZGRyZXNzYCBpcyByZXByZXNlbnRlZCBieSBhIHR1cGxlIGB0YCBhcyBmb2xsb3dzOgoKICAtIGBhZGRyX25vbmVgIGlzIHJlcHJlc2VudGVkIGJ5IGB0ID0g" + + "KDApYCwKICAgIGkuZS4sIGEgdHVwbGUgY29udGFpbmluZyBleGFjdGx5IG9uZSBpbnRlZ2VyIGVxdWFsIHRvIHplcm8uCiAgLSBgYWRkcl9leHRlcm5gIGlzIHJlcHJl" + + "c2VudGVkIGJ5IGB0ID0gKDEsIHMpYCwKICAgIHdoZXJlIHNsaWNlIGBzYCBjb250YWlucyB0aGUgZmllbGQgYGV4dGVybmFsX2FkZHJlc3NgLiBJbiBvdGhlciB3b3Jk" + + "cywgYAogICAgdGAgaXMgYSBwYWlyIChhIHR1cGxlIGNvbnNpc3Rpbmcgb2YgdHdvIGVudHJpZXMpLCBjb250YWluaW5nIGFuIGludGVnZXIgZXF1YWwgdG8gb25lIGFu" + + "ZCBzbGljZSBgc2AuCiAgLSBgYWRkcl9zdGRgIGlzIHJlcHJlc2VudGVkIGJ5IGB0ID0gKDIsIHUsIHgsIHMpYCwKICAgIHdoZXJlIGB1YCBpcyBlaXRoZXIgYSBgbnVs" + + "bGAgKGlmIGBhbnljYXN0YCBpcyBhYnNlbnQpIG9yIGEgc2xpY2UgYHMnYCBjb250YWluaW5nIGByZXdyaXRlX3BmeGAgKGlmIGFueWNhc3QgaXMgcHJlc2VudCkuCiAg" + + "ICBOZXh0LCBpbnRlZ2VyIGB4YCBpcyB0aGUgYHdvcmtjaGFpbl9pZGAsIGFuZCBzbGljZSBgc2AgY29udGFpbnMgdGhlIGFkZHJlc3MuCiAgLSBgYWRkcl92YXJgIGlz" + + "IHJlcHJlc2VudGVkIGJ5IGB0ID0gKDMsIHUsIHgsIHMpYCwKICAgIHdoZXJlIGB1YCwgYHhgLCBhbmQgYHNgIGhhdmUgdGhlIHNhbWUgbWVhbmluZyBhcyBmb3IgYGFk" + + "ZHJfc3RkYC4KLX0KCjs7OyBMb2FkcyBmcm9tIHNsaWNlIFtzXSB0aGUgb25seSBwcmVmaXggdGhhdCBpcyBhIHZhbGlkIGBNc2dBZGRyZXNzYCwKOzs7IGFuZCByZXR1" + + "cm5zIGJvdGggdGhpcyBwcmVmaXggYHMnYCBhbmQgdGhlIHJlbWFpbmRlciBgcycnYCBvZiBbc10gYXMgc2xpY2VzLgooc2xpY2UsIHNsaWNlKSBsb2FkX21zZ19hZGRy" + + "KHNsaWNlIHMpIGFzbSgtPiAxIDApICJMRE1TR0FERFIiOwoKOzs7IERlY29tcG9zZXMgc2xpY2UgW3NdIGNvbnRhaW5pbmcgYSB2YWxpZCBgTXNnQWRkcmVzc2AgaW50" + + "byBhIGB0dXBsZSB0YCB3aXRoIHNlcGFyYXRlIGZpZWxkcyBvZiB0aGlzIGBNc2dBZGRyZXNzYC4KOzs7IElmIFtzXSBpcyBub3QgYSB2YWxpZCBgTXNnQWRkcmVzc2As" + + "IGEgY2VsbCBkZXNlcmlhbGl6YXRpb24gZXhjZXB0aW9uIGlzIHRocm93bi4KdHVwbGUgcGFyc2VfYWRkcihzbGljZSBzKSBhc20gIlBBUlNFTVNHQUREUiI7Cgo7Ozsg" + + "UGFyc2VzIHNsaWNlIFtzXSBjb250YWluaW5nIGEgdmFsaWQgYE1zZ0FkZHJlc3NJbnRgICh1c3VhbGx5IGEgYG1zZ19hZGRyX3N0ZGApLAo7OzsgYXBwbGllcyByZXdy" + + "aXRpbmcgZnJvbSB0aGUgYW55Y2FzdCAoaWYgcHJlc2VudCkgdG8gdGhlIHNhbWUtbGVuZ3RoIHByZWZpeCBvZiB0aGUgYWRkcmVzcywKOzs7IGFuZCByZXR1cm5zIGJv" + + "dGggdGhlIHdvcmtjaGFpbiBhbmQgdGhlIDI1Ni1iaXQgYWRkcmVzcyBhcyBpbnRlZ2Vycy4KOzs7IElmIHRoZSBhZGRyZXNzIGlzIG5vdCAyNTYtYml0LCBvciBpZiBb" + + "c10gaXMgbm90IGEgdmFsaWQgc2VyaWFsaXphdGlvbiBvZiBgTXNnQWRkcmVzc0ludGAsCjs7OyB0aHJvd3MgYSBjZWxsIGRlc2VyaWFsaXphdGlvbiBleGNlcHRpb24u" + + "CihpbnQsIGludCkgcGFyc2Vfc3RkX2FkZHIoc2xpY2UgcykgYXNtICJSRVdSSVRFU1REQUREUiI7Cgo7OzsgQSB2YXJpYW50IG9mIFtwYXJzZV9zdGRfYWRkcl0gdGhh" + + "dCByZXR1cm5zIHRoZSAocmV3cml0dGVuKSBhZGRyZXNzIGFzIGEgc2xpY2UgW3NdLAo7OzsgZXZlbiBpZiBpdCBpcyBub3QgZXhhY3RseSAyNTYgYml0IGxvbmcgKHJl" + + "cHJlc2VudGVkIGJ5IGEgYG1zZ19hZGRyX3ZhcmApLgooaW50LCBzbGljZSkgcGFyc2VfdmFyX2FkZHIoc2xpY2UgcykgYXNtICJSRVdSSVRFVkFSQUREUiI7Cgp7LQog" + + "ICMgRGljdGlvbmFyeSBwcmltaXRpdmVzCi19CgoKOzs7IFNldHMgdGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCBba2V5X2xlbl0tYml0IGtleSBzaWduZWQgaW5kZXgg" + + "aW4gZGljdGlvbmFyeSBbZGljdF0gdG8gW3ZhbHVlXSAoY2VsbCksCjs7OyBhbmQgcmV0dXJucyB0aGUgcmVzdWx0aW5nIGRpY3Rpb25hcnkuCmNlbGwgaWRpY3Rfc2V0" + + "X3JlZihjZWxsIGRpY3QsIGludCBrZXlfbGVuLCBpbnQgaW5kZXgsIGNlbGwgdmFsdWUpIGFzbSh2YWx1ZSBpbmRleCBkaWN0IGtleV9sZW4pICJESUNUSVNFVFJFRiI7" + + "CihjZWxsLCAoKSkgfmlkaWN0X3NldF9yZWYoY2VsbCBkaWN0LCBpbnQga2V5X2xlbiwgaW50IGluZGV4LCBjZWxsIHZhbHVlKSBhc20odmFsdWUgaW5kZXggZGljdCBr" + + "ZXlfbGVuKSAiRElDVElTRVRSRUYiOwoKOzs7IFNldHMgdGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCBba2V5X2xlbl0tYml0IGtleSB1bnNpZ25lZCBpbmRleCBpbiBk" + + "aWN0aW9uYXJ5IFtkaWN0XSB0byBbdmFsdWVdIChjZWxsKSwKOzs7IGFuZCByZXR1cm5zIHRoZSByZXN1bHRpbmcgZGljdGlvbmFyeS4KY2VsbCB1ZGljdF9zZXRfcmVm" + + "KGNlbGwgZGljdCwgaW50IGtleV9sZW4sIGludCBpbmRleCwgY2VsbCB2YWx1ZSkgYXNtKHZhbHVlIGluZGV4IGRpY3Qga2V5X2xlbikgIkRJQ1RVU0VUUkVGIjsKKGNl" + + "bGwsICgpKSB+dWRpY3Rfc2V0X3JlZihjZWxsIGRpY3QsIGludCBrZXlfbGVuLCBpbnQgaW5kZXgsIGNlbGwgdmFsdWUpIGFzbSh2YWx1ZSBpbmRleCBkaWN0IGtleV9s" + + "ZW4pICJESUNUVVNFVFJFRiI7CgpjZWxsIGlkaWN0X2dldF9yZWYoY2VsbCBkaWN0LCBpbnQga2V5X2xlbiwgaW50IGluZGV4KSBhc20oaW5kZXggZGljdCBrZXlfbGVu" + + "KSAiRElDVElHRVRPUFRSRUYiOwooY2VsbCwgaW50KSBpZGljdF9nZXRfcmVmPyhjZWxsIGRpY3QsIGludCBrZXlfbGVuLCBpbnQgaW5kZXgpIGFzbShpbmRleCBkaWN0" + + "IGtleV9sZW4pICJESUNUSUdFVFJFRiIgIk5VTExTV0FQSUZOT1QiOwooY2VsbCwgaW50KSB1ZGljdF9nZXRfcmVmPyhjZWxsIGRpY3QsIGludCBrZXlfbGVuLCBpbnQg" + + "aW5kZXgpIGFzbShpbmRleCBkaWN0IGtleV9sZW4pICJESUNUVUdFVFJFRiIgIk5VTExTV0FQSUZOT1QiOwooY2VsbCwgY2VsbCkgaWRpY3Rfc2V0X2dldF9yZWYoY2Vs" + + "bCBkaWN0LCBpbnQga2V5X2xlbiwgaW50IGluZGV4LCBjZWxsIHZhbHVlKSBhc20odmFsdWUgaW5kZXggZGljdCBrZXlfbGVuKSAiRElDVElTRVRHRVRPUFRSRUYiOwoo" + + "Y2VsbCwgY2VsbCkgdWRpY3Rfc2V0X2dldF9yZWYoY2VsbCBkaWN0LCBpbnQga2V5X2xlbiwgaW50IGluZGV4LCBjZWxsIHZhbHVlKSBhc20odmFsdWUgaW5kZXggZGlj" + + "dCBrZXlfbGVuKSAiRElDVFVTRVRHRVRPUFRSRUYiOwooY2VsbCwgaW50KSBpZGljdF9kZWxldGU/KGNlbGwgZGljdCwgaW50IGtleV9sZW4sIGludCBpbmRleCkgYXNt" + + "KGluZGV4IGRpY3Qga2V5X2xlbikgIkRJQ1RJREVMIjsKKGNlbGwsIGludCkgdWRpY3RfZGVsZXRlPyhjZWxsIGRpY3QsIGludCBrZXlfbGVuLCBpbnQgaW5kZXgpIGFz" + + "bShpbmRleCBkaWN0IGtleV9sZW4pICJESUNUVURFTCI7CihzbGljZSwgaW50KSBpZGljdF9nZXQ/KGNlbGwgZGljdCwgaW50IGtleV9sZW4sIGludCBpbmRleCkgYXNt" + + "KGluZGV4IGRpY3Qga2V5X2xlbikgIkRJQ1RJR0VUIiAiTlVMTFNXQVBJRk5PVCI7CihzbGljZSwgaW50KSB1ZGljdF9nZXQ/KGNlbGwgZGljdCwgaW50IGtleV9sZW4s" + + "IGludCBpbmRleCkgYXNtKGluZGV4IGRpY3Qga2V5X2xlbikgIkRJQ1RVR0VUIiAiTlVMTFNXQVBJRk5PVCI7CihjZWxsLCBzbGljZSwgaW50KSBpZGljdF9kZWxldGVf" + + "Z2V0PyhjZWxsIGRpY3QsIGludCBrZXlfbGVuLCBpbnQgaW5kZXgpIGFzbShpbmRleCBkaWN0IGtleV9sZW4pICJESUNUSURFTEdFVCIgIk5VTExTV0FQSUZOT1QiOwoo" + + "Y2VsbCwgc2xpY2UsIGludCkgdWRpY3RfZGVsZXRlX2dldD8oY2VsbCBkaWN0LCBpbnQga2V5X2xlbiwgaW50IGluZGV4KSBhc20oaW5kZXggZGljdCBrZXlfbGVuKSAi" + + "RElDVFVERUxHRVQiICJOVUxMU1dBUElGTk9UIjsKKGNlbGwsIChzbGljZSwgaW50KSkgfmlkaWN0X2RlbGV0ZV9nZXQ/KGNlbGwgZGljdCwgaW50IGtleV9sZW4sIGlu" + + "dCBpbmRleCkgYXNtKGluZGV4IGRpY3Qga2V5X2xlbikgIkRJQ1RJREVMR0VUIiAiTlVMTFNXQVBJRk5PVCI7CihjZWxsLCAoc2xpY2UsIGludCkpIH51ZGljdF9kZWxl" + + "dGVfZ2V0PyhjZWxsIGRpY3QsIGludCBrZXlfbGVuLCBpbnQgaW5kZXgpIGFzbShpbmRleCBkaWN0IGtleV9sZW4pICJESUNUVURFTEdFVCIgIk5VTExTV0FQSUZOT1Qi" + + "OwooY2VsbCwgY2VsbCwgaW50KSBpZGljdF9kZWxldGVfZ2V0X3JlZj8oY2VsbCBkaWN0LCBpbnQga2V5X2xlbiwgaW50IGluZGV4KSBhc20oaW5kZXggZGljdCBrZXlf" + + "bGVuKSAiRElDVElERUxHRVRSRUYiICJOVUxMU1dBUElGTk9UIjsKKGNlbGwsIGNlbGwsIGludCkgdWRpY3RfZGVsZXRlX2dldF9yZWY/KGNlbGwgZGljdCwgaW50IGtl" + + "eV9sZW4sIGludCBpbmRleCkgYXNtKGluZGV4IGRpY3Qga2V5X2xlbikgIkRJQ1RVREVMR0VUUkVGIiAiTlVMTFNXQVBJRk5PVCI7CihjZWxsLCAoY2VsbCwgaW50KSkg" + + "fmlkaWN0X2RlbGV0ZV9nZXRfcmVmPyhjZWxsIGRpY3QsIGludCBrZXlfbGVuLCBpbnQgaW5kZXgpIGFzbShpbmRleCBkaWN0IGtleV9sZW4pICJESUNUSURFTEdFVFJF" + + "RiIgIk5VTExTV0FQSUZOT1QiOwooY2VsbCwgKGNlbGwsIGludCkpIH51ZGljdF9kZWxldGVfZ2V0X3JlZj8oY2VsbCBkaWN0LCBpbnQga2V5X2xlbiwgaW50IGluZGV4" + + "KSBhc20oaW5kZXggZGljdCBrZXlfbGVuKSAiRElDVFVERUxHRVRSRUYiICJOVUxMU1dBUElGTk9UIjsKY2VsbCB1ZGljdF9zZXQoY2VsbCBkaWN0LCBpbnQga2V5X2xl" + + "biwgaW50IGluZGV4LCBzbGljZSB2YWx1ZSkgYXNtKHZhbHVlIGluZGV4IGRpY3Qga2V5X2xlbikgIkRJQ1RVU0VUIjsKKGNlbGwsICgpKSB+dWRpY3Rfc2V0KGNlbGwg" + + "ZGljdCwgaW50IGtleV9sZW4sIGludCBpbmRleCwgc2xpY2UgdmFsdWUpIGFzbSh2YWx1ZSBpbmRleCBkaWN0IGtleV9sZW4pICJESUNUVVNFVCI7CmNlbGwgaWRpY3Rf" + + "c2V0KGNlbGwgZGljdCwgaW50IGtleV9sZW4sIGludCBpbmRleCwgc2xpY2UgdmFsdWUpIGFzbSh2YWx1ZSBpbmRleCBkaWN0IGtleV9sZW4pICJESUNUSVNFVCI7Cihj" + + "ZWxsLCAoKSkgfmlkaWN0X3NldChjZWxsIGRpY3QsIGludCBrZXlfbGVuLCBpbnQgaW5kZXgsIHNsaWNlIHZhbHVlKSBhc20odmFsdWUgaW5kZXggZGljdCBrZXlfbGVu" + + "KSAiRElDVElTRVQiOwpjZWxsIGRpY3Rfc2V0KGNlbGwgZGljdCwgaW50IGtleV9sZW4sIHNsaWNlIGluZGV4LCBzbGljZSB2YWx1ZSkgYXNtKHZhbHVlIGluZGV4IGRp" + + "Y3Qga2V5X2xlbikgIkRJQ1RTRVQiOwooY2VsbCwgKCkpIH5kaWN0X3NldChjZWxsIGRpY3QsIGludCBrZXlfbGVuLCBzbGljZSBpbmRleCwgc2xpY2UgdmFsdWUpIGFz" + + "bSh2YWx1ZSBpbmRleCBkaWN0IGtleV9sZW4pICJESUNUU0VUIjsKKGNlbGwsIGludCkgdWRpY3RfYWRkPyhjZWxsIGRpY3QsIGludCBrZXlfbGVuLCBpbnQgaW5kZXgs" + + "IHNsaWNlIHZhbHVlKSBhc20odmFsdWUgaW5kZXggZGljdCBrZXlfbGVuKSAiRElDVFVBREQiOwooY2VsbCwgaW50KSB1ZGljdF9yZXBsYWNlPyhjZWxsIGRpY3QsIGlu" + + "dCBrZXlfbGVuLCBpbnQgaW5kZXgsIHNsaWNlIHZhbHVlKSBhc20odmFsdWUgaW5kZXggZGljdCBrZXlfbGVuKSAiRElDVFVSRVBMQUNFIjsKKGNlbGwsIGludCkgdWRp" + + "Y3RfcmVwbGFjZV9yZWY/KGNlbGwgZGljdCwgaW50IGtleV9sZW4sIGludCBpbmRleCwgY2VsbCB2YWx1ZSkgYXNtKHZhbHVlIGluZGV4IGRpY3Qga2V5X2xlbikgIkRJ" + + "Q1RVUkVQTEFDRVJFRiI7CihjZWxsLCBzbGljZSwgaW50KSB1ZGljdF9yZXBsYWNlZ2V0PyhjZWxsIGRpY3QsIGludCBrZXlfbGVuLCBpbnQgaW5kZXgsIHNsaWNlIHZh" + + "bHVlKSBhc20odmFsdWUgaW5kZXggZGljdCBrZXlfbGVuKSAiRElDVFVSRVBMQUNFR0VUIiAiTlVMTFNXQVBJRk5PVCI7CihjZWxsLCBjZWxsLCBpbnQpIHVkaWN0X3Jl" + + "cGxhY2VnZXRfcmVmPyhjZWxsIGRpY3QsIGludCBrZXlfbGVuLCBpbnQgaW5kZXgsIGNlbGwgdmFsdWUpIGFzbSh2YWx1ZSBpbmRleCBkaWN0IGtleV9sZW4pICJESUNU" + + "VVJFUExBQ0VHRVRSRUYiICJOVUxMU1dBUElGTk9UIjsKKGNlbGwsIChzbGljZSwgaW50KSkgfnVkaWN0X3JlcGxhY2VnZXQ/KGNlbGwgZGljdCwgaW50IGtleV9sZW4s" + + "IGludCBpbmRleCwgc2xpY2UgdmFsdWUpIGFzbSh2YWx1ZSBpbmRleCBkaWN0IGtleV9sZW4pICJESUNUVVJFUExBQ0VHRVQiICJOVUxMU1dBUElGTk9UIjsKKGNlbGws" + + "IChjZWxsLCBpbnQpKSB+dWRpY3RfcmVwbGFjZWdldF9yZWY/KGNlbGwgZGljdCwgaW50IGtleV9sZW4sIGludCBpbmRleCwgY2VsbCB2YWx1ZSkgYXNtKHZhbHVlIGlu" + + "ZGV4IGRpY3Qga2V5X2xlbikgIkRJQ1RVUkVQTEFDRUdFVFJFRiIgIk5VTExTV0FQSUZOT1QiOwooY2VsbCwgaW50KSBpZGljdF9hZGQ/KGNlbGwgZGljdCwgaW50IGtl" + + "eV9sZW4sIGludCBpbmRleCwgc2xpY2UgdmFsdWUpIGFzbSh2YWx1ZSBpbmRleCBkaWN0IGtleV9sZW4pICJESUNUSUFERCI7CihjZWxsLCBpbnQpIGlkaWN0X3JlcGxh" + + "Y2U/KGNlbGwgZGljdCwgaW50IGtleV9sZW4sIGludCBpbmRleCwgc2xpY2UgdmFsdWUpIGFzbSh2YWx1ZSBpbmRleCBkaWN0IGtleV9sZW4pICJESUNUSVJFUExBQ0Ui" + + "OwooY2VsbCwgaW50KSBpZGljdF9yZXBsYWNlX3JlZj8oY2VsbCBkaWN0LCBpbnQga2V5X2xlbiwgaW50IGluZGV4LCBjZWxsIHZhbHVlKSBhc20odmFsdWUgaW5kZXgg" + + "ZGljdCBrZXlfbGVuKSAiRElDVElSRVBMQUNFUkVGIjsKKGNlbGwsIHNsaWNlLCBpbnQpIGlkaWN0X3JlcGxhY2VnZXQ/KGNlbGwgZGljdCwgaW50IGtleV9sZW4sIGlu" + + "dCBpbmRleCwgc2xpY2UgdmFsdWUpIGFzbSh2YWx1ZSBpbmRleCBkaWN0IGtleV9sZW4pICJESUNUSVJFUExBQ0VHRVQiICJOVUxMU1dBUElGTk9UIjsKKGNlbGwsIGNl" + + "bGwsIGludCkgaWRpY3RfcmVwbGFjZWdldF9yZWY/KGNlbGwgZGljdCwgaW50IGtleV9sZW4sIGludCBpbmRleCwgY2VsbCB2YWx1ZSkgYXNtKHZhbHVlIGluZGV4IGRp" + + "Y3Qga2V5X2xlbikgIkRJQ1RJUkVQTEFDRUdFVFJFRiIgIk5VTExTV0FQSUZOT1QiOwooY2VsbCwgKHNsaWNlLCBpbnQpKSB+aWRpY3RfcmVwbGFjZWdldD8oY2VsbCBk" + + "aWN0LCBpbnQga2V5X2xlbiwgaW50IGluZGV4LCBzbGljZSB2YWx1ZSkgYXNtKHZhbHVlIGluZGV4IGRpY3Qga2V5X2xlbikgIkRJQ1RJUkVQTEFDRUdFVCIgIk5VTExT" + + "V0FQSUZOT1QiOwooY2VsbCwgKGNlbGwsIGludCkpIH5pZGljdF9yZXBsYWNlZ2V0X3JlZj8oY2VsbCBkaWN0LCBpbnQga2V5X2xlbiwgaW50IGluZGV4LCBjZWxsIHZh" + + "bHVlKSBhc20odmFsdWUgaW5kZXggZGljdCBrZXlfbGVuKSAiRElDVElSRVBMQUNFR0VUUkVGIiAiTlVMTFNXQVBJRk5PVCI7CmNlbGwgdWRpY3Rfc2V0X2J1aWxkZXIo" + + "Y2VsbCBkaWN0LCBpbnQga2V5X2xlbiwgaW50IGluZGV4LCBidWlsZGVyIHZhbHVlKSBhc20odmFsdWUgaW5kZXggZGljdCBrZXlfbGVuKSAiRElDVFVTRVRCIjsKKGNl" + + "bGwsICgpKSB+dWRpY3Rfc2V0X2J1aWxkZXIoY2VsbCBkaWN0LCBpbnQga2V5X2xlbiwgaW50IGluZGV4LCBidWlsZGVyIHZhbHVlKSBhc20odmFsdWUgaW5kZXggZGlj" + + "dCBrZXlfbGVuKSAiRElDVFVTRVRCIjsKY2VsbCBpZGljdF9zZXRfYnVpbGRlcihjZWxsIGRpY3QsIGludCBrZXlfbGVuLCBpbnQgaW5kZXgsIGJ1aWxkZXIgdmFsdWUp" + + "IGFzbSh2YWx1ZSBpbmRleCBkaWN0IGtleV9sZW4pICJESUNUSVNFVEIiOwooY2VsbCwgKCkpIH5pZGljdF9zZXRfYnVpbGRlcihjZWxsIGRpY3QsIGludCBrZXlfbGVu" + + "LCBpbnQgaW5kZXgsIGJ1aWxkZXIgdmFsdWUpIGFzbSh2YWx1ZSBpbmRleCBkaWN0IGtleV9sZW4pICJESUNUSVNFVEIiOwpjZWxsIGRpY3Rfc2V0X2J1aWxkZXIoY2Vs" + + "bCBkaWN0LCBpbnQga2V5X2xlbiwgc2xpY2UgaW5kZXgsIGJ1aWxkZXIgdmFsdWUpIGFzbSh2YWx1ZSBpbmRleCBkaWN0IGtleV9sZW4pICJESUNUU0VUQiI7CihjZWxs" + + "LCAoKSkgfmRpY3Rfc2V0X2J1aWxkZXIoY2VsbCBkaWN0LCBpbnQga2V5X2xlbiwgc2xpY2UgaW5kZXgsIGJ1aWxkZXIgdmFsdWUpIGFzbSh2YWx1ZSBpbmRleCBkaWN0" + + "IGtleV9sZW4pICJESUNUU0VUQiI7CihjZWxsLCBpbnQpIGRpY3RfcmVwbGFjZV9idWlsZGVyPyhjZWxsIGRpY3QsIGludCBrZXlfbGVuLCBzbGljZSBpbmRleCwgYnVp" + + "bGRlciB2YWx1ZSkgYXNtKHZhbHVlIGluZGV4IGRpY3Qga2V5X2xlbikgIkRJQ1RSRVBMQUNFQiI7CihjZWxsLCBidWlsZGVyLCBpbnQpIGRpY3RfcmVwbGFjZWdldF9i" + + "dWlsZGVyPyhjZWxsIGRpY3QsIGludCBrZXlfbGVuLCBzbGljZSBpbmRleCwgYnVpbGRlciB2YWx1ZSkgYXNtKHZhbHVlIGluZGV4IGRpY3Qga2V5X2xlbikgIkRJQ1RS" + + "RVBMQUNFR0VUQiIgIk5VTExTV0FQSUZOT1QiOwooY2VsbCwgc2xpY2UsIGludCkgZGljdF9yZXBsYWNlZ2V0PyhjZWxsIGRpY3QsIGludCBrZXlfbGVuLCBzbGljZSBp" + + "bmRleCwgc2xpY2UgdmFsdWUpIGFzbSh2YWx1ZSBpbmRleCBkaWN0IGtleV9sZW4pICJESUNUUkVQTEFDRUdFVCIgIk5VTExTV0FQSUZOT1QiOwooY2VsbCwgKGJ1aWxk" + + "ZXIsIGludCkpIH5kaWN0X3JlcGxhY2VnZXRfYnVpbGRlcj8oY2VsbCBkaWN0LCBpbnQga2V5X2xlbiwgc2xpY2UgaW5kZXgsIGJ1aWxkZXIgdmFsdWUpIGFzbSh2YWx1" + + "ZSBpbmRleCBkaWN0IGtleV9sZW4pICJESUNUUkVQTEFDRUdFVEIiICJOVUxMU1dBUElGTk9UIjsKKGNlbGwsIChzbGljZSwgaW50KSkgfmRpY3RfcmVwbGFjZWdldD8o" + + "Y2VsbCBkaWN0LCBpbnQga2V5X2xlbiwgc2xpY2UgaW5kZXgsIHNsaWNlIHZhbHVlKSBhc20odmFsdWUgaW5kZXggZGljdCBrZXlfbGVuKSAiRElDVFJFUExBQ0VHRVQi" + + "ICJOVUxMU1dBUElGTk9UIjsKKGNlbGwsIGludCkgdWRpY3RfYWRkX2J1aWxkZXI/KGNlbGwgZGljdCwgaW50IGtleV9sZW4sIGludCBpbmRleCwgYnVpbGRlciB2YWx1" + + "ZSkgYXNtKHZhbHVlIGluZGV4IGRpY3Qga2V5X2xlbikgIkRJQ1RVQUREQiI7CihjZWxsLCBpbnQpIHVkaWN0X3JlcGxhY2VfYnVpbGRlcj8oY2VsbCBkaWN0LCBpbnQg" + + "a2V5X2xlbiwgaW50IGluZGV4LCBidWlsZGVyIHZhbHVlKSBhc20odmFsdWUgaW5kZXggZGljdCBrZXlfbGVuKSAiRElDVFVSRVBMQUNFQiI7CihjZWxsLCBidWlsZGVy" + + "LCBpbnQpIHVkaWN0X3JlcGxhY2VnZXRfYnVpbGRlcj8oY2VsbCBkaWN0LCBpbnQga2V5X2xlbiwgaW50IGluZGV4LCBidWlsZGVyIHZhbHVlKSBhc20odmFsdWUgaW5k" + + "ZXggZGljdCBrZXlfbGVuKSAiRElDVFVSRVBMQUNFR0VUQiIgIk5VTExTV0FQSUZOT1QiOwooY2VsbCwgKGJ1aWxkZXIsIGludCkpIH51ZGljdF9yZXBsYWNlZ2V0X2J1" + + "aWxkZXI/KGNlbGwgZGljdCwgaW50IGtleV9sZW4sIGludCBpbmRleCwgYnVpbGRlciB2YWx1ZSkgYXNtKHZhbHVlIGluZGV4IGRpY3Qga2V5X2xlbikgIkRJQ1RVUkVQ" + + "TEFDRUdFVEIiICJOVUxMU1dBUElGTk9UIjsKKGNlbGwsIGludCkgaWRpY3RfYWRkX2J1aWxkZXI/KGNlbGwgZGljdCwgaW50IGtleV9sZW4sIGludCBpbmRleCwgYnVp" + + "bGRlciB2YWx1ZSkgYXNtKHZhbHVlIGluZGV4IGRpY3Qga2V5X2xlbikgIkRJQ1RJQUREQiI7CihjZWxsLCBpbnQpIGlkaWN0X3JlcGxhY2VfYnVpbGRlcj8oY2VsbCBk" + + "aWN0LCBpbnQga2V5X2xlbiwgaW50IGluZGV4LCBidWlsZGVyIHZhbHVlKSBhc20odmFsdWUgaW5kZXggZGljdCBrZXlfbGVuKSAiRElDVElSRVBMQUNFQiI7CihjZWxs" + + "LCBidWlsZGVyLCBpbnQpIGlkaWN0X3JlcGxhY2VnZXRfYnVpbGRlcj8oY2VsbCBkaWN0LCBpbnQga2V5X2xlbiwgaW50IGluZGV4LCBidWlsZGVyIHZhbHVlKSBhc20o" + + "dmFsdWUgaW5kZXggZGljdCBrZXlfbGVuKSAiRElDVElSRVBMQUNFR0VUQiIgIk5VTExTV0FQSUZOT1QiOwooY2VsbCwgKGJ1aWxkZXIsIGludCkpIH5pZGljdF9yZXBs" + + "YWNlZ2V0X2J1aWxkZXI/KGNlbGwgZGljdCwgaW50IGtleV9sZW4sIGludCBpbmRleCwgYnVpbGRlciB2YWx1ZSkgYXNtKHZhbHVlIGluZGV4IGRpY3Qga2V5X2xlbikg" + + "IkRJQ1RJUkVQTEFDRUdFVEIiICJOVUxMU1dBUElGTk9UIjsKKGNlbGwsIGludCwgc2xpY2UsIGludCkgdWRpY3RfZGVsZXRlX2dldF9taW4oY2VsbCBkaWN0LCBpbnQg" + + "a2V5X2xlbikgYXNtKC0+IDAgMiAxIDMpICJESUNUVVJFTU1JTiIgIk5VTExTV0FQSUZOT1QyIjsKKGNlbGwsIChpbnQsIHNsaWNlLCBpbnQpKSB+dWRpY3Q6OmRlbGV0" + + "ZV9nZXRfbWluKGNlbGwgZGljdCwgaW50IGtleV9sZW4pIGFzbSgtPiAwIDIgMSAzKSAiRElDVFVSRU1NSU4iICJOVUxMU1dBUElGTk9UMiI7CihjZWxsLCBpbnQsIHNs" + + "aWNlLCBpbnQpIGlkaWN0X2RlbGV0ZV9nZXRfbWluKGNlbGwgZGljdCwgaW50IGtleV9sZW4pIGFzbSgtPiAwIDIgMSAzKSAiRElDVElSRU1NSU4iICJOVUxMU1dBUElG" + + "Tk9UMiI7CihjZWxsLCAoaW50LCBzbGljZSwgaW50KSkgfmlkaWN0OjpkZWxldGVfZ2V0X21pbihjZWxsIGRpY3QsIGludCBrZXlfbGVuKSBhc20oLT4gMCAyIDEgMykg" + + "IkRJQ1RJUkVNTUlOIiAiTlVMTFNXQVBJRk5PVDIiOwooY2VsbCwgc2xpY2UsIHNsaWNlLCBpbnQpIGRpY3RfZGVsZXRlX2dldF9taW4oY2VsbCBkaWN0LCBpbnQga2V5" + + "X2xlbikgYXNtKC0+IDAgMiAxIDMpICJESUNUUkVNTUlOIiAiTlVMTFNXQVBJRk5PVDIiOwooY2VsbCwgKHNsaWNlLCBzbGljZSwgaW50KSkgfmRpY3Q6OmRlbGV0ZV9n" + + "ZXRfbWluKGNlbGwgZGljdCwgaW50IGtleV9sZW4pIGFzbSgtPiAwIDIgMSAzKSAiRElDVFJFTU1JTiIgIk5VTExTV0FQSUZOT1QyIjsKKGNlbGwsIGludCwgc2xpY2Us" + + "IGludCkgdWRpY3RfZGVsZXRlX2dldF9tYXgoY2VsbCBkaWN0LCBpbnQga2V5X2xlbikgYXNtKC0+IDAgMiAxIDMpICJESUNUVVJFTU1BWCIgIk5VTExTV0FQSUZOT1Qy" + + "IjsKKGNlbGwsIChpbnQsIHNsaWNlLCBpbnQpKSB+dWRpY3Q6OmRlbGV0ZV9nZXRfbWF4KGNlbGwgZGljdCwgaW50IGtleV9sZW4pIGFzbSgtPiAwIDIgMSAzKSAiRElD" + + "VFVSRU1NQVgiICJOVUxMU1dBUElGTk9UMiI7CihjZWxsLCBpbnQsIHNsaWNlLCBpbnQpIGlkaWN0X2RlbGV0ZV9nZXRfbWF4KGNlbGwgZGljdCwgaW50IGtleV9sZW4p" + + "IGFzbSgtPiAwIDIgMSAzKSAiRElDVElSRU1NQVgiICJOVUxMU1dBUElGTk9UMiI7CihjZWxsLCAoaW50LCBzbGljZSwgaW50KSkgfmlkaWN0OjpkZWxldGVfZ2V0X21h" + + "eChjZWxsIGRpY3QsIGludCBrZXlfbGVuKSBhc20oLT4gMCAyIDEgMykgIkRJQ1RJUkVNTUFYIiAiTlVMTFNXQVBJRk5PVDIiOwooY2VsbCwgc2xpY2UsIHNsaWNlLCBp" + + "bnQpIGRpY3RfZGVsZXRlX2dldF9tYXgoY2VsbCBkaWN0LCBpbnQga2V5X2xlbikgYXNtKC0+IDAgMiAxIDMpICJESUNUUkVNTUFYIiAiTlVMTFNXQVBJRk5PVDIiOwoo" + + "Y2VsbCwgKHNsaWNlLCBzbGljZSwgaW50KSkgfmRpY3Q6OmRlbGV0ZV9nZXRfbWF4KGNlbGwgZGljdCwgaW50IGtleV9sZW4pIGFzbSgtPiAwIDIgMSAzKSAiRElDVFJF" + + "TU1BWCIgIk5VTExTV0FQSUZOT1QyIjsKKGludCwgc2xpY2UsIGludCkgdWRpY3RfZ2V0X21pbj8oY2VsbCBkaWN0LCBpbnQga2V5X2xlbikgYXNtICgtPiAxIDAgMikg" + + "IkRJQ1RVTUlOIiAiTlVMTFNXQVBJRk5PVDIiOwooaW50LCBzbGljZSwgaW50KSB1ZGljdF9nZXRfbWF4PyhjZWxsIGRpY3QsIGludCBrZXlfbGVuKSBhc20gKC0+IDEg" + + "MCAyKSAiRElDVFVNQVgiICJOVUxMU1dBUElGTk9UMiI7CihpbnQsIGNlbGwsIGludCkgdWRpY3RfZ2V0X21pbl9yZWY/KGNlbGwgZGljdCwgaW50IGtleV9sZW4pIGFz" + + "bSAoLT4gMSAwIDIpICJESUNUVU1JTlJFRiIgIk5VTExTV0FQSUZOT1QyIjsKKGludCwgY2VsbCwgaW50KSB1ZGljdF9nZXRfbWF4X3JlZj8oY2VsbCBkaWN0LCBpbnQg" + + "a2V5X2xlbikgYXNtICgtPiAxIDAgMikgIkRJQ1RVTUFYUkVGIiAiTlVMTFNXQVBJRk5PVDIiOwooaW50LCBzbGljZSwgaW50KSBpZGljdF9nZXRfbWluPyhjZWxsIGRp" + + "Y3QsIGludCBrZXlfbGVuKSBhc20gKC0+IDEgMCAyKSAiRElDVElNSU4iICJOVUxMU1dBUElGTk9UMiI7CihpbnQsIHNsaWNlLCBpbnQpIGlkaWN0X2dldF9tYXg/KGNl" + + "bGwgZGljdCwgaW50IGtleV9sZW4pIGFzbSAoLT4gMSAwIDIpICJESUNUSU1BWCIgIk5VTExTV0FQSUZOT1QyIjsKKGludCwgY2VsbCwgaW50KSBpZGljdF9nZXRfbWlu" + + "X3JlZj8oY2VsbCBkaWN0LCBpbnQga2V5X2xlbikgYXNtICgtPiAxIDAgMikgIkRJQ1RJTUlOUkVGIiAiTlVMTFNXQVBJRk5PVDIiOwooaW50LCBjZWxsLCBpbnQpIGlk" + + "aWN0X2dldF9tYXhfcmVmPyhjZWxsIGRpY3QsIGludCBrZXlfbGVuKSBhc20gKC0+IDEgMCAyKSAiRElDVElNQVhSRUYiICJOVUxMU1dBUElGTk9UMiI7CihpbnQsIHNs" + + "aWNlLCBpbnQpIHVkaWN0X2dldF9uZXh0PyhjZWxsIGRpY3QsIGludCBrZXlfbGVuLCBpbnQgcGl2b3QpIGFzbShwaXZvdCBkaWN0IGtleV9sZW4gLT4gMSAwIDIpICJE" + + "SUNUVUdFVE5FWFQiICJOVUxMU1dBUElGTk9UMiI7CihpbnQsIHNsaWNlLCBpbnQpIHVkaWN0X2dldF9uZXh0ZXE/KGNlbGwgZGljdCwgaW50IGtleV9sZW4sIGludCBw" + + "aXZvdCkgYXNtKHBpdm90IGRpY3Qga2V5X2xlbiAtPiAxIDAgMikgIkRJQ1RVR0VUTkVYVEVRIiAiTlVMTFNXQVBJRk5PVDIiOwooaW50LCBzbGljZSwgaW50KSB1ZGlj" + + "dF9nZXRfcHJldj8oY2VsbCBkaWN0LCBpbnQga2V5X2xlbiwgaW50IHBpdm90KSBhc20ocGl2b3QgZGljdCBrZXlfbGVuIC0+IDEgMCAyKSAiRElDVFVHRVRQUkVWIiAi" + + "TlVMTFNXQVBJRk5PVDIiOwooaW50LCBzbGljZSwgaW50KSB1ZGljdF9nZXRfcHJldmVxPyhjZWxsIGRpY3QsIGludCBrZXlfbGVuLCBpbnQgcGl2b3QpIGFzbShwaXZv" + + "dCBkaWN0IGtleV9sZW4gLT4gMSAwIDIpICJESUNUVUdFVFBSRVZFUSIgIk5VTExTV0FQSUZOT1QyIjsKKGludCwgc2xpY2UsIGludCkgaWRpY3RfZ2V0X25leHQ/KGNl" + + "bGwgZGljdCwgaW50IGtleV9sZW4sIGludCBwaXZvdCkgYXNtKHBpdm90IGRpY3Qga2V5X2xlbiAtPiAxIDAgMikgIkRJQ1RJR0VUTkVYVCIgIk5VTExTV0FQSUZOT1Qy" + + "IjsKKGludCwgc2xpY2UsIGludCkgaWRpY3RfZ2V0X25leHRlcT8oY2VsbCBkaWN0LCBpbnQga2V5X2xlbiwgaW50IHBpdm90KSBhc20ocGl2b3QgZGljdCBrZXlfbGVu" + + "IC0+IDEgMCAyKSAiRElDVElHRVRORVhURVEiICJOVUxMU1dBUElGTk9UMiI7CihpbnQsIHNsaWNlLCBpbnQpIGlkaWN0X2dldF9wcmV2PyhjZWxsIGRpY3QsIGludCBr" + + "ZXlfbGVuLCBpbnQgcGl2b3QpIGFzbShwaXZvdCBkaWN0IGtleV9sZW4gLT4gMSAwIDIpICJESUNUSUdFVFBSRVYiICJOVUxMU1dBUElGTk9UMiI7CihpbnQsIHNsaWNl" + + "LCBpbnQpIGlkaWN0X2dldF9wcmV2ZXE/KGNlbGwgZGljdCwgaW50IGtleV9sZW4sIGludCBwaXZvdCkgYXNtKHBpdm90IGRpY3Qga2V5X2xlbiAtPiAxIDAgMikgIkRJ" + + "Q1RJR0VUUFJFVkVRIiAiTlVMTFNXQVBJRk5PVDIiOwoKOzs7IENyZWF0ZXMgYW4gZW1wdHkgZGljdGlvbmFyeSwgd2hpY2ggaXMgYWN0dWFsbHkgYSBudWxsIHZhbHVl" + + "LiBFcXVpdmFsZW50IHRvIFBVU0hOVUxMCmNlbGwgbmV3X2RpY3QoKSBhc20gIk5FV0RJQ1QiOwo7OzsgQ2hlY2tzIHdoZXRoZXIgYSBkaWN0aW9uYXJ5IGlzIGVtcHR5" + + "LiBFcXVpdmFsZW50IHRvIGNlbGxfbnVsbD8uCmludCBkaWN0X2VtcHR5PyhjZWxsIGMpIGFzbSAiRElDVEVNUFRZIjsKCgp7LSBQcmVmaXggZGljdGlvbmFyeSBwcmlt" + + "aXRpdmVzIC19CihzbGljZSwgc2xpY2UsIHNsaWNlLCBpbnQpIHBmeGRpY3RfZ2V0PyhjZWxsIGRpY3QsIGludCBrZXlfbGVuLCBzbGljZSBrZXkpIGFzbShrZXkgZGlj" + + "dCBrZXlfbGVuKSAiUEZYRElDVEdFVFEiICJOVUxMU1dBUElGTk9UMiI7CihjZWxsLCBpbnQpIHBmeGRpY3Rfc2V0PyhjZWxsIGRpY3QsIGludCBrZXlfbGVuLCBzbGlj" + + "ZSBrZXksIHNsaWNlIHZhbHVlKSBhc20odmFsdWUga2V5IGRpY3Qga2V5X2xlbikgIlBGWERJQ1RTRVQiOwooY2VsbCwgaW50KSBwZnhkaWN0X2RlbGV0ZT8oY2VsbCBk" + + "aWN0LCBpbnQga2V5X2xlbiwgc2xpY2Uga2V5KSBhc20oa2V5IGRpY3Qga2V5X2xlbikgIlBGWERJQ1RERUwiOwoKOzs7IFJldHVybnMgdGhlIHZhbHVlIG9mIHRoZSBn" + + "bG9iYWwgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIgd2l0aCBpbnRlZ2VyIGluZGV4IGBpYCBhcyBhIGBjZWxsYCBvciBgbnVsbGAgdmFsdWUuCmNlbGwgY29uZmlnX3Bh" + + "cmFtKGludCB4KSBhc20gIkNPTkZJR09QVFBBUkFNIjsKOzs7IENoZWNrcyB3aGV0aGVyIGMgaXMgYSBudWxsLiBOb3RlLCB0aGF0IEZ1bkMgYWxzbyBoYXMgcG9seW1v" + + "cnBoaWMgbnVsbD8gYnVpbHQtaW4uCmludCBjZWxsX251bGw/KGNlbGwgYykgYXNtICJJU05VTEwiOwoKOzs7IENyZWF0ZXMgYW4gb3V0cHV0IGFjdGlvbiB3aGljaCB3" + + "b3VsZCByZXNlcnZlIGV4YWN0bHkgYW1vdW50IG5hbm90b25jb2lucyAoaWYgbW9kZSA9IDApLCBhdCBtb3N0IGFtb3VudCBuYW5vdG9uY29pbnMgKGlmIG1vZGUgPSAy" + + "KSwgb3IgYWxsIGJ1dCBhbW91bnQgbmFub3RvbmNvaW5zIChpZiBtb2RlID0gMSBvciBtb2RlID0gMyksIGZyb20gdGhlIHJlbWFpbmluZyBiYWxhbmNlIG9mIHRoZSBh" + + "Y2NvdW50LiBJdCBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gY3JlYXRpbmcgYW4gb3V0Ym91bmQgbWVzc2FnZSBjYXJyeWluZyBhbW91bnQgbmFub3RvbmNvaW5zIChv" + + "ciBiIOKIkiBhbW91bnQgbmFub3RvbmNvaW5zLCB3aGVyZSBiIGlzIHRoZSByZW1haW5pbmcgYmFsYW5jZSkgdG8gb25lc2VsZiwgc28gdGhhdCB0aGUgc3Vic2VxdWVu" + + "dCBvdXRwdXQgYWN0aW9ucyB3b3VsZCBub3QgYmUgYWJsZSB0byBzcGVuZCBtb3JlIG1vbmV5IHRoYW4gdGhlIHJlbWFpbmRlci4gQml0ICsyIGluIG1vZGUgbWVhbnMg" + + "dGhhdCB0aGUgZXh0ZXJuYWwgYWN0aW9uIGRvZXMgbm90IGZhaWwgaWYgdGhlIHNwZWNpZmllZCBhbW91bnQgY2Fubm90IGJlIHJlc2VydmVkOyBpbnN0ZWFkLCBhbGwg" + + "cmVtYWluaW5nIGJhbGFuY2UgaXMgcmVzZXJ2ZWQuIEJpdCArOCBpbiBtb2RlIG1lYW5zIGBhbW91bnQgPC0gLWFtb3VudGAgYmVmb3JlIHBlcmZvcm1pbmcgYW55IGZ1" + + "cnRoZXIgYWN0aW9ucy4gQml0ICs0IGluIG1vZGUgbWVhbnMgdGhhdCBhbW91bnQgaXMgaW5jcmVhc2VkIGJ5IHRoZSBvcmlnaW5hbCBiYWxhbmNlIG9mIHRoZSBjdXJy" + + "ZW50IGFjY291bnQgKGJlZm9yZSB0aGUgY29tcHV0ZSBwaGFzZSksIGluY2x1ZGluZyBhbGwgZXh0cmEgY3VycmVuY2llcywgYmVmb3JlIHBlcmZvcm1pbmcgYW55IG90" + + "aGVyIGNoZWNrcyBhbmQgYWN0aW9ucy4gQ3VycmVudGx5LCBhbW91bnQgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBpbnRlZ2VyLCBhbmQgbW9kZSBtdXN0IGJlIGluIHRo" + + "ZSByYW5nZSAwLi4xNS4KKCkgcmF3X3Jlc2VydmUoaW50IGFtb3VudCwgaW50IG1vZGUpIGltcHVyZSBhc20gIlJBV1JFU0VSVkUiOwo7OzsgU2ltaWxhciB0byByYXdf" + + "cmVzZXJ2ZSwgYnV0IGFsc28gYWNjZXB0cyBhIGRpY3Rpb25hcnkgZXh0cmFfYW1vdW50IChyZXByZXNlbnRlZCBieSBhIGNlbGwgb3IgbnVsbCkgd2l0aCBleHRyYSBj" + + "dXJyZW5jaWVzLiBJbiB0aGlzIHdheSBjdXJyZW5jaWVzIG90aGVyIHRoYW4gVG9uQ29pbiBjYW4gYmUgcmVzZXJ2ZWQuCigpIHJhd19yZXNlcnZlX2V4dHJhKGludCBh" + + "bW91bnQsIGNlbGwgZXh0cmFfYW1vdW50LCBpbnQgbW9kZSkgaW1wdXJlIGFzbSAiUkFXUkVTRVJWRVgiOwo7OzsgU2VuZHMgYSByYXcgbWVzc2FnZSBjb250YWluZWQg" + + "aW4gbXNnLCB3aGljaCBzaG91bGQgY29udGFpbiBhIGNvcnJlY3RseSBzZXJpYWxpemVkIG9iamVjdCBNZXNzYWdlIFgsIHdpdGggdGhlIG9ubHkgZXhjZXB0aW9uIHRo" + + "YXQgdGhlIHNvdXJjZSBhZGRyZXNzIGlzIGFsbG93ZWQgdG8gaGF2ZSBkdW1teSB2YWx1ZSBhZGRyX25vbmUgKHRvIGJlIGF1dG9tYXRpY2FsbHkgcmVwbGFjZWQgd2l0" + + "aCB0aGUgY3VycmVudCBzbWFydCBjb250cmFjdCBhZGRyZXNzKSwgYW5kIGlocl9mZWUsIGZ3ZF9mZWUsIGNyZWF0ZWRfbHQgYW5kIGNyZWF0ZWRfYXQgZmllbGRzIGNh" + + "biBoYXZlIGFyYml0cmFyeSB2YWx1ZXMgKHRvIGJlIHJld3JpdHRlbiB3aXRoIGNvcnJlY3QgdmFsdWVzIGR1cmluZyB0aGUgYWN0aW9uIHBoYXNlIG9mIHRoZSBjdXJy" + + "ZW50IHRyYW5zYWN0aW9uKS4gSW50ZWdlciBwYXJhbWV0ZXIgbW9kZSBjb250YWlucyB0aGUgZmxhZ3MuIEN1cnJlbnRseSBtb2RlID0gMCBpcyB1c2VkIGZvciBvcmRp" + + "bmFyeSBtZXNzYWdlczsgbW9kZSA9IDEyOCBpcyB1c2VkIGZvciBtZXNzYWdlcyB0aGF0IGFyZSB0byBjYXJyeSBhbGwgdGhlIHJlbWFpbmluZyBiYWxhbmNlIG9mIHRo" + + "ZSBjdXJyZW50IHNtYXJ0IGNvbnRyYWN0IChpbnN0ZWFkIG9mIHRoZSB2YWx1ZSBvcmlnaW5hbGx5IGluZGljYXRlZCBpbiB0aGUgbWVzc2FnZSk7IG1vZGUgPSA2NCBp" + + "cyB1c2VkIGZvciBtZXNzYWdlcyB0aGF0IGNhcnJ5IGFsbCB0aGUgcmVtYWluaW5nIHZhbHVlIG9mIHRoZSBpbmJvdW5kIG1lc3NhZ2UgaW4gYWRkaXRpb24gdG8gdGhl" + + "IHZhbHVlIGluaXRpYWxseSBpbmRpY2F0ZWQgaW4gdGhlIG5ldyBtZXNzYWdlIChpZiBiaXQgMCBpcyBub3Qgc2V0LCB0aGUgZ2FzIGZlZXMgYXJlIGRlZHVjdGVkIGZy" + + "b20gdGhpcyBhbW91bnQpOyBtb2RlJyA9IG1vZGUgKyAxIG1lYW5zIHRoYXQgdGhlIHNlbmRlciB3YW50cyB0byBwYXkgdHJhbnNmZXIgZmVlcyBzZXBhcmF0ZWx5OyBt" + + "b2RlJyA9IG1vZGUgKyAyIG1lYW5zIHRoYXQgYW55IGVycm9ycyBhcmlzaW5nIHdoaWxlIHByb2Nlc3NpbmcgdGhpcyBtZXNzYWdlIGR1cmluZyB0aGUgYWN0aW9uIHBo" + + "YXNlIHNob3VsZCBiZSBpZ25vcmVkLiBGaW5hbGx5LCBtb2RlJyA9IG1vZGUgKyAzMiBtZWFucyB0aGF0IHRoZSBjdXJyZW50IGFjY291bnQgbXVzdCBiZSBkZXN0cm95" + + "ZWQgaWYgaXRzIHJlc3VsdGluZyBiYWxhbmNlIGlzIHplcm8uIFRoaXMgZmxhZyBpcyB1c3VhbGx5IGVtcGxveWVkIHRvZ2V0aGVyIHdpdGggKzEyOC4KKCkgc2VuZF9y" + + "YXdfbWVzc2FnZShjZWxsIG1zZywgaW50IG1vZGUpIGltcHVyZSBhc20gIlNFTkRSQVdNU0ciOwo7OzsgQ3JlYXRlcyBhbiBvdXRwdXQgYWN0aW9uIHRoYXQgd291bGQg" + + "Y2hhbmdlIHRoaXMgc21hcnQgY29udHJhY3QgY29kZSB0byB0aGF0IGdpdmVuIGJ5IGNlbGwgbmV3X2NvZGUuIE5vdGljZSB0aGF0IHRoaXMgY2hhbmdlIHdpbGwgdGFr" + + "ZSBlZmZlY3Qgb25seSBhZnRlciB0aGUgc3VjY2Vzc2Z1bCB0ZXJtaW5hdGlvbiBvZiB0aGUgY3VycmVudCBydW4gb2YgdGhlIHNtYXJ0IGNvbnRyYWN0CigpIHNldF9j" + + "b2RlKGNlbGwgbmV3X2NvZGUpIGltcHVyZSBhc20gIlNFVENPREUiOwoKOzs7IEdlbmVyYXRlcyBhIG5ldyBwc2V1ZG8tcmFuZG9tIHVuc2lnbmVkIDI1Ni1iaXQgaW50" + + "ZWdlciB4LiBUaGUgYWxnb3JpdGhtIGlzIGFzIGZvbGxvd3M6IGlmIHIgaXMgdGhlIG9sZCB2YWx1ZSBvZiB0aGUgcmFuZG9tIHNlZWQsIGNvbnNpZGVyZWQgYXMgYSAz" + + "Mi1ieXRlIGFycmF5IChieSBjb25zdHJ1Y3RpbmcgdGhlIGJpZy1lbmRpYW4gcmVwcmVzZW50YXRpb24gb2YgYW4gdW5zaWduZWQgMjU2LWJpdCBpbnRlZ2VyKSwgdGhl" + + "biBpdHMgc2hhNTEyKHIpIGlzIGNvbXB1dGVkOyB0aGUgZmlyc3QgMzIgYnl0ZXMgb2YgdGhpcyBoYXNoIGFyZSBzdG9yZWQgYXMgdGhlIG5ldyB2YWx1ZSByJyBvZiB0" + + "aGUgcmFuZG9tIHNlZWQsIGFuZCB0aGUgcmVtYWluaW5nIDMyIGJ5dGVzIGFyZSByZXR1cm5lZCBhcyB0aGUgbmV4dCByYW5kb20gdmFsdWUgeC4KaW50IHJhbmRvbSgp" + + "IGltcHVyZSBhc20gIlJBTkRVMjU2IjsKOzs7IEdlbmVyYXRlcyBhIG5ldyBwc2V1ZG8tcmFuZG9tIGludGVnZXIgeiBpbiB0aGUgcmFuZ2UgMC4ucmFuZ2XiiJIxIChv" + + "ciByYW5nZS4u4oiSMSwgaWYgcmFuZ2UgPCAwKS4gTW9yZSBwcmVjaXNlbHksIGFuIHVuc2lnbmVkIHJhbmRvbSB2YWx1ZSB4IGlzIGdlbmVyYXRlZCBhcyBpbiByYW5k" + + "b207IHRoZW4geiA6PSB4ICogcmFuZ2UgLyAyXjI1NiBpcyBjb21wdXRlZC4KaW50IHJhbmQoaW50IHJhbmdlKSBpbXB1cmUgYXNtICJSQU5EIjsKOzs7IFJldHVybnMg" + + "dGhlIGN1cnJlbnQgcmFuZG9tIHNlZWQgYXMgYW4gdW5zaWduZWQgMjU2LWJpdCBJbnRlZ2VyLgppbnQgZ2V0X3NlZWQoKSBpbXB1cmUgYXNtICJSQU5EU0VFRCI7Cjs7" + + "OyBTZXRzIHRoZSByYW5kb20gc2VlZCB0byB1bnNpZ25lZCAyNTYtYml0IHNlZWQuCigpIHNldF9zZWVkKGludCB4KSBpbXB1cmUgYXNtICJTRVRSQU5EIjsKOzs7IE1p" + + "eGVzIHVuc2lnbmVkIDI1Ni1iaXQgaW50ZWdlciB4IGludG8gdGhlIHJhbmRvbSBzZWVkIHIgYnkgc2V0dGluZyB0aGUgcmFuZG9tIHNlZWQgdG8gc2hhMjU2IG9mIHRo" + + "ZSBjb25jYXRlbmF0aW9uIG9mIHR3byAzMi1ieXRlIHN0cmluZ3M6IHRoZSBmaXJzdCB3aXRoIHRoZSBiaWctZW5kaWFuIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBvbGQg" + + "c2VlZCByLCBhbmQgdGhlIHNlY29uZCB3aXRoIHRoZSBiaWctZW5kaWFuIHJlcHJlc2VudGF0aW9uIG9mIHguCigpIHJhbmRvbWl6ZShpbnQgeCkgaW1wdXJlIGFzbSAi" + + "QUREUkFORCI7Cjs7OyBFcXVpdmFsZW50IHRvIHJhbmRvbWl6ZShjdXJfbHQoKSk7LgooKSByYW5kb21pemVfbHQoKSBpbXB1cmUgYXNtICJMVElNRSIgIkFERFJBTkQi" + + "OwoKOzs7IENoZWNrcyB3aGV0aGVyIHRoZSBkYXRhIHBhcnRzIG9mIHR3byBzbGljZXMgY29pbnNpZGUKaW50IGVxdWFsX3NsaWNlc19iaXRzKHNsaWNlIGEsIHNsaWNl" + + "IGIpIGFzbSAiU0RFUSI7Cjs7OyBDaGVja3Mgd2hldGhlciBiIGlzIGEgbnVsbC4gTm90ZSwgdGhhdCBGdW5DIGFsc28gaGFzIHBvbHltb3JwaGljIG51bGw/IGJ1aWx0" + + "LWluLgppbnQgYnVpbGRlcl9udWxsPyhidWlsZGVyIGIpIGFzbSAiSVNOVUxMIjsKOzs7IENvbmNhdGVuYXRlcyB0d28gYnVpbGRlcnMKYnVpbGRlciBzdG9yZV9idWls" + + "ZGVyKGJ1aWxkZXIgdG8sIGJ1aWxkZXIgZnJvbSkgYXNtICJTVEJSIjsKCjs7IENVU1RPTToKCjs7IFRWTSBVUEdSQURFIDIwMjMtMDcgaHR0cHM6Ly9kb2NzLnRvbi5v" + + "cmcvbGVhcm4vdHZtLWluc3RydWN0aW9ucy90dm0tdXBncmFkZS0yMDIzLTA3Cjs7IEluIG1haW5uZXQgc2luY2UgMjAgRGVjIDIwMjMgaHR0cHM6Ly90Lm1lL3RvbmJs" + + "b2NrY2hhaW4vMjI2Cgo7OzsgUmV0cmlldmVzIGNvZGUgb2Ygc21hcnQtY29udHJhY3QgZnJvbSBjNwpjZWxsIG15X2NvZGUoKSBhc20gIk1ZQ09ERSI7Cg=="; +files["stdlib.tact"] = + "aW1wb3J0ICIuL3N0ZC9wcmltaXRpdmVzIjsKaW1wb3J0ICIuL3N0ZC9jZWxscyI7CmltcG9ydCAiLi9zdGQvY3J5cHRvIjsKaW1wb3J0ICIuL3N0ZC90ZXh0IjsKaW1w" + + "b3J0ICIuL3N0ZC9tYXRoIjsKaW1wb3J0ICIuL3N0ZC9jb250cmFjdCI7CmltcG9ydCAiLi9zdGQvZGVidWciOwppbXBvcnQgIi4vc3RkL2NvbnRleHQiOwppbXBvcnQg" + + "Ii4vc3RkL3Jlc2VydmUiOwppbXBvcnQgIi4vc3RkL3NlbmQiOwppbXBvcnQgIi4vc3RkL2NvbmZpZyI7CmltcG9ydCAiLi9zdGQvYmFzZSI7"; +export default files; diff --git a/stdlib/libs/config.tact b/src/stdlib/stdlib/libs/config.tact similarity index 100% rename from stdlib/libs/config.tact rename to src/stdlib/stdlib/libs/config.tact diff --git a/stdlib/libs/content.tact b/src/stdlib/stdlib/libs/content.tact similarity index 100% rename from stdlib/libs/content.tact rename to src/stdlib/stdlib/libs/content.tact diff --git a/stdlib/libs/deploy.tact b/src/stdlib/stdlib/libs/deploy.tact similarity index 100% rename from stdlib/libs/deploy.tact rename to src/stdlib/stdlib/libs/deploy.tact diff --git a/stdlib/libs/dns.fc b/src/stdlib/stdlib/libs/dns.fc similarity index 100% rename from stdlib/libs/dns.fc rename to src/stdlib/stdlib/libs/dns.fc diff --git a/stdlib/libs/dns.tact b/src/stdlib/stdlib/libs/dns.tact similarity index 100% rename from stdlib/libs/dns.tact rename to src/stdlib/stdlib/libs/dns.tact diff --git a/stdlib/libs/ownable.tact b/src/stdlib/stdlib/libs/ownable.tact similarity index 100% rename from stdlib/libs/ownable.tact rename to src/stdlib/stdlib/libs/ownable.tact diff --git a/stdlib/libs/stoppable.tact b/src/stdlib/stdlib/libs/stoppable.tact similarity index 100% rename from stdlib/libs/stoppable.tact rename to src/stdlib/stdlib/libs/stoppable.tact diff --git a/stdlib/std/base.tact b/src/stdlib/stdlib/std/base.tact similarity index 100% rename from stdlib/std/base.tact rename to src/stdlib/stdlib/std/base.tact diff --git a/stdlib/std/cells.tact b/src/stdlib/stdlib/std/cells.tact similarity index 100% rename from stdlib/std/cells.tact rename to src/stdlib/stdlib/std/cells.tact diff --git a/stdlib/std/config.tact b/src/stdlib/stdlib/std/config.tact similarity index 100% rename from stdlib/std/config.tact rename to src/stdlib/stdlib/std/config.tact diff --git a/stdlib/std/context.tact b/src/stdlib/stdlib/std/context.tact similarity index 100% rename from stdlib/std/context.tact rename to src/stdlib/stdlib/std/context.tact diff --git a/stdlib/std/contract.tact b/src/stdlib/stdlib/std/contract.tact similarity index 100% rename from stdlib/std/contract.tact rename to src/stdlib/stdlib/std/contract.tact diff --git a/stdlib/std/crypto.tact b/src/stdlib/stdlib/std/crypto.tact similarity index 100% rename from stdlib/std/crypto.tact rename to src/stdlib/stdlib/std/crypto.tact diff --git a/stdlib/std/debug.tact b/src/stdlib/stdlib/std/debug.tact similarity index 100% rename from stdlib/std/debug.tact rename to src/stdlib/stdlib/std/debug.tact diff --git a/stdlib/std/math.tact b/src/stdlib/stdlib/std/math.tact similarity index 100% rename from stdlib/std/math.tact rename to src/stdlib/stdlib/std/math.tact diff --git a/stdlib/std/primitives.tact b/src/stdlib/stdlib/std/primitives.tact similarity index 100% rename from stdlib/std/primitives.tact rename to src/stdlib/stdlib/std/primitives.tact diff --git a/stdlib/std/reserve.tact b/src/stdlib/stdlib/std/reserve.tact similarity index 100% rename from stdlib/std/reserve.tact rename to src/stdlib/stdlib/std/reserve.tact diff --git a/stdlib/std/send.tact b/src/stdlib/stdlib/std/send.tact similarity index 100% rename from stdlib/std/send.tact rename to src/stdlib/stdlib/std/send.tact diff --git a/stdlib/std/text.tact b/src/stdlib/stdlib/std/text.tact similarity index 100% rename from stdlib/std/text.tact rename to src/stdlib/stdlib/std/text.tact diff --git a/stdlib/stdlib.fc b/src/stdlib/stdlib/stdlib.fc similarity index 100% rename from stdlib/stdlib.fc rename to src/stdlib/stdlib/stdlib.fc diff --git a/stdlib/stdlib.tact b/src/stdlib/stdlib/stdlib.tact similarity index 100% rename from stdlib/stdlib.tact rename to src/stdlib/stdlib/stdlib.tact diff --git a/stdlib/stdlib_ex.fc b/src/stdlib/stdlib/stdlib_ex.fc similarity index 100% rename from stdlib/stdlib_ex.fc rename to src/stdlib/stdlib/stdlib_ex.fc diff --git a/src/storage/resolveAllocation.spec.ts b/src/storage/resolveAllocation.spec.ts index 9de511b1b..62e53f1db 100644 --- a/src/storage/resolveAllocation.spec.ts +++ b/src/storage/resolveAllocation.spec.ts @@ -9,9 +9,10 @@ import path from "path"; import { getParser } from "../grammar"; import { getAstFactory } from "../ast/ast"; import { defaultParser } from "../grammar/grammar"; +import { stdlibPath } from "../stdlib/path"; -const stdlibPath = path.resolve(__dirname, "../../stdlib/std/primitives.tact"); -const stdlib = fs.readFileSync(stdlibPath, "utf-8"); +const primitivesPath = path.join(stdlibPath, "/std/primitives.tact"); +const stdlib = fs.readFileSync(primitivesPath, "utf-8"); const src = ` trait BaseTrait { @@ -68,7 +69,7 @@ describe("resolveAllocation", () => { let ctx = openContext( new CompilerContext(), [ - { code: stdlib, path: stdlibPath, origin: "stdlib" }, + { code: stdlib, path: primitivesPath, origin: "stdlib" }, { code: src, path: "", origin: "user" }, ], [], diff --git a/version.build.ts b/version.build.ts new file mode 100644 index 000000000..355f24826 --- /dev/null +++ b/version.build.ts @@ -0,0 +1,45 @@ +// Call the script with a new dev version as its argument. +// If the argument is not provided a new version will be +// automatically generated from package.json and current date, +// plus a gitHead field with the current Git commit hash +// will be added to package.json. +// +// The version format should be as follows: +// ..-dev. +// e.g. something like 1.4.0-dev.20240711 + +import { execSync } from "child_process"; +import { readFileSync, writeFileSync } from "fs"; +import { join } from "path"; +import { z } from "zod"; + +const packageSchema = z.object({ + version: z.string(), +}); + +const packageJsonPath = join(__dirname, "package.json"); + +const currentCommit = execSync("git rev-parse HEAD", { + encoding: "utf-8", +}).trim(); + +const packageJson = JSON.parse(readFileSync(packageJsonPath, "utf-8")); +if (typeof packageJson !== "object" || packageJson === null) { + throw new Error("package.json is not an object"); +} + +const generateVersion = () => { + const oldVersion = packageSchema.parse(packageJson).version; + const date = new Date().toISOString().substring(0, 10).replace("-", ""); + return `${oldVersion}-dev.${date}`; +}; + +const newPackageJson = { + ...packageJson, + version: process.argv[2] ?? generateVersion(), + gitHead: currentCommit, +}; + +writeFileSync(packageJsonPath, JSON.stringify(newPackageJson, null, 2)); + +execSync(`yarn prettier -w "${packageJsonPath}"`);