diff --git a/.github/workflows/tact.yml b/.github/workflows/tact.yml index 9bdc67ca9..81c4eafe2 100644 --- a/.github/workflows/tact.yml +++ b/.github/workflows/tact.yml @@ -20,10 +20,10 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup Node.js 18 for backwards compat tests - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: 18 # without caching @@ -46,7 +46,7 @@ jobs: yarn config delete ignore-engines - name: Setup Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v3 + uses: actions/setup-node@v4 with: node-version: ${{ matrix.node-version }} cache: "yarn" diff --git a/src/imports/stdlib.ts b/src/imports/stdlib.ts index 72ef60276..f27dd636f 100644 --- a/src/imports/stdlib.ts +++ b/src/imports/stdlib.ts @@ -207,62 +207,72 @@ files['std/contract.tact'] = 'ZXNzX3RvX3NsaWNlKQpleHRlbmRzIG5hdGl2ZSBhc1NsaWNlKHNlbGY6IEFkZHJlc3MpOiBTbGljZTsKCkBuYW1lKF9fdGFjdF9jcmVhdGVfYWRkcmVzcykKbmF0aXZl' + 'IG5ld0FkZHJlc3MoY2hhaW46IEludCwgaGFzaDogSW50KTogQWRkcmVzczsKCmFzbSBmdW4gbXlBZGRyZXNzKCk6IEFkZHJlc3MgeyBNWUFERFIgfQoKYXNtIGZ1biBt' + 'eUJhbGFuY2UoKTogSW50IHsgQkFMQU5DRSBGSVJTVCB9CgovLy8gR2xvYmFsIGZ1bmN0aW9uLiBBdmFpbGFibGUgc2luY2UgVGFjdCAxLjUuMC4KLy8vCi8vLyBSZXR1' + - 'cm5zIHRoZSBuYW5vVG9uY29pbnMgYEludGAgYW1vdW50IG9mIGdhcyBjb25zdW1lZCBieSBUVk0gaW4gdGhlIGN1cnJlbnQgdHJhbnNhY3Rpb24gc28gZmFyLiBUaGUg' + - 'cmVzdWx0aW5nIHZhbHVlIGluY2x1ZGVzIHRoZSBjb3N0IG9mIGNhbGxpbmcgdGhpcyBmdW5jdGlvbi4KLy8vCi8vLyBgYGB0YWN0Ci8vLyBmdW4gZXhhbXBsZSgpIHsK' + - 'Ly8vICAgICBsZXQgZ2FzOiBJbnQgPSBnYXNDb25zdW1lZCgpOwovLy8gfQovLy8gYGBgCi8vLwovLy8gU2VlOiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9yZWYv' + - 'Y29yZS1hZHZhbmNlZCNnYXNjb25zdW1lZAovLy8KYXNtIGZ1biBnYXNDb25zdW1lZCgpOiBJbnQgeyBHQVNDT05TVU1FRCB9CgovLyBDYWxjdWxhdGVzIGNvbXB1dGF0' + - 'aW9uIGNvc3QgaW4gbmFub3RvbnMgZm9yIHRyYW5zYWN0aW9uIHRoYXQgY29uc3VtZXMgYGdhc1VzZWRgIGdhcy4KYXNtIGZ1biBnZXRDb21wdXRlRmVlKGdhc1VzZWQ6' + - 'IEludCwgaXNNYXN0ZXJjaGFpbjogQm9vbCk6IEludCB7IEdFVEdBU0ZFRSB9CgovLyBDYWxjdWxhdGVzIHN0b3JhZ2UgZmVlcyBpbiBuYW5vdG9ucyBmb3IgY29udHJh' + - 'Y3QgYmFzZWQgb24gY3VycmVudCBzdG9yYWdlIHByaWNlcy4gYGNlbGxzYCBhbmQgYGJpdHNgIGFyZSB0aGUgc2l6ZSBvZiB0aGUgQWNjb3VudFN0YXRlICh3aXRoIGRl' + - 'ZHVwbGljYXRpb24sIGluY2x1ZGluZyByb290IGNlbGwpLgphc20gZnVuIGdldFN0b3JhZ2VGZWUoY2VsbHM6IEludCwgYml0czogSW50LCBzZWNvbmRzOiBJbnQsIGlz' + - 'TWFzdGVyY2hhaW46IEJvb2wpOiBJbnQgeyBHRVRTVE9SQUdFRkVFIH0KCi8vIENhbGN1bGF0ZXMgZm9yd2FyZCBmZWVzIGluIG5hbm90b25zIGZvciBvdXRnb2luZyBt' + - 'ZXNzYWdlLiBgaXNNYXN0ZXJjaGFpbmAgaXMgdHJ1ZSBpZiB0aGUgc291cmNlIG9yIHRoZSBkZXN0aW5hdGlvbiBpcyBpbiBtYXN0ZXJjaGFpbiwgZmFsc2UgaWYgYm90' + - 'aCBhcmUgaW4gYmFzZWNoYWluLiBOb3RlLCBgY2VsbHNgIGFuZCBgYml0c2AgaW4gTWVzc2FnZSBzaG91bGQgYmUgY291bnRlZCB3aXRoIGFjY291bnQgZm9yIGRlZHVw' + - 'bGljYXRpb24gYW5kIHJvb3QtaXMtbm90LWNvdW50ZWQgcnVsZXMuCmFzbSBmdW4gZ2V0Rm9yd2FyZEZlZShjZWxsczogSW50LCBiaXRzOiBJbnQsIGlzTWFzdGVyY2hh' + - 'aW46IEJvb2wpOiBJbnQgeyBHRVRGT1JXQVJERkVFIH0KCi8vIENhbGN1bGF0ZXMgYWRkaXRpb25hbCBjb21wdXRhdGlvbiBjb3N0IGluIG5hbm90b25zIGZvciB0cmFu' + - 'c2FjdGlvbiB0aGF0IGNvbnN1bWVzIGFkZGl0aW9uYWwgYGdhc1VzZWRgLiBJbiBvdGhlciB3b3Jkcywgc2FtZSBhcyBgZ2V0Q29tcHV0ZUZlZWAsIGJ1dCB3aXRob3V0' + - 'IGZsYXQgcHJpY2UgKGp1c3QgYChnYXNVc2VkICogcHJpY2UpIC8gMl4xNmApLgphc20gZnVuIGdldFNpbXBsZUNvbXB1dGVGZWUoZ2FzVXNlZDogSW50LCBpc01hc3Rl' + - 'cmNoYWluOiBCb29sKTogSW50IHsgR0VUR0FTRkVFU0lNUExFIH0KCi8vIENhbGN1bGF0ZXMgYWRkaXRpb25hbCBmb3J3YXJkIGNvc3QgaW4gbmFub3RvbnMgZm9yIG1l' + - 'c3NhZ2UgdGhhdCBjb250YWlucyBhZGRpdGlvbmFsIGBjZWxsc2AgYW5kIGBiaXRzYC4gSW4gb3RoZXIgd29yZHMsIHNhbWUgYXMgYGdldEZvcndhcmRGZWVgLCBidXQg' + - 'd2l0aG91dCBsdW1wIHByaWNlIChqdXN0IGAoYml0cypiaXRfcHJpY2UgKyBjZWxscypjZWxsX3ByaWNlKSAvIDJeMTZgKS4KYXNtIGZ1biBnZXRTaW1wbGVGb3J3YXJk' + - 'RmVlKGNlbGxzOiBJbnQsIGJpdHM6IEludCwgaXNNYXN0ZXJjaGFpbjogQm9vbCk6IEludCB7IEdFVEZPUldBUkRGRUVTSU1QTEUgfQoKLy8gQ2FsY3VsYXRlIGBmd2RG' + - 'ZWUgKiAyXjE2IC8gZmlyc3RfZnJhY2AuIENhbiBiZSB1c2VkIHRvIGdldCB0aGUgb3JpZ2luYWwgYGZ3ZEZlZWAgb2YgdGhlIG1lc3NhZ2UgKGFzIHJlcGxhY2VtZW50' + - 'IGZvciBoYXJkY29kZWQgdmFsdWVzKSBmcm9tIGBmd2RGZWVgIHBhcnNlZCBmcm9tIGluY29taW5nIG1lc3NhZ2UuIGBpc01hc3RlcmNoYWluYCBpcyB0cnVlIGlmIHRo' + - 'ZSBzb3VyY2Ugb3IgdGhlIGRlc3RpbmF0aW9uIGlzIGluIG1hc3RlcmNoYWluLCBmYWxzZSBpZiBib3RoIGFyZSBpbiBiYXNlY2hhaW4uCmFzbSBmdW4gZ2V0T3JpZ2lu' + - 'YWxGd2RGZWUoZndkRmVlOiBJbnQsIGlzTWFzdGVyY2hhaW46IEJvb2wpOiBJbnQgeyBHRVRPUklHSU5BTEZXREZFRSB9CgovLy8gR2xvYmFsIGZ1bmN0aW9uLiBBdmFp' + - 'bGFibGUgc2luY2UgVGFjdCAxLjUuMC4KLy8vCi8vLyBSZXR1cm5zIHRoZSBuYW5vVG9uY29pbnMgYEludGAgYW1vdW50IG9mIGFjY3VtdWxhdGVkIHN0b3JhZ2UgZmVl' + - 'IGRlYnQuIFRoZSBzdG9yYWdlIGZlZXMgYXJlIHVzdWFsbHkgZGVkdWN0ZWQgZnJvbSB0aGUgaW5jb21pbmcgbWVzc2FnZSB2YWx1ZSBwcmlvciB0byBjYWxjdWxhdGlv' + - 'biBvZiB0aGUgbmV3IGNvbnRyYWN0IGJhbGFuY2UuCi8vLwovLy8gYGBgdGFjdAovLy8gZnVuIGV4YW1wbGUoKSB7Ci8vLyAgICAgbGV0IGRlYnQ6IEludCA9IG15U3Rv' + - 'cmFnZUR1ZSgpOwovLy8gfQovLy8gYGBgCi8vLwovLy8gU2VlOiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9yZWYvY29yZS1hZHZhbmNlZCNteXN0b3JhZ2VkdWUK' + - 'Ly8vCmFzbSBmdW4gbXlTdG9yYWdlRHVlKCk6IEludCB7IERVRVBBWU1FTlQgfQoKLy8vIFN0cnVjdCByZXByZXNlbnRpbmcgdGhlIHN0YW5kYXJkIGFkZHJlc3Mgb24g' + - 'VE9OIEJsb2NrY2hhaW4gd2l0aCBzaWduZWQgOC1iaXQgYHdvcmtjaGFpbmAgSUQgYW5kIGFuIHVuc2lnbmVkIDI1Ni1iaXQgYGFkZHJlc3NgIGluIHRoZSBzcGVjaWZp' + - 'ZWQgYHdvcmtjaGFpbmAuIEF2YWlsYWJsZSBzaW5jZSBUYWN0IDEuNS4wLgovLy8KLy8vIEF0IHRoZSBtb21lbnQsIG9ubHkgYHdvcmtjaGFpbmAgSURzIHVzZWQgb24g' + - 'VE9OIGFyZSAwIG9mIHRoZSBiYXNlY2hhaW4gYW5kIC0xIG9mIHRoZSBtYXN0ZXJjaGFpbi4KLy8vCi8vLyBTZWU6Ci8vLyAqIGh0dHBzOi8vZG9jcy50YWN0LWxhbmcu' + - 'b3JnL3JlZi9jb3JlLWFkdmFuY2VkI3BhcnNlc3RkYWRkcmVzcwovLy8gKiBodHRwczovL2dpdGh1Yi5jb20vdG9uLWJsb2NrY2hhaW4vdG9uL2Jsb2IvbWFzdGVyL2Ny' + - 'eXB0by9ibG9jay9ibG9jay50bGIjTDEwNS1MMTA2Ci8vLwpzdHJ1Y3QgU3RkQWRkcmVzcyB7CiAgICB3b3JrY2hhaW46IEludCBhcyBpbnQ4OwogICAgYWRkcmVzczog' + - 'SW50IGFzIHVpbnQyNTY7Cn0KCi8vLyBTdHJ1Y3QgcmVwcmVzZW50aW5nIHRoZSBhZGRyZXNzIG9mIHZhcmlhYmxlIGxlbmd0aCB3aXRoIHNpZ25lZCAzMi1iaXQgYHdv' + - 'cmtjaGFpbmAgSUQgYW5kIGEgYFNsaWNlYCBjb250YWluaW5nIHVuc2lnbmVkIGBhZGRyZXNzYCBpbiB0aGUgc3BlY2lmaWVkIGB3b3JrY2hhaW5gLiBBdmFpbGFibGUg' + - 'c2luY2UgVGFjdCAxLjUuMC4KLy8vCi8vLyBWYXJpYWJsZS1sZW5ndGggYWRkcmVzc2VzIGFyZSBpbnRlbmRlZCBmb3IgZnV0dXJlIGV4dGVuc2lvbnMsIGFuZCB3aGls' + - 'ZSB2YWxpZGF0b3JzIG11c3QgYmUgcmVhZHkgdG8gYWNjZXB0IHRoZW0gaW4gaW5ib3VuZCBtZXNzYWdlcywgdGhlIHN0YW5kYXJkIChub24tdmFyaWFibGUpIGFkZHJl' + - 'c3NlcyBhcmUgdXNlZCB3aGVuZXZlciBwb3NzaWJsZS4KLy8vCi8vLyBTZWU6Ci8vLyAqIGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL3JlZi9jb3JlLWFkdmFuY2Vk' + - 'I3BhcnNldmFyYWRkcmVzcwovLy8gKiBodHRwczovL2dpdGh1Yi5jb20vdG9uLWJsb2NrY2hhaW4vdG9uL2Jsb2IvbWFzdGVyL2NyeXB0by9ibG9jay9ibG9jay50bGIj' + - 'TDEwNy1MMTA4Ci8vLwpzdHJ1Y3QgVmFyQWRkcmVzcyB7CiAgICB3b3JrY2hhaW46IEludCBhcyBpbnQzMjsKICAgIGFkZHJlc3M6IFNsaWNlOwp9CgovLy8gQXNzZW1i' + - 'bHkgZnVuY3Rpb24uIEF2YWlsYWJsZSBzaW5jZSBUYWN0IDEuNS4wLgovLy8KLy8vIENvbnZlcnRzIGEgYFNsaWNlYCBjb250YWluaW5nIGFuIGFkZHJlc3MgaW50byB0' + - 'aGUgYFN0ZEFkZHJlc3NgIFN0cnVjdCBhbmQgcmV0dXJucyBpdC4KLy8vCi8vLyBgYGB0YWN0Ci8vLyBmdW4gZXhhbXBsZSgpIHsKLy8vICAgICBsZXQgYWRkciA9IGFk' + - 'ZHJlc3MoIkVRRHRGcEV3Y0ZBRWNSZTVtTFZoMk42QzB4LV9oSkVNN1c2MV9KTG5TRjc0cDRxMiIpOwovLy8gICAgIGxldCBwYXJzZWRBZGRyID0gcGFyc2VTdGRBZGRy' + - 'ZXNzKGFkZHIuYXNTbGljZSgpKTsKLy8vCi8vLyAgICAgcGFyc2VkQWRkci53b3JrY2hhaW47IC8vIDAKLy8vICAgICBwYXJzZWRBZGRyLmFkZHJlc3M7ICAgLy8gMTA3' + - 'Li4uMjg3Ci8vLyB9Ci8vLyBgYGAKLy8vCi8vLyBTZWU6IGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL3JlZi9jb3JlLWFkdmFuY2VkI3BhcnNlc3RkYWRkcmVzcwov' + - 'Ly8KYXNtIGZ1biBwYXJzZVN0ZEFkZHJlc3Moc2xpY2U6IFNsaWNlKTogU3RkQWRkcmVzcyB7IFJFV1JJVEVTVERBRERSIH0KCi8vLyBBc3NlbWJseSBmdW5jdGlvbi4g' + - 'QXZhaWxhYmxlIHNpbmNlIFRhY3QgMS41LjAuCi8vLwovLy8gQ29udmVydHMgYSBgU2xpY2VgIGNvbnRhaW5pbmcgYW4gYWRkcmVzcyBvZiB2YXJpYWJsZSBsZW5ndGgg' + - 'aW50byB0aGUgYFZhckFkZHJlc3NgIFN0cnVjdCBhbmQgcmV0dXJucyBpdC4KLy8vCi8vLyBgYGB0YWN0Ci8vLyBmdW4gZXhhbXBsZSgpIHsKLy8vICAgICBsZXQgdmFy' + - 'QWRkclNsaWNlID0gYmVnaW5DZWxsKCkKLy8vICAgICAgICAgLnN0b3JlVWludCg2LCAzKSAgICAgLy8gdG8gcmVjb2duaXplIHRoZSBmb2xsb3dpbmcgYXMgYSBWYXJB' + - 'ZGRyZXNzCi8vLyAgICAgICAgIC5zdG9yZVVpbnQoMTIzLCA5KSAgIC8vIG1ha2UgYWRkcmVzcyBvY2N1cHkgMTIzIGJpdHMKLy8vICAgICAgICAgLnN0b3JlVWludCgy' + - 'MzQsIDMyKSAgLy8gc3BlY2lmeSB3b3JrY2hhaW4gSUQgb2YgMjM0Ci8vLyAgICAgICAgIC5zdG9yZVVpbnQoMzQ1LCAxMjMpIC8vIHNwZWNpZnkgYWRkcmVzcyBvZiAz' + - 'NDUKLy8vICAgICAgICAgLmFzU2xpY2UoKTsKLy8vICAgICBsZXQgcGFyc2VkVmFyQWRkciA9IHBhcnNlVmFyQWRkcmVzcyh2YXJBZGRyU2xpY2UpOwovLy8KLy8vICAg' + - 'ICBwYXJzZWRWYXJBZGRyLndvcmtjaGFpbjsgICAgICAgICAgICAgLy8gMjM0Ci8vLyAgICAgcGFyc2VkVmFyQWRkci5hZGRyZXNzOyAgICAgICAgICAgICAgIC8vIENT' + - 'e0NlbGx7MDAyLi4uMmIzfSBiaXRzOiA0NC4uMTY3OyByZWZzOiAwLi4wfQovLy8gICAgIHBhcnNlZFZhckFkZHIuYWRkcmVzcy5sb2FkVWludCgxMjMpOyAvLyAzNDUK' + - 'Ly8vIH0KLy8vIGBgYAovLy8KLy8vIFNlZTogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvcmVmL2NvcmUtYWR2YW5jZWQjcGFyc2V2YXJhZGRyZXNzCi8vLwphc20g' + - 'ZnVuIHBhcnNlVmFyQWRkcmVzcyhzbGljZTogU2xpY2UpOiBWYXJBZGRyZXNzIHsgUkVXUklURVZBUkFERFIgfQo='; + 'cm5zIHRoZSBuYW5vVG9uY29pbiBgSW50YCBhbW91bnQgb2YgZ2FzIGNvbnN1bWVkIGJ5IFRWTSBpbiB0aGUgY3VycmVudCB0cmFuc2FjdGlvbiBzbyBmYXIuIFRoZSBy' + + 'ZXN1bHRpbmcgdmFsdWUgaW5jbHVkZXMgdGhlIGNvc3Qgb2YgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLgovLy8KLy8vIGBgYHRhY3QKLy8vIGZ1biBleGFtcGxlKCkgewov' + + 'Ly8gICAgIGxldCBnYXM6IEludCA9IGdhc0NvbnN1bWVkKCk7Ci8vLyB9Ci8vLyBgYGAKLy8vCi8vLyBTZWU6IGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL3JlZi9j' + + 'b3JlLWFkdmFuY2VkI2dhc2NvbnN1bWVkCi8vLwphc20gZnVuIGdhc0NvbnN1bWVkKCk6IEludCB7IEdBU0NPTlNVTUVEIH0KCi8vIENhbGN1bGF0ZXMgY29tcHV0YXRp' + + 'b24gY29zdCBpbiBuYW5vdG9ucyBmb3IgdHJhbnNhY3Rpb24gdGhhdCBjb25zdW1lcyBgZ2FzVXNlZGAgZ2FzLgphc20gZnVuIGdldENvbXB1dGVGZWUoZ2FzVXNlZDog' + + 'SW50LCBpc01hc3RlcmNoYWluOiBCb29sKTogSW50IHsgR0VUR0FTRkVFIH0KCi8vIENhbGN1bGF0ZXMgc3RvcmFnZSBmZWVzIGluIG5hbm90b25zIGZvciBjb250cmFj' + + 'dCBiYXNlZCBvbiBjdXJyZW50IHN0b3JhZ2UgcHJpY2VzLiBgY2VsbHNgIGFuZCBgYml0c2AgYXJlIHRoZSBzaXplIG9mIHRoZSBBY2NvdW50U3RhdGUgKHdpdGggZGVk' + + 'dXBsaWNhdGlvbiwgaW5jbHVkaW5nIHJvb3QgY2VsbCkuCgovLy8gR2xvYmFsIGZ1bmN0aW9uLiBBdmFpbGFibGUgc2luY2UgVGFjdCAxLjUuMC4KLy8vCi8vLyBDYWxj' + + 'dWxhdGVzIGFuZCByZXR1cm5zIHRoZSBzdG9yYWdlIGZlZSBpbiBuYW5vVG9uY29pbnMgYEludGAgZm9yIHN0b3JpbmcgYSBjb250cmFjdCB3aXRoIGEgZ2l2ZW4gbnVt' + + 'YmVyIG9mIGBjZWxsc2AgYW5kIGBiaXRzYCBmb3IgYSBudW1iZXIgb2YgYHNlY29uZHNgLiBVc2VzIHByaWNlcyBvZiB0aGUgbWFzdGVyY2hhaW4gaWYgYGlzTWFzdGVy' + + 'Y2hhaW5gIGlzIGB0cnVlYCwgYW5kIHByaWNlcyBvZiB0aGUgYmFzZWNoYWluIG90aGVyd2lzZS4gVGhlIGN1cnJlbnQgcHJpY2VzIGFyZSBvYnRhaW5lZCBmcm9tIHRo' + + 'ZSBjb25maWcgcGFyYW0gMTggb2YgVE9OIEJsb2NrY2hhaW4uCi8vLwovLy8gTm90ZSwgdGhhdCB0aGUgdmFsdWVzIG9mIGBjZWxsc2AgYW5kIGBiaXRzYCBhcmUgdGFr' + + 'ZW4gbW9kdWxvIHRoZWlyIG1heGltdW0gdmFsdWVzIHBsdXMgMS4gVGhhdCBpcywgc3BlY2lmeWluZyBhbnkgdmFsdWVzIGhpZ2hlciB0aGFuIGxpc3RlZCBpbiBhY2Nv' + + 'dW50IHN0YXRlIGxpbWl0cyB3aWxsIGhhdmUgdGhlIHNhbWUgcmVzdWx0IGFzIHdpdGggc3BlY2lmeWluZyB0aGUgZXhhY3QgbGltaXRzLgovLy8KLy8vIEF0dGVtcHRz' + + 'IHRvIHNwZWNpZnkgbmVnYXRpdmUgbnVtYmVyIG9mIGBjZWxsc2AsIGBiaXRzYCBvciBgc2Vjb25kc2AgdGhyb3cgYW4gZXhjZXB0aW9uIHdpdGggZXhpdCBjb2RlIDU6' + + 'IGBJbnRlZ2VyIG91dCBvZiBleHBlY3RlZCByYW5nZWAuCi8vLwovLy8gYGBgdGFjdAovLy8gZnVuIGV4YW1wbGUoKSB7Ci8vLyAgICAgbGV0IGZlZTogSW50ID0gZ2V0' + + 'U3RvcmFnZUZlZSgxXzAwMCwgMV8wMDAsIDFfMDAwLCBmYWxzZSk7Ci8vLyB9Ci8vLyBgYGAKLy8vCi8vLyBTZWU6IGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL3Jl' + + 'Zi9jb3JlLWFkdmFuY2VkI2dldHN0b3JhZ2VmZWUKLy8vCmFzbSBmdW4gZ2V0U3RvcmFnZUZlZShjZWxsczogSW50LCBiaXRzOiBJbnQsIHNlY29uZHM6IEludCwgaXNN' + + 'YXN0ZXJjaGFpbjogQm9vbCk6IEludCB7IEdFVFNUT1JBR0VGRUUgfQoKLy8gQ2FsY3VsYXRlcyBmb3J3YXJkIGZlZXMgaW4gbmFub3RvbnMgZm9yIG91dGdvaW5nIG1l' + + 'c3NhZ2UuIGBpc01hc3RlcmNoYWluYCBpcyB0cnVlIGlmIHRoZSBzb3VyY2Ugb3IgdGhlIGRlc3RpbmF0aW9uIGlzIGluIG1hc3RlcmNoYWluLCBmYWxzZSBpZiBib3Ro' + + 'IGFyZSBpbiBiYXNlY2hhaW4uIE5vdGUsIGBjZWxsc2AgYW5kIGBiaXRzYCBpbiBNZXNzYWdlIHNob3VsZCBiZSBjb3VudGVkIHdpdGggYWNjb3VudCBmb3IgZGVkdXBs' + + 'aWNhdGlvbiBhbmQgcm9vdC1pcy1ub3QtY291bnRlZCBydWxlcy4KYXNtIGZ1biBnZXRGb3J3YXJkRmVlKGNlbGxzOiBJbnQsIGJpdHM6IEludCwgaXNNYXN0ZXJjaGFp' + + 'bjogQm9vbCk6IEludCB7IEdFVEZPUldBUkRGRUUgfQoKLy8gQ2FsY3VsYXRlcyBhZGRpdGlvbmFsIGNvbXB1dGF0aW9uIGNvc3QgaW4gbmFub3RvbnMgZm9yIHRyYW5z' + + 'YWN0aW9uIHRoYXQgY29uc3VtZXMgYWRkaXRpb25hbCBgZ2FzVXNlZGAuIEluIG90aGVyIHdvcmRzLCBzYW1lIGFzIGBnZXRDb21wdXRlRmVlYCwgYnV0IHdpdGhvdXQg' + + 'ZmxhdCBwcmljZSAoanVzdCBgKGdhc1VzZWQgKiBwcmljZSkgLyAyXjE2YCkuCmFzbSBmdW4gZ2V0U2ltcGxlQ29tcHV0ZUZlZShnYXNVc2VkOiBJbnQsIGlzTWFzdGVy' + + 'Y2hhaW46IEJvb2wpOiBJbnQgeyBHRVRHQVNGRUVTSU1QTEUgfQoKLy8gQ2FsY3VsYXRlcyBhZGRpdGlvbmFsIGZvcndhcmQgY29zdCBpbiBuYW5vdG9ucyBmb3IgbWVz' + + 'c2FnZSB0aGF0IGNvbnRhaW5zIGFkZGl0aW9uYWwgYGNlbGxzYCBhbmQgYGJpdHNgLiBJbiBvdGhlciB3b3Jkcywgc2FtZSBhcyBgZ2V0Rm9yd2FyZEZlZWAsIGJ1dCB3' + + 'aXRob3V0IGx1bXAgcHJpY2UgKGp1c3QgYChiaXRzKmJpdF9wcmljZSArIGNlbGxzKmNlbGxfcHJpY2UpIC8gMl4xNmApLgphc20gZnVuIGdldFNpbXBsZUZvcndhcmRG' + + 'ZWUoY2VsbHM6IEludCwgYml0czogSW50LCBpc01hc3RlcmNoYWluOiBCb29sKTogSW50IHsgR0VURk9SV0FSREZFRVNJTVBMRSB9CgovLyBDYWxjdWxhdGUgYGZ3ZEZl' + + 'ZSAqIDJeMTYgLyBmaXJzdF9mcmFjYC4gQ2FuIGJlIHVzZWQgdG8gZ2V0IHRoZSBvcmlnaW5hbCBgZndkRmVlYCBvZiB0aGUgbWVzc2FnZSAoYXMgcmVwbGFjZW1lbnQg' + + 'Zm9yIGhhcmRjb2RlZCB2YWx1ZXMpIGZyb20gYGZ3ZEZlZWAgcGFyc2VkIGZyb20gaW5jb21pbmcgbWVzc2FnZS4gYGlzTWFzdGVyY2hhaW5gIGlzIHRydWUgaWYgdGhl' + + 'IHNvdXJjZSBvciB0aGUgZGVzdGluYXRpb24gaXMgaW4gbWFzdGVyY2hhaW4sIGZhbHNlIGlmIGJvdGggYXJlIGluIGJhc2VjaGFpbi4KYXNtIGZ1biBnZXRPcmlnaW5h' + + 'bEZ3ZEZlZShmd2RGZWU6IEludCwgaXNNYXN0ZXJjaGFpbjogQm9vbCk6IEludCB7IEdFVE9SSUdJTkFMRldERkVFIH0KCi8vLyBHbG9iYWwgZnVuY3Rpb24uIEF2YWls' + + 'YWJsZSBzaW5jZSBUYWN0IDEuNS4wLgovLy8KLy8vIFJldHVybnMgdGhlIG5hbm9Ub25jb2luIGBJbnRgIGFtb3VudCBvZiB0aGUgYWNjdW11bGF0ZWQgc3RvcmFnZSBm' + + 'ZWUgZGVidC4gU3RvcmFnZSBmZWVzIGFyZSBkZWR1Y3RlZCBmcm9tIHRoZSBpbmNvbWluZyBtZXNzYWdlIHZhbHVlIGJlZm9yZSB0aGUgbmV3IGNvbnRyYWN0IGJhbGFu' + + 'Y2UgaXMgY2FsY3VsYXRlZC4KLy8vCi8vLyBgYGB0YWN0Ci8vLyBmdW4gZXhhbXBsZSgpIHsKLy8vICAgICBsZXQgZGVidDogSW50ID0gbXlTdG9yYWdlRHVlKCk7Ci8v' + + 'LyB9Ci8vLyBgYGAKLy8vCi8vLyBTZWU6IGh0dHBzOi8vZG9jcy50YWN0LWxhbmcub3JnL3JlZi9jb3JlLWFkdmFuY2VkI215c3RvcmFnZWR1ZQovLy8KYXNtIGZ1biBt' + + 'eVN0b3JhZ2VEdWUoKTogSW50IHsgRFVFUEFZTUVOVCB9CgovLy8gU3RydWN0IHJlcHJlc2VudGluZyB0aGUgc3RhbmRhcmQgYWRkcmVzcyBvbiBUT04gQmxvY2tjaGFp' + + 'biB3aXRoIHNpZ25lZCA4LWJpdCBgd29ya2NoYWluYCBJRCBhbmQgYW4gdW5zaWduZWQgMjU2LWJpdCBgYWRkcmVzc2AgaW4gdGhlIHNwZWNpZmllZCBgd29ya2NoYWlu' + + 'YC4gQXZhaWxhYmxlIHNpbmNlIFRhY3QgMS41LjAuCi8vLwovLy8gQXQgdGhlIG1vbWVudCwgb25seSBgd29ya2NoYWluYCBJRHMgdXNlZCBvbiBUT04gYXJlIDAgb2Yg' + + 'dGhlIGJhc2VjaGFpbiBhbmQgLTEgb2YgdGhlIG1hc3RlcmNoYWluLgovLy8KLy8vIFNlZToKLy8vICogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvcmVmL2NvcmUt' + + 'YWR2YW5jZWQjcGFyc2VzdGRhZGRyZXNzCi8vLyAqIGh0dHBzOi8vZ2l0aHViLmNvbS90b24tYmxvY2tjaGFpbi90b24vYmxvYi9tYXN0ZXIvY3J5cHRvL2Jsb2NrL2Js' + + 'b2NrLnRsYiNMMTA1LUwxMDYKLy8vCnN0cnVjdCBTdGRBZGRyZXNzIHsKICAgIHdvcmtjaGFpbjogSW50IGFzIGludDg7CiAgICBhZGRyZXNzOiBJbnQgYXMgdWludDI1' + + 'NjsKfQoKLy8vIFN0cnVjdCByZXByZXNlbnRpbmcgdGhlIGFkZHJlc3Mgb2YgdmFyaWFibGUgbGVuZ3RoIHdpdGggc2lnbmVkIDMyLWJpdCBgd29ya2NoYWluYCBJRCBh' + + 'bmQgYSBgU2xpY2VgIGNvbnRhaW5pbmcgdW5zaWduZWQgYGFkZHJlc3NgIGluIHRoZSBzcGVjaWZpZWQgYHdvcmtjaGFpbmAuIEF2YWlsYWJsZSBzaW5jZSBUYWN0IDEu' + + 'NS4wLgovLy8KLy8vIFZhcmlhYmxlLWxlbmd0aCBhZGRyZXNzZXMgYXJlIGludGVuZGVkIGZvciBmdXR1cmUgZXh0ZW5zaW9ucywgYW5kIHdoaWxlIHZhbGlkYXRvcnMg' + + 'bXVzdCBiZSByZWFkeSB0byBhY2NlcHQgdGhlbSBpbiBpbmJvdW5kIG1lc3NhZ2VzLCB0aGUgc3RhbmRhcmQgKG5vbi12YXJpYWJsZSkgYWRkcmVzc2VzIGFyZSB1c2Vk' + + 'IHdoZW5ldmVyIHBvc3NpYmxlLgovLy8KLy8vIFNlZToKLy8vICogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvcmVmL2NvcmUtYWR2YW5jZWQjcGFyc2V2YXJhZGRy' + + 'ZXNzCi8vLyAqIGh0dHBzOi8vZ2l0aHViLmNvbS90b24tYmxvY2tjaGFpbi90b24vYmxvYi9tYXN0ZXIvY3J5cHRvL2Jsb2NrL2Jsb2NrLnRsYiNMMTA3LUwxMDgKLy8v' + + 'CnN0cnVjdCBWYXJBZGRyZXNzIHsKICAgIHdvcmtjaGFpbjogSW50IGFzIGludDMyOwogICAgYWRkcmVzczogU2xpY2U7Cn0KCi8vLyBBc3NlbWJseSBmdW5jdGlvbi4g' + + 'QXZhaWxhYmxlIHNpbmNlIFRhY3QgMS41LjAuCi8vLwovLy8gQ29udmVydHMgYSBgU2xpY2VgIGNvbnRhaW5pbmcgYW4gYWRkcmVzcyBpbnRvIHRoZSBgU3RkQWRkcmVz' + + 'c2AgU3RydWN0IGFuZCByZXR1cm5zIGl0LgovLy8KLy8vIGBgYHRhY3QKLy8vIGZ1biBleGFtcGxlKCkgewovLy8gICAgIGxldCBhZGRyID0gYWRkcmVzcygiRVFEdEZw' + + 'RXdjRkFFY1JlNW1MVmgyTjZDMHgtX2hKRU03VzYxX0pMblNGNzRwNHEyIik7Ci8vLyAgICAgbGV0IHBhcnNlZEFkZHIgPSBwYXJzZVN0ZEFkZHJlc3MoYWRkci5hc1Ns' + + 'aWNlKCkpOwovLy8KLy8vICAgICBwYXJzZWRBZGRyLndvcmtjaGFpbjsgLy8gMAovLy8gICAgIHBhcnNlZEFkZHIuYWRkcmVzczsgICAvLyAxMDcuLi4yODcKLy8vIH0K' + + 'Ly8vIGBgYAovLy8KLy8vIFNlZTogaHR0cHM6Ly9kb2NzLnRhY3QtbGFuZy5vcmcvcmVmL2NvcmUtYWR2YW5jZWQjcGFyc2VzdGRhZGRyZXNzCi8vLwphc20gZnVuIHBh' + + 'cnNlU3RkQWRkcmVzcyhzbGljZTogU2xpY2UpOiBTdGRBZGRyZXNzIHsgUkVXUklURVNUREFERFIgfQoKLy8vIEFzc2VtYmx5IGZ1bmN0aW9uLiBBdmFpbGFibGUgc2lu' + + 'Y2UgVGFjdCAxLjUuMC4KLy8vCi8vLyBDb252ZXJ0cyBhIGBTbGljZWAgY29udGFpbmluZyBhbiBhZGRyZXNzIG9mIHZhcmlhYmxlIGxlbmd0aCBpbnRvIHRoZSBgVmFy' + + 'QWRkcmVzc2AgU3RydWN0IGFuZCByZXR1cm5zIGl0LgovLy8KLy8vIGBgYHRhY3QKLy8vIGZ1biBleGFtcGxlKCkgewovLy8gICAgIGxldCB2YXJBZGRyU2xpY2UgPSBi' + + 'ZWdpbkNlbGwoKQovLy8gICAgICAgICAuc3RvcmVVaW50KDYsIDMpICAgICAvLyB0byByZWNvZ25pemUgdGhlIGZvbGxvd2luZyBhcyBhIFZhckFkZHJlc3MKLy8vICAg' + + 'ICAgICAgLnN0b3JlVWludCgxMjMsIDkpICAgLy8gbWFrZSBhZGRyZXNzIG9jY3VweSAxMjMgYml0cwovLy8gICAgICAgICAuc3RvcmVVaW50KDIzNCwgMzIpICAvLyBz' + + 'cGVjaWZ5IHdvcmtjaGFpbiBJRCBvZiAyMzQKLy8vICAgICAgICAgLnN0b3JlVWludCgzNDUsIDEyMykgLy8gc3BlY2lmeSBhZGRyZXNzIG9mIDM0NQovLy8gICAgICAg' + + 'ICAuYXNTbGljZSgpOwovLy8gICAgIGxldCBwYXJzZWRWYXJBZGRyID0gcGFyc2VWYXJBZGRyZXNzKHZhckFkZHJTbGljZSk7Ci8vLwovLy8gICAgIHBhcnNlZFZhckFk' + + 'ZHIud29ya2NoYWluOyAgICAgICAgICAgICAvLyAyMzQKLy8vICAgICBwYXJzZWRWYXJBZGRyLmFkZHJlc3M7ICAgICAgICAgICAgICAgLy8gQ1N7Q2VsbHswMDIuLi4y' + + 'YjN9IGJpdHM6IDQ0Li4xNjc7IHJlZnM6IDAuLjB9Ci8vLyAgICAgcGFyc2VkVmFyQWRkci5hZGRyZXNzLmxvYWRVaW50KDEyMyk7IC8vIDM0NQovLy8gfQovLy8gYGBg' + + 'Ci8vLwovLy8gU2VlOiBodHRwczovL2RvY3MudGFjdC1sYW5nLm9yZy9yZWYvY29yZS1hZHZhbmNlZCNwYXJzZXZhcmFkZHJlc3MKLy8vCmFzbSBmdW4gcGFyc2VWYXJB' + + 'ZGRyZXNzKHNsaWNlOiBTbGljZSk6IFZhckFkZHJlc3MgeyBSRVdSSVRFVkFSQUREUiB9Cg=='; files['std/crypto.tact'] = 'YXNtIGV4dGVuZHMgZnVuIGhhc2goc2VsZjogQ2VsbCk6IEludCB7IEhBU0hDVSB9Cgphc20gZXh0ZW5kcyBmdW4gaGFzaChzZWxmOiBTbGljZSk6IEludCB7IEhBU0hT' + 'VSB9Cgphc20gZnVuIGNoZWNrU2lnbmF0dXJlKGhhc2g6IEludCwgc2lnbmF0dXJlOiBTbGljZSwgcHVibGljX2tleTogSW50KTogQm9vbCB7IENIS1NJR05VIH0KCmFz' +